Programación Delphi
Programación Delphi
• comando es un simple comando o una estructura de ellos que no cambia el valor del contador.
El comando for asigna el ValorInicial al contador, luego ejecuta el comando repetidamente, incrementando o disminuyendo el valor de
contador en cada iteración. Cuando contador retorna el mismo valor que ValorFinal, el comando es ejecutado una vez mas y el comando For
termina.
Ejemplos:
for I := 2 to 63 do
if Data[I] > Max then
Max := Data[I];
for I := ListBox1.Items.Count - 1 downto 0 do
ListBox1.Items[I] := UpperCase(ListBox1.Items[I]);
for I := 1 to 10 do
for J := 1 to 10 do
begin
X := 0;
for K := 1 to 10 do
X := X + Mat1[I, K] * Mat2[K, J];
Mat[I, J] := X;
end;
for C := Red to Blue do Check(C);
Tipo de Datos
El siguiente esquema presenta los tipos en Object Pascal.
simple
- ordinal
- integer
- character
- Boolean
- enumerated
- subrange
- real
string
structured
- set
- array
- record
- file
- class
- class reference
- interface
pointer
procedural
variant
Un tipo de dato entero representa un subconjunto de todos los números. Los tipos enteros genéricos son Integer y Cardinal; use esto cuando
sea posible, ya que resulta que estos son los más entendibles para el CPU y el sistema operativo. En la siguiente tabla se presenta sus rangos y
los formatos para guardar por el compilador de 32 Bits.
Tipos Rango Formato
Integer -2147483648..2147483647 32-bit con signo
Cardinal 0..4294967295 32-bit sin signo
Existen otros tipos de enteros fundamentales con son: Shortint, Smallint, Longint, Int64, Byte, Word, y Longword.
Tipos Rango Formato
Shortint -128..127 8-bit con signo
Smallint -32768..32767 16-bit con signo
Longint -2147483648..2147483647 32-bit con signo
Int64 -2^63..2^63-1 64-bit con signo
Byte 0..255 8-bit sin signo
Word 0..65535 16-bit sin signo
Longword 0..4294967295 32-bit sin signo
El tipo de dato real define un conjunto de números que puede ser representado con notación de punto flotante. La siguiente tabla presenta los
rangos y los formatos de almacenados para los tipos fundamentales de reales:
Tipos Rango Dígitos Sign. Tam/ Bytes
Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10
Comp -2^63+1 .. 2^63 -1 19-20 8
Currency -922337203685477.5808.. 922337203685477.5807 19-20 8
Real 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
E
n una herramienta de desarrollo visual como Delphi, el rol del ambiente es definitivamente importante, y a veces más importante que el
lenguaje de programación en sí. En esta unidad se presentan los diferentes componentes del ambiente Delphi. El desarrollador podrá reconocer
y utilizar los componentes visuales más importantes del ambiente de desarrollo de Delphi, y esto le dará la facilidad y la confianza para crear
aplicaciones rápidamente.
ToolBars de Delphi
Los toolbars en el IDE proveen accesos rápidos a comandos de menú. Los comandos son organizados en diferentes toolbars, que pueden ser
independientemente reposicionados o sacadas como ventanas flotantes arrastrándolos con el mouse.
Se puede desplegar o remover los toolbars a través de View|Toolbars o haciendo click derecho en cualquiera de los toolbars y marcando o
desmarcando los nombres de los toolbar.
Los toolbars que pueden aparecer en el IDE son
Standard
View
Debug
Custom
ComponentPalette
Desktops
Los toolbars tiene Help Hints. Para habilitar los Help Hints, seleccione Show Hints desde las pagina Options del dialogo Customize Toolbar.
Cuando los Help Hints están habilitados, se puede posicionarse en cualquiera de los botones para ver para que se utilice.
En Delphi 5 se puede guardar Desktops personalizados en el toolbar Desktops.
Standard
Los forms son la base de toda aplicación Delphi. El form es un componente. Se colocan otros componentes en área conformada por el form
para construir interface de aplicaciones.
Se desarrolla la aplicación personalizando el form principal, y agregando y personalizando forms para otras interfaces. Se personalizan los form
agregando componentes y cambiando sus propiedades.
Los forms son ventanas, y por esto por defecto incluyen cierta funcionalidad estándar de ventanas como:
• Control de menú
• Botones Minimizar y Maximizar
• Barra de titulo
• Bordes para cambiar tamaño
Estas características, pueden ser cambiadas en modo diseño así como cualquier propiedad a través del Object Inspector.
Una aplicación usualmente contiene múltiples forms: Un form principal, que es la interface primaria del usuario, y otros forms como ventana de
diálogos, ventanas secundarias, y así sucesivamente. Se puede iniciar del diseño del form desde uno de las planillas que provee Delphi de
forms. Se puede guardar cualquier form que se diseñe como una planilla para rehusarla en otros proyectos.
Algunas tareas que se pueden realizar con los forms:
Para hacer que una ventana se mantenga encima de las demás ventanas abiertas en tiempo de corrida configure la
propiedad FormStyle a fsStayOnTop.
Para quitar los scrollbars por defecto de los forms, cambie el valor de las propiedades HorzScrollBar y VertScrollBar.
Para cambiar los estilos de los bordes, utilice las propiedades BorderIcons y BorderStyle. (Los resultados son visible
en tiempo de corrida.)
Para cambiar el icono para el form minimizado, use la propiedad Icon.
Para especificar la posición inicial de un form en la aplicación Windows, use la propiedad Position.
Para especificar el estado inicial del form, (e.g., minimizado, maximizado o normal) use la propiedad WindowState.
Para definir el área de trabajo del form en tiempo de corrida, use las propiedades ClientHeight y ClientWidth.
Para especificar cual control tenga el foco inicial de la forma en tiempo de corrida, use la propiedad ActiveControl.
Para pasar todos los eventos del teclado al form, en vez del control seleccionado, use la propiedad KeyPreview.
Para especificar un menú particular, si el form contiene mas de un menú, use la propiedad Menú.
Muchas veces no se desea que la aplicación cargue a memoria todos los forms al mismo tiempo. Para reducir la cantidad de memoria requerida
en el momento de la carga de la aplicación, es posible que se desee crear algunos forms solo cuando se necesiten. Por ejemplo, un dialogo
necesita estar en memoria solo durante el tiempo el usuario interactúa con él.
Para crear un form dinámicamente:
Seleccione File|New Form de la barra componentes para desplegar un nuevo form.
Remueva el form de la lista de forms Auto-create de la pagina Project Options|Forms.
Esto remueve la invocación del form al inicio. Como una alternativa, se puede remover manualmente la línea del fuente del proyecto:
Application.CreateForm(TResultsForm, ResultsForm);
Invocar el form cuando se necesite usando el método Show del form, si el form no es modal, o el método ShowModal, si el form es modal.
Un manejador de evento para el form principal debe crear una instancia del form resultado y destruirla. Una forma de invocar el form resultado
es usar una variable global como se presenta.
procedure TMainForm.Button1Click(Sender: TObject);
begin
ResultsForm:=TResultForm.Create(self)
ResultsForm.ShowModal;
ResultsForm.Free;
end;
El manejador de evento en el ejemplo borra el form después de ser cerrado, así que el form debe ser recreado si se desea usar en otro lado de
la aplicación.
H
asta este punto ha sido introducido al ambiente Delphi y ha visto superficialmente el lenguaje Object Pascal, con esto podemos pasar a ver el
uso de los componentes en Delphi. Delphi se trata de esto precisamente. Programación Visual usando componentes es la característica
principal del ambiente de desarrollo.
Delphi viene con un numero detallado de componentes listo para usar. El objetivo de esta unidad es de mostrar como utilizar los principales
componentes de las principales barras.
Introducción
Todos los componentes de Delphi derivan de la clase TComponent por esta razón todos los componentes heredan las propiedades públicas
(published) Name y Tag. A través de la propiedad Name se puede accesar las propiedades y métodos del objeto. La propiedad Tag es una
propiedad Integer para uso en cualquier propósito.
Los componentes visibles derivan de las clases TGraphicControl, para aquellos que no usan manejadores de ventanas, o TWinControl, para
aquellos que poseen manejadores de ventanas. Estas dos clases derivan directamente de la clase base TControl por esta razón todos los
componentes visibles poseen algunas propiedades y métodos comunes tales como: cursor, height, hint, left, top, width, action, show, hide,
showhint, refresh, visible, entre otros...
Nota: No se preocupe si no entiende a cabalidad los párrafos anteriores, ya que en el próximo curso se tocarán temas donde muchos de estos
términos serán debidamente definidos.
Componentes Standard
Los componentes de la página de Standard de la paleta de Componentes forma los elementos de Controles de Windows para la aplicación:
Frames Abre un dialogo que despliega el listado de frames incluidos en el proyecto actual. Seleccione cualquiera
haciendo click en el botón OK.
MainMenu Crea una barra de menú para el form. Para accesar a los eventos de los items del menú principal, agregue al
componente MainMenu a un form y haga doble click para abrir el diseñador de menú.
PopupMenu Crea un menú popup que aparece cuando el usuario hace click derecho. Para accesar los eventos de los ítem
en un menú popup, agregue el componente a un form y haga doble click para abrir el diseñador de menú.
Label Despliega un texto que el usuario no puede seleccionar o manipular, como un titulo de una caja de edición.
Edit Despliega una área para editar donde el usuario puede entrar y modificar una línea de texto. El Edit es uno
de algunos controles de Texto.
Memo Despliega una área para editar donde el usuario puede entrar y modificar múltiples líneas de datos.
Button Crea un botón para presionar que el usuario utiliza para iniciar acciones.
CheckBox Presenta una opción que el usuario puede cambiar entre Si/No o Falso/Verdadero. Use los check boxes para
desplegar un grupo de opciones que no sean mutuamente exclusivas. Los usuarios puede seleccionar mas de una opción a la vez.
RadioButton Presenta una opción que el usuario puede cambiar entre Si/No o Falso/Verdadero. Use los radio buttons para
desplegar un grupo de opciones mutuamente exclusivas. Los usuarios solo podrán seleccionar una opción.
ComboBox Despliega una lista de opciones en una combinación de list box y Edit Box. Los usuarios pueden entrar datos
en el edit box o seleccionar un ítem del list box.
RadioGroup Crea una caja de grupo que contiene radio buttons en un form.
Panel Crea paneles que pueden contener otros componentes en un form. Se puede usar paneles para crear
toolbars y líneas de status.
ActionList Crea una colección de acciones que centraliza las acciones de la aplicación.
Componentes Additional
Los componentes en la pagina Additional de la paleta de Componentes hace los elementos especializados de una aplicación Windows:
SpeedButton Provee un botón que despliega un glyph pero no un caption. Speed buttons pueden ser
agrupados dentro de un panel para crear paleta de herramientas.
ApplicationEvents Un componente que intercepta los eventos de un aplicación. Utilice como una forma de
configurar un manejador de eventos para los eventos de aplicaciones usando el IDE o para asociar los manejadores de eventos con cada form
en la aplicación.
Componentes Win32
Los componentes de la pagina Win32 provee acceso a los controles comunes de la interface de usuario de Windows 32-bit a las aplicaciones.
TabControl Similar a los divisores de un gabinete de archivos o de un cuaderno, este componente provee un
conjunto de tabs para dividir.
PageControl Un conjunto de paginas que hace un dialogo multipaginas. Use este control para definir múltiples
paginas lógicas o secciones de información dentro de la misma ventana.
ImageList Esto es una colección de imágenes del mismo tamaño, cada cual puede ser referenciado por su índice
(Index). Las listas de imágenes son usadas para manejar eficientemente los conjuntos grandes de iconos y bitmaps. Todas las imágenes en un
listado de imágenes son contenidas en un simple y gran bitmap en un formato de dispositivo de pantalla. Un image list también incluye
bitmaps monocromáticos que contengan mascaras usadas para dibujar imágenes transparentemente. Para crear un listado de imágenes,
agregue el componente ImageList al form y haga doble click para desplegar el editor de Listado de Imágenes.
ProgressBar Una barra rectangular que llena de izquierda a derecha, similar a la que se presenta cuando se copia
archivos en el explorador de Windows. Use este control para proveer información acerca el progreso de una operación larga o procesos en
background.
Animate Un control de Windows de animación que silenciosamente despliega un Audio Video Interleaved (AVI),
una serie de cortes de bitmaps como un película.
DateTimePicker Despliega un list box para entrada de fechas u horas. Los usuarios pueden seleccionar del calendario o
seleccionar fechas y horas con las flechas de Arriba y Abajo o escribiéndolo. Se debe tener la ultima versión del COMCTL32.DLL, usualmente se
localiza en el directorio Windows\System o en el directorio Windows\System32.
ToolBar Maneja botones de herramientas y otros controles, ordenándolos en fila y automáticamente ajustando
sus tamaños y posiciones.
Ejemplo Componentes Standard:
A continuación crearemos una aplicación utilizando los componentes Button, Edit, Label, CheckBox y Radiogroup.
• Primero, se crea un nuevo proyecto, haga click en el menú File | New Application.
• Segundo, colocaremos los componentes como se muestran:
• ToolBar1 cambie su propiedad Flat=True, Images=ImageList1. Haga click derecho en esta barra para crear tres botones en la opción
“New Button”. A cada botón asigne el evento OnClick:
ToolButton1
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
PageControl1.ActivePage := TabSheet1;
end;
ToolButton2
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
PageControl1.ActivePage := TabSheet2;
end;
ToolButton3
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
PageControl1.ActivePage := TabSheet3;
end;
• PageControl1 asigne su propiedad Align=alClient y Images=ImageList1. El object inspector busque el evento OnChange y haga doble
click para asignar dicho evento.
procedure TForm1.PageControl1Change(Sender: TObject);
begin
StatusBar1.SimpleText := PageControl1.ActivePage.Caption;
end;
Haga click derecho en el pagecontrol para crear tres tabsheet en la opción “New Page”. A en el primer sheet asgigne su propiedad
Caption=”Calendario” y coloque el componente Month Calendar1. En el segundo tab asigne su propiedad Caption=”Animación” y
coloque el componente Animate1 y asigne su propiedad CommonAvi= aviCopyFiles y su propiedad Active=True. El tercer tab asigne
su propiedad Caption=”Barra Progreso” y coloque el componente ProgressBar1 asigne su propiedad Max=10000 y Step=1. Además
coloque un Button1 y asigne su propiedad Caption=”Activa” y haga doble click en él para programar su evento OnClick.
procedure TForm1.Button1Click(Sender: TObject);
begin
progressbar1.Position := 0;
While progressbar1.Position < progressbar1.Max do
progressbar1.StepIt;
end;
○ Tercero, corra la aplicación.
E
l soporte para desarrollo de aplicaciones para base de datos en Delphi es una de la principales características del ambiente de
programación. Muchos programadores gastan la mayor parte de su tiempo desarrollando código para acceso a base de datos, que
debe ser la porción mas robusta de la aplicación. En esta unidad se presenta una introducción de extenso soporte para desarrollo de
aplicaciones para base de datos.
Lo que no se cubre en esta sección es una discusión sobre la teoría del diseño de base de datos. Se asume que usted ya conoce los
fundamentos del diseño de base de datos y ya ha diseñado la estructura de alguna base de datos.
Introducción al BDE
Borland Database Engine (BDE) es un software de 32 bits basado en Windows que es el corazón del manejo de Base de Datos y el
encargado de las conexión a la misma detrás de los productos Borland, así como en Paradox para Windows y Visual dBase para
Windows.
El BDE ofrece un conjunto de características robustas para asistir los desarrolladores de aplicaciones Cliente-Servidor.
○ CanModify retorna True si el dataset puede ser modificado. Algunas veces se trabaja con datasets de solo lectura. Puede ser
el caso de una base de datos que se encuentre en un CD-ROM o de un query que no arroje resultado vivos. Antes de intentar
modificar los datos de un dataset debe llamar este metodo.
○ dsBrowse indica que el conjunto de datos en modo normal, y es utilizado para ver y revisar los datos.
○ dsEdit indica que el conjunto de datos esta en estado de edicción. Estos componetes entran en modo de edicción cuando el
programa llama su método Edit o el componente Datasource tiene su propiedad AutoEdit con valor true, y el usario inicia una
edicción en un componente data-aware. Como DBGrid o DBEdit. Cuando el registro editado es guardado, el conjuto de datos
sale del estado dsEdit.
○ dsInsert indica cuando un registro nueva está siendo agregado al conjunto de datos. Esto puede suceder cuando se llama el
método Insert del componente.
○ dsSetKey indica cuando se está preparando una busqueda en el conjunto de datos. Este es el estado entre la llamada SetKey
y la llamada a Gotokey or GotoNearst.
○ dsFilter es el estado del conjunto de datos mientras se asigna un filtro; esto es, durante la llamada al evento OnFilterRecord.
Table Toma los datos de una tabla físicamente en una base de vía el BDE y suple a uno o más de los
componentes de visualización de datos a través de un componente DataSource. Convenientemente, envía data recibida del
componente a la base de datos físicamente vía el BDE.
Query Utiliza comandos SQL para tomar datos de una tabla física en una base de datos y suple uno o mas
componentes de visualización a través del componente TdataSource. Convenientemente, usa comando de SQL para enviar datos
desde el componente a la base de datos físicamente vía el BDE.
Database Configura una conexión persistente a una base de datos, especialmente a una base de datos
remota requiriendo login y password de usuario.
Componentes Data Controls
Los componentes en la pagina Data Controls de la paleta de Componentes contiene elementos especializados de controles de base de
datos disponibles para las aplicaciones:
DBGrid Tablero que permite ver y editar los datos tabularmente similar a un hoja electrónica.
DBNavigator Botones de navegación que permite mover el puntero del registro actual hacia delante y hacia
atrás. El navegador puede poner la tabla en estados de Insert, Edit o Browse, guardar o modificar registros y tomar datos
actualizados para actualizar el despliegue.
DBImage Caja de imagen despliega, corta o pega imágenes bitmaps al y desde el registro actual
seleccionado.
DBCheckBox Caja de marcar que despliega o edita el valor de un campo boleano desde el registro actual.
○ Primero, se crea un nuevo proyecto, haga click en el menú File | New Application.
○ Segundo, colocaremos los componentes como se muestran:
○ Tercero, se asignará las propiedades a los distintos componentes.
○ Datasource1 (Data Access) cambie la propiedad Dataset=Table1. Más adelante se darán algunos concepto de que es
Datasource y como se utiliza.
TDatasource
Un componente TDatasource fue utilizado en el ejemplo anterior. TDatasource es la vía para abilitar la conexion entre un componente
Data Acces como TTable y un componente Data Control como el TDBEdit o el TDBGrid que utilizamos en el ejemplo anterior. El
TDatasource tiene unas cuantas propiedades y eventos que hacen la vida del programador mas simple cuando se manipulan datos.
La propiedad State del TDatasource nos dice el estado actual del dataset. El evento OnStateChange se dispara cuando el valor de esta
propiedad cambia.
El evento OnDataChange es ejecutado cuando el dataset se activa o el dataset informa que los datos han cambiado en algo.
El evento OnUpdateData ocurre cuando un registro es insertado o actualizado. Puede responder a este evento siempre que necesite
dar seguimiento a algunos de los datos en su aplicación.
<Insertar Working with fields>
Los Módulos de Datos
Los módulos de datos le permite tener todas las reglas de base de datos y relaciones de forma centralizadas para ser compartida a los
diferentes proyectos, grupos y entidades de la corporación. Los módulos de datos están encapsulados en el componente TDataModule
del VCL. Piense en un TDataModule como un Form invisible donde puede colocar los componentes “Data Access” que se utilizarán en
el proyecto. Para crear un instancia del módulo de datos es bastante simple: Seleccione File | New del menú prinicipal y luego
seleccione “Data Module” del repositorio de objetos.
La justificación simple para usar el TDataModule de poner sólo los componentes “Data Access” en un Form es que es mas sencillo
compartir los mismos datos a multiples Forms y unidades en su proyecto. En una situación más compleja, se tendrá una gran cantidad
de componentes TTable, Tquery y/o TstoredProc. Se tendrá relaciones definidas entre los componentes y además reglas a nivel de
campos, como valores mínimo / máximo o fromatos de despliegues. Además este arreglo de componentes “Data Access” modela las
reglas del negocio de la corporación. Despues de tomar tanto tiempo para configurar esto, no se desearía tener que hacer esto
nuevamente en otra aplicación. En estos casos, podría guardar su módulo de datos en el repositorio de objetos para usarlo luego. Si
trabaja en un ambiente de equipo, debería guardarse el objeto de repositorio compartido en la red para ser utilizado por los
desarrolladores del equipo.
En Delphi V el módulo de datos adquirio nuevas caracteristicas para darle mayor facilidad en el manejo de los datos y los
componentes dentro del mismo. El diseñador de módulo de datos se divide en dos paneles:
○ El panel izquierdo, llamado “Tree view”, muestra la relación padre-hijo de los componentes en el módulo de datos.
○ El panel derecho tiene dos paneles: Componentes (Components) y Diagrama de Datos (Data Diagram).
○ Haga click en la pestaña Components para ver los componentes del módulo como aparecerían en un Form (representados
por los iconos de la paleta).
○ Haga click en la pestaña Data Diagram la dependencia entre componentes. Los componentes no aparecerán en el diagrama
hasta que sean arrastrados desde el panel izquierdo “Tree View”.
Puede agregar componentes al módulo de datos seleccionandolos de la paleta de componentes y haciendo click en el “Tree View” o
en la página de Componentes. Se puede utilizar el Object Inspector para configurar las propiedades de los componentes mientras se
trabaja en diseño.
Curso Delphi Básico
Desarrollo en Delphi V