You are on page 1of 52

43

Manual Delphi Ricardo E. Jasso Ponce


Manual Bsico Borland Delphi
7
43
Manual Delphi Ricardo E. Jasso Ponce
Entorno de Desarrollo
El entorno de desarrollo, tambin conocido como IDE, se muestra al
iniciar Delphi integrando todas las herramientas necesarias Editor de
c!digo, Editor de imgenes, Depurador, "erramientas de cone#i!n a
bases de datos, $chas de componentes, etc.% para desarrollar
nuestras distintas aplicaciones. En la siguiente $gura se muestra su
entorno.
Men& Principal . . . En l, 'e puede reali(ar casi todo desde los
di)erentes submen&s como de$nir las opciones de compilaci!n,
personali(ar las $chas de componentes o agregar nue*as, guardar o
abrir pro+ectos, etc., es necesario re*isarlo antes de comen(ar.
Barra de "erramientas . . . Esto es solo un con,unto de botones de
acceso rpido a las di)erentes opciones del men&, lo cual nos )acilita
e,ecutar las acciones ms utili(adas de una manera ms rpida.
Dando un -lic. sobre ellas con el bot!n derecho del rat!n podremos
con$gurarlas. / continuaci!n muestro la )unci!n de alguno de ellos.
43
Manual Delphi Ricardo E. Jasso Ponce
0ichas de -omponentes . . . 'on las 1ue dan /cceso a los
componentes 1ue )orman la biblioteca de componentes *isuales
conocida tambin como 2-3 2isual -omponent 3ibrar+% + se
encuentra di*idida en *arias categor4as seg&n las )unciones 1ue
reali(an. -ada paleta inclu+e en su parte i(1uierda el bot!n puntero
1ue no es un componente sino 1ue su )unci!n es parecida a la de
cual1uier programa gr$co sir*e para deseleccionar componentes
seleccionados, etc. Para insertar un componente en el )ormulario solo
selecciona el componente a insertar despus pulsa sobre el
)ormulario + arrastra el rat!n para de$nir su tama5o, en caso 1ue no
lo arrastres Delphi automticamente le pone su tama5o
predeterminado. 6tra )orma de insertar los componentes es dando
doble -lic sobre el componente a insertar en la $cha de componentes.
0ormulario o 0orm . . . Es la pie(a principal del dise5o de las
aplicaciones, es el contenedor $nal de otros componentes 1ue
$nalmente constituirn nuestra aplicaci!n. El )ormulario es un
componente ms de Delphi por lo cual tiene propiedades + e*entos
los cuales se pueden alterar + traba,ar con ellos. Para a1uellas
personas 1ue emigran de lengua,es de programaci!n lineal como - o
-lipper tengan en cuenta 1ue ustedes utili(aran tantos )ormularios
como su aplicaci!n los re1uiera.
Inspector de 6b,etos u 6b,ect Inspector. Este nos permite modi$car
las propiedades + respuestas a sucesos o e*entos de los
componentes, sus datos muestran el estado del componente
seleccionado o del mismo )ormulario. Est di*idido en dos partes en
)orma de pesta5as o solapas una 1ue dice Properties + E*ents. /
continuaci!n se muestra las propiedades del )ormulario.
43
Manual Delphi Ricardo E. Jasso Ponce
E#isten propiedades 1ue tienen un signo de ms, eso signi$ca 1ue
son contenedoras de otras opciones. / continuaci!n se e#plican
algunas de las propiedades ms comunes del )ormulario.
BorderIcons7 8iene cuatro opciones misms 1ue reciben un *alor )also
o *erdadero 8rue o 0alse% de las cuales dos son mu+ &tiles +
empe(aremos por la de biMinimi(e, esta opci!n esta en 8rue por
de)ault + permite 1ue nuestro )ormulario se pueda minimi(ar.
biMa#imi(e por de)ault est en 8rue + permite 1ue nuestro )ormulario
se pueda ma#imi(ar en tiempo de e,ecuci!n.
Border't+le7 Despliega una lista con los di)erentes estilos de bordes
para el )ormulario.
-aption7 Esta es una propiedad importante debido a 1ue es a1u4 en
donde escribimos el te#to de la barra de titulo del )ormulario, es
al)anumrica + por de)ault tendr el nombre del )ormulario 0orm9 en
este caso%..
:ame7 Es el nombre del componente, por De)ault aparecer 0orm + el
numero de )ormulario, en este caso es 0orm9, este se puede
modi$car + ponerle un nombre 1ue nosotros 1ueramos has de cuenta
1ue el )ormulario es una *ariable + la propiedad :ame tiene el
nombre de esa *ariable.
Position7 Despliega una lista en la cual muestra las di)erentes
posiciones sobre las cuales podemos mostrar nuestro )ormulario al
momento de correrlo.
;indo<s'atate7 Despliega una lista de *alores ;s:ormal,
;sMinimi(ed, ;sMa#imi(ed, las cuales alteran nuestro )ormulario al
momento de correrlo es decir si elegimos la de ;sMa#imi(ed
mostrara ma#imi(ado nuestro )ormulario.
Para dimensionar nuestro )ormulario basta con alterar las propiedades
"eight + ;idth aun1ue tambin se puede reali(ar posicionando sobre
43
Manual Delphi Ricardo E. Jasso Ponce
los bordes del )ormulario el puntero del rat!n + arrastrarlo hasta
lograr la dimensi!n 1ue 1ueramos.
:ota7 E#isten Propiedades 1ue son iguales para *arios componentes
como -aption, 0ont, 2isible, etc.
/hora mostrar los e*entos del )ormulario.
3os e*entos son sucesos 1ue detecta nuestro )ormulario + seg&n el
suceso detectado se e,ecuta su c!digo, e#isten *arios e*entos,
e#plicar solo algunos, de cual1uier )orma durante el curso se
e#plicarn ms. Para introducir el c!digo basta con dar doble -lic. en
la parte derecha del e*ento a utili(ar + Delphi automticamente nos
crea el procedimiento de dicho e*ento + nos muestra el editor de
c!digo.
6peradores 3!gicos + /ritmticos
6peradores /ritmticos. . . . Permite reali(ar todo tipo de operaciones
comunes con operadores numricos +a sean reales o enteros, en la
siguiente tabla se muestran los tipos de datos.
6perad
or
6peraci!n 8ipo
6perando
8ipo
Resultado
=
'uma Integer
Real
Integer
Real
-
Resta Integer
Real
Integer
Real
*
Multiplicaci!
n
Integer
Real
Integer
Real
43
Manual Delphi Ricardo E. Jasso Ponce
/ Di*isi!n Integer
Real
Integer
Real
Div Di*isi!n
entera
Integer Integer
Mod Resto Integer Integer
6peradores 3!gicos. . . 'e di*iden en dos categor4as los l!gicos + los
booleanos. 3a di)erencia est en 1ue las operaciones l!gicas lle*an la
comparaci!n de *alores a ni*el de bit + las operaciones booleanas
reali(an comparaciones *eri$cando si una cierta e#presi!n es
*erdadera o )alsa. En la siguiente tabla se presentan las operaciones
l!gicas.
6perador 6peraci!n 8ipo 6perando 8ipo Resultado
:ot :egaci!n a ni*el
de Bit.
Integer Integer
/nd Producto a ni*el
de Bit.
Integer Integer
6r 'uma a ni*el de
Bit.
Integer Integer
>or 6r E#clusi*a a
ni*el de Bit.
Integer Integer
'hl Despla(amiento
bit a bit hacia la
i(1uierda.
Integer Integer
'hr Despla(amiento
bit a bit hacia la
derecha.
Integer Integer
3a siguiente tabla muestra los operadores booleanos.
Operad
or
Operaci
n
Tipo
Operand
o
Tipo
Resultad
o
:ot :egaci!n. Boolean Boolean
/nd Producto
l!gico.
Boolean Boolean
6r 'uma
l!gica.
Boolean Boolean
43
Manual Delphi Ricardo E. Jasso Ponce
>or 6r
E#clusi*a
l!gica.
Boolean Boolean
6peradores Relaci!nales. . . 3os utili(amos para reali(ar
comparaciones entre dos *alores + a continuaci!n se muestran en la
siguiente tabla.
6perador 6peraci!n 8ipo Resultado
? Igualdad. Boolean
@ A Desigualdad. Boolean
@ Menor 1ue. Boolean
A Ma+or 1ue. Boolean
@? Menor o Igual
1ue.
Boolean
A? Ma+or o Igual
1ue.
Boolean
Precedencia de 6peradores. . . -uando se e*al&a una e#presi!n en la
1ue aparecen combinados di)erentes operadores, las operaciones 1ue
representan se e,ecutan en cierto orden 1ue estn marcados por la
precedencia de los operadores. / continuaci!n se muestra una tabla
con su precedencia.
6perador Precedencia -ategor4a
B , :ot Primera 6peradores
Cnarios
D , E , Di* ,
Mod , /nd ,
'hl , 'hr ,
/s
'egunda 6peradores de
Multiplicaci!n
= , F , 6r ,
>or
8ercera 6peradores de
/dici!n
?, @A , @ ,
A , @? , A?
-uarta 6peradores
Relacionales
43
Manual Delphi Ricardo E. Jasso Ponce
E#isten cuatro reglas de precedencia 1ue se deben de tomar en
cuenta7
3as e#presiones encerradas entre parntesis se e*al&an antes
de tratarlas como un &nico operando. 3o 1ue signi$ca 1ue
primero se e*al&a lo 1ue est dentro del parntesis por
e,emplo la siguiente operaci!n *alor7? 9G = HDH%I primero
multiplica HDH + su resultado lo suma con el 9G.
Cn operador unario siempre precede al operador binario, por
e,emplo FJ D 9G es lo mismo 1ue tu*iramos FJ% D 9G.
Cn operador 1ue se encuentra entre dos operadores de
precedencias di)erentes se relaciona con el operador de
precedencia ma+or, por e,emplo *alor7? J D H = 9GI en este
caso primero se multiplica + despus se suma.
Cn operando 1ue se encuentra entre dos operadores iguales se
relaciona con el de su i(1uierda. Por e,emplo si se tu*iera
*alor 7? J = H = KI es lo mismo 1ue *alor 7? J = H% = KI
Declaraci!n de 2ariables + -onstantes
CONSTANTES. . . 'e utili(an para representar l!gicamente un *alor
1ue ser utili(ado repetidamente en nuestro programa + 1ue no
*ariar durante su e,ecuci!n. Para su declaraci!n se utili(a la palabra
reser*ada -onst. Por e,emplo continuaci!n declarar la constante PI ?
H.9L + nombre ?MPablo M en el e*ento 6ncreate del )ormulario.
procedure 80orm9.0orm-reate'ender7 86b,ect%I
const
PI ? H.9LI
nombre ? MPablo MI
begin
'ho<Messagenombre=0loat8o'trPI%%I
endI
'i declaras constantes o *ariables dentro de alg&n procedimiento,
ir4an entre el Procedure + el Begin. -omo puedes *er utili(amos
nue*amente la )unci!n 'ho<Mesage % la cual me permite mandar un
mensa,e sencillo al usuario pero bueno se e#plicar ms adelante en
mensa,es. De igual )orma utili(o la )unci!n 0loat8o'tr % la cual me
permite con*ertir *alores de tipo Notante a cadena.
Variales. . . Cna *ariable es un *alor perteneciente a un cierto
dominio + puede *ariar durante la e,ecuci!n del programa. En Delphi
las 2ariables se declaran con la palabra reser*ada 2ar. Por e,emplo
reali(aremos la misma )unci!n 1ue las constantes pero ahora
utili(ando *ariables + el c!digo 1uedar4a as47
43
Manual Delphi Ricardo E. Jasso Ponce
procedure 80orm9.0orm-reate'ender7 86b,ect%I
*ar
PI 7 RealI
nombre 7 'tringI
begin
PI 7? H.9LI
nombre 7? MPablo MI
'ho<Messagenombre = 0loat8o'trPI%%I
endI

:68/7 En Delphi las /signaciones se reali(an mediante7? como
puedes obser*ar.
Bien +a *imos como declarar constantes + *ariables ahora es
necesario *er los tipos de datos soportados por Delphi.
Delphi 'oporta tipos de datos simples + tipos de datos compuestos
pero por ahora nos en)ocaremos a los simples.
8ipos Enteros . . . 'on a1uellos 1ue representan n&meros no
decimales dentro de un rango + e#isten di)erentes tipos de enteros
clasi$cados seg&n su rango. / continuaci!n muestro una tabla con los
tipos de datos enteros.
8ipo Rango de 2alores 0ormato
B+te G .. OJ P bits sin signo
;ord G .. KJJHJ 9K bits sin signo
3ong;ord G .. LOQLQK7OQJ HO bits sin signo
'hortInt F9OP .. 9O7 P bits con signo
'mallInt FHO7KP .. HO7K7 9K bits con signo
3ongInt
FO9L7LPHKLP ..
O9L7LPHKLP
HO bits con signo
IntKL FOE#pKH .. OE#pKHF9 KL bits con signo
Integer
FO9L7LPHKLP ..
O9L7LPHKLP
HO bits con signo
-ardinal G .. O9L 7LPHKLP HO bits sin signo
Por de)ecto las operaciones aritmticas con *alores enteros
de*ol*ern un *alor entero, ha+ 1ue tener cuidado por 1ue una
*ariable de tipo entera no puede almacenar un dato de tipo real, ms
sin embargo una *ariable de tipo real si puede recibir un dato entero.
8ipos Reales . . . 'on adecuados para *ariables 1ue albergan *alores
con una parte decimal, a continuaci!n muestro una tabla con los
di)erentes tipos reales soportados por 6b,ect Pascal.
8ipo Rango de *alores
D4gitos
'igni$cati
*os
8ama5o
en B+tes
43
Manual Delphi Ricardo E. Jasso Ponce
'ingle
R 9.J D 9GE#pFLJ .. R H.L D
9GE#pHP
7FP L
RealLP
R O.Q D 9GE#pFHQ .. R 9.7 D
9GE#pHP
99F9O K
Real
R J.G D 9GE#pFHOL .. R 9.7 D
9GE#pHGP
9JF9K P
Double
R J.G D 9GE#pFHOL .. R 9.7 D
9GE#pHGP
9JF9K P
E#tend
ed
R H.L D 9GE#pFLQHO .. R 9.9
D 9GE#pLHQO
9QFOG 9G
-omp FOE#pKH .. OE#pKH F9 9QFOG P
-urren
c+
FQOOHH7OGHKPJL77JPGP ..
QOOHH7OGHKPJL77JPG7
9QFOG P
3a declaraci!n de *ariables reales utili(a e#actamente la misma
sinta#is 1ue la e#plicada para los n&meros enteros. De hecho en el
e,emplo anterior se declaro una *ariable de tipo Real.
8ipos Booleanos . . . Este es un tipo de dato mu+ sencillo pero
igualmente utili(ado, representan cantidades l!gicas como *erdadero
o )also + en el 6b,ect Pascal e#isten cuatro 1ue son7 Boolean,
B+teBool, ;ordBool + 3ongBool. El 1ue se recomienda ms es el tipo
Boolean debido a 1ue utili(a menos memoria, las otras e#isten para
permitir la compatibilidad con otros lengua,es + el entorno de
;indo<s. Bueno a continuaci!n te muestro su tabla.
Tipo
Me!oria
Re"uerida en
#tes
Boolean 9 Recomendado%
B+teBoolean 9
;ordBool O
3ongBool L
'e declaran como cual1uier otra *ariable solo 1ue el *alor 1ue
pueden recibir es 8rue o 0alse. E,emplo. Este c!digo se puso en el
e*ento 6ncreate del 0ormulario 6..
procedure 80orm9.0orm-reate'ender7 86b,ect%I
*ar
-ompadre 7 BooleanI
begin
-ompadre 7? 8rueI
I) -ompadre ? 8rue then
'ho<MessageM8u si eres mi compadreM%
Else
'ho<MEssageM8u no eres mi compadreM%I
endI

43
Manual Delphi Ricardo E. Jasso Ponce
Este )ue un e,emplo in&til, pero es solo para ilustrar su mane,o mu+
simplemente, tu eres 1uien le dars una *erdadera aplicaci!n si tus
problems lo re1uieren. Por lo pronto puedes e#perimentar
cambiando la asignaci!n de compadre a 0alse.
8ipos de -arcter . . . 3os tipos de carcter estn dise5ados para
albergar caracteres seg&n un cierto c!digo numrico 1ue usualmente
es el /:'I 1ue mediante palabras de P bits representa hasta OJK
caracteres. / continuaci!n muestro su tabla.
8ipo
-arcter 1ue
contiene
Memoria re1uerida
en B+tes
/nsi-har Cn -aracter /nsi 9
;ide-har Cn -aracter Cnicode O
-har Cn -aracter /nsi 9
8ipos -adena de -aracteres . . . 8ambin conocidos como 'tring.
Estas e#isten como tipos prede$nidos 1ue albergan la concatenaci!n
de un determinado n&mero de caracteres bueno es algo parecido a
los arra+s si as4 lo 1uieren *er. En seguida muestro la tabla con los
di)erentes tipos.
8ipo
-arcter
1ue
contiene
3ongitud M#ima Memoria
/nsi'trin
g
/nsi-har
SOE#pH9
-aracteres
"asta TB.
'hort'tri
ng
/nsi-har OJJ -aracteres O a OJK B+tes.
'tring /nsi-har
SOE#pH9
-aracteres
OJK hasta OTB.
;ide'tri
ng
;ide-ha
r
SOE#pHG
-aracteres
"asta OTB.
8e pongo un e,emplo para e#plicar su uso.
procedure 80orm9.0orm-reate'ender7 86b,ect%I
*ar
:ombre, /pellido 7 'tringI
begin
:ombre 7? MPablo MI
/pellido 7? MBustosMI
:ombre 7? :ombre = /pellidoI
'ho<Message:ombre%I
endI

:ota7 a di)erencia de - + otros lengua,es, en Delphi las
concatenaciones se hacen con el signo =I las asignaciones se hacen
43
Manual Delphi Ricardo E. Jasso Ponce
normalmente, &nicamente utili(an las comillas simples M% para
indicarle 1ue se trata de una cadena. -omo anteriormente se
mencion! estas *ariables son parecidas a los arra+s + podr4amos
accesar directamente a alguna posici!n de la *ariable por e,emplo si
a la *ariable :ombre &nicamente 1uisiera concatenarle la letra B de
la 2ariable /pellido lo har4a de la siguiente )orma7 :ombre 7? :ombre
= /pellidoU9V. -omo puedes *er a di)erencia de - el inicio de
posiciones comien(a en 9 + no en G. 6..
E#iste la instrucci!n /rra+ perteneciente a los datos compuestos, la
cual permite declarar arreglos de una o *arias dimensiones
'entencias de control
8odo programa esta constituido por decisiones + acciones 1ue se
e,ecutan repetidamente en )unci!n del estado del programa + las
sentencias de control, son las 1ue nos permiten hacer esas cosas.
E#plicar las ms utili(adas.
-ondicion I) ... 8hen 7 3as condiciones I) sin duda son unas de las ms
utili(adas + permite condicionar la e,ecuci!n de un determinado
c!digo al cumplirse una determinada condici!n. 3a sinta#is seria
como sigue7
I) -ondicion 8hen
-odigo9
Else
-odigoO
-odigo9, se e,ecutar cuando la condici!n se cumple + -odigoO
cuando la condici!n no se cumple. Pueden anidarse tantas
sentencias i) como necesites.
-uando los c!digos a e,ecutar tanto para el Else como para el I0 son
ms de una instrucci!n se deben de poner entre un Begin + un End.
Para 1ue 1uede ms claro haremos un e,ercicio ms practico, el
43
Manual Delphi Ricardo E. Jasso Ponce
c!digo ir en el e*ento 6ncreate del 0orm. 'e preguntarn por 1ue
utili(o ese e*ento bueno pues por 1ue toda*4a no les ense5o como
)uncionan otros componentes.
procedure 80orm9.0orm-reate'ender7 86b,ect%I
*ar numero 7 IntegerI
begin
Randomi(e%I
numero 7? randomOG%I
i) numero A 9G 8hen
begin
numero 7? numero D numeroI
'ho<MessageMEs ma+or, al cuadrado es7 M = Int8o'trnumero%%I
end
Else
begin
numero 7? numero D numeroI
'ho<MessageMEs menor, al cuadrado es7 M = Int8o'trnumero%%I
endI
endI

:ota7 En el e,emplo declaro una *ariable de tipo entero despus
utili(o la )unci!n Randomi(e% la cual iniciali(a el motor de generaci!n
de n&meros aleatorios luego asigno a numero el resultado 1ue
de*uel*a randomOG% la cual es una )unci!n 1ue de*uel*e un *alor
aleatorio entre un rango pre*iamente especi$cado 1ue en este caso
es un OG. Este e,emplo es mu+ sencillo lo 1ue hace es generar un
numero aleatorio lo compara + si es ma+or 1ue die( manda un
mensa,e diciendo 1ue es ma+or + mostrando su cuadrado + en caso
de 1ue sea menor hace casi lo mismo solo 1ue indica 1ue es menor.
-ase ... 60 7 Permite comparar una *ariable o e#presi!n con un
con,unto predeterminado de *alores + e,ecutar un c!digo
determinado de acuerdo al resultado de la comparaci!n o e#presi!n.
/1u4 tienes su sinta#is.
-ase E#presion 6)
3ista de constantes separadas por coms 7 -odigoI
2alor Inicial .. 2alor $nal 7 -odigoOI
Else
-odigo por De)ectoI
"a+ *a un e,emplo para 1ue 1uede ms claro 6..
procedure 80orm9.0orm-reate'ender7 86b,ect%I
*ar numero 7 ;ordI
begin
Randomi(e%I
43
Manual Delphi Ricardo E. Jasso Ponce
numero 7? RandomL%I
-ase numero 6)
G7 'ho<MessageMEl numero es un -eroM%I
97 'ho<MessageMEl numero es un CnoM%I
O7 'ho<MessageMEl numero es un DosM%I
else
'ho<MessageMEl numero es ma+or 1ue dosM%I
endI
endI

Este es un e,emplo mu+ sencillo, genero un numero aleatorio de entre
L d4gitos inclu+endo el cero, luego con el -ase lo comparo hasta el
numero dos de,ando un mensa,e en el else para cuando el numero
sea ma+or 1ue dos.
Bueno creo 1ue ha llegado la hora de e#plicar los ciclos o bucles as4
1ue empe(aremos.
Repeat Cntil 7 Permite e,ecutar un determinado c!digo hasta 1ue se
satis)aga una cierta condici!n, su sinta#is es de la siguiente )orma7
Repeat
-odigo
Cntil -ondicion

3a condici!n debe producir un resultado de tipo Booleano, cabe
mencionar 1ue en este tipo de ciclos el c!digo se e,ecuta por lo
menos una *e( debido a 1ue la condici!n se reali(a en la parte $nal
del ciclo.
3es pondr un sencillo e,emplo pero ahora utili(aremos el e*ento
6n-lic. del 0orm.
procedure 80orm9.0orm-lic.'ender7 86b,ect%I
*ar numero, suma 7 IntegerI
begin
numero 7? 9I
suma 7? GI
repeat
suma 7? suma = numeroI
incnumero%I
until numero ? 9GI
'ho<MessageInt8o'trsuma%%I
endI

43
Manual Delphi Ricardo E. Jasso Ponce
;hile ... Do 7 Es parecido al anterior solo 1ue la *eri$caci!n del ciclo
se reali(a al inicio. /1u4 tienes su sinta#is.
;hile -ondici!n Do
-odigo

'i el c!digo es ms de una instrucci!n se tendr 1ue poner entre un
Begin + un End. 1ue no se te ol*ide. De este ciclo no pondr e,emplo
creo 1ue tu puedes utili(ar el c!digo anterior + aplicarlo a este ciclo.
0or ... Do 7 :os permite repetir la e,ecuci!n de un determinado c!digo
un numero de$nido de *eces. 3a sinta#is es como sigue.
0or 2ariable 7? 2alor Inicial 8oEDo<nto 2alor 0inal Do
-odigo
El Do<nto es para reali(ar ciclos en decremento + el 8o en
incremento. as4 1ue si 1uieres sumar los n&meros del 9 al 9GG seria7
procedure 80orm9.0orm-lic.'ender7 86b,ect%I
*ar numero, suma7 IntegerI
begin
suma 7?GI
0or numero 7? 9 8o 9GG Do
suma 7? suma = numeroI
'ho<MessageInt8o'trsuma%%I
endI
-on esto hemos concluido una parte 1ue es )undamental conocer
para el mane,o de Delphi, como lo es su entorno de desarrollo,
declaraci!n de constantes, *ariables + sus sentencias de control. /s4
1ue de a1u4 en adelante nos dedicaremos a *er cosas mucho ms
interesantes, e#plotaremos la potencialidad de Delphi + empe(aremos
por *er los tipos de mensa,es 1ue Delphi permite reali(ar.
Mensa,es en Delphi
Es *erdaderamente &til poder interactuar con el usuario, decirle 1ue
es lo 1ue esta ocurriendo o de,arlo 1ue tome decisiones. Esto en parte
podemos lograrlo con las *entanas o cuadros de mensa,e, por si no
tienes una idea clara de 1ue es lo 1ue son pues son por e,emplo el
cuadro 1ue te aparece en ;ord u otra /plicaci!n% cuando no has
guardado tu traba,o preguntando si deseas guardarlo.
Delphi permite 3os siguientes tipos de Mensa,es.
43
Manual Delphi Ricardo E. Jasso Ponce
'ho<Message
'ho<MessagePos
MessageDlg
MessageDlgPos
MessageBo#
'ho<Message . . . Es el ms sencillo de todos + +a lo hemos utili(ado
en e,ercicios anteriores. El cuadro parece por de)ecto centrado en la
pantalla, el titulo de la *entana es el nombre de la aplicaci!n, el te#to
del mensa,e lo indicamos nosotros entre comillas simples + solo tiene
un bot!n. E,emplo7 'ho<MessageMWuiubule 0amiliaM%.
'ho<MessagePos . . . Es Parecido al anterior pero tiene dos *alores
ms 1ue indican las coordenadas donde se mostrara el cuadro
indicando primero el ancho + luego el largo. Debes tener cuidado
pues la posici!n se debe poner en Pi#eles por lo tanto debes sabe el
tama5o de tu pantalla, esto lo logras haciendo una pe1ue5a llamada
al 6b,eto 8'creen.;idth obtienesel ancho + con 'creen."eight el
3argo. Bueno como e,emplo podr4as poner en el e*ento 6nclic. de tu
)ormulario el siguiente c!digo7
'ho<MessagePos MCtili(ando -oordenadasM, 'creen.;idth di*
H,'creen."eight di* H%I
MessageDlg . . . "asta ahora los tipos anteriores de mensa,es no
de,an 1ue el usuario pues pueda tomar alguna decisi!n o algo por el
estilo *erdad, as4 1ue el tipo de mensa,e MessageDlg nos proporciona
esa posibilidad. 3os *alores 1ue recibe son primeramente el te#to 1ue
1ueremos mostrar, el tipo de cuadro 1ue mostraremos seg&n una
lista prede$nida por ;indo<s, los botones 1ue se mostraran + la
a+uda de la aplicaci!n 1ue creemos si es 1ue colocamos un bot!n de
a+uda en el cuadro. Bien ahora les mostrare la lista de cuadros
prede$nidos por ;indo<s.
mtI)ormation
mt;arning
mtError
mt-on$rmation
mt-ustom
Por cada tipo de cuadro <indo<s automticamente te mostrara una
imagen relacionada al cuadro elegido. /hora es necesario saber
cuales son los tipos de botones 1ue podemos utili(ar.
mbXes
mb:o
mb6.
mb-ancel
mb/bort
43
Manual Delphi Ricardo E. Jasso Ponce
mbRetr+
mbIgnore
mb/ll
mb"elp
3os tipos de botones 1ue deseas debes ponerlos entre corchetes U V%,
+ seguidos de una coma. 6 si lo pre$eres 6tra )orma de hacerlo es
poner un serie de botones prede$nidos, pero si lo haces no pongas los
corchetes. 3os botones prede$nidos son7
mbXes:o-ancel
mb/bortRetr+Ignore
mb6.-ancel
Bien ahora pondr un e,emplo de como utili(arlo, pon el siguiente
c!digo en el e*ento 6nclic. de tu 0ormulario.

If MessageDlg MYEstas /prendiendoZM, mt-on$rmation ,
Umb+es,mbnoV,G% ? mrXes 8hen 'ho<Message MWue bueno, entonces
*amos bienM%
else
'ho<Message M"a+ ,ode, pos est&diale msM%I
'i pusiste atenci!n te pudiste haber dado cuenta 1ue MessageDlg
de*uel*e el *alor del bot!n pulsado por el usuario. El *alor de*uelto
puede tomar los siguientes *alores7
mr:one
mr/bort
mrXes
mr6.
mrRetr+
mr:o
mr-ancel
mrIgnore
mr/ll
El *alor de la constante tiene el nombre del bot!n pulsado, de esa
)orma en el e,emplo cuando es pulsado el bot!n mbXes, el *alor
de*uelto es mrXes.
MessageDlgPos . . . Esta es una *ariante de la )unci!n MessageDlg,
)unciona e#actamente igual solo 1ue se le tienen 1ue pasar las
coordenadas de donde 1ueremos 1ue apare(ca el cuadro de mensa,e.
E,emplo
I) MessageDlgPos MYEstas /prendiendoZM, mt-on$rmation ,
Umb+es,mbnoV,G,'creen.;idth,'creen."eight% ? mrXes 8hen
43
Manual Delphi Ricardo E. Jasso Ponce
'ho<Message MWue bueno, entonces *amos bienM%
else
'ho<Message M"a+ ,ode, pos est&diale msM%I

MessageBo# . . . Es un tipo de mensa,e 1ue hace llamada a la /pi de
;indo<s sacndonos el titulo de los botones en espa5ol, claro si
nuestro ;indo<s esta en espa5ol. :o adentrare mucho en esto as4
1ue pondr un e,emplo de su uso.
i) /pplication.MessageBo#MWCIERE' '/3IR DE3
PR6TR/M/ ZM,M'/3IRM,MB[6\-/:-E3=MB[I-6:WCE'8I6:%?ID6\ then
/pplication.8erminateI

En este caso tambin se controla el tipo de bot!n a poner + las
combinaciones de las imgenes 1ue pone ;indo<s por de)ecto te las
listo continuaci!n. 3os tipos de botones a poner +a se listaron
anteriormente.
Mb[Icon/steris.
Mb[IconError
Mb[IconE#clamation
Mb[icon"and
Mb[IconIn)ormation
Mb[IconWuestion
Mb[Icon'top
Mb[Icon;arning
Bueno creo 1ue sobre mensa,es seria todo. /hora pasaremos a
e#plicar lo 1ue estaban esperando las $chas de componentes
*isuales. 0inalmente *erdad...
0icha 'tandar
En esta $cha se encuentran los componentes ms utili(ados + es la
1ue esta acti*ada cuando entramos a Delphi. E#plicare &nicamente
los principales.
:ota7 Reali(are algunos e,ercicios durante el transcurso de la
e#plicaci!n.
0icha 'tandar.
43
Manual Delphi Ricardo E. Jasso Ponce
Empe(aremos a partir del segundo componente.
Image
n
-omponent
e
Descripci!n
MainMenu
Es un componente no *isual 1ue permite
dise5ar el men& del )ormulario 1ue si ser
*isual.
PopupMenu
Permite dise5ar Men&s conte#tuales o
emergentes, 1ue aparecern al pulsar el
bot!n secundario del rat!n.
3abel
Es un cuadro de te#to esttico, por lo tanto
*isuali(a te#to pero no puede ser
modi$cado.
Edit
Es un cuadro de Edici!n de 8e#to 1ue
permite *isuali(ar + modi$car una l4nea de
te#to.
Memo
Es un -uadro de 8e#to multilinea, se puede
*isuali(ar + modi$car *arias l4neas de te#to.
Es parecido al Bloc de :otas
Button
Es un Botton clsico de cual1uier aplicaci!n
;indo<s, no lle*a ninguna imagen solo
te#to.
-hechBo#
Es una casilla de *eri$caci!n 1ue permite
seleccionar + deseleccionar opciones.
RadioButto
n
Bot!n de opci!n parecido al -hec.Bo#, se
utili(a para seleccionar dentro de un
con,unto de RadioButton u opciones
solamente uno de ellos.
3istBo#
Es una lista 'tandard de ;indo<s en la 1ue
el usuario puede seleccionar un elemento
de la lista.
-omboBo#
3ista desplegable 1ue combina las
caracter4sticas de un 3istBo# + un Edit
permitiendo al usuario seleccionar un
elemento.
'crollBar Barra de despla(amiento estndar.
TroupBo#
0unciona como contenedor de ob,etos,
permitiendo agrupar di)erentes controles.
RadioTroup
Es un contenedor e#clusi*amente para los
RadioButtons.
Panel
-ontenedor de ob,etos pero ms potente
1ue el TroupBo#.
43
Manual Delphi Ricardo E. Jasso Ponce
Bueno ahora *amos a lo bueno aremos un e,ercicio utili(ando algunos
componentes e#plicados. as4 es 1ue arranca Delphi o crea una nue*a
/plicaci!n.
-oloca un TroupBo# en tu )ormulario, Dentro de el coloca dos
eti1uetas misms 1ue en su propiedad -aption les pondras 2alor uno
+ 2alor dos. Despus pon dos Edit *e a su propiedad 8e#t + 1u4tales el
te#to 1ue tienen por de)aul. Deben de ir un Edit aba,o de cada 3abel.
'elecciona el -omponente TroupBo# + en su propiedad -aption
-oloca el te#to 2alores. 8odo el TroupBo# + su componentes crgalos
hacia tu parte superior i(1uierda.
/hora en tu parte superior derecha pega un componente 3abel + en
su propiedad -aption le pondrs 6peraci!n, Despus coloca un
componente -omboBo# deba,o del 3abel. 8e *as a la propiedad 8e#t
del comboBo# + Escribes el te#to 'uma. despus *e a la propiedad
Items + dale -lic. donde dice 'tring. te saldra una *entana en la cual
escribirs los te#tos 'uma, Resta en l4neas o $las separadas. + das 6.
a la *entana.
Despus coloca deba,o del -omboBo# un componente Button + en su
propiedad -aption pon -alcular. /hora coloca un componente Panel
deba,o del -omponente Button. dentro del panel pon un componente
3abel 1ue por cierto si has seguido mis instrucciones ser el 3abelK +
de hecho debe de ser el seis por 1ue lo utili(aremos para pegar el
resultado de una operaci!n.
Mu+ bien ahora pon un componente RadioTroup en la parte in)erior
i(1uierda, en su propiedad -aption pon color de *entana. Despus
dentro de el coloca dos RadioButtons al primero en su propiedad
-aption Pon el te#to /(ul, + al segundo ponle :ormal.
/hora pon un -omponente Button al costado derecho del RadioTroup.
+ pon en su propiedad -aption /plicar.
Pon un componente MainMenu, Dale doble -lic.. te saldra una
*entana en la cual se irn *iendo las opciones del men& 1ue ba+as
poniendo en su propiedad -aption. /hora *ete a la propiedad -aption
+ escribe ]Principal El /mperson indica la tecla caliente%, da enter +
ahora te aparecer principal en la *entana 1ue estar a tu derecha,
en esa *entana deba,o de la le+enda Principal habr un campo en
blanco selecciona con el rat!n, despus *ete a la propiedad -aption +
escribe ]'alir. /hora da clic. sobre el )ormulario para regresar a el.
/hora el dise5o 1uedar4a como sigue
43
Manual Delphi Ricardo E. Jasso Ponce

/hora *amos con el c!digo. 2ete al e*ento 6nclic. del Button9 1ue
dice -alcular. dentro del pondremos el siguiente c!digo7
i) -omboBo#9.8e#t ? M'umaM 8hen
Begin
3abelK.-aption 7? 0loat8o'tr'tr8o0loatEdit9.8e#t% =
'tr8o0loatEditO.8e#t%%I
EndI
i) -omboBo#9.8e#t ? MRestaM 8hen
Begin
3abelK.-aption 7? 0loat8o'tr'tr8o0loatEdit9.8e#t% F
'tr8o0loatEditO.8e#t%%I
EndI

'i te das cuenta en el Edit9 + EditO Tuardamos los *alores con los 1ue
aremos una suma o resta seg&n eli,a el usuario. El resultado lo
pegaremos en el 3abelK en su propiedad -aption. 8anto el Edit como
el 3abel son de tipo 'tring por lo 1ue para hacer la operaci!n es
necesario con*ertirlo por lo tanto los Edit los con*ierto a Notantes
mediante 0loat8o'tr%. /hora el resultado ser un tipo de dato Notante
para asignrselo al 3abel 1ue es de tipo 'tring tengo 1ue con*ertirlo
mediante la instrucci!n 0loat8o'tr%I
En lo 1ue respecta al uso del -omboBo# me sir*e para 1ue el usuario
eli,a el tipo de operaci!n a reali(ar 'uma o Resta% +o pre*iamente
de$n4 'uma + Resta en el -omboBo#. -uidado si te $,as la primera
letra de 'uma + Resta esta en ma+&sculas si tu la escribes di)erente
tendrs 1ue modi$car las comparaciones en el I).
43
Manual Delphi Ricardo E. Jasso Ponce
Mu+ bien /hora en el E*ento 6nclic. del ButtonO 1ue dice /plicar pon
este c!digo.
i) RaDioButton9.-hec.ed ? 8rue then
0orm9.-olor 7? -lBlue
else
0orm9.-olor 7? clBtn0aceI

-omo puedes *er la propiedad -hec.ed me indica si un RadioButton
esta o no /cti*ado. X dependiendo de eso modi$co el color del 0orm.
/hora *ete al men& desplegable + dale -lic. en la opci!n 'alir de esta
)orma Delphi te creara el procedimiento 8)orm9.'alir9-lic. en el cual
pondrs este c!digo.
/pplication.8erminateI
Esta instrucci!n permite terminar correctamente la aplicaci!n +
de*ol*er la memoria a ;indo<s.
/hora solo corre el programa con 0Q + listo. E#perimenta con l.
43
Manual Delphi Ricardo E. Jasso Ponce
0icha /dditional
-ontiene componentes 1ue ampl4an los componentes de la estndar
+ 1ue igualmente se utili(an )recuentemente. E#plicare solo algunos
de ellos. De cual1uier )orma si sabes un poco de ingles puedes
consultar la a+uda de Delphi seleccionando la $cha + despus
presionando 09.
Imagen
-omponen
te
Descripci!n
BitBtn
Es un Botton 1ue se le puede a5adir un
gr$co Bitmap. -ontiene la propiedad
\ind 1ue trae una lista de botones
prede$nidos con sus Bitmap.
'peedButt
on
Es un bot!n utili(ado en las barras de
herramientas, se le puede agregar un
Bitmap + trae la propiedad 0lat 1ue
permite dar una apariencia de boton
plano.
Ms.Edit
'e utili(a para *alidar la entrada de
datos mediante el )ormateo del te#to
como lo es la )echa, etc.
Image
Permite mostrar gr$cos como Bitmaps,
iconos, ;indo<s Meta$les, etc.
'hape
Permite dibu,ar pol4gonos, c4rculos +
l4neas.
Be*el Es un rectngulo en HD.
'crollBo#
De$ne un rea contenedora ma+or al
rea *isuali(ada, automticamente al
sobrepasar el rea salen las barras
desli(adoras.
-hec.3ist
Bo#
Es un 3istBo# solo 1ue a5ade un
-hec.Bo# para cada elemento de la
lista.
'plitter
'ir*e para de$nir reas modi$cables
por parte del usuario.
'tatic8e#t
Es similar a 3abel, solo 1ue tiene ms
propiedades modi$cables.
-ontrolBar
'e utili(a para crear barras de
"erramientas acoplables.
-hart
Ctil para crear di)erentes tipos de
gr$cos.
43
Manual Delphi Ricardo E. Jasso Ponce
Bueno ahora es el momento de reali(ar alg&n e,ercicio en donde
utilicemos algunos componentes descritos.
-rea una nue*a aplicaci!n, al -aption del )ormulario ponle 0icha
/ddiotional, en el )ormulario por un componente 'tatic8e#t, en la
Propiedad -aption pon 0echa, la propiedad Border't+le ponla en
sbs'un.en.
-oloca un componente Ms.Edit, Da un -lic. sobre l con el bot!n
secundario del rat!n, te saldr un men& desplegable elige la opci!n
Input Ms. Editor Esto tambin lo puedes reali(ar en la propiedad
EditMs.%, te saldr una *enta con mscaras prede$nidas. Elige la
1ue dice Date, si 1uieres la )echa en )ormato MMEDDE//, esta un
bot!n 1ue dice Ms.s, dale clic. + *ete al directorio Bin de Delphi +
elige el archi*o 'pain. /hora +a 1ue seleccionaste Date. solo dale 6..
+ listo tienes tu mscara para la )echa.
/hora Pon este c!digo en el e*ento 6n-reate de tu 0orm.
Ms.Edit9.8e#t 7? Date8o'trDate%I
3a )unci!n 1ue de*uel*e la hora del sistema es Date + el *alor
de*uelto es de tipo )echa as4 1ue se tiene 1ue con*ertir a 'tring para
pegarse en el Ms.Edit.
Mu+ bien ahora coloca un componente 'hape en el 0orm, *e a la
propiedad 'hape + Elige la opcion 't-ircle. Despues *e a la propiedad
Brush, presenta dos opciones elige la opci!n -olors + elige el color
-l3ime.
Despues de esto coloca un BitBtn a un costado del componente
'hape. *e a la propiedad 1ue dice Tl+ph + dale -lic. a su derecha. te
presentara una *entana en la cual te permitir buscar + agregar una
imagen al boton asi 1ue dale clic. a la opci!n 3oad + *e al directorio
images^buttons de Delphi, en este directorio tendras una serie de
gr$cos 1ue Delphi te instala, bueno elige la imagen Troup. Cna *e(
agregada la imagen *e a la propiedad -aption + Ponle -olor.
-oloca un 'peedButton en el )ormulario, en la propiedad -aption
ponle $gura, *e a la propiedad Tl+ph + ponle la imagen 0orm.
Recuerda para ponerle la imagen es igual 1ue cuando se la pusiste al
BitBtn. Bien ahora +a con la imagen puesta *e a la propiedad 0lat +
ponla en 8rue.
/hora coloca un componente Image, su propiedad /lign ponla en
/l-lient. con esto la imagen ocupara todo el )ormulario. 2e a la
propiedad Picture + dale clic. a su derecha, de igual )orma como en
los botones agregamos una imagen ha( lo mismo solo 1ue ahora *e al
directorio Images^Bac.grnd + elige la imagen ;riting.
43
Manual Delphi Ricardo E. Jasso Ponce
/hora te muestro como 1uedar4a la parte *isual del )ormulario.
/hora en el E*ento 6nclic. del BitBtn se pondr4a7
procedure 80orm9.BitBtn9-lic.'ender7 86b,ect%I
*ar numero 7 ;ordI
begin
Randomi(e%I
numero 7? RandomH%I
i) numero ? G then
'hape9.Brush.-olor 7? -lBlueI
i) numero ? 9 then
'hape9.Brush.-olor 7? -lBlac.I
i) numero ? O then
'hape9.Brush.-olor 7? -lXello<I
i) numero ? H then
'hape9.Brush.-olor 7? -l3imeI
endI

-on este c!digo generamos un numero aleatorio de entre cuatro
n&meros inclu+endo el cero, + seg&n el resultado estamos cambiando
de color al 'hape.
Pon en el 'peedButton este codigo.
procedure 80orm9.'peedButton9-lic.'ender7 86b,ect%I
*ar numero 7 ;ordI
begin
randomi(e%I
numero 7? randomJ%I
i) numero ? G then
'hape9.'hape 7? 't-ircleI
i) numero ? 9 then
'hape9.'hape 7? 'tEllipseI
i) numero ? O then
'hape9.'hape 7? 'tRectangleI
i) numero ? H then
43
Manual Delphi Ricardo E. Jasso Ponce
'hape9.'hape 7? 'tRoundRectI
i) numero ? L then
'hape9.'hape 7? 'tRound'1uareI
i) numero ? J then
'hape9.'hape 7? 't'1uareI
endI
Estamos generando aleatoriamente K posibles datos GFJ% mismos
1ue utili(amos como constantes para cada una de las )orms del
'hape. Bueno con esto hemos concluido este pe1ue54simo e,ercicio.
Por ahora estamos haciendo cosas mu+ simples les prometo 1ue
posteriormente aremos algo ms complicado mientras tanto
pasaremos a la siguiente $cha.
0icha ;inHO
-ontiene componentes 1ue permiten la creaci!n de aplicaciones 1ue
cumplen con las especi$caciones de ;indo<s QJ o superior. /
continuaci!n se muestra.
Imagen -omponente Descripci!n
8ab-ontrol
-rea solapas para cuadros de dialogo
multipgina.
Page-ontrol
-rea una rea multipgina, en donde
cada pagina es accesible desde las
misms solapas del componente.
Image3ist
De$ne una matri( de imgenes del
mismo tama5o misms 1ue son
accesibles a tra*s de su 4ndice.
RichEdit
Es una ca,a de te#to 1ue acepta el
)ormato de te#to enri1uecido, por lo
tanto a ni*el de palabra se le puede
modi$car el tama5o, color, etc.
8rac.Bar
Es una barra de despla(amiento de
;indo<s, 1ue nos permite despla(ar
el control por un con,unto de *alores.
ProgresBar
Es una barra de progreso estndar
1ue nos indica el a*ance de un
determinado proceso.
/nimate
Muestra secuencias de BitMaps o
/rchi*os /*i sin sonido.
Date8imePic.er
Despliega )echas + permite
seleccionarlas, tambin permite
introducirlas.
Month-alendar :os presenta el calendario por
43
Manual Delphi Ricardo E. Jasso Ponce
meses.
'tatusBar
Es una barra de estado clsica de
;indo<s.
8oolBar
Permite crear una barra de
"erramientas.
-oolBar
Es un contenedor de Barras de
herramientas misms 1ue pueden ser
con$gurables por el usuario
Bueno es tiempo de hacer un e,emplo de su uso as4 1ue reali(a lo
siguiente7
-rea una nue*a aplicaci!n, al caption del )orm ponle 0icha ;inHO,
coloca un componente Image list en el )orm, dale doble -lic. al
componente, te saldr una *entana en la cual podrs agregar
imgenes, dale al bot!n 1ue dice /dd, *ete a la carpeta
ImagesEButtons de Delphi, + agrega el archi*o 1ue dice Door6pen,
despus 1ue lo abres, regresas a la *entana anterior + te mandara un
mensa,e en ingles 1ue dice la dimensi!n de la imagen es demsiado
grande + pregunta si la di*ide en dos, dale 1ue si, te pondr dos
imgenes, ha+ un bot!n 1ue dice Delete, borra la segunda imagen
con ese bot!n. 6.. /hora as4 como agregaste esta imagen 1uiero 1ue
agregues dos ms, bueno la imagen del bot!n te la de,o a tu gusto
6.. el caso 1ue te tienen 1ue 1uedar tres imgenes enumeradas del G
al O. Despus de agregar las imgenes solo da clic. al bot!n de 6\.
-oloca un componente 8oolBar, en su propiedad -aption Ponle
"erramientas, 2ete a la propiedad Image3ist + selecciona el te#to
Image3ist9 Es el componente de imgenes 1ue creamos%. /hora dale
-lic. al -omponente con el bot!n secundario del rat!n + te saldr un
men& emergente, selecciona la opci!n :e< Button, con esto te crea
un bot!n en en el componente 8oolBar. 6.. /hora *ete a la propiedad
"int del bot!n 1ue acabas de crear + ponle 'alir, *e a la propiedad
'ho<"int + ponla en 8rue. 6.. Despus *e a la propiedad ImageInde#
+ ponle G / este bot!n le pondremos la imagen 1ue este en el 4ndice
G%. /hora nue*amente con el bot!n secundario del rat!n dale clic. al
8oolBar + ahora eliges la opcion :e<'eparator, con esto te crea un
bot!n separador, a este bot!n no le haremos nada 6.. De igual )orma
como creaste el primer bot!n crea dos ms + en su "int pondrs
/nimaci!n, calendario, en la propiedad ImageInde# pon 9 + O
respecti*amente. -on eso tendremos nuestra barra de herramientas.
/hora coloca un componente Page-ontrol, Dale clic. al componente
con el bot!n secundario del rat!n, en el men& emergente selecciona
:e< Page, con esto te a creado una nue*a pagina, ahora *ete a la
propiedad -aption + ponle /nimaci!n. /hora si sobre esa nue*a
pagina pegaras un componente /nimate, *ete a la propiedad
43
Manual Delphi Ricardo E. Jasso Ponce
-ommon/*i + selecciona el *alor a*i-op+0ile. Despus *ete a la $cha
'tandar + coloca dos Buttons deba,o del componente /nimate, a uno
le pones /nimar + al 6tro Detener. -on esto tendremos lista nuestra
primer pagina as4 es 1ue selecciona el componente Page-ontrol + con
el bot!n secundario del rat!n dale nue*amente -lic. + elige la opci!n
de :e<Page. /hora 2ete a la propiedad -aption + ponle -alendarios.
-oloca dentro de esta pagina un componente Month-alendar+ un
componente Date8imePic.er, a estos componentes no les haremos
nada.
'i todo *a bien el dise5o estar4a ms o menos as4.
Mu+ bien ahora *amos a introducir el c!digo, empe(aremos por los
botones de la barra de herramientas.
Dale Doble -lic. al primer bot!n 1ue le pusimos 'alir, con esto te
genera automticamente el e*ento 6nclic., puedes hacerlo de la otra
)orma 1ue tu +a sabes no importa. Bueno pon este c!digo.
/pplication.8erminateI
/hora en el 8ercer bot!n 1ue le pusimos /nimaci!n pondrs este otro
c!digo.
Page-ontrol9./cti*ePageInde# 7? GI
-omo puedes *er las paginas del Page-ontrol tienen un 4ndice
empe(ando de cero as4 es 1ue solo es cuesti!n de poner 1ue pagina
es la 1ue 1uieres acti*ar.
En el ultimo Bot!n -alendarios% pondrs este c!digo.
Page-ontrol9./cti*ePageInde# 7? 9I
43
Manual Delphi Ricardo E. Jasso Ponce
Mu+ bien ahora selecciona la pagina 1ue dice /nimacion del
Page-ontrol. en el e*ento 6nclic. del Button /nimar pondrs este
c!digo.
/nimate9./cti*e 7? 8rueI
Por ultimo en el e*ento 6nclic. del bot!n Detener pon este c!digo.
/nimate9.'topI
Mu+ bien.... traigan la te1uila compadres.. pos +a terminamos. ahora
solo c!rrelo con 0Q + listo.
0icha '+stem
-ontiene componentes 1ue permiten acceder a algunos elementos
importantes del sistema, enseguida muestro la $cha.
$!a%en Co!ponente Descripcin
8imer
Es un tempori(ador 1ue e,ecuta un e*ento
cada inter*alo de tiempo programado.
PaintBo# De$ne una rea en la 1ue se puede dibu,ar.
MediaPla+er
Es un Panel de control del reproductor de
*4deo multimedia + de archi*os de sonido.
63E-ontainer
Es un contenedor 1ue de$ne una rea de
cliente 63E. 3o utili(aremos en el e,emplo
para *er *ideo.
DDE-lient-on*
Establece una cone#i!n DDE como cliente a
un ser*idor DDE.
DDE-lientItem
Especi$ca los datos 1ue sern en*iados a
un ser*idor DDE.
DDE'er*er-on
*
Establece una cone#i!n como ser*idor DDE.
DDE'er*erItem
Especi$ca los datos 1ue sern en*iados a
un cliente DDE.
Mu+ bien ahora como se supone 1ue +a sabemos utili(ar alguna
*ariedad de componentes pues lo 1ue haremos es un reproductor de
*4deo casi casi pro)esional....... Bueno ustedes son los 1ue retocaran
algunos detalles.
Reproductor de 24deo
Primeramente dise5aremos el aspecto *isual despus nos iremos con
el c!digo 6..
43
Manual Delphi Ricardo E. Jasso Ponce
-rea una nue*a /plicaci!n. /l -aption del 0orm ponle Mi Reproductor
de 24deo.
2e a la $cha '+stem + coloca un componente 6le-ontainer 1ue
abar1ue una parte considerable del )ormulario.
2e a la $cha Estndar + coloca un componente 'crollBar. Ponlo
deba,o del componente 6le-ontainer.
2e a la $cha '+stem + coloca un componente MediaPla+er, ahora *ete
a la propiedad 2isibleButtons, te desglosara todos los botones del
Media Pla+er, Estarn en 8rue por De)aul, 1uiero 1ue de,es solamente
los botones btPla+, btPause, bt'top en 8rue los dems ponlos en
0alse. /hora *e a la Propiedad Displa+, te desplegara una lista de
componentes elige el componente 6le-ontainer9.
/ un costado del componente mediaPla+er pon un componente BitBtn
Esta en la $cha /dditional%, agrgale una imagen +a sabes como% +
en la propiedad caption ponle /brir.
2e a la $cha estndar + pon un componente 3abel, en su caption
ponle Duracion, pon otro componente 3abel aba,o de ese, + en su
caption ponle 8. 8ranscurrido. 6.. ahora pon dos componentes 3abel
nue*amente + su propiedad 2isible p!nselas en 0alse. el tercer 3abel
tiene 1ue 1uedar a un costado del 3abel 9 + el cuarto del O. De
cual1uier )orma aba,o presento el dise5o.
2e a la $cha '+stem + pon un componente 8imer.
Mira compadre no e#pli1ue todas las $chas 1ue trae Delphi. 6.. pero
con lo 1ue hemos *isto hasta ahora +a sabes na*egar entre las $chas
+ sus componentes as4 es 1ue *amos a utili(ar un componente 1ue
esta en otra $cha di)erente a las *istas.
2ete a la $cha Dialogs, Pon el componente 6penDialog, es un
componente no *isual + mediante la instruccion E#ecute nos mostrara
la t4pica *entana de /brir un /rchi*o.
Bien una *e( puesto este componente *ete a la propiedad 0ilter da
doble -lic. a su derecha + te saldr una *enta di*idida en dos partes
la de la i(1uierda dice 0ilter :ame + la de la derecha dice 0ilter. /hora
en $lter name Escribirs /rchi*os /*i, en 0ilter escribiras D./*i,
nue*amente en una nue*a $la escribe en 0ilter :ame 8odos los
/rchi*os + en 0ilter D.D. Esa *entana 1uedar4a de la siguiente )orma.
43
Manual Delphi Ricardo E. Jasso Ponce
Mu+ bien /hora *e a la $cha ;inHO + coloca un componente
'tatusBar. /utomticamente se colocara en la parte in)erior del
)ormulario. 2ete a la propiedad 'implePanel + ponla en 8rue, Despus
*e a la Propiedad 'implete#t + ponle Inacti*o, 8ienes 1ue ponerlo
como +o te lo esto+ Escribiendo +a 1ue esa eti1ueta la utili(o para
saber el estado del )ormulario + las ma+&sculas o min&sculas son
sensibles en las comparaciones.
Mu+ bien si has hecho todo lo 1ue te di,e el 0ormulario tiene 1ue lucir
ms o menos /s4.

43
Manual Delphi Ricardo E. Jasso Ponce
/hora *iene lo interesante el c!digo. 6,o el c!digo *a completo con
todo + los procedimientos 1ue Delphi me genera en cada e*ento. Esos
procedimientos no se copian por 1ue Delphi te los crea. 6.. /hora pon
este c!digo en el BitBtn9 al 1ue le pusimos /brir.
procedure 80orm9.BitBtn9-lic.'ender7 86b,ect%I
begin
i) 6pendialog9.E#ecute ? 8rue then
begin
MediaPla+er9.0ile:ame 7? 6penDialog9.0ile:ameI
MediaPla+er9.6penI
Mediapla+er9.Displa+Rect 7?
rectG,G,6le-ontainer9.;idth,6le-ontainer9."eight%I
MEdiaPla+er9.Pla+I
'tatusBar9.'imple8e#t 7? MRepoduciendo /rchi*o7 M =
6penDialog9.0ile:ameI
3abelH.2isible 7? 8rueI
3abelL.2isible 7? 8rueI
endI
endI

6bser*a 1ue el 6penDialog9.E#ecute de*uel*e un *alor 8rue cuando
el usuario abre un archi*o, la propiedad 0ile:ame contiene el nombre
el archi*o 1ue abri!. El MediaPla+er mediante su propiedad 0ile:ame
le indicamos el archi*o 1ue reproducir, despus simplemente lo
abrimos.
'i te $,as la propiedad Displa+Rect permite indicar el tama5o en 1ue
1ueremos *isuali(ar el 24deo 1ue por cierto es el tama5o del
componente 6le-ontainer. Despus ponemos *isibles los 3abels H + L,
en estos se muestra el tiempo total del *4deo + en el otro se mostrara
el tiempo en el 1ue *a la reproducci!n.
/hora pondrs este c!digo en el e*ento 6n8imer del componente
8imer. Puedes irte al inspector de 6b,etos o simplemente dale Doble
-lic. con el rat!n al componente.
procedure 80orm9.8imer98imer'ender7 86b,ect%I
*ar posicion, duracion 7 3ongIntI
begin
i) 'tatusBar9.'imple8e#t @A MInacti*oM then
begin
<ith MediaPla+er9 do
begin
MediaPla+er9.8ime0ormat 7? t)MillisecondsI
duracion 7? Round3ength di* 9GGG%I
scrollBar9.Ma# 7? lengthI
3abelH.-aption 7? 0ormatM_d7_dM,Uduracion di* KG, duracion
Mod KGV%I
43
Manual Delphi Ricardo E. Jasso Ponce
posicion 7? roundPosition di* 9GGG%I
3abelL.-aption 7? 0ormatM_d7_dM,Uposicion di* KG, posicion
Mod KGV%I
'crollBar9.Position 7? positionI EEminuto D KG = segundoI
endI
endI
endI

El componente 8imer *a a estar e,ecutando este c!digo cada
segundo. Primeramente *eri$ca el 'tatusBar, si la propiedad
simplete#t es di)erente a Inacti*o e,ecutara el c!digo 1ue le sigue,
obser*a 1ue utili(amos un ;ith MediaPla+er do con el cual nos
permite acceder a todos las propiedades de ese componente.
Indicamos al MediaPla+er 1ue el )ormato del tiempo ser en
Milisegundos, posteriormente calculamos la duraci!n del archi*o,
calculamos su posici!n + las pegamos en los 3abels. "a + desde luego
*amos recorriendo el 'croolBar.
"asta ahora con el c!digo 1ue hemos puesto, nuestra aplicaci!n es
capa( de reproducir *4deo + esta bien pero 1ue tal si le damos un
to1ue ms especialon como 1ue al presionar las teclas /lt = Enter, el
*4deo se *ea a pantalla completa + de igual )orma al *ol*erlas a
presionar regrese a pantalla normal. Bueno para lograr eso pon este
c!digo en el e*ento 6n\e+Do<n del 0ormulario.
procedure 80orm9.0orm\e+Do<n'ender7 86b,ectI *ar \e+7 ;ordI
'hi)t7 8'hi)t'tate%I
begin
i) "i;ordTet\e+'tate2\[ME:C%% @A G% and \e+ ? 9H% then
begin
i) 0orm9.;indo<'tate ? ;s:ormal then
begin
/ncho 7? 0orm9.;idthI
/lto 7? 0orm9."eightI
3abel9.2isible 7? 0alseI
3abelO.2isible 7? 0alseI
3abelH.2isible 7? 0alseI
3abelL.2isible 7? 0alseI
MediaPla+er9.2isible 7? 0alseI
BitBtn9.2isible 7? 0alseI
'tatusBar9.2isible 7? 0alseI
'crollBar9.2isible 7? 0alseI
6le-ontainer9.2isible 7? 0alseI
0orm9.Border't+le 7? Bs:oneI
0orm9.;indo<'tate 7? ;sMa#imi(edI
MediaPla+er9.Displa+ 7? 0orm9I
MediaPla+er9.Displa+Rect 7?
rectG,G,0orm9.-lient<idth,0orm9.-lient"eight%I
end
43
Manual Delphi Ricardo E. Jasso Ponce
else
begin
0orm9.;indo<'tate 7? ;s:ormalI
0orm9.;idth 7? /nchoI
0orm9."eight 7? /ltoI
0orm9.Position 7? Po'creen-enterI
3abel9.2isible 7? 8rueI
3abelO.2isible 7? 8rueI
3abelH.2isible 7? 8rueI
3abelL.2isible 7? 8rueI
MediaPla+er9.2isible 7? 8rueI
BitBtn9.2isible 7? 8rueI
'tatusBar9.2isible 7? 8rueI
'crollBar9.2isible 7? 8rueI
6le-ontainer9.2isible 7? 8rueI
0orm9.Border't+le 7? Bs'ingleI
MediaPla+er9.Displa+ 7? 6le-ontainer9I
MediaPla+er9.Displa+Rect 7?
rectG,G,0orm9.-lient<idth,0orm9.-lient"eight%I
endI
endI
endI
-omo puedes *er es ms c!digo *erdad, pues si pero es 1ue para
reproducir el *4deo a pantalla completa tenemos 1ue poner en 0alse la
propiedad 2isible de todos los componentes 2isuales + de igual )orma
ponerla en 8rue cuando regrese a pantalla normal. /ntes de seguir
con el c!digo debes saber 1ue he declarado dos *ariables de tipo
global para este )ormulario, las *ariables son /ncho + /lto, las utili(o
para almacenar el tama5o del 0orm al momento de ma#imi(arlo a
pantalla completa + de esta )orma cuando el usuario regrese a
pantalla normal utili(o el *alor de esas *ariables para *ol*er el 0orm a
su tama5o original.
3as *ariables Tlobales del 0orm las declaras en la clusula 2ar del
Cnit del 0orm. esta ,usto arriba de la clusula Implementation. mira
para 1ue te ubi1ues te muestro la parte en donde tienes 1ue
declararlas. 6..
*ar
0orm97 80orm9I
/ncho 7 IntegerI EE/1ui estan declaradas
/lto 7 IntegerI
implementation
`aR D.d)mb

43
Manual Delphi Ricardo E. Jasso Ponce
-omo *es estn casi al inicio del Cnit. '4 puedes encontrarlo +
declararlas *erdad. +o se 1ue si.
Mu+ bien prosiguiendo con la e#plicaci!n, esto+ utili(ando una
llamada a Tet\e+'atate + \e+ para saber cuando se presionan las
teclas /lt + Enter-heca su uso en la pagina de trucos%. /hora cuando
se presionan estas teclas resta saber en 1ue estado se encuentra mi
)ormulario, en caso de 1ue este normal lo ma#imi(o en caso contrario
lo pongo en estado normal, /hora esto se reali(a checando la
propiedad ;indo<s'tate.
-uando ma#imi(o la *entana en las *ariables globales /ncho + /lto
guardo el *alor de las propiedades ;idth + "eight del 0orm misms
1ue tienen las dimensiones del )ormulario respecti*amente. Despus
Pongo la propiedad 2isible en 0alse de todos los componentes
*isuales. Enseguida entenders por 1ue. "a+ te *a una nota acerca
del MediaPla+er, no nada ms puedes reproducir *4deo en un
6le-ontainer si no en cual1uier super$cie plana, como un Panel o el
mismo 0orm, + es eso lo 1ue hacemos, ponemos la propiedad
Border't+le del )orm en Bs:one + lo ma#imi(amos, de esta )orma el
0orm abarca toda la pantalla inclu+endo la barra de inicio de <indo<s,
bueno despues unicamente resta indicarle al MediaPla+er 1ue se *a a
reproducir en el )orm, + eso lo hacemos mediante la propiedad
Displa+. 6,o aparte de indicarle 1ue se reproducir en el )orm ha+ 1ue
indicarle las nue*as dimensiones del *4deo mediante la propiedad
Displa+Rect. Esto es en si lo 1ue sucede cuando se ma#imi(a.
crale pues..... cuando se minimi(a pues simplemente pones *isibles
todos los componentes *isuales, *ol*emos a poner el Border't+le del
0orm en Bs'ingle, la propiedad ;indo<s'tate del )orm la ponemos en
;s:ormal, mediante las *ariables Tlobales /ncho + /lto ponemos las
dimensiones del 0orm, le indicamos al mediaPla+er 1ue se reproducir
en el 6le-ontainer + listo. "a+ otras cosillas pero es bsicamente
esto.
Bases de Datos
2a+a por $n hemos llegado a una parte 1ue tal *e( estabas
esperando. /ntes de empe(ar 1uiero adelantarles 1ue durante los
cap4tulos siguientes haremos algunas bases de datos.
Delphi posee su propio motor de base de datos el BDE o Borland
Databae Engine el cual nos permite desarrollar nuestras aplicaciones
independi(ndolas del gestor de bases de datos. El BDE sir*e como
traductor entre nuestra aplicaci!n + las bases de datos 1ue utili(amos
)uncionando tambin como inter)a( entre los componentes
especiali(ados para bases de datos 1ue posee Delphi. El BDE cuenta
43
Manual Delphi Ricardo E. Jasso Ponce
con una biblioteca de )unciones conocida como ID/PI Integrated
Database /pplications Program Inter)ace% 1ue es el traductor ante los
distintos gestores de bases de datos para 1ue entiendan lo 1ue
nuestra aplicaci!n reali(a.
Delphi posee una herramienta 1ue nos permite dise5ar nuestras
bases de datos, es un programa llamado Database Des.8op.
Primeramente mostrare las $chas de componentes ms comunes
relacionados con el mane,o de bases de datos
0icha Data /ccess
-ontiene componentes para reali(ar cone#iones con las bases de
datos + obtener la in)ormaci!n 1ue en ella se almacena. /
continuaci!n se muestra.
Imagen -omponente Descripci!n
Data'ource
Reali(a las cone#iones a las
bases de datos.
-lientData'
et
Permite el acceso a datos
tanto en una aplicaci!n
estndar como el acceso
desde clientes en sistems
distribuidos.
0icha Data -ontrols
En esta $cha se encuentran componentes similares a los de la $cha
standard + /dditional pero 1ue estarn ligados a bases de datos
permitiendo con esto traba,ar con la in)ormaci!n almacenada en
ellas.

43
Manual Delphi Ricardo E. Jasso Ponce
Imagen -omponente Descripci!n
DbTrid
Presenta los datos en una
re,illa de $las + columnas.
Db:a*igator
Posibilita la na*egaci!n por los
registros de una tabla
permitiendo su na*egaci!n,
modi$caci!n, eliminaci!n.
Db8e#t
3abel *inculado a bases de
datos.
DbEdit
-uadro de te#to *inculado a
bases de datos.
DbMemo
Memo *inculado a bases de
datos.
DbImage
Image *inculado a bases de
datos.
Db3istBo#
3istBo# 2inculado a bases de
datos.
Db-omboBo#
-omboBo# *inculado a bases
de datos.
Db-hec.Bo#
-hec.Bo# *inculado a bases
de datos.
DbRadioTroup
RadioTroup *inculado a bases
de datos.
Db3oo.up3istBo
#
3istBo# 1ue presenta datos de
una tabla + modi$ca los de
otra.
Db3oo.up-ombo
Bo#
-omboBo# 1ue presenta datos
de una tabla + modi$ca los de
otra.
DbRichEdit
RichEdit *inculado a bases de
datos.
Db-trlTrid
Permite personali(ar un area
de presentaci!n de datos +
permite 1ue el rea act&e
como un Dbgrid.
Db-hart
-hart *inculado a bases de
datos.
0icha BDE
Esta $cha contiene componentes 1ue habilitan la cone#i!n a bases de
datos utili(ando el BDE engine de Delphi.
43
Manual Delphi Ricardo E. Jasso Ponce

Imagen -omponente Descripci!n
8able
Permite la cone#i!n a una tabla
de una base de datos.
Wuer+
Permite crear + e,ecutar
consultas 'W3 a una base de
datos.
'toredProc
Permite e,ecutar procedimientos
almacenados en un ser*idor de
bases de datos.
DataBase
Reali(a cone#iones a ser*idores
remotos.
'ession
Testiona + controla las
cone#iones acti*as a las bases
de datos.
BatchMo*e
Permite reali(ar acciones sobre
los datos localmente 1ue luego
sern en*iados al ser*idor.
Cpdate'W3
Permite reali(ar actuali(aciones
en una base de datos 'W3.
:ested8able
Encapsula una tabla 1ue esta
anidada dentro del campo de
otra tabla.
BDE-lientData
'et
Permite el acceso a datos por
parte de aplicaciones cliente,
etc. a tra*s del BDE.
Database Des.8op
Delphi nos permite crear bases de datos en tiempo de e,ecuci!n
mediante c!digo, pero tambin nos brinda la posibilidad de crearlas
en tiempo de dise5o mediante el Database Des.top. Esta
herramientas nos permite en realidad hacer otras cosillas, pero no
1uiero adentrarme mucho en, solo 1uiero ense5arles lo bsico para
continuar con este manual o curso.
Database Des.8op me permite crear tablas de di)erente tipo como
tablas Parado#, Dbase, Ms/cces, 0o#pro, In)ormi#, etc. en este caso
nos en)ocaremos a crear tablas de tipo Parado# aun1ue en su
momento are una aclaraci!n cuando es necesario utili(ar alg&n otro
tipo de tabla. 6\.
43
Manual Delphi Ricardo E. Jasso Ponce
Mu+ bien para entrar al DataBase Des.8op lo podemos hacer de dos
)orms, la primera es accesando desde el men&
inicioEprogramsEDelphiEDatabase Des.8op. 3a otra es Dentro de
Delphi te *as al Men& 8ools + encontraras la opci!n Database
Des.top. Mu+ al accesar al el te aparecer de la siguiente )orma.


Mu+ bien, antes de seguir 1uiero e#plicar 1ue en Delphi se mane,an
mucho los alias, los cuales son un identi$cador para un directorio o
carpeta en los cuales se tienen guardadas las bases de datos. Estos
alias son mu+ &tiles +a 1ue usualmente tienes 1ue indicar la ruta en
d!nde est tu tabla como por e,emplo c7^programa^8ablas, ahora el
detalle est 1ue cuando pasas tu aplicaci!n a otra unidad debes
cambiar la ruta a cada tabla + recompilar. todo eso se soluciona pues
utili(ando alias, de hecho en los programs instaladores como el
Install 'hield te permite crear el alias 1ue en tu aplicaci!n a+as
puesto, es &til de *erdad. 'olo 1ue para estos e,ercicios lo are de la
)orma tradicional solo 1ueria in)ormarles 1ue e#iste esa posibilidad,
por cierto en el alias DbDemos Delphi guarda algunas tablas de
e,emplo por si despus 1uieres hecharles un o,illo primo.
Mu+ bien *ete al men& 1ue dice 0ile, despus al :e< + por ultimo
8able, de esta )orma creamos nosotros una tabla, pero antes nos
presenta una pe1ue5a *entana en la cual nos pide 1ue eli,amos 1ue
tipo de dato crearemos, si *a hacer parado#, )o#pro, etc. te presento
esa *enta.
43
Manual Delphi Ricardo E. Jasso Ponce
Elige Parado# 7, de hecho esta acti*ada por de)aul. despus de eso te
saldr la siguiente *entana7
En esta *entana es en donde crearemos la estructura de nuestra base
de datos el campo 0ield :ame contendr los nombres de los campos
de nuestra base de datos 1ue en este e,emplo sern7 -la*e, producto,
pro*eedor, precio + m4nimo.
Despus est otra le+enda 1ue dice 8+pe, contendr el tipo de dato
1ue ser nuestro campo, para seleccionar el tipo de dato basta con
situarnos en 8+pe + presionar la barra espaciadora + nos desplegara
todos los tipos de datos, de cual1uier )orma si sabemos su tecla
abre*iada se la podemos escribir directamente.
Est la le+enda 1ue dice 'i(e la cual indica el tama5o del campo, eso
se lo indicamos teclendolos directamente.
43
Manual Delphi Ricardo E. Jasso Ponce
Por ultimo est la le+enda \e+, sir*e para indicar cuales campos
sern nuestras cla*es primarias. para elegir un campo como cla*e
primaria posicionate en \e+ + presiona la barra espaciadora, se
pondr un asterisco en se5al de 1ue es cla*e primaria.
/hora 1uiero 1ue hagas la siguiente estructura7
0ield :ame 8+pe 'i(e \e+
-la*e I 3ong Integer%
D -la*e
Primaria%
Producto / /lpha% LG
-antidad : :umeric%
Precio a Mone+%
Minimo I Integer%
Mu+ bien +a 1ue tecleaste esta estructura 1uiero 1ue te ubi1ues en la
parte i(1uierda de tu *entana, encontraras una le+enda 1ue dice
8able Properties + deba,o de ella un especie de -ombobo#. Ese
combobo# contiene las propiedades de la tabla 1ue tu puedes
con$gurar. :o entrare en ms detalles, solo te digo 1ue e#perimentes
un poco con ellas.
:o *amos a crear alg&n 4ndice secundario en esta tabla por 1ue
usaremos algunas sentencias '1l en b&s1uedas por producto con
prop!sito de aprendi(a,e, por lo tanto no es necesario crearlo.
Mu+ bien ahora solo 1uiero 1ue des -lic. en el bot!n 1ue dice 'a*e
/s, + guardes la tabla en el directorio c7^E,emplo con el nombre de
In*entario. Para crear el directorio *ete al e#plorador ! Mi P- +
simplemente *ete a la unidad - + crala.
De igual )orma como creaste esta tabla 1uiero 1ue hagas las
siguientes tablas + las guardes en el mismo directorio 6\.
8abla 2entas 1ue sea parado# 7%.
0ield :ames 8+pe 'i(e \e+
0echa D D
Ingreso a
Tuardala con el nombre de *entas 6\.
8abla /u#iliar 1ue sea parado# 7%.
0ield :ames 8+pe 'i(e \e+
-la*e I
-antidad :
Producto / LG
Precio a
'ubtotal a
43
Manual Delphi Ricardo E. Jasso Ponce
Tuardala con el nombre de /u#iliar 6\.
El e,ercicio 1ue reali(aremos se trata de un sistema 1ue controla un
in*entario de productos, *entas de productos + generaci!n de
reportes de las utilidades, en este momento hemos creado las bases
de datos, pero )alta e#plicar muchas cosas 1ue son necesarias por lo
tanto con)orme se e#pli1uen se le ira a*an(ando al sistema 6..
-omponente 88able
Es un componente no *isual + se encuentra en la $cha BDE.
-uando se traba,a con una base de datos, el principal responsable de
prcticamente todo es el componente 8able. Este componente es el
encargado de leer, escribir, actuali(ar, etc la base de datos a la cual
esta conectado, + )orma una pare,a mu+ &til con el componente
Datasource, el cual es el encargado de conectar el componente table
con los controles usados para *isuali(ar los datos.
3a primera propiedad 1ue se debe modi$car en el componente es la
1ue hace re)erencia a 1ue base de datos 1ueremos conectar el
componente + se trata de la propiedad Database:ame. E#isten dos
)orms de indicarle la base de datos 1ue usaremos, una es dndole
toda la ruta 1ue en nuestro caso seria -7^EJEMP36 o indicando el alias
1ue se ha+a de$nido en el sistema 1ue es lo ms recomendable
utili(ar los alias pero bueno esa es otra historia digiera chonita.
Bueno despus de esto es necesario indicarle la tabla 1ue se *a a
utili(ar + esto se hace en la propiedad 8able:ame, esta propiedad me
listara todas las tablas e#istentes en la ruta o alias 1ue pusimos en el
Database:ame, posteriormente la propiedad /cti*e se tendr 1ue
poner en 8rue para poder manipular la tabla.
E#isten otras propiedades interesantes como Inde#0ield:ames 1ue es
para indicarle el 4ndice 1ue usaremos en la tabla. Desde luego
mostrara las cla*es primarias 1ue se ha+an puesto cuando se dise5o
la B.D. E#iste otra propiedad para los 4ndices secundarios 1ue
)unciona e#actamente igual + es la propiedad Inde#:ame.
El componente 8able tiene una larga lista de e*entos, 1ue se pueden
di*idir en tres grupos, los e*entos 1ue se producen antes de un
operaci!n como una apertura, cierre, lectura, etc., los cuales
empie(an por la palabra Be)ore, luego estn los e*entos 1ue se
producen en el momento + cu+o nombre empie(a por 6n + por ultimo
los e*entos 1ue se producen despus, cu+o nombre empie(a por /)ter
. / continuaci!n te listo los principales e*entos del componente 8able.
43
Manual Delphi Ricardo E. Jasso Ponce
/)terDelete
'e genera despus del borrado de un
registro
/)terEdit 'e genera despus de editar un registro
/)terInsert Despus de Insertar
/)ter Post Despus de grabar los datos
Be)ore-ancel /ntes de cancelar la operaci!n
Be)ore-lose /ntes de 1ue se cierre la tabla
Be)oreDelete /ntes de borrar un registro
Be)oreEdit /ntes de editar el registro actual
Be)oreInsert /ntes de insertar un registro
Be)ore6pen /ntes de abrir la tabla
Be)orePost /ntes de guardar los datos
6n-alc0ields
'e genera cuando se *a a calcular el *alor
de un campo
6nDeleteErr
or
-uando se produce un error al borrar un
registro
6nEditError -uando ha+ un error al editar un registro
6n0ilterRecor
d
-uando se acti*a el $ltrado
6n:e<Recor
d
-uando se a5ade un registro
6nPostError
-uando ha+ un error durante el grabado
de datos
/hora te listare las operaciones ms comunes 1ue se reali(an en un
componente 8table.
6pen 'e abre la tabla
-lose 'e cierra la tabla
Edit Para editar el campo actual
Insert /5ade datos a la tabla
Post Traba los datos
-ancel -ancela la operaci!n actual
Delete Borra el registro actual de la tabla
0irst 'e *a al primer registro de la tabla.
3ast 'e *a al ultimo registro de la tabla.
:e#t /*an(a al siguiente registro.
Prior Retrocede un registro.
-uando se mane,an bases de datos es com&n 1ue necesitemos
acceder a los sus campos mediante c!digo + precisamente un mtodo
de acerlo es utili(ando 0ieldB+:ame.
/ccesos $sicos a la tabla utili(ando 0ieldB+:ame . . .
43
Manual Delphi Ricardo E. Jasso Ponce
0ieldB+:ame permite el acceso al ob,eto 8$eld asociado a un
determinado campo a partir del nombre del campo en la tabla su
sinta#is es de la siguiente )orma7
0unction 0ieldB+:ame-onst :ombre-ampo7 'tring%7 80ieldI
:o te espantes es )cil utili(arlo por e,emplo en nuestra base de datos
In*entario 1ue acabamos de crear si 1ueremos acceder al campo
Producto + asignarle un nombre seria de la siguiente )orma7
8able9.0ieldB+:ameMProductoM%./s'tring 7? M'abritasMI
-omo *es primeramente *a el nombre del componente 8able 1ue
estar ligada a nuestra base de datos )4sica, posteriormente
escribimos 0ieldB+:ame en el cual dentro de parntesis + entre
comillas simples indicaremos el nombre del campo al cual aremos
re)erencia, por ultimo bastara con indicarle el tipo de dato 1ue es el
campo al cual hacemos re)erencia, 1ue por cierto eso lo indicamos
con el ./s. En caso de 1ue 1uieras leer el *alor de un campo +
asignarlo a una *ariable pues simplemente cambia la posici!n de la
l4nea de c!digo anteriormente escrita solo recuerda 1ue los tipos de
datos sean iguales.
Inicio + $n de la 8abla . . .
-uando en un despla(amiento sobre la tabla se llega a su inicio o a su
$nal se modi$can las propiedades Bo) + Eo). 3a propiedad Bo) toma el
*alor 8rue cuando se esta en el primer registro de la tabla + la
propiedad Eo) toma el *alor 8rue cuando se esta en el ultimo registro
de la tabla o cuando la tabla esta *ac4a. Por e,emplo para saber si se
ha llegado al $nal de la tabla seria7
I) 8able9.Eo) ? 8rue then
'ho<MessageM'E E'8/ E: E3 0I:/3 DE 3/ 8/B3/M%I
6rdenaci!n de Registros . . .
Cna *e( 1ue se ha de$nido un Data'et los registros 1ue contiene se
encuentran ordenados por su 4ndice acti*o + este 4ndice 1ueda
determinado por el *alor de la propiedad Inde#:ame del componente
88able si no se especi$ca u 4ndice secundario se tomara el 4ndice
primario. 6tra )orma de ordenar la tabla es utili(ando la propiedad
Inde#0ield:ames en la cual se pondr el 4ndice primario por el cual se
1uiere ordenar. 3os 4ndices pre*iamente se tu*ieron 1ue haber
declarado en la tabla. En tiempo de e,ecuci!n tambin se puede
cambiar el 4ndice de ordenaci!n, por e,emplo el c!digo para ordenar
la tabla In*entario a tra*s de su -la*e primaria seria as4.
43
Manual Delphi Ricardo E. Jasso Ponce
8able9.Inde#0ield:ames 7? M-la*eMI
-omo puedes *er simplemente se le asigna el nombre del 4ndice a la
propiedad Inde#0ield:ames. Es de igual )orma para la propiedad
Inde#:ame.
B&s1uedas de Registros . . .
El componente 8able proporciona una serie de herramientas para
reali(ar b&s1uedas de registros con la limitaci!n de 1ue solo se
reali(aran con campos inde#ados, +o utili(are el mtodo ms com&n +
menos problemtico 1ue es el mtodo directo.
Mediante el mtodo 0ind\e+ se busca en la tabla para encontrar un
registro en el 1ue sus campos 4ndices coincidan con los 1ue se han
pasado como argumentos en un arra+ de *alores separados por
coms, regresa un *alor 0also 6 2erdadero dependiendo si tu*o #ito
o no en la b&s1ueda. Por e,emplo en la tabla In*entarios para buscar
un producto se escribir4a el siguiente c!digo.
I) 8able9.0ind\e+UEdit9.8e#tV% ? 8rue 8hen
'ho<MessageMProducto 3ocali(adoM%
Else
'ho<MessageMProducto no encontradoM%I
-omo puedes *er simplemente *a el nombre del componente 8able
1ue pre*iamente nosotros lo ligaremos a la B.D., posteriormente *a
0ind\e+ en el cual entre parntesis + corchetes ponemos la *ariable o
el dato a buscar 1ue en este caso esto+ suponiendo 1ue en un Edit el
usuario escribi! el producto 1ue desea buscar. /hora como el mtodo
de*uel*e un *alor 8rue cuando se tiene #ito pues solo lo comparo
con un i) igualado a 8rue.
/hora si deseas 1ue el sistema en caso de 1ue no encuentre el
registro se posicione en el registro ms cercano al buscado se pondr4a
la siguiente Instrucci!n.
I) 8able9.0ind\e+UEdit9.8e#tV% ? 8rue 8hen
'ho<MessageMProducto 3ocali(adoM%
Else
8able9.0ind:earestUEdit9.8e#tV%I
-omo puedes *er esto lo hice utili(ando la instrucci!n 0ind:earest.
43
Manual Delphi Ricardo E. Jasso Ponce
/un1ue /mi en lo particular me gusta utili(ar este mtodo + cuando
necesito reali(ar una b&s1ueda por un campo 1ue no es 4ndice utili(o
el 'W3 pues... no le aun1ue les e#plicare el otro mtodo e#istente
para bus1uedas.
El otro mtodo de b&s1uedas es 3ocate, el cual nos permite buscar
por una condici!n en un columna o por *arias columnas. 3ocate es
una )unci!n 1ue de*uel*e 8rue o 0alse seg&n ha tenido #ito o no, + si
su bus1ueda )ue e#itosa la tabla muestra la $la 1ue cumpli! la
condici!n. Para usar este mtodo se han de pasar una serie de
parmetros + a continuaci!n te muestro su sinta#is7
3ocateconst \e+0ields 7 stringI const \e+2alues 7 2ariantI 6ptions 7
83ocate6ptions%
El primer parmetro es el campo o campos por los cuales 1ueremos
hacer la b&s1ueda, por e,emplo en nuestra tabla In*entario ha+ un
campo en el cual guardamos el nombre de los productos +
si1ueremos reali(ar una b&s1ueda por este campo es en este primer
parmetro donde debemos poner el nombre del campo.
El segundo contiene la condici!n, por e,emplo si estamos buscando
productos seg&n su pro*eedor es a1u4 en donde lo pondr4amos. El
e,emplo 1uedar4a as47
8able9.3ocate MProductoM,M-oca-olaM,UV%I
Por &ltimo esta 6ptions, el cual indica como se ha de reali(ar la
b&s1ueda, si se ignoran las ma+&sculas, si se hacen b&s1uedas
parciales en los campos /l)anumricos, etc, esto 1uiere decir 1ue se
mostraran las $las 1ue contengan -oca-ola en sus respecti*os
campos adems 1ue otros datos, o sea 1ue la bus1ueda no es e#acta.
Por e,emplo7
8able9.3ocate MProductoM,M-oca-olaM,U lo-aseInsensiti*eV%I
Recuerda 1ue te di,e 1ue el componente 8able *a 4ntimamente
relacionado con el Data'ource, pos es cierto as4 es 1ue te te e#plicare
su )uncionamiento.
Data'ource
El componente table pertenece a un grupo de componentes 1ue son
deri*an del componente 8Dataset, estos componentes acceden por
di)erentes caminos a los datos, por lo 1ue la inter)a( obtenida di$ere
seg&n el componente empleado. Para 1ue los di)erentes controles 1ue
muestran los datos sean capaces de acceder a esta *ariedad de
43
Manual Delphi Ricardo E. Jasso Ponce
inter)aces pues se utili(a el Data'ource el cual es un componente
intermedio el cual tiene la tarea de mostrar una inter)a( com&n a
todos los controles.
3a propiedad ms importante del Data'ource es Data'et en la cual se
pondr la tabla 1ue 1ueremos ligar a el.
-ontroles DataF/<are
'on los 1ue se encuentran en la $cha Data/cces + E#cepto por el
componente Db:a*igator el resto de los componentes son utili(ados
para presentar los datos de las tablas. Cno de los componentes ms
comunes sin duda es el Dbgrid el cual esta constituido por un
con,unto de re,illas a tra*s de las cuales nos presenta la in)ormaci!n
de las tablas. / continuaci!n te lo e#plicare.
-omponente DBTrid . . .
:os sir*e para *isuali(ar in)ormaci!n almacenada en una tabla, pero
aparte de eso podemos tambin reali(ar inserciones, ediciones,
modi$caciones, etc. + cuenta con *arias propiedades + mtodos 1ue
nos o)recen una amplia gama de con$guraciones tanto para el
aspecto como para el )uncionamiento del control.
3a propiedad principal es Data'ource, es a1u4 en donde indicamos el
datasource al cual 1ueremos *incularlo. En caso de 1ue el Data'ource
se encuentre en otro )ormulario pues simplemente se le escribe el
nombre del )ormulario en el 1ue se encuentra + su data'ource, por
e,emplo supongamos 1ue tengo O )ormularios en el primero tengo mi
tabla + mi Data'ource9 + en el segundo )ormulario tengo un DbTrid9
pues simplemente para ligarlo en su propiedad Data'ource pondr4a
0orm9.Data'ource9 + presto es todo. Despus e#isten otras
propiedades interesantes como 6ptions 1ue a continuaci!n describo.
dsEditing
El usuario puede editar los datos
sobre la re,illa
dg/l<a+s'ho<Edit
or
3a re,illa esta en modo edici!n, no
hace )alta pulsar 0O
dg8itles Muestra los t4tulos de las columnas
dgIndicator
'e muestra un indicador para
conocer el registro acti*o
dg-olumnResi(e
Permite cambiar el ancho de las
columnas
dg-ol3ins
Dibu,a l4neas de separaci!n entre las
columnas
dgRo<3ines
Dibu,a l4neas de separaci!n entre las
$las
dg8abs 'e puede na*egar por el
43
Manual Delphi Ricardo E. Jasso Ponce
componente usado la tecla 8ab
dgRo<'elect
'elecciona $las completas en lugar
de $las
dg-on$rmDelete
Permite borrar registros, mostrando
un mensa,e
dg-ancel6nE#it
-ancelas las inserciones *ac4as al
salir del control
dgMulti'elect
Permite seleccionar m&ltiples $las a
la *e(
"asta ahora esta bien con el DBTrid pero su *erdadera potencialidad
se encuentra en la propiedad -olumns, 1ue encapsula tanto el
aspecto de las columnas como los campos de las tablas o consultas
'W3 1ue estn ligadas al la columna. -uando no se de$nen columnas
en un DBTrid automticamente el control creara una columna para
cada campo de nuestra base de datos. Para accesar al editor de
columnas basta con dar doble clic. sobre el componente o dar un
clic. con el bot!n secundario + elegir la opci!n -olumns Editor del
men& emergente, saldr la siguiente *entana.
Para este pe1ue5o e,emplo es necesario 1ue hagas lo siguiente7
9. Pon un componente 8able, en su propiedad DataBasename elige
DBDemos, en su propiedad 8able:ame elige la tabla /nimals, pon la
propiedad /cti*e en 8rue.
O. -oloca un componente Data'ource + en su propiedad Data'et pon
8able9.
H. -oloca un componente DbTrid + en su propiedad Data'ource pon
Data'ource9.
43
Manual Delphi Ricardo E. Jasso Ponce

/hora *iene algo importante, hasta ahora nos mostrara todos los
campos de la tabla en nuestro DBTrid por lo tanto 1uiero 1ue des
doble -lic. sobre el DBTrid + aparecer el editor de columnas, pero
sorpresa *erdad esta *ac4o + eso es por 1ue no se han de$nido +
para de$nirlos basta con dar un clic. en el tercer icono 1ue dice /dd
/ll 0ields + nos agregara una columna para cada campo de nuestra
base de datos empe(ando por un 4ndice cero, bien ahora +a tengo
todos los campos de mi base de datos por lo tanto si 1uiero borrar
algunos bastara con seleccionarlos + dar un clic. en el segundo icono
1ue dice Delete 'elected Del%, cabe mencionar 1ue no solo puedo
borrar algunos campos 1ue no 1uiera si no 1ue tambin puedo
cambiar el orden de las columnas arrastrando con el puntero del
rat!n a la posici!n 1ue deseo un campo en particular.
-uando esto+ en el editor de columnas + selecciono una de ellas
cambiaran las propiedades en el inspector de ob,etos brindndonos
con esto ciertas opciones 1ue podremos modi$car, a continuaci!n te
las describo.
/lignment /lineaci!n de la columna
Button st+le
Permite desplegar un lista con *alores, o
un bot!n
-olor -olor de )ondo de la columna
DropDo<n
Ro<s
:&mero de $las desplegables
0ield:ame :ombre del campo 1ue se *isuali(a
0ont
0uente con la 1ue se muestra la
in)ormaci!n de la columna
Pic.3ist
3ista de *alores 1ue aparecern al
desplegar la columna
Read6nl+ Esta columna solo es de lectura
;idth /ncho de la columna en Pi#els
8itle 84tulo de la columna
/hora la opci!n 8itle tiene ciertas propiedades 1ue son interesantes
es por eso pariente 1ue las describo.



3a propiedad Pic.3ist es
una propiedad 1ue
apunta a una lista de 'tring + el e)ecto 1ue produce es 1ue en la
/lignme
nt
/lineaci!n de la cabecera de
columna
-aption
8e#to 1ue muestra la cabecera de la
columna
-olor -olor )ondo de la cabecera
0ont
0uente con la 1ue mostrara la
cabecera
43
Manual Delphi Ricardo E. Jasso Ponce
columna donde se ponga se muestra un men& desplegable 1ue se
acti*ara con el rat!n + contendr todo lo 1ue ha+amos puesto en la
propiedad Pic.3ist, solo ten cuidado +a 1ue la propiedad Button't+le
debe ser cbs/uto.
'e puede manipular in)ormaci!n + reali(ar operaciones con los
campos del DBTrid los mtodos ms comunes son el
DbTrid9.-olumnsUn&mero[columnaV.Propiedad +
DbTrid9.0ieldsUn&mero[columnaV.propiedad. 8odo depender de 1ue
tipo de operaci!n deseo reali(ar.
DB:/*igator . . .
Este control tiene incorporada las )uncionalidades ms comunes 1ue
se reali(an sobre una base de datos +a 1ue con el podemos na*egar
entre los registros, eliminar un registro, ponerlo en modo de edici!n,
insertar registros, etc. su propiedad ms importante es la Data'ource
en la cual se tiene 1ue indicar el Data'ource sobre el cual traba,ara.
Describo los botones del na*egador.
Bot!n Mtodo Descripci!n
nb0irst 0irst
'alta al primer
registro de la tabla.
Desacti*a los botones
0irst + prior + acti*a
:e#t + 3ast si no lo
estaban.
nbPrior Prior
Retrocede al registro
anterior del actual,
acti*a :e#t + 3ast.
nb:e#t :e#t
/*an(a al registro
posterior al actual,
acti*a 0irst + Prior.
nb3ast 3ast
'alta al ultimo registro
de la tabla, desabilita
:e#t + 3ast + acti*a
0irst + Prior.
nbInsert Insert
Inserta un nue*o
registro en la posicion
anterior al registro
actual, modi$ca el
estado de la tabla a
modo de Edicion.
nbDelete Delete
Borra el registro
actual + se posiciona
en el registro
siguiente
nbEdit Edit Pone la tabla en modo
de edici!n, con lo cual
43
Manual Delphi Ricardo E. Jasso Ponce
se pueden modi$car
los datos del registro.
nbPost Post
Escribe en la base de
datos los cambios
reali(ados sobre el
registro acti*o.
nb-ancel -ancel
-ancela la edici!n del
registro acti*o +
recupero los datos
anteriores.
nbRe)resh Re)resh
Re)resca la tabla o la
actuali(a.
Cna propiedad interesante es la propiedad 2isibleButtons 1ue
contiene todos los botones 1ue nos presenta el DB:a*igator, basta
con poner en )alse los 1ue no 1ueramos 1ue se muestren.
3a propiedad "ints permite colocar una le+enda para cada bot!n, si
desacti*aste alg&n bot!n su le+enda solo d,ala en blanco. sale
primo.
3a propiedad -on$rmDelete recibe un *alor Booleano + esta en 8rue
por de)aul + lo 1ue reali(a es mandarnos un mensa,e de ad*ertencia
cuando se trata de borrar un registro.
/hora a nuestro )ormulario por )a*or col!cale un Db:a*igator + listo
podrs recorrer los campos de la tabla /nimals 1ue pusimos
anteriormente, solo recuerda poner en la Propiedad Data'ource del
DB:a*igator Data'ource9.
DBEdit, DB8e#t 0icha Data/cces%. . .
El componente DBEdit esta dise5ado tanto para presentar datos como
para introducir datos en una tabla + su propiedad ms importante es
Data'ource, la cual har re)erencia a la tabla con la 1ue se traba,ara.
3a propiedad Data0ield Indica el campo de la base de datos con el
cual se traba,ara. Esta propiedad mostrara todos los campos de la
tabla solo tienes 1ue elegir cual 1uieres.
6tra propiedad interesante podr4a ser Read6nl+ la cual recibe un
*alor Boolano + sir*e para poner el campo en solo lectura
desabilitando de esta )orma 1ue se capture in)ormaci!n sobre el. 3as
dems propiedades son iguales a las del Edit.
El componente DB8e#t esta dise5ado solo para presentar in)ormaci!n.
8iene el aspecto de un 3abel solo 1ue a di)erencia de este ultimo,
mostrara la in)ormaci!n contenida en un registro de la base de datos,
no se puede introducir in)ormaci!n en un DB8e#t.
43
Manual Delphi Ricardo E. Jasso Ponce
'us propiedades ms interesantes son el Data'ource + Data0ield, las
cuales )uncionan igual 1ue las del DBEdit.
:68/7 8odos estos componentes )uncionan a tra*s de las
propiedades Data'ource + Data0ield, solo es cuesti!n 1ue indagues
sobre ellos un poco + tu mismo descubrirs su )uncionalidad.

You might also like