• No se han encontrado resultados

Manual de Delphi 7

N/A
N/A
Protected

Academic year: 2021

Share "Manual de Delphi 7"

Copied!
52
0
0

Texto completo

(1)

Manual Básico Borland Delphi

Manual Básico Borland Delphi

7

(2)

M

Ma

an

nu

ua

al

l D

De

ellp

ph

hii

Riicca

R

arrd

do

o E

E.

. JJa

asssso

o P

Po

on

ncce

e

Entorno de Desarrollo

Entorno de Desarrollo

El entorno de desarrollo, también conocido como IDE, se muestra al El entorno de desarrollo, también conocido como IDE, se muestra al iniciar Delphi integrando todas las herramientas necesarias (Editor de iniciar Delphi integrando todas las herramientas necesarias (Editor de código, Editor de imágenes, Depurador, Herramientas de conexión a código, Editor de imágenes, Depurador, Herramientas de conexión a ba

baseses s de de dadatotos, s, fifichchas as de de cocompmpononenentetes, s, etetc.c.) ) papara ra dedesarsarrorollllarar nuestras distintas aplicaciones. En la siguiente figura se muestra su nuestras distintas aplicaciones. En la siguiente figura se muestra su entorno.

entorno.

Men

Menú Prú Princincipal ipal . . .. . . En él,En él, Se puede realizar casi todo desde losSe puede realizar casi todo desde los

di

difefererentntes es subsubmemenúnús s cocomo mo dedefifininir r lalas s opopcicionones es de de cocompmpililacacióión,n, personalizar las fichas de componentes o agregar nuevas, guardar o personalizar las fichas de componentes o agregar nuevas, guardar o abrir proyectos,

abrir proyectos, etc., es etc., es necesario necesario revisarlo antes revisarlo antes de comenzar.de comenzar. Barra de Herramientas . . .

Barra de Herramientas . . . Esto es solo un conjunto de botones deEsto es solo un conjunto de botones de acceso rápido a las

acceso rápido a las diferediferentes opcionentes opciones s del menú, lo del menú, lo cual nos cual nos facilifacilitata ej

ejecuecutatar r lalas s acaccicionones es mámás s ututililizizadadas as de de ununa a mamanenera ra mámás s rárápipidada.. Dando un Click sobre ellas con el botón derecho del ratón podremos Dando un Click sobre ellas con el botón derecho del ratón podremos configurarlas.

(3)

M

Ma

an

nu

ua

al

l D

De

ellp

ph

hii

Riicca

R

arrd

do

o E

E.

. JJa

asssso

o P

Po

on

ncce

e

Entorno de Desarrollo

Entorno de Desarrollo

El entorno de desarrollo, también conocido como IDE, se muestra al El entorno de desarrollo, también conocido como IDE, se muestra al iniciar Delphi integrando todas las herramientas necesarias (Editor de iniciar Delphi integrando todas las herramientas necesarias (Editor de código, Editor de imágenes, Depurador, Herramientas de conexión a código, Editor de imágenes, Depurador, Herramientas de conexión a ba

baseses s de de dadatotos, s, fifichchas as de de cocompmpononenentetes, s, etetc.c.) ) papara ra dedesarsarrorollllarar nuestras distintas aplicaciones. En la siguiente figura se muestra su nuestras distintas aplicaciones. En la siguiente figura se muestra su entorno.

entorno.

Men

Menú Prú Princincipal ipal . . .. . . En él,En él, Se puede realizar casi todo desde losSe puede realizar casi todo desde los

di

difefererentntes es subsubmemenúnús s cocomo mo dedefifininir r lalas s opopcicionones es de de cocompmpililacacióión,n, personalizar las fichas de componentes o agregar nuevas, guardar o personalizar las fichas de componentes o agregar nuevas, guardar o abrir proyectos,

abrir proyectos, etc., es etc., es necesario necesario revisarlo antes revisarlo antes de comenzar.de comenzar. Barra de Herramientas . . .

Barra de Herramientas . . . Esto es solo un conjunto de botones deEsto es solo un conjunto de botones de acceso rápido a las

acceso rápido a las diferediferentes opcionentes opciones s del menú, lo del menú, lo cual nos cual nos facilifacilitata ej

ejecuecutatar r lalas s acaccicionones es mámás s ututililizizadadas as de de ununa a mamanenera ra mámás s rárápipidada.. Dando un Click sobre ellas con el botón derecho del ratón podremos Dando un Click sobre ellas con el botón derecho del ratón podremos configurarlas.

(4)

M

Ma

an

nu

ua

al

l D

De

ellp

ph

hii

Riicca

R

arrd

do

o E

E.

. JJa

asssso

o P

Po

on

ncce

e

Fi

Ficchhaas s dde e CCoommppoonneennttees s . . . . . . SSoon n llaas s qquue e ddaan n AAcccceesso o a a llooss co

compmpononenentetes s quque e foformrman an la la bibiblblioioteteca ca de de cocompmpononenentetes s vivisusualaleses co

cononocicida da ttamambibién én cocomo mo VCVCL L ( ( ViVisusual al CoCompmpononenent t LiLibrbrarary) y) y y sese en

encucuenentrtra a didivivididida da en en vavaririas as cacatetegogorírías as sesegúgún n lalas s fufuncncioionenes s ququee realizan. Cada paleta

realizan. Cada paleta incluye incluye en su parte izquierda en su parte izquierda el botón puntel botón punteroero que no es un componente sino que su función es parecida a la de que no es un componente sino que su función es parecida a la de cua

cualqulquier ier proprogragrama ma grágráficfico o sirvsirve e parpara a desdeseleelecciccionaonar r comcomponponententeses seleccionados, etc. Para insertar un componente en el formulario solo seleccionados, etc. Para insertar un componente en el formulario solo se

seleleccccioiona na el el cocompmpononenente te a a ininsesertrtar ar dedespspuués és pupulslsa a sosobbre re elel formulario y arrastra el ratón para definir su tamaño, en caso que no formulario y arrastra el ratón para definir su tamaño, en caso que no llo o aarrrraassttrrees s DDeellpphhi i aauuttoommááttiiccaammeenntte e lle e ppoonne e ssu u ttaammaaññoo predeterminado. Otra forma de insertar los componentes es dando predeterminado. Otra forma de insertar los componentes es dando d

doobblle e CClliic c ssoobbrre e eel l ccoommppoonneenntte e a a iinnsseerrttaar r een n lla a ffiicchha a ddee componentes.

componentes.

Formulario o Form . . .

Formulario o Form . . . Es Es la la pipiezeza a prprinincicipapal l dedel l didiseseño ño de de lalass ap

aplilicacacicionones, es, es es el el cocontntenenededor or fifinanal l de de ototroros s cocompmpononenentetes s ququee fi

finanalmlmenente te coconsnstititutuirirán án nunuestestra ra apaplilicacaciciónón. . El El foformrmulularario io es es unun componente más de Delphi por lo cual tiene propiedades y eventos componente más de Delphi por lo cual tiene propiedades y eventos lo

los s cucualeales s se se pupuededen en alalteterarar r y y trtrababajajar ar cocon n elellolos. s. PaPara ra aqaqueuellllasas personas que emigran de lenguajes de programación lineal como C o personas que emigran de lenguajes de programación lineal como C o Clipper tengan en cuenta que ustedes utilizaran tantos formularios Clipper tengan en cuenta que ustedes utilizaran tantos formularios como su aplicación los requiera.

(5)

M

Ma

an

nu

ua

al

l D

De

ellp

ph

hii

Riicca

R

arrd

do

o E

E.

. JJa

asssso

o P

Po

on

ncce

e

Inspector de Objetos u Object Inspector. Este nos permite modificar Inspector de Objetos u Object Inspector. Este nos permite modificar llaas s pprrooppiieeddaaddees s y y rreessppuueessttaas s a a ssuucceessoos s o o eevveennttoos s dde e llooss co

compmpononenentetes, s, susus s dadatotos s mumuesestrtran an el el esestatado do dedel l cocompmpononenentete seleccionado o del mismo formulario. Está dividido en dos partes en seleccionado o del mismo formulario. Está dividido en dos partes en forma de pestañas o solapas una que dice Properties y Events. A forma de pestañas o solapas una que dice Properties y Events. A continuación se muestra las propiedades del formulario.

continuación se muestra las propiedades del formulario.

Existen propiedades que tienen un signo de más, eso significa que Existen propiedades que tienen un signo de más, eso significa que so

son n cocontntenenededororas as de de ototraras s opopcicionones. es. A A cocontntininuauacición ón se se exexplplicicanan algunas de las propiedades más comunes del formulario.

algunas de las propiedades más comunes del formulario.

BorderIcons: Tiene cuatro opciones mismás que reciben un valor falso BorderIcons: Tiene cuatro opciones mismás que reciben un valor falso o

o veverdrdadaderero o (T(Trurue e o o FaFalslse) e) de de lalas s cucualales es dodos s soson n mumuy y útútililes es yy empezaremos por la de biMinimize, esta opción esta en True por empezaremos por la de biMinimize, esta opción esta en True por de

(6)

M

Ma

an

nu

ua

al

l D

De

ellp

ph

hii

Riicca

R

arrd

do

o E

E.

. JJa

asssso

o P

Po

on

ncce

e

biMaximize por default está en True y permite que nuestro formulario biMaximize por default está en True y permite que nuestro formulario se pueda maximizar en tiempo de ejecución.

se pueda maximizar en tiempo de ejecución.

BorderStyle: Despliega una lista con los diferentes estilos de bordes BorderStyle: Despliega una lista con los diferentes estilos de bordes para el formulario.

para el formulario.

Caption: Esta es una propiedad importante debido a que es aquí en Caption: Esta es una propiedad importante debido a que es aquí en donde escribimos el texto de la barra de titulo del formulario, es donde escribimos el texto de la barra de titulo del formulario, es alfanumérica y por default tendrá el nombre del formulario (Form1 en alfanumérica y por default tendrá el nombre del formulario (Form1 en este caso)..

este caso)..

Name: Es el nombre del componente, por Default aparecerá Form y el Name: Es el nombre del componente, por Default aparecerá Form y el nu

numemero ro de de fforormumulalaririo, o, en en esestte e ccasaso o es es FoFormrm11, , eestste e se se ppueuedede modificar y ponerle un nombre que nosotros queramos has de cuenta modificar y ponerle un nombre que nosotros queramos has de cuenta qu

que e el el foformrmulularario io es es ununa a vavaririabable le y y la la prpropopieiedadad d NaName me titienene e elel nombre de esa variable.

nombre de esa variable. Po

Posisititionon: : DeDespspliliegega a ununa a liliststa a en en la la cucual al mumuesestrtra a lalas s didifefererentnteses posiciones sobre las cuales podemos mostrar nuestro formulario al posiciones sobre las cuales podemos mostrar nuestro formulario al momento de correrlo.

momento de correrlo. Wi

WinnddoowwsSsSaattaattee: : DDeespsplliieegga a uunna a lliiststa a dde e vvaalloorres es WsWsNNoorrmmaall,, WsMinimized, WsMaximized, las cuales alteran nuestro formulario al WsMinimized, WsMaximized, las cuales alteran nuestro formulario al mo

momementnto o de de cocorrrrererlo lo es es dedecicir r si si elelegegimimos os la la de de WsWsMaMaxiximimizezedd mostrara maximizado nuestro formulario.

mostrara maximizado nuestro formulario. P

Paarra a ddiimmeennsisioonnaar r nnuueeststrro o ffoormrmuullaarrio io bbaasstta a ccoon n aalltteerraar r llaass pr

propopieiedadadedes s HeHeigight ht y y WidWidth th auaunqnque ue tatambmbiéién n se se pupuedede e rerealalizizarar posici

posicionandonando sobre los bordes del formuo sobre los bordes del formulario el punterlario el puntero del o del ratón yratón y arrastrarlo hasta lograr la dimensión que queramos.

arrastrarlo hasta lograr la dimensión que queramos.

Nota: Existen Propiedades que son iguales para varios componentes Nota: Existen Propiedades que son iguales para varios componentes como Caption, Font, Visible, etc.

como Caption, Font, Visible, etc.

Ahora mostraré los eventos del formulario. Ahora mostraré los eventos del formulario.

Los eventos son sucesos que detecta nuestro formulario y según el Los eventos son sucesos que detecta nuestro formulario y según el su

suceceso so dedetetectctadado o se se ejejecuecuta ta su su cócódidigogo, , exexististen en vavariorios s evevenentotos,s, ex

explplicicararé é sosolo lo alalgugunonos, s, de de cucualalququieier r foformrma a dudurarantnte e el el cucursrso o sese explicarán más. Para introducir el código basta con dar doble Click en explicarán más. Para introducir el código basta con dar doble Click en la parte derecha del evento a utilizar y Delphi automáticamente nos la parte derecha del evento a utilizar y Delphi automáticamente nos crea el procedimiento de dicho evento y nos muestra el editor de crea el procedimiento de dicho evento y nos muestra el editor de código.

(7)

Manual Delphi

Ricardo E. Jasso Ponce

Operadores Lógicos y Aritméticos

Operadores Aritméticos. . . . Permite realizar todo tipo de operaciones comunes con operadores numéricos ya sean reales o enteros, en la siguiente tabla se muestran los tipos de datos.

Operad

or Operación OperandoTipo Resultado Tipo + Suma IntegerReal IntegerReal

- Resta IntegerReal IntegerReal * Multiplicación IntegerReal IntegerReal

/ División Integer

Real IntegerReal

Div División

entera Integer Integer

Mod Resto Integer Integer

Operadores Lógicos. . . Se dividen en dos categorías los lógicos y los booleanos. La diferencia está en que las operaciones lógicas llevan la comparación de valores a nivel de bit y las operaciones booleanas realizan comparaciones verificando si una cierta expresión es verdadera o falsa. En la siguiente tabla se presentan las operaciones lógicas.

(8)

Manual Delphi

Ricardo E. Jasso Ponce

Not Negación a nivel

de Bit. Integer Integer

And Producto a nivel

de Bit. Integer Integer

Or Suma a nivel de

Bit. Integer Integer

Xor Or Exclusiva a

nivel de Bit. Integer Integer

Shl Desplazamiento

bit a bit hacia la izquierda.

Integer Integer

Shr Desplazamiento

bit a bit hacia la derecha.

Integer Integer

La siguiente tabla muestra los operadores booleanos.

Operad or Operació n Tipo Operand o Tipo Resultad o

Not Negación. Boolean Boolean

And Producto

lógico. Boolean Boolean

Or Suma

lógica. Boolean Boolean

Xor Or

Exclusiva lógica.

Boolean Boolean

Operadores Relaciónales. . . Los utilizamos para realizar

comparaciones entre dos valores y a continuación se muestran en la siguiente tabla.

Operador Operación Tipo

Resultado

= Igualdad. Boolean

(9)

Manual Delphi

Ricardo E. Jasso Ponce

< Menor que. Boolean

> Mayor que. Boolean

<= Menor o Igual

que. Boolean

>= Mayor o Igual

que. Boolean

Precedencia de Operadores. . . Cuando se evalúa una expresión en la que aparecen combinados diferentes operadores, las operaciones que representan se ejecutan en cierto orden que están marcados por la precedencia de los operadores. A continuación se muestra una tabla con su precedencia.

Operador Precedencia Categoría

@ , Not Primera Operadores

Unarios * , / , Div , Mod , And , Shl , Shr , As Segunda Operadores de Multiplicación + , - , Or ,

Xor Tercera Operadores deAdición =, <> , < ,

> , <= , >= Cuarta RelacionalesOperadores

Existen cuatro reglas de precedencia que se deben de tomar en cuenta:

• Las expresiones encerradas entre paréntesis se evalúan antes

de tratarlas como un único operando. Lo que significa que primero se evalúa lo que está dentro del paréntesis por ejemplo la siguiente operación valor:= 10 + (3*3); primero multiplica 3*3 y su resultado lo suma con el 10.

• Un operador unario siempre precede al operador binario, por

ejemplo -5 * 10 es lo mismo que tuviéramos (-5) * 10.

• Un operador que se encuentra entre dos operadores de

precedencias diferentes se relaciona con el operador de precedencia mayor, por ejemplo valor:= 5 * 3 + 10; en este caso primero se multiplica y después se suma.

• Un operando que se encuentra entre dos operadores iguales se

relaciona con el de su izquierda. Por ejemplo si se tuviera valor := 5 + 3 + 6; es lo mismo que valor := (5 + 3) + 6;

(10)

Manual Delphi

Ricardo E. Jasso Ponce

Declaración de Variables y Constantes

CONSTANTES. . . Se utilizan para representar lógicamente un valor

que será utilizado repetidamente en nuestro programa y que no variará durante su ejecución. Para su declaración se utiliza la palabra reservada Const. Por ejemplo continuación declararé la constante PI = 3.14 y nombre ='Pablo ' en el evento Oncreate del formulario.

procedure TForm1.FormCreate(Sender: TObject); const PI = 3.14; nombre = 'Pablo '; begin ShowMessage(nombre+FloatToStr(PI)); end;

Si declaras constantes o variables dentro de algún procedimiento, irían entre el Procedure y el Begin. Como puedes ver utilizamos nuevamente la función ShowMesage () la cual me permite mandar un mensaje sencillo al usuario pero bueno se explicará más adelante en mensajes. De igual forma utilizo la función FloatToStr () la cual me permite convertir valores de tipo flotante a cadena.

Variables. . . Una variable es un valor perteneciente a un cierto

dominio y puede variar durante la ejecución del programa. En Delphi las Variables se declaran con la palabra reservada Var. Por ejemplo realizaremos la misma función que las constantes pero ahora utilizando variables y el código quedaría así:

procedure TForm1.FormCreate(Sender: TObject); var PI : Real; nombre : String; begin PI := 3.14; nombre := 'Pablo '; ShowMessage(nombre + FloatToStr(PI)); end;

NOTA: En Delphi las Asignaciones se realizan mediante:= como puedes observar.

Bien ya vimos como declarar constantes y variables ahora es necesario ver los tipos de datos soportados por Delphi.

(11)

Manual Delphi

Ricardo E. Jasso Ponce

Delphi Soporta tipos de datos simples y tipos de datos compuestos pero por ahora nos enfocaremos a los simples.

  Tipos Enteros . . . Son aquellos que representan números no decimales dentro de un rango y existen diferentes tipos de enteros clasificados según su rango. A continuación muestro una tabla con los tipos de datos enteros.

Tipo Rango de Valores Formato

Byte 0 .. 25 8 bits sin signo

Word 0 .. 65535 16 bits sin signo

LongWord 0 .. 4294967295 32 bits sin signo ShortInt -128 .. 127 8 bits con signo SmallInt -32768 .. 32767 16 bits con signo LongInt -2147483648 ..2147483648 32 bits con signo Int64 -2Exp63 .. 2Exp63-1 64 bits con signo Integer -2147483648 ..2147483648 32 bits con signo Cardinal 0 .. 214 7483648 32 bits sin signo

Por defecto las operaciones aritméticas con valores enteros devolverán un valor entero, hay que tener cuidado por que una variable de tipo entera no puede almacenar un dato de tipo real, más sin embargo una variable de tipo real si puede recibir un dato entero.  Tipos Reales . . . Son adecuados para variables que albergan valores

con una parte decimal, a continuación muestro una tabla con los diferentes tipos reales soportados por Object Pascal.

Tipo Rango de valores SignificatiDígitos vos

 Tamaño en Bytes Single ± 1.5 * 10Exp-45 .. ± 3.4 *10Exp38 7-8 4

Real48 ± 2.9 * 10Exp-39 .. ± 1.7 *10Exp38 11-12 6 Real ± 5.0 * 10Exp-324 .. ± 1.7 *10Exp308 15-16 8 Double ± 5.0 * 10Exp-324 .. ± 1.7 *10Exp308 15-16 8 Extend

ed ± 3.4 * 10Exp-4932 .. ± 1.1* 10Exp4392 19-20 10

Comp -2Exp63 .. 2Exp63 -1 19-20 8

Curren

(12)

Manual Delphi

Ricardo E. Jasso Ponce

La declaración de variables reales utiliza exactamente la misma sintaxis que la explicada para los números enteros. De hecho en el ejemplo anterior se declaro una variable de tipo Real.

  Tipos Booleanos . . . Este es un tipo de dato muy sencillo pero igualmente utilizado, representan cantidades lógicas como verdadero o falso y en el Object Pascal existen cuatro que son: Boolean, ByteBool, WordBool y LongBool. El que se recomienda más es el tipo Boolean debido a que utiliza menos memoria, las otras existen para permitir la compatibilidad con otros lenguajes y el entorno de Windows. Bueno a continuación te muestro su tabla.

Tipo Memoria Requerida en bytes Boolean 1 (Recomendado) ByteBoolean 1 WordBool 2 LongBool 4

Se declaran como cualquier otra variable solo que el valor que pueden recibir es True o False. Ejemplo. Este código se puso en el evento Oncreate del Formulario Ok.

procedure TForm1.FormCreate(Sender: TObject); var

Compadre : Boolean; begin

Compadre := True;

If Compadre = True then

ShowMessage('Tu si eres mi compadre') Else

ShowMEssage('Tu no eres mi compadre'); end;

Este fue un ejemplo inútil, pero es solo para ilustrar su manejo muy simplemente, tu eres quien le darás una verdadera aplicación si tus problemás lo requieren. Por lo pronto puedes experimentar cambiando la asignación de compadre a False.

  Tipos de Carácter . . . Los tipos de carácter están diseñados para albergar caracteres según un cierto código numérico que usualmente es el ANSI que mediante palabras de 8 bits representa hasta 256 caracteres. A continuación muestro su tabla.

 Tipo Carácter quecontiene Memoria requeridaen Bytes

(13)

Manual Delphi

Ricardo E. Jasso Ponce

WideChar Un Caracter Unicode 2

Char Un Caracter Ansi 1

  Tipos Cadena de Caracteres . . . También conocidos como String. Estas existen como tipos predefinidos que albergan la concatenación de un determinado número de caracteres bueno es algo parecido a los arrays si así lo quieren ver. En seguida muestro la tabla con los diferentes tipos.

 Tipo Carácterque

contiene Longitud Máxima Memoria

AnsiStrin

g AnsiChar Caracteres~2Exp31 Hasta GB. ShortStri

ng AnsiChar 255 Caracteres 2 a 256 Bytes. String AnsiChar Caracteres~2Exp31 256 hasta 2GB. WideStri

ng WideChar Caracteres~2Exp30 Hasta 2GB.  Te pongo un ejemplo para explicar su uso.

procedure TForm1.FormCreate(Sender: TObject); var

Nombre, Apellido : String; begin

Nombre := 'Pablo '; Apellido := 'Bustos';

Nombre := Nombre + Apellido; ShowMessage(Nombre);

end;

Nota: a diferencia de C y otros lenguajes, en Delphi las concatenaciones se hacen con el signo +; las asignaciones se hacen normalmente, únicamente utilizan las comillas simples (') para indicarle que se trata de una cadena. Como anteriormente se mencionó estas variables son parecidas a los arrays y podríamos accesar directamente a alguna posición de la variable por ejemplo si a la variable Nombre únicamente quisiera concatenarle la letra B de la Variable Apellido lo haría de la siguiente forma: Nombre := Nombre + Apellido[1]. Como puedes ver a diferencia de C el inicio de posiciones comienza en 1 y no en 0. Ok.

Existe la instrucción Array perteneciente a los datos compuestos, la cual permite declarar arreglos de una o varias dimensiones

(14)

Manual Delphi

Ricardo E. Jasso Ponce

Sentencias de control

  Todo programa esta constituido por decisiones y acciones que se ejecutan repetidamente en función del estado del programa y las sentencias de control, son las que nos permiten hacer esas cosas. Explicaré las más utilizadas.

Condicion If ... Then : Las condiciones If sin duda son unas de las más utilizadas y permite condicionar la ejecución de un determinado código al cumplirse una determinada condición. La sintaxis seria como sigue:

If Condicion Then Codigo1

Else

Codigo2

Codigo1, se ejecutará cuando la condición se cumple y Codigo2 cuando la condición no se cumple. Pueden anidarse tantas sentencias if como necesites.

Cuando los códigos a ejecutar tanto para el Else como para el IF son más de una instrucción se deben de poner entre un Begin y un End. Para que quede más claro haremos un ejercicio más practico, el código irá en el evento Oncreate del Form. Se preguntarán por que utilizo ese evento bueno pues por que todavía no les enseño como funcionan otros componentes.

procedure TForm1.FormCreate(Sender: TObject); var numero : Integer;

begin

Randomize();

numero := random(20); if numero > 10 Then begin

numero := numero * numero;

ShowMessage('Es mayor, al cuadrado es: ' + IntToStr(numero)); end

(15)

Manual Delphi

Ricardo E. Jasso Ponce

Else begin

numero := numero * numero;

ShowMessage('Es menor, al cuadrado es: ' + IntToStr(numero)); end;

end;

Nota: En el ejemplo declaro una variable de tipo entero después utilizo la función Randomize() la cual inicializa el motor de generación de números aleatorios luego asigno a numero el resultado que devuelva random(20) la cual es una función que devuelve un valor aleatorio entre un rango previamente especificado que en este caso es un 20. Este ejemplo es muy sencillo lo que hace es generar un numero aleatorio lo compara y si es mayor que diez manda un mensaje diciendo que es mayor y mostrando su cuadrado y en caso de que sea menor hace casi lo mismo solo que indica que es menor. Case ... OF : Permite comparar una variable o expresión con un conjunto predeterminado de valores y ejecutar un código determinado de acuerdo al resultado de la comparación o expresión. Aquí tienes su sintaxis.

Case Expresion Of 

Lista de constantes separadas por comás : Codigo; Valor Inicial .. Valor final : Codigo2;

Else

Codigo por Defecto;

Hay va un ejemplo para que quede más claro Ok. procedure TForm1.FormCreate(Sender: TObject); var numero : Word;

begin

Randomize();

numero := Random(4); Case numero Of 

0: ShowMessage('El numero es un Cero'); 1: ShowMessage('El numero es un Uno'); 2: ShowMessage('El numero es un Dos'); else

ShowMessage('El numero es mayor que dos'); end;

end;

Este es un ejemplo muy sencillo, genero un numero aleatorio de entre 4 dígitos incluyendo el cero, luego con el Case lo comparo hasta el

(16)

Manual Delphi

Ricardo E. Jasso Ponce

numero dos dejando un mensaje en el else para cuando el numero sea mayor que dos.

Bueno creo que ha llegado la hora de explicar los ciclos o bucles así  que empezaremos.

Repeat Until : Permite ejecutar un determinado código hasta que se satisfaga una cierta condición, su sintaxis es de la siguiente forma: Repeat

Codigo

Until Condicion

La condición debe producir un resultado de tipo Booleano, cabe mencionar que en este tipo de ciclos el código se ejecuta por lo menos una vez debido a que la condición se realiza en la parte final del ciclo.

Les pondré un sencillo ejemplo pero ahora utilizaremos el evento OnClick del Form.

procedure TForm1.FormClick(Sender: TObject); var numero, suma : Integer;

begin

numero := 1; suma := 0; repeat

suma := suma + numero; inc(numero);

until numero = 10;

ShowMessage(IntToStr(suma)); end;

While ... Do : Es parecido al anterior solo que la verificación del ciclo se realiza al inicio. Aquí tienes su sintaxis.

While Condición Do Codigo

Si el código es más de una instrucción se tendrá que poner entre un Begin y un End. que no se te olvide. De este ciclo no pondré ejemplo creo que tu puedes utilizar el código anterior y aplicarlo a este ciclo. For ... Do : Nos permite repetir la ejecución de un determinado código un numero definido de veces. La sintaxis es como sigue.

(17)

Manual Delphi

Ricardo E. Jasso Ponce

For Variable := Valor Inicial To/Downto Valor Final Do Codigo

El Downto es para realizar ciclos en decremento y el To en incremento. así que si quieres sumar los números del 1 al 100 seria: procedure TForm1.FormClick(Sender: TObject);

var numero, suma: Integer; begin

suma :=0;

For numero := 1 To 100 Do suma := suma + numero; ShowMessage(IntToStr(suma)); end;

Con esto hemos concluido una parte que es fundamental conocer para el manejo de Delphi, como lo es su entorno de desarrollo, declaración de constantes, variables y sus sentencias de control. Así  que de aquí en adelante nos dedicaremos a ver cosas mucho más interesantes, explotaremos la potencialidad de Delphi y empezaremos por ver los tipos de mensajes que Delphi permite realizar.

Mensajes en Delphi

Es verdaderamente útil poder interactuar con el usuario, decirle que es lo que esta ocurriendo o dejarlo que tome decisiones. Esto en parte podemos lograrlo con las ventanas o cuadros de mensaje, por si no tienes una idea clara de que es lo que son pues son por ejemplo el cuadro que te aparece en Word (u otra Aplicación) cuando no has guardado tu trabajo preguntando si deseas guardarlo.

Delphi permite Los siguientes tipos de Mensajes.

• ShowMessage

• ShowMessagePos

• MessageDlg

• MessageDlgPos

• MessageBox

ShowMessage . . . Es el más sencillo de todos y ya lo hemos utilizado en ejercicios anteriores. El cuadro parece por defecto centrado en la pantalla, el titulo de la ventana es el nombre de la aplicación, el texto del mensaje lo indicamos nosotros entre comillas simples y solo tiene un botón. Ejemplo: ShowMessage('Quiubule Familia').

(18)

Manual Delphi

Ricardo E. Jasso Ponce

ShowMessagePos . . . Es Parecido al anterior pero tiene dos valores más que indican las coordenadas donde se mostrara el cuadro indicando primero el ancho y luego el largo. Debes tener cuidado pues la posición se debe poner en Pixeles por lo tanto debes sabe el tamaño de tu pantalla, esto lo logras haciendo una pequeña llamada al Objeto TScreen.Width obtienesel ancho y con Screen.Height el Largo. Bueno como ejemplo podrías poner en el evento Onclick de tu formulario el siguiente código:

ShowMessagePos ('Utilizando Coordenadas', Screen.Width div 3,Screen.Height div 3);

MessageDlg . . . Hasta ahora los tipos anteriores de mensajes no dejan que el usuario pues pueda tomar alguna decisión o algo por el estilo verdad, así que el tipo de mensaje MessageDlg nos proporciona esa posibilidad. Los valores que recibe son primeramente el texto que queremos mostrar, el tipo de cuadro que mostraremos según una lista predefinida por Windows, los botones que se mostraran y la ayuda de la aplicación que creemos si es que colocamos un botón de ayuda en el cuadro. Bien ahora les mostrare la lista de cuadros predefinidos por Windows.

• mtIformation

• mtWarning

• mtError

• mtConfirmation

• mtCustom

Por cada tipo de cuadro windows automáticamente te mostrara una imagen relacionada al cuadro elegido. Ahora es necesario saber cuales son los tipos de botones que podemos utilizar.

• mbYes • mbNo • mbOk • mbCancel • mbAbort • mbRetry • mbIgnore • mbAll • mbHelp

Los tipos de botones que deseas debes ponerlos entre corchetes ([ ]), y seguidos de una coma. O si lo prefieres Otra forma de hacerlo es poner un serie de botones predefinidos, pero si lo haces no pongas los corchetes. Los botones predefinidos son:

• mbYesNoCancel

• mbAbortRetryIgnore

(19)

Manual Delphi

Ricardo E. Jasso Ponce

Bien ahora pondré un ejemplo de como utilizarlo, pon el siguiente código en el evento Onclick de tu Formulario.

If MessageDlg ('¿Estas Aprendiendo?', mtConfirmation ,

[mbyes,mbno],0) = mrYes Then ShowMessage ('Que bueno, entonces vamos bien')

else

ShowMessage ('Hay jode, pos estúdiale más');

Si pusiste atención te pudiste haber dado cuenta que MessageDlg devuelve el valor del botón pulsado por el usuario. El valor devuelto puede tomar los siguientes valores:

• mrNone • mrAbort • mrYes • mrOk • mrRetry • mrNo • mrCancel • mrIgnore • mrAll

El valor de la constante tiene el nombre del botón pulsado, de esa forma en el ejemplo cuando es pulsado el botón mbYes, el valor devuelto es mrYes.

MessageDlgPos . . . Esta es una variante de la función MessageDlg, funciona exactamente igual solo que se le tienen que pasar las coordenadas de donde queremos que aparezca el cuadro de mensaje. Ejemplo

If MessageDlgPos ('¿Estas Aprendiendo?', mtConfirmation , [mbyes,mbno],0,Screen.Width,Screen.Height) = mrYes Then ShowMessage ('Que bueno, entonces vamos bien')

else

ShowMessage ('Hay jode, pos estúdiale más');

MessageBox . . . Es un tipo de mensaje que hace llamada a la Api de Windows sacándonos el titulo de los botones en español, claro si nuestro Windows esta en español. No adentrare mucho en esto así  que pondré un ejemplo de su uso.

if Application.MessageBox('QUIERES SALIR DEL

PROGRAMA ?','SALIR',MB_OKCANCEL+MB_ICONQUESTION)=IDOK  then

(20)

Manual Delphi

Ricardo E. Jasso Ponce

En este caso también se controla el tipo de botón a poner y las combinaciones de las imágenes que pone Windows por defecto te las listo continuación. Los tipos de botones a poner ya se listaron anteriormente.  Mb_IconAsterisk  Mb_IconError  Mb_IconExclamation  Mb_iconHand  Mb_IconInformation  Mb_IconQuestion  Mb_IconStop  Mb_IconWarning

Bueno creo que sobre mensajes seria todo. Ahora pasaremos a explicar lo que estaban esperando las fichas de componentes visuales. Finalmente verdad...

Ficha Standar

En esta ficha se encuentran los componentes más utilizados y es la que esta activada cuando entramos a Delphi. Explicare únicamente los principales.

Nota: Realizare algunos ejercicios durante el transcurso de la explicación.

Ficha Standar.

Empezaremos a partir del segundo componente. Image

n Componente Descripción

MainMenu Es un componente no visual que permitediseñar el menú del formulario que si será visual.

PopupMenuemergentes, que aparecerán al pulsar elPermite diseñar Menús contextuales o botón secundario del ratón.

Label Es un cuadro de texto estático, por lo tanto visualiza texto pero no puede ser

(21)

Manual Delphi

Ricardo E. Jasso Ponce

modificado.

Edit Es un cuadro de Edición de Texto quepermite visualizar y modificar una línea de texto.

Memo Es un Cuadro de Texto multilinea, se puedevisualizar y modificar varias líneas de texto. Es parecido al Bloc de Notas

Button Es un Botton clásico de cualquier aplicaciónWindows, no lleva ninguna imagen solo texto.

ChechBox Es una casilla de verificación que permiteseleccionar y deseleccionar opciones. RadioButto

n

Botón de opción parecido al CheckBox, se utiliza para seleccionar dentro de un

conjunto de RadioButton u opciones solamente uno de ellos.

ListBox Es una lista Standard de Windows en la queel usuario puede seleccionar un elemento de la lista.

ComboBox

Lista desplegable que combina las características de un ListBox y un Edit permitiendo al usuario seleccionar un elemento.

ScrollBar Barra de desplazamiento estándar.

GroupBox Funciona como contenedor de objetos,permitiendo agrupar diferentes controles. RadioGroup Es un contenedor exclusivamente para losRadioButtons. Panel Contenedor de objetos pero más potenteque el GroupBox.

Bueno ahora vamos a lo bueno aremos un ejercicio utilizando algunos componentes explicados. así es que arranca Delphi o crea una nueva Aplicación.

Coloca un GroupBox en tu formulario, Dentro de el coloca dos etiquetas mismás que en su propiedad Caption les pondras Valor uno y Valor dos. Después pon dos Edit ve a su propiedad Text y quítales el texto que tienen por defaul. Deben de ir un Edit abajo de cada Label. Selecciona el Componente GroupBox y en su propiedad Caption Coloca el texto Valores. Todo el GroupBox y su componentes cárgalos hacia tu parte superior izquierda.

Ahora en tu parte superior derecha pega un componente Label y en su propiedad Caption le pondrás Operación, Después coloca un componente ComboBox debajo del Label. Te vas a la propiedad Text del comboBox y Escribes el texto Suma. después ve a la propiedad Items y dale Click donde dice String. te saldra una ventana en la cual

(22)

Manual Delphi

Ricardo E. Jasso Ponce

escribirás los textos Suma, Resta en líneas o filas separadas. y das Ok a la ventana.

Después coloca debajo del ComboBox un componente Button y en su propiedad Caption pon Calcular. Ahora coloca un componente Panel debajo del Componente Button. dentro del panel pon un componente Label que por cierto si has seguido mis instrucciones será el Label6 y de hecho debe de ser el seis por que lo utilizaremos para pegar el resultado de una operación.

Muy bien ahora pon un componente RadioGroup en la parte inferior izquierda, en su propiedad Caption pon color de ventana. Después dentro de el coloca dos RadioButtons al primero en su propiedad Caption Pon el texto Azul, y al segundo ponle Normal.

Ahora pon un Componente Button al costado derecho del RadioGroup. y pon en su propiedad Caption Aplicar.

Pon un componente MainMenu, Dale doble Click. te saldra una ventana en la cual se irán viendo las opciones del menú que bayas poniendo en su propiedad Caption. Ahora vete a la propiedad Caption y escribe &Principal (El Amperson indica la tecla caliente), da enter y ahora te aparecerá principal en la ventana que estará a tu derecha, en esa ventana debajo de la leyenda Principal habrá un campo en blanco selecciona con el ratón, después vete a la propiedad Caption y escribe &Salir. Ahora da click sobre el formulario para regresar a el. Ahora el diseño quedaría como sigue

(23)

Manual Delphi

Ricardo E. Jasso Ponce

Ahora vamos con el código. Vete al evento Onclick del Button1 que dice Calcular. dentro del pondremos el siguiente código:

if ComboBox1.Text = 'Suma' Then Begin

Label6.Caption := FloatToStr(StrToFloat(Edit1.Text) + StrToFloat(Edit2.Text));

End;

if ComboBox1.Text = 'Resta' Then Begin

Label6.Caption := FloatToStr(StrToFloat(Edit1.Text) -StrToFloat(Edit2.Text));

End;

Si te das cuenta en el Edit1 y Edit2 Guardamos los valores con los que aremos una suma o resta según elija el usuario. El resultado lo pegaremos en el Label6 en su propiedad Caption. Tanto el Edit como el Label son de tipo String por lo que para hacer la operación es necesario convertirlo por lo tanto los Edit los convierto a flotantes mediante FloatToStr(). Ahora el resultado será un tipo de dato flotante para asignárselo al Label que es de tipo String tengo que convertirlo mediante la instrucción FloatToStr();

En lo que respecta al uso del ComboBox me sirve para que el usuario elija el tipo de operación a realizar (Suma o Resta) yo previamente definí Suma y Resta en el ComboBox. Cuidado si te fijas la primera letra de Suma y Resta esta en mayúsculas si tu la escribes diferente tendrás que modificar las comparaciones en el If.

Muy bien Ahora en el Evento Onclick del Button2 que dice Aplicar pon este código.

if RaDioButton1.Checked = True then Form1.Color := ClBlue

else

Form1.Color := clBtnFace;

Como puedes ver la propiedad Checked me indica si un RadioButton esta o no Activado. Y dependiendo de eso modifico el color del Form. Ahora vete al menú desplegable y dale Click en la opción Salir de esta forma Delphi te creara el procedimiento Tform1.Salir1Click en el cual pondrás este código.

(24)

Manual Delphi

Ricardo E. Jasso Ponce

Esta instrucción permite terminar correctamente la aplicación y devolver la memoria a Windows.

Ahora solo corre el programa con F9 y listo. Experimenta con él.

Ficha Additional

Contiene componentes que amplían los componentes de la estándar y que igualmente se utilizan frecuentemente. Explicare solo algunos de ellos. De cualquier forma si sabes un poco de ingles puedes consultar la ayuda de Delphi seleccionando la ficha y después presionando F1.

(25)

Manual Delphi

Ricardo E. Jasso Ponce

BitBtn

Es un Botton que se le puede añadir un gráfico Bitmap. Contiene la propiedad Kind que trae una lista de botones predefinidos con sus Bitmap.

SpeedButt on

Es un botón utilizado en las barras de herramientas, se le puede agregar un Bitmap y trae la propiedad Flat que permite dar una apariencia de boton plano.

MáskEdit Se utiliza para validar la entrada dedatos mediante el formateo del texto como lo es la fecha, etc.

Image Permite mostrar gráficos comoBitmaps, iconos, Windows Metafiles, etc.

Shape Permite dibujar polígonos, círculos ylíneas. Bevel Es un rectángulo en 3D.

ScrollBox

Define un área contenedora mayor al área visualizada, automáticamente al sobrepasar el área salen las barras deslizadoras.

CheckList Box

Es un ListBox solo que añade un CheckBox para cada elemento de la lista.

Splitter Sirve para definir áreas modificablespor parte del usuario. StaticText Es similar a Label, solo que tiene máspropiedades modificables. ControlBarSe utiliza para crear barras deHerramientas acoplables.

Chart Util para crear diferentes tipos degráficos.

Bueno ahora es el momento de realizar algún ejercicio en donde utilicemos algunos componentes descritos.

Crea una nueva aplicación, al Caption del formulario ponle Ficha Addiotional, en el formulario por un componente StaticText, en la Propiedad Caption pon Fecha, la propiedad BorderStyle ponla en sbsSunken.

Coloca un componente MáskEdit, Da un Click sobre él con el botón secundario del ratón, te saldrá un menú desplegable elige la opción Input Másk Editor ( Esto también lo puedes realizar en la propiedad EditMásk), te saldrá una venta con máscaras predefinidas. Elige la que dice Date, si quieres la fecha en formato MM/DD/AA, esta un botón que dice Másks, dale click y vete al directorio Bin de Delphi y

(26)

Manual Delphi

Ricardo E. Jasso Ponce

elige el archivo Spain. Ahora ya que seleccionaste Date. solo dale Ok. y listo tienes tu máscara para la fecha.

Ahora Pon este código en el evento OnCreate de tu Form. MáskEdit1.Text := DateToStr(Date);

La función que devuelve la hora del sistema es Date y el valor devuelto es de tipo fecha así que se tiene que convertir a String para pegarse en el MáskEdit.

Muy bien ahora coloca un componente Shape en el Form, ve a la propiedad Shape y Elige la opcion StCircle. Despues ve a la propiedad Brush, presenta dos opciones elige la opción Colors y elige el color ClLime.

Despues de esto coloca un BitBtn a un costado del componente Shape. ve a la propiedad que dice Glyph y dale Click a su derecha. te presentara una ventana en la cual te permitirá buscar y agregar una imagen al boton asi que dale click a la opción Load y ve al directorio images\buttons de Delphi, en este directorio tendras una serie de gráficos que Delphi te instala, bueno elige la imagen Group. Una vez agregada la imagen ve a la propiedad Caption y Ponle Color.

Coloca un SpeedButton en el formulario, en la propiedad Caption ponle figura, ve a la propiedad Glyph y ponle la imagen Form. Recuerda para ponerle la imagen es igual que cuando se la pusiste al BitBtn. Bien ahora ya con la imagen puesta ve a la propiedad Flat y ponla en True.

Ahora coloca un componente Image, su propiedad Align ponla en AlClient. con esto la imagen ocupara todo el formulario. Ve a la propiedad Picture y dale click a su derecha, de igual forma como en los botones agregamos una imagen haz lo mismo solo que ahora ve al directorio Images\Backgrnd y elige la imagen Writing.

(27)

Manual Delphi

Ricardo E. Jasso Ponce

Ahora en el Evento Onclick del BitBtn se pondría: procedure TForm1.BitBtn1Click(Sender: TObject); var numero : Word;

begin Randomize(); numero := Random(3); if numero = 0 then Shape1.Brush.Color := ClBlue; if numero = 1 then Shape1.Brush.Color := ClBlack; if numero = 2 then Shape1.Brush.Color := ClYellow; if numero = 3 then Shape1.Brush.Color := ClLime; end;

Con este código generamos un numero aleatorio de entre cuatro números incluyendo el cero, y según el resultado estamos cambiando de color al Shape.

Pon en el SpeedButton este codigo.

procedure TForm1.SpeedButton1Click(Sender: TObject); var numero : Word;

begin randomize(); numero := random(5); if numero = 0 then Shape1.Shape := StCircle; if numero = 1 then Shape1.Shape := StEllipse; if numero = 2 then Shape1.Shape := StRectangle; if numero = 3 then Shape1.Shape := StRoundRect; if numero = 4 then Shape1.Shape := StRoundSquare; if numero = 5 then Shape1.Shape := StSquare; end;

Estamos generando aleatoriamente 6 posibles datos (0-5) mismos que utilizamos como constantes para cada una de las formás del Shape. Bueno con esto hemos concluido este pequeñísimo ejercicio. Por ahora estamos haciendo cosas muy simples les prometo que posteriormente aremos algo más complicado mientras tanto pasaremos a la siguiente ficha.

(28)

Manual Delphi

Ricardo E. Jasso Ponce

Ficha Win32

Contiene componentes que permiten la creación de aplicaciones que cumplen con las especificaciones de Windows 95 o superior. A continuación se muestra.

Imagen Componente Descripción

 TabControl Crea solapas para cuadros de dialogomultipágina. PageControl Crea una área multipágina, en dondecada pagina es accesible desde las

mismás solapas del componente. ImageList Define una matriz de imágenes delmismo tamaño mismás que son

accesibles a través de su índice. RichEdit

Es una caja de texto que acepta el formato de texto enriquecido, por lo tanto a nivel de palabra se le puede modificar el tamaño, color, etc.

 TrackBar Es una barra de desplazamiento deWindows, que nos permite desplazar el control por un conjunto de valores. ProgresBar Es una barra de progreso estándarque nos indica el avance de un

determinado proceso.

Animate Muestra secuencias de BitMaps oArchivos Avi sin sonido. DateTimePicker Despliega fechas y permiteseleccionarlas, también permite

introducirlas.

MonthCalendar Nos presenta el calendario pormeses. StatusBar Es una barra de estado clásica deWindows.  ToolBar Permite crear una barra deHerramientas.

CoolBar Es un contenedor de Barras deherramientas mismás que pueden ser configurables por el usuario

Bueno es tiempo de hacer un ejemplo de su uso así que realiza lo siguiente:

(29)

Manual Delphi

Ricardo E. Jasso Ponce

Crea una nueva aplicación, al caption del form ponle Ficha Win32, coloca un componente Image list en el form, dale doble Click al componente, te saldrá una ventana en la cual podrás agregar imágenes, dale al botón que dice Add, vete a la carpeta Images/Buttons de Delphi, y agrega el archivo que dice DoorOpen, después que lo abres, regresas a la ventana anterior y te mandara un mensaje en ingles que dice la dimensión de la imagen es demásiado grande y pregunta si la divide en dos, dale que si, te pondrá dos imágenes, hay un botón que dice Delete, borra la segunda imagen con ese botón. Ok. Ahora así como agregaste esta imagen quiero que agregues dos más, bueno la imagen del botón te la dejo a tu gusto Ok. el caso que te tienen que quedar tres imágenes enumeradas del 0 al 2. Después de agregar las imágenes solo da click al botón de OK. Coloca un componente ToolBar, en su propiedad Caption Ponle Herramientas, Vete a la propiedad ImageList y selecciona el texto ImageList1 (Es el componente de imágenes que creamos). Ahora dale Click al Componente con el botón secundario del ratón y te saldrá un menú emergente, selecciona la opción New Button, con esto te crea un botón en en el componente ToolBar. Ok. Ahora vete a la propiedad Hint del botón que acabas de crear y ponle Salir, ve a la propiedad ShowHint y ponla en True. Ok. Después ve a la propiedad ImageIndex y ponle 0 (A este botón le pondremos la imagen que este en el índice 0). Ahora nuevamente con el botón secundario del ratón dale click al  ToolBar y ahora eliges la opcion NewSeparator, con esto te crea un

botón separador, a este botón no le haremos nada Ok. De igual forma como creaste el primer botón crea dos más y en su Hint pondrás Animación, calendario, en la propiedad ImageIndex pon 1 y 2 respectivamente. Con eso tendremos nuestra barra de herramientas. Ahora coloca un componente PageControl, Dale click al componente con el botón secundario del ratón, en el menú emergente selecciona New Page, con esto te a creado una nueva pagina, ahora vete a la propiedad Caption y ponle Animación. Ahora si sobre esa nueva pagina pegaras un componente Animate, vete a la propiedad CommonAvi y selecciona el valor aviCopyFile. Después vete a la ficha Standar y coloca dos Buttons debajo del componente Animate, a uno le pones Animar y al Otro Detener. Con esto tendremos lista nuestra primer pagina así es que selecciona el componente PageControl y con el botón secundario del ratón dale nuevamente Click y elige la opción de NewPage. Ahora Vete a la propiedad Caption y ponle Calendarios. Coloca dentro de esta pagina un componente MonthCalendary un componente DateTimePicker, a estos componentes no les haremos nada.

(30)

Manual Delphi

Ricardo E. Jasso Ponce

Muy bien ahora vamos a introducir el código, empezaremos por los botones de la barra de herramientas.

Dale Doble Click al primer botón que le pusimos Salir, con esto te genera automáticamente el evento Onclick, puedes hacerlo de la otra forma que tu ya sabes no importa. Bueno pon este código.

Application.Terminate;

Ahora en el Tercer botón que le pusimos Animación pondrás este otro código.

PageControl1.ActivePageIndex := 0;

Como puedes ver las paginas del PageControl tienen un índice empezando de cero así es que solo es cuestión de poner que pagina es la que quieres activar.

En el ultimo Botón (Calendarios) pondrás este código. PageControl1.ActivePageIndex := 1;

Muy bien ahora selecciona la pagina que dice Animacion del PageControl. en el evento Onclick del Button Animar pondrás este código.

Animate1.Active := True;

Por ultimo en el evento Onclick del botón Detener pon este código. Animate1.Stop;

(31)

Manual Delphi

Ricardo E. Jasso Ponce

Muy bien.... traigan la tequila compadres.. pos ya terminamos. ahora solo córrelo con F9 y listo.

Ficha System

Contiene componentes que permiten acceder a algunos elementos importantes del sistema, enseguida muestro la ficha.

Imagen Componente Descripción

 Timer Es un temporizador que ejecuta un eventocada intervalo de tiempo programado. PaintBox Define una área en la que se puede dibujar. MediaPlayer Es un Panel de control del reproductor devídeo multimedia y de archivos de sonido. OLEContainer Es un contenedor que define una área decliente OLE. Lo utilizaremos en el ejemplo

para ver video.

DDEClientConv Establece una conexión DDE como cliente aun servidor DDE. DDEClientItem Especifica los datos que serán enviados aun servidor DDE. DDEServerCon

v Establece una conexión como servidor DDE.

DDEServerItemEspecifica los datos que serán enviados aun cliente DDE. Muy bien ahora como se supone que ya sabemos utilizar alguna variedad de componentes pues lo que haremos es un reproductor de vídeo casi casi profesional... Bueno ustedes son los que retocaran algunos detalles.

Reproductor de Vídeo

Primeramente diseñaremos el aspecto visual después nos iremos con el código Ok.

Crea una nueva Aplicación. Al Caption del Form ponle Mi Reproductor de Vídeo.

Ve a la ficha System y coloca un componente OleContainer que abarque una parte considerable del formulario.

Ve a la ficha Estándar y coloca un componente ScrollBar. Ponlo debajo del componente OleContainer.

(32)

Manual Delphi

Ricardo E. Jasso Ponce

Ve a la ficha System y coloca un componente MediaPlayer, ahora vete a la propiedad VisibleButtons, te desglosara todos los botones del Media Player, Estarn en True por Defaul, quiero que dejes solamente los botones btPlay, btPause, btStop en True los demás ponlos en False. Ahora ve a la Propiedad Display, te desplegara una lista de componentes elige el componente OleContainer1.

A un costado del componente mediaPlayer pon un componente BitBtn (Esta en la ficha Additional), agrégale una imagen (ya sabes como) y en la propiedad caption ponle Abrir.

Ve a la ficha estándar y pon un componente Label, en su caption ponle Duracion, pon otro componente Label abajo de ese, y en su caption ponle T. Transcurrido. Ok. ahora pon dos componentes Label nuevamente y su propiedad Visible pónselas en False. el tercer Label tiene que quedar a un costado del Label 1 y el cuarto del 2. De cualquier forma abajo presento el diseño.

Ve a la ficha System y pon un componente Timer.

Mira compadre no explique todas las fichas que trae Delphi. Ok. pero con lo que hemos visto hasta ahora ya sabes navegar entre las fichas y sus componentes así es que vamos a utilizar un componente que esta en otra ficha diferente a las vistas.

Vete a la ficha Dialogs, Pon el componente OpenDialog, es un componente no visual y mediante la instruccion Execute nos mostrara la típica ventana de Abrir un Archivo.

Bien una vez puesto este componente vete a la propiedad Filter da doble Click a su derecha y te saldrá una venta dividida en dos partes la de la izquierda dice Filter Name y la de la derecha dice Filter. Ahora en filter name Escribirás Archivos Avi, en Filter escribiras *.Avi, nuevamente en una nueva fila escribe en Filter Name Todos los Archivos y en Filter *.*. Esa ventana quedaría de la siguiente forma.

(33)

Manual Delphi

Ricardo E. Jasso Ponce

Muy bien Ahora ve a la ficha Win32 y coloca un componente StatusBar. Automáticamente se colocara en la parte inferior del formulario. Vete a la propiedad SimplePanel y ponla en True, Después ve a la Propiedad Simpletext y ponle Inactivo, Tienes que ponerlo como yo te lo estoy Escribiendo ya que esa etiqueta la utilizo para saber el estado del formulario y las mayúsculas o minúsculas son sensibles en las comparaciones.

Muy bien si has hecho todo lo que te dije el Formulario tiene que lucir más o menos Así.

Ahora viene lo interesante el código. Ojo el código va completo con todo y los procedimientos que Delphi me genera en cada evento. Esos procedimientos no se copian por que Delphi te los crea. Ok. Ahora pon este código en el BitBtn1 al que le pusimos Abrir.

procedure TForm1.BitBtn1Click(Sender: TObject); begin

if Opendialog1.Execute = True then begin

MediaPlayer1.FileName := OpenDialog1.FileName; MediaPlayer1.Open;

Mediaplayer1.DisplayRect :=

(34)

Manual Delphi

Ricardo E. Jasso Ponce

MEdiaPlayer1.Play;

StatusBar1.SimpleText := 'Repoduciendo Archivo: ' + OpenDialog1.FileName;

Label3.Visible := True; Label4.Visible := True; end;

end;

Observa que el OpenDialog1.Execute devuelve un valor True cuando el usuario abre un archivo, la propiedad FileName contiene el nombre el archivo que abrió. El MediaPlayer mediante su propiedad FileName le indicamos el archivo que reproducirá, después simplemente lo abrimos.

Si te fijas la propiedad DisplayRect permite indicar el tamaño en que queremos visualizar el Vídeo que por cierto es el tamaño del componente OleContainer. Después ponemos visibles los Labels 3 y 4, en estos se muestra el tiempo total del vídeo y en el otro se mostrara el tiempo en el que va la reproducción.

Ahora pondrás este código en el evento OnTimer del componente  Timer. Puedes irte al inspector de Objetos o simplemente dale Doble

Click con el ratón al componente.

procedure TForm1.Timer1Timer(Sender: TObject); var posicion, duracion : LongInt;

begin

if StatusBar1.SimpleText <> 'Inactivo' then begin

with MediaPlayer1 do begin

MediaPlayer1.TimeFormat := tfMilliseconds; duracion := Round(Length div 1000);

scrollBar1.Max := length;

Label3.Caption := Format('%d:%d',[duracion div 60, duracion Mod 60]);

posicion := round(Position div 1000);

Label4.Caption := Format('%d:%d',[posicion div 60, posicion Mod 60]);

ScrollBar1.Position := position; //minuto * 60 + segundo; end;

end; end;

El componente Timer va a estar ejecutando este código cada segundo. Primeramente verifica el StatusBar, si la propiedad simpletext es diferente a Inactivo ejecutara el código que le sigue, observa que utilizamos un With MediaPlayer do con el cual nos

(35)

Manual Delphi

Ricardo E. Jasso Ponce

permite acceder a todos las propiedades de ese componente. Indicamos al MediaPlayer que el formato del tiempo será en Milisegundos, posteriormente calculamos la duración del archivo, calculamos su posición y las pegamos en los Labels. Ha y desde luego vamos recorriendo el ScroolBar.

Hasta ahora con el código que hemos puesto, nuestra aplicación es capaz de reproducir vídeo y esta bien pero que tal si le damos un toque más especialon como que al presionar las teclas Alt + Enter, el vídeo se vea a pantalla completa y de igual forma al volverlas a presionar regrese a pantalla normal. Bueno para lograr eso pon este código en el evento OnKeyDown del Formulario.

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if (HiWord(GetKeyState(VK_MENU)) <> 0) and (Key = 13) then begin

if Form1.WindowState = WsNormal then begin Ancho := Form1.Width; Alto := Form1.Height; Label1.Visible := False; Label2.Visible := False; Label3.Visible := False; Label4.Visible := False; MediaPlayer1.Visible := False; BitBtn1.Visible := False; StatusBar1.Visible := False; ScrollBar1.Visible := False; OleContainer1.Visible := False; Form1.BorderStyle := BsNone; Form1.WindowState := WsMaximized; MediaPlayer1.Display := Form1; MediaPlayer1.DisplayRect := rect(0,0,Form1.Clientwidth,Form1.ClientHeight); end else begin Form1.WindowState := WsNormal; Form1.Width := Ancho; Form1.Height := Alto; Form1.Position := PoScreenCenter; Label1.Visible := True; Label2.Visible := True; Label3.Visible := True; Label4.Visible := True; MediaPlayer1.Visible := True; BitBtn1.Visible := True; StatusBar1.Visible := True;

(36)

Manual Delphi

Ricardo E. Jasso Ponce

ScrollBar1.Visible := True; OleContainer1.Visible := True; Form1.BorderStyle := BsSingle; MediaPlayer1.Display := OleContainer1; MediaPlayer1.DisplayRect := rect(0,0,Form1.Clientwidth,Form1.ClientHeight); end; end; end;

Como puedes ver es más código verdad, pues si pero es que para reproducir el vídeo a pantalla completa tenemos que poner en False la propiedad Visible de todos los componentes Visuales y de igual forma ponerla en True cuando regrese a pantalla normal. Antes de seguir con el código debes saber que he declarado dos variables de tipo global para este formulario, las variables son Ancho y Alto, las utilizo para almacenar el tamaño del Form al momento de maximizarlo a pantalla completa y de esta forma cuando el usuario regrese a pantalla normal utilizo el valor de esas variables para volver el Form a su tamaño original.

Las variables Globales del Form las declaras en la cláusula Var del Unit del Form. esta justo arriba de la cláusula Implementation. mira para que te ubiques te muestro la parte en donde tienes que declararlas. Ok.

var

Form1: TForm1;

Ancho : Integer; //Aqui estan declaradas Alto : Integer;

implementation {$R *.dfm}

Como ves están casi al inicio del Unit. Sí puedes encontrarlo y declararlas verdad. yo se que si.

Muy bien prosiguiendo con la explicación, estoy utilizando una llamada a GetKeySatate y Key para saber cuando se presionan las teclas Alt y Enter(Checa su uso en la pagina de trucos). Ahora cuando se presionan estas teclas resta saber en que estado se encuentra mi formulario, en caso de que este normal lo maximizo en caso contrario lo pongo en estado normal, Ahora esto se realiza checando la propiedad WindowsState.

Cuando maximizo la ventana en las variables globales Ancho y Alto guardo el valor de las propiedades Width y Height del Form mismás

(37)

Manual Delphi

Ricardo E. Jasso Ponce

que tienen las dimensiones del formulario respectivamente. Después Pongo la propiedad Visible en False de todos los componentes visuales. Enseguida entenderás por que. Hay te va una nota acerca del MediaPlayer, no nada más puedes reproducir vídeo en un OleContainer si no en cualquier superficie plana, como un Panel o el mismo Form, y es eso lo que hacemos, ponemos la propiedad BorderStyle del form en BsNone y lo maximizamos, de esta forma el Form abarca toda la pantalla incluyendo la barra de inicio de windows, bueno despues unicamente resta indicarle al MediaPlayer que se va a reproducir en el form, y eso lo hacemos mediante la propiedad Display. Ojo aparte de indicarle que se reproducirá en el form hay que indicarle las nuevas dimensiones del vídeo mediante la propiedad DisplayRect. Esto es en si lo que sucede cuando se maximiza.

Órale pues... cuando se minimiza pues simplemente pones visibles todos los componentes visuales, volvemos a poner el BorderStyle del Form en BsSingle, la propiedad WindowsState del form la ponemos en WsNormal, mediante las variables Globales Ancho y Alto ponemos las dimensiones del Form, le indicamos al mediaPlayer que se reproducirá en el OleContainer y listo. Hay otras cosillas pero es básicamente esto.

Bases de Datos

Vaya por fin hemos llegado a una parte que tal vez estabas esperando. Antes de empezar quiero adelantarles que durante los capítulos 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 independizándolas del gestor de bases de datos. El BDE sirve como traductor entre nuestra aplicación y las bases de datos que utilizamos funcionando también como interfaz entre los componentes especializados para bases de datos que posee Delphi. El BDE cuenta con una biblioteca de funciones conocida como IDAPI (Integrated Database Applications Program Interface) que es el traductor ante los distintos gestores de bases de datos para que entiendan lo que nuestra aplicación realiza.

Delphi posee una herramienta que nos permite diseñar nuestras bases de datos, es un programa llamado Database DeskTop.

Primeramente mostrare las fichas de componentes más comunes relacionados con el manejo de bases de datos

(38)

Manual Delphi

Ricardo E. Jasso Ponce

Ficha Data Access

Contiene componentes para realizar conexiones con las bases de datos y obtener la información que en ella se almacena. A continuación se muestra.

Imagen Componente Descripción

DataSource Realiza las conexiones a lasbases de datos. ClientDataS

et

Permite el acceso a datos tanto en una aplicación estándar como el acceso desde clientes en sistemás distribuidos.

Ficha Data Controls

En esta ficha se encuentran componentes similares a los de la ficha standard y Additional pero que estarán ligados a bases de datos permitiendo con esto trabajar con la información almacenada en ellas.

Imagen Componente Descripción

DbGrid Presenta los datos en unarejilla de filas y columnas. DbNavigator

Posibilita la navegación por los registros de una tabla

permitiendo su navegación, modificación, eliminación. DbText Label vinculado a bases dedatos.

(39)

Manual Delphi

Ricardo E. Jasso Ponce

DbEdit Cuadro de texto vinculado abases de datos. DbMemo Memo vinculado a bases dedatos. DbImage Image vinculado a bases dedatos. DbListBox ListBox Vinculado a bases dedatos. DbComboBox ComboBox vinculado a basesde datos. DbCheckBox CheckBox vinculado a basesde datos. DbRadioGroup RadioGroup vinculado a basesde datos. DbLookupListBo

x

ListBox que presenta datos de una tabla y modifica los de otra.

DbLookupComb oBox

ComboBox que presenta datos de una tabla y modifica los de otra.

DbRichEdit RichEdit vinculado a bases dedatos. DbCtrlGrid

Permite personalizar un area de presentación de datos y permite que el área actúe como un Dbgrid.

DbChart Chart vinculado a bases dedatos.

Ficha BDE

Esta ficha contiene componentes que habilitan la conexión a bases de datos utilizando el BDE engine de Delphi.

Imagen Componente Descripción

 Table Permite la conexión a una tablade una base de datos. Query Permite crear y ejecutarconsultas SQL a una base de

(40)

Manual Delphi

Ricardo E. Jasso Ponce

StoredProc Permite ejecutar procedimientosalmacenados en un servidor de bases de datos.

DataBase Realiza conexiones a servidoresremotos. Session Gestiona y controla lasconexiones activas a las bases

de datos.

BatchMove Permite realizar acciones sobrelos datos localmente que luego serán enviados al servidor.

UpdateSQL Permite realizar actualizacionesen una base de datos SQL. NestedTable Encapsula una tabla que estaanidada dentro del campo de

otra tabla. BDEClientData

Set

Permite el acceso a datos por parte de aplicaciones cliente, etc. a través del BDE.

Database DeskTop

Delphi nos permite crear bases de datos en tiempo de ejecución mediante código, pero también nos brinda la posibilidad de crearlas en tiempo de diseño mediante el Database Desktop. Esta herramientas nos permite en realidad hacer otras cosillas, pero no quiero adentrarme mucho en, solo quiero enseñarles lo básico para continuar con este manual o curso.

Database DeskTop me permite crear tablas de diferente tipo como tablas Paradox, Dbase, MsAcces, Foxpro, Informix, etc. en este caso nos enfocaremos a crear tablas de tipo Paradox aunque en su momento are una aclaración cuando es necesario utilizar algún otro tipo de tabla. OK.

Muy bien para entrar al DataBase DeskTop lo podemos hacer de dos formás, la primera es accesando desde el menú inicio/programás/Delphi/Database DeskTop. La otra es Dentro de Delphi te vas al Menú Tools y encontraras la opción Database Desktop. Muy al accesar al el te aparecerá de la siguiente forma.

(41)

Manual Delphi

Ricardo E. Jasso Ponce

Muy bien, antes de seguir quiero explicar que en Delphi se manejan mucho los alias, los cuales son un identificador para un directorio o carpeta en los cuales se tienen guardadas las bases de datos. Estos alias son muy útiles ya que usualmente tienes que indicar la ruta en dónde está tu tabla como por ejemplo c:\programa\Tablas, ahora el detalle está que cuando pasas tu aplicación a otra unidad debes cambiar la ruta a cada tabla y recompilar. todo eso se soluciona pues utilizando alias, de hecho en los programás instaladores como el Install Shield te permite crear el alias que en tu aplicación ayas puesto, es útil de verdad. Solo que para estos ejercicios lo are de la forma tradicional solo queria informarles que existe esa posibilidad, por cierto en el alias DbDemos Delphi guarda algunas tablas de ejemplo por si después quieres hecharles un ojillo primo.

Muy bien vete al menú que dice File, después al New y por ultimo   Table, de esta forma creamos nosotros una tabla, pero antes nos presenta una pequeña ventana en la cual nos pide que elijamos que tipo de dato crearemos, si va hacer paradox, foxpro, etc. te presento esa venta.

(42)

Manual Delphi

Ricardo E. Jasso Ponce

Elige Paradox 7, de hecho esta activada por defaul. después de eso te saldrá la siguiente ventana:

En esta ventana es en donde crearemos la estructura de nuestra base de datos el campo Field Name contendrá los nombres de los campos de nuestra base de datos que en este ejemplo serán: Clave, producto, proveedor, precio y mínimo.

Después está otra leyenda que dice Type, contendrá el tipo de dato que será nuestro campo, para seleccionar el tipo de dato basta con situarnos en Type y presionar la barra espaciadora y nos desplegara todos los tipos de datos, de cualquier forma si sabemos su tecla abreviada se la podemos escribir directamente.

Está la leyenda que dice Size la cual indica el tamaño del campo, eso se lo indicamos tecleándolos directamente.

Por ultimo está la leyenda Key, sirve para indicar cuales campos serán nuestras claves primarias. para elegir un campo como clave primaria posicionate en Key y presiona la barra espaciadora, se pondrá un asterisco en señal de que es clave primaria.

Ahora quiero que hagas la siguiente estructura:

Field Name Type Size Key

Clave I (Long Integer) Primaria)* (Clave

Referencias

Documento similar