Conceptos y Ejercicios en DELPHI 7
Conceptos y Ejercicios en DELPHI 7
Conceptos y Ejercicios en DELPHI 7
Menú Principal . . . En él, Se puede realizar casi todo desde los diferentes submenús
como definir las opciones de compilación, personalizar las fichas de componentes o
agregar nuevas, guardar o abrir proyectos, etc., es necesario revisarlo antes de
comenzar.
Fichas de Componentes . . . Son las que dan Acceso a los componentes que forman la
biblioteca de componentes visuales conocida también como VCL ( Visual Component
Library) y se encuentra dividida en varias categorías según las funciones que realizan.
Cada paleta incluye en su parte izquierda el botón puntero que no es un componente
1
Manual Delphi Área de informática
sino que su función es parecida a la de cualquier programa gráfico sirve para
deseleccionar componentes seleccionados, etc. Para insertar un componente en el
formulario solo selecciona el componente a insertar después pulsa sobre el formulario
y arrastra el ratón para definir su tamaño, en caso que no lo arrastres Delphi
automáticamente le pone su tamaño predeterminado. Otra forma de insertar los
componentes es dando doble Clic sobre el componente a insertar en la ficha de
componentes.
Inspector de Objetos u Object Inspector. Este nos permite modificar las propiedades y
respuestas a sucesos o eventos de los componentes, sus datos muestran el estado del
componente seleccionado o del mismo formulario. Está dividido en dos partes en
forma de pestañas o solapas una que dice Properties y Events. A continuación se
muestra las propiedades del formulario.
Existen propiedades que tienen un signo de más, eso significa que son contenedoras
de otras opciones. A continuación se explican algunas de las propiedades más
comunes del formulario.
1
Manual Delphi Área de informática
BorderIcons: Tiene cuatro opciones mismás que reciben un valor falso o verdadero
(True o False) de las cuales dos son muy útiles y empezaremos por la de biMinimize,
esta opción esta en True por default y permite que nuestro formulario se pueda
minimizar. biMaximize por default está en True y permite que nuestro formulario se
pueda maximizar en tiempo de ejecución.
BorderStyle: Despliega una lista con los diferentes estilos de bordes para el formulario.
Caption: Esta es una propiedad importante debido a que es aquí en donde escribimos
el texto de la barra de titulo del formulario, es alfanumérica y por default tendrá el
nombre del formulario (Form1 en este caso)..
Position: Despliega una lista en la cual muestra las diferentes posiciones sobre las
cuales podemos mostrar nuestro formulario al momento de correrlo.
Para dimensionar nuestro formulario basta con alterar las propiedades Height y Width
aunque también se puede realizar posicionando sobre los bordes del formulario el
puntero del ratón y arrastrarlo hasta lograr la dimensión que queramos.
Nota: Existen Propiedades que son iguales para varios componentes como Caption,
Font, Visible, etc.
Los eventos son sucesos que detecta nuestro formulario y según el suceso detectado
se ejecuta su código, existen varios eventos, explicaré solo algunos, de cualquier forma
1
Manual Delphi Área de informática
durante el curso se 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 crea el
procedimiento de dicho evento y nos muestra el editor de código.
1
Manual Delphi Área de informática
Operador Operación Tipo Operando Tipo Resultado
= Igualdad. Boolean
<> Desigualdad. Boolean
1
Manual Delphi Área de informática
< Menor que. Boolean
> Mayor que. Boolean
<= Menor o Igual que. Boolean
>= Mayor o Igual que. Boolean
1
Manual Delphi Área de informática
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.
Bien ya vimos como declarar constantes y variables ahora es necesario ver los tipos de
datos soportados por Delphi.
Delphi Soporta tipos de datos simples y tipos de datos compuestos pero por ahora nos
enfocaremos a los simples.
1
Manual Delphi Área de informática
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
-2147483648 ..
LongInt 32 bits con signo
2147483648
Int64 -2Exp63 .. 2Exp63-1 64 bits con signo
-2147483648 ..
Integer 32 bits con signo
2147483648
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.
Dígitos Tamaño en
Tipo Rango de valores
Significativos Bytes
± 1.5 * 10Exp-45 .. ± 3.4 *
Single 7-8 4
10Exp38
Real48 ± 2.9 * 10Exp-39 .. ± 1.7 * 10Exp38 11-12 6
± 5.0 * 10Exp-324 .. ± 1.7 *
Real 15-16 8
10Exp308
± 5.0 * 10Exp-324 .. ± 1.7 *
Double 15-16 8
10Exp308
Extende ± 3.4 * 10Exp-4932 .. ± 1.1 *
19-20 10
d 10Exp4392
Comp -2Exp63 .. 2Exp63 -1 19-20 8
-9223372036854775808 ..
Currency 19-20 8
9223372036854775807
1
Manual Delphi Área de informática
con otros lenguajes y el entorno de Windows. Bueno a continuación te
muestro su tabla.
Memoria Requerida
Tipo
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.
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.
Memoria requerida en
Tipo Carácter que contiene
Bytes
AnsiChar Un Caracter Ansi 1
WideChar Un Caracter Unicode 2
Char Un Caracter Ansi 1
1
Manual Delphi Área de informática
que
contiene
AnsiString AnsiChar ~2Exp31 Caracteres Hasta GB.
ShortString AnsiChar 255 Caracteres 2 a 256 Bytes.
String AnsiChar ~2Exp31 Caracteres 256 hasta 2GB.
WideString WideChar ~2Exp30 Caracteres Hasta 2GB.
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.
1
Manual Delphi Área de informática
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
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.
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.
1
Manual Delphi Área de informática
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;
end;
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
Les pondré un sencillo ejemplo pero ahora utilizaremos el evento OnClick del Form.
1
Manual Delphi Área de informática
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.
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.
1
Manual Delphi Área de informática
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.
ShowMessage
ShowMessagePos
MessageDlg
MessageDlgPos
MessageBox
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:
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
1
Manual Delphi Área de informática
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
mbOkCancel
Bien ahora pondré un ejemplo de como utilizarlo, pon el siguiente código en el evento
Onclick de tu Formulario.
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.
1
Manual Delphi Área de informática
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
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.
1
Manual Delphi Área de informática
Ficha Standar.
1
Manual Delphi Área de informática
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.
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.
1
Manual Delphi Área de informática
Ahora vamos con el código. Vete al evento Onclick del Button1 que dice Calcular.
dentro del pondremos el siguiente código:
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.
1
Manual Delphi Área de informática
if RaDioButton1.Checked = True then
Form1.Color := ClBlue
else
Form1.Color := clBtnFace;
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.
Application.Terminate;
1
Manual Delphi Área de informática
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.
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.
1
Manual Delphi Área de informática
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 elige el archivo
Spain. Ahora ya que seleccionaste Date. solo dale Ok. y listo tienes tu máscara para la
fecha.
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.
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.
1
Manual Delphi Área de informática
Ahora en el Evento Onclick del BitBtn se pondría:
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.
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.
1
Manual Delphi Área de informática
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.
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
1
Manual Delphi Área de informática
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.
1
Manual Delphi Área de informática
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.
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;
Muy bien.... traigan la tequila compadres.. pos ya terminamos. ahora solo córrelo con
F9 y listo.
1
Manual Delphi Área de informática
Ficha System
Contiene componentes que permiten acceder a algunos elementos importantes del
sistema, enseguida muestro la ficha.
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.
1
Manual Delphi Área de informática
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.
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.
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.
Muy bien si has hecho todo lo que te dije el Formulario tiene que lucir más o menos
Así.
1
Manual Delphi Área de informática
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.
1
Manual Delphi Área de informática
MediaPlayer mediante su propiedad FileName le indicamos el archivo que reproducirá,
después simplemente lo abrimos.
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.
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.
1
Manual Delphi Área de informática
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;
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
1
Manual Delphi Área de informática
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 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.
1
Manual Delphi Área de informática
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.
1
Manual Delphi Área de informática
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.
1
Manual Delphi Área de informática
Ficha BDE
Esta ficha contiene componentes que habilitan la conexión a bases de datos utilizando
el BDE engine de Delphi.
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
1
Manual Delphi Área de informática
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.
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.
1
Manual Delphi Área de informática
Elige Paradox 7, de hecho esta activada por defaul. después de eso te saldrá la
siguiente ventana:
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.
1
Manual Delphi Área de informática
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.
Muy bien ya que tecleaste esta estructura quiero que te ubiques en la parte izquierda
de tu ventana, encontraras una leyenda que dice Table Properties y debajo de ella un
especie de Combobox. Ese combobox contiene las propiedades de la tabla que tu
puedes configurar. No entrare en más detalles, solo te digo que experimentes un poco
con ellas.
No vamos a crear algún índice secundario en esta tabla por que usaremos algunas
sentencias Sql en búsquedas por producto con propósito de aprendizaje, por lo tanto
no es necesario crearlo.
Muy bien ahora solo quiero que des Click en el botón que dice Save As, y guardes la
tabla en el directorio c:\Ejemplo con el nombre de Inventario. Para crear el directorio
vete al explorador ó Mi PC y simplemente vete a la unidad C y créala.
De igual forma como creaste esta tabla quiero que hagas las siguientes tablas y las
guardes en el mismo directorio OK.
1
Manual Delphi Área de informática
El ejercicio que realizaremos se trata de un sistema que controla un inventario de
productos, ventas de productos y generación de reportes de las utilidades, en este
momento hemos creado las bases de datos, pero falta explicar muchas cosas que son
necesarias por lo tanto conforme se expliquen se le ira avanzando al sistema Ok.
Componente TTable
Es un componente no visual y se encuentra en la ficha BDE.
Bueno después de esto es necesario indicarle la tabla que se va a utilizar y esto se hace
en la propiedad TableName, esta propiedad me listara todas las tablas existentes en la
ruta o alias que pusimos en el DatabaseName, posteriormente la propiedad Active se
tendrá que poner en True para poder manipular la tabla.
El componente Table tiene una larga lista de eventos, que se pueden dividir en tres
grupos, los eventos que se producen antes de un operación como una apertura, cierre,
lectura, etc., los cuales empiezan por la palabra Before, luego están los eventos que se
producen en el momento y cuyo nombre empieza por On y por ultimo los eventos que
se producen después, cuyo nombre empieza por After . A continuación te listo los
principales eventos del componente Table.
1
Manual Delphi Área de informática
BeforeDelete Antes de borrar un registro
BeforeEdit Antes de editar el registro actual
BeforeInsert Antes de insertar un registro
BeforeOpen Antes de abrir la tabla
BeforePost Antes de guardar los datos
Se genera cuando se va a calcular el valor de un
OnCalcFields
campo
OnDeleteError Cuando se produce un error al borrar un registro
OnEditError Cuando hay un error al editar un registro
OnFilterRecord Cuando se activa el filtrado
OnNewRecord Cuando se añade un registro
OnPostError Cuando hay un error durante el grabado de datos
Cuando se manejan bases de datos es común que necesitemos acceder a los sus
campos mediante código y precisamente un método de acerlo es utilizando
FieldByName.
No te espantes es fácil utilizarlo por ejemplo en nuestra base de datos Inventario que
acabamos de crear si queremos acceder al campo Producto y asignarle un nombre
seria de la siguiente forma:
Table1.FieldByName('Producto').AsString := 'Sabritas';
1
Manual Delphi Área de informática
Como ves primeramente va el nombre del componente Table que estará ligada a
nuestra base de datos física, posteriormente escribimos FieldByName en el cual dentro
de paréntesis y entre comillas simples indicaremos el nombre del campo al cual
aremos referencia, por ultimo bastara con indicarle el tipo de dato que es el campo al
cual hacemos referencia, que por cierto eso lo indicamos con el .As. En caso de que
quieras leer el valor de un campo y asignarlo a una variable pues simplemente cambia
la posición de la línea de código anteriormente escrita solo recuerda que los tipos de
datos sean iguales.
Ordenación de Registros . . .
Una vez que se ha definido un DataSet los registros que contiene se encuentran
ordenados por su índice activo y este índice queda determinado por el valor de la
propiedad IndexName del componente TTable si no se especifica u índice secundario
se tomara el índice primario. Otra forma de ordenar la tabla es utilizando la propiedad
IndexFieldNames en la cual se pondrá el índice primario por el cual se quiere ordenar.
Los índices previamente se tuvieron que haber declarado en la tabla. En tiempo de
ejecución también se puede cambiar el índice de ordenación, por ejemplo el código
para ordenar la tabla Inventario a través de su Clave primaria seria así.
Table1.IndexFieldNames := 'Clave';
Búsquedas de Registros . . .
1
Manual Delphi Área de informática
tuvo éxito o no en la búsqueda. Por ejemplo en la tabla Inventarios para buscar un
producto se escribiría el siguiente código.
ShowMessage('Producto Localizado')
Else
ShowMessage('Producto no encontrado');
Como puedes ver simplemente va el nombre del componente Table que previamente
nosotros lo ligaremos a la B.D., posteriormente va FindKey en el cual entre paréntesis y
corchetes ponemos la variable o el dato a buscar que en este caso estoy suponiendo
que en un Edit el usuario escribió el producto que desea buscar. Ahora como el
método devuelve un valor True cuando se tiene éxito pues solo lo comparo con un if
igualado a True.
ShowMessage('Producto Localizado')
Else
Table1.FindNearest([Edit1.Text]);
Aunque Ami en lo particular me gusta utilizar este método y cuando necesito realizar
una búsqueda por un campo que no es índice utilizo el SQL pues... no le aunque les
explicare el otro método existente para busquedas.
El otro método de búsquedas es Locate, el cual nos permite buscar por una condición
en un columna o por varias columnas. Locate es una función que devuelve True o False
según ha tenido éxito o no, y si su busqueda fue exitosa la tabla muestra la fila que
cumplió la condición. Para usar este método se han de pasar una serie de parámetros
y a continuación te muestro su sintaxis:
1
Manual Delphi Área de informática
El segundo contiene la condición, por ejemplo si estamos buscando productos según
su proveedor es aquí en donde lo pondríamos. El ejemplo quedaría así:
Table1.Locate ('Producto','CocaCola',[]);
Por último esta Options, el cual indica como se ha de realizar la búsqueda, si se ignoran
las mayúsculas, si se hacen búsquedas parciales en los campos Alfanuméricos, etc, esto
quiere decir que se mostraran las filas que contengan CocaCola en sus respectivos
campos además que otros datos, o sea que la busqueda no es exacta. Por ejemplo:
DataSource
El componente table pertenece a un grupo de componentes que son derivan del
componente TDataset, estos componentes acceden por diferentes caminos a los
datos, por lo que la interfaz obtenida difiere según el componente empleado. Para que
los diferentes controles que muestran los datos sean capaces de acceder a esta
variedad de interfaces pues se utiliza el DataSource el cual es un componente
intermedio el cual tiene la tarea de mostrar una interfaz común a todos los controles.
Controles Data-Aware
Componente DBGrid . . .
Nos sirve para visualizar información almacenada en una tabla, pero aparte de eso
podemos también realizar inserciones, ediciones, modificaciones, etc. y cuenta con
varias propiedades y métodos que nos ofrecen una amplia gama de configuraciones
tanto para el aspecto como para el funcionamiento del control.
1
Manual Delphi Área de informática
dataSource, por ejemplo supongamos que tengo 2 formularios en el primero tengo mi
tabla y mi DataSource1 y en el segundo formulario tengo un DbGrid1 pues
simplemente para ligarlo en su propiedad DataSource pondría Form1.DataSource1 y
presto es todo. Después existen otras propiedades interesantes como Options que a
continuación describo.
Hasta ahora esta bien con el DBGrid pero su verdadera potencialidad se encuentra en
la propiedad Columns, que encapsula tanto el aspecto de las columnas como los
campos de las tablas o consultas SQL que están ligadas al la columna. Cuando no se
definen columnas en un DBGrid automáticamente el control creara una columna para
cada campo de nuestra base de datos. Para accesar al editor de columnas basta con
dar doble click sobre el componente o dar un click con el botón secundario y elegir la
opción Columns Editor del menú emergente, saldrá la siguiente ventana.
1
Manual Delphi Área de informática
Ahora viene algo importante, hasta ahora nos mostrara todos los campos de la tabla
en nuestro DBGrid por lo tanto quiero que des doble Click sobre el DBGrid y aparecerá
el editor de columnas, pero sorpresa verdad esta vacío y eso es por que no se han
definido y para definirlos basta con dar un click en el tercer icono que dice Add All
Fields y nos agregara una columna para cada campo de nuestra base de datos
empezando por un índice cero, bien ahora ya tengo todos los campos de mi base de
datos por lo tanto si quiero borrar algunos bastara con seleccionarlos y dar un click en
el segundo icono que dice Delete Selected (Del), cabe mencionar que no solo puedo
borrar algunos campos que no quiera si no que también puedo cambiar el orden de las
columnas arrastrando con el puntero del ratón a la posición que deseo un campo en
particular.
1
Manual Delphi Área de informática
DropDown Rows Número de filas desplegables
FieldName Nombre del campo que se visualiza
Fuente con la que se muestra la información de la
Font
columna
Lista de valores que aparecerán al desplegar la
PickList
columna
ReadOnly Esta columna solo es de lectura
Width Ancho de la columna en Pixels
Title Título de la columna
Ahora la opción Title tiene ciertas propiedades que son interesantes es por eso
pariente que las describo.
La propiedad PickList es una propiedad que apunta a una lista de String y el efecto que
produce es que en la columna donde se ponga se muestra un menú desplegable que se
activara con el ratón y contendrá todo lo que hayamos puesto en la propiedad PickList,
solo ten cuidado ya que la propiedad ButtonStyle debe ser cbsAuto.
Se puede manipular información y realizar operaciones con los campos del DBGrid los
métodos más comunes son el DbGrid1.Columns[número_columna].Propiedad y
DbGrid1.Fields[número_columna].propiedad. Todo dependerá de que tipo de
operación deseo realizar.
DBNAvigator . . .
Este control tiene incorporada las funcionalidades más comunes que se realizan sobre
una base de datos ya que con el podemos navegar entre los registros, eliminar un
registro, ponerlo en modo de edición, insertar registros, etc. su propiedad más
importante es la DataSource en la cual se tiene que indicar el
DataSource sobre el cual trabajara. Describo los botones del navegador.
1
Manual Delphi Área de informática
al actual, activa First y Prior.
Salta al ultimo registro de la
nbLast Last tabla, desabilita Next y Last
y activa First y Prior.
Inserta un nuevo registro
en la posicion anterior al
nbInsert Insert registro actual, modifica el
estado de la tabla a modo
de Edicion.
Borra el registro actual y se
nbDelete Delete posiciona en el registro
siguiente
Pone la tabla en modo de
edición, con lo cual se
nbEdit Edit
pueden modificar los datos
del registro.
Escribe en la base de datos
nbPost Post los cambios realizados
sobre el registro activo.
Cancela la edición del
nbCancel Cancel registro activo y recupero
los datos anteriores.
Refresca la tabla o la
nbRefresh Refresh
actualiza.
La propiedad Hints permite colocar una leyenda para cada botón, si desactivaste algún
botón su leyenda solo déjala en blanco. sale primo.
Ahora a nuestro formulario por favor colócale un DbNavigator y listo podrás recorrer
los campos de la tabla Animals que pusimos anteriormente, solo recuerda poner en la
Propiedad DataSource del DBNavigator DataSource1.
El componente DBEdit esta diseñado tanto para presentar datos como para introducir
datos en una tabla y su propiedad más importante es DataSource, la cual hará
referencia a la tabla con la que se trabajara.
1
Manual Delphi Área de informática
La propiedad DataField Indica el campo de la base de datos con el cual se trabajara.
Esta propiedad mostrara todos los campos de la tabla solo tienes que elegir cual
quieres.
Otra propiedad interesante podría ser ReadOnly la cual recibe un valor Boolano y sirve
para poner el campo en solo lectura desabilitando de esta forma que se capture
información sobre el. Las demás propiedades son iguales a las del Edit.
Sus propiedades más interesantes son el DataSource y DataField, las cuales funcionan
igual que las del DBEdit.