Este documento proporciona una introducción al entorno de desarrollo integrado (IDE) de Delphi. Explica las principales características del IDE como el editor de código, el editor de imágenes, el depurador y las herramientas de bases de datos. También describe los componentes visuales, el formulario principal, el inspector de objetos y algunas propiedades y eventos comunes. Por último, introduce conceptos básicos como operadores, declaración de variables y constantes.
0 calificaciones0% encontró este documento útil (0 votos)
123 vistas52 páginas
Este documento proporciona una introducción al entorno de desarrollo integrado (IDE) de Delphi. Explica las principales características del IDE como el editor de código, el editor de imágenes, el depurador y las herramientas de bases de datos. También describe los componentes visuales, el formulario principal, el inspector de objetos y algunas propiedades y eventos comunes. Por último, introduce conceptos básicos como operadores, declaración de variables y constantes.
Este documento proporciona una introducción al entorno de desarrollo integrado (IDE) de Delphi. Explica las principales características del IDE como el editor de código, el editor de imágenes, el depurador y las herramientas de bases de datos. También describe los componentes visuales, el formulario principal, el inspector de objetos y algunas propiedades y eventos comunes. Por último, introduce conceptos básicos como operadores, declaración de variables y constantes.
Este documento proporciona una introducción al entorno de desarrollo integrado (IDE) de Delphi. Explica las principales características del IDE como el editor de código, el editor de imágenes, el depurador y las herramientas de bases de datos. También describe los componentes visuales, el formulario principal, el inspector de objetos y algunas propiedades y eventos comunes. Por último, introduce conceptos básicos como operadores, declaración de variables y constantes.
Descargue como DOC, PDF, TXT o lea en línea desde Scribd
Descargar como doc, pdf o txt
Está en la página 1de 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 <imo 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<iples $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.