Você está na página 1de 132

1.

- INTRODUCCION DELPHI

Los nuevos sistemas de informacin son costosos en tiempos y recursos, la


solucin moderna de sistemas de informacin exigen nuevas herramientas y
metodologas para resolver rpida, econmica y eficiente los problemas de
informacin planteados por las organizaciones.
Aun mas el pleno potencial del hardware no es aprovechado plenamente y
existe un considerable retraso con el software y sus aplicaciones, generando lo
que se conoce como crisis del software.
En programacin tradicional, modular o estructurada un programa describe
una serie de pasos a ser realizados para la solucin de un problema, es decir es
un algoritmo.
En programacin orientada a objetos ( OOP ) un programa es considerado
como un sistema de objetos interactuando entre s, ambientes de desarrollo
visuales facilitan aun ms la construccin de programas y solucin de
problemas, porque permiten abstraer al ingeniero de software de todo el GUI
(interfase grfica) del problema, que constituye ms del 60% del cdigo
normal de un programa.
Es decir, en programacin modular o estructurada un problema sencillo de
informacin es descompuesto en una serie de mdulos(llamados
procedimientos o funciones) donde cada uno de ellos realiza una tarea
especfica, por ejemplo uno de ellos captura los datos, otro resuelve
operaciones, etc.
En OOP todo problema aun aquellos sencillos de informacin, se consideran y
resuelven como mdulos de cdigo gigante (clase) que contiene todo el
cdigo necesario(variables, procedimientos, funciones, interfaces, etc.) para
solucionar el problema.
En programacin visual( que tambin es heredera de OOP ),la interfase con el
usuario( pantallas) son generadas por el propio compilador y el ingeniero de
software solo se concentra en resolver el problema planteado.

Borland Deheli es un compilador que permite usar cualquiera de los tres


enfoques en la solucin de problemas de informacin que puedan y deban ser
resueltos empleando el computador y el lenguaje.
Para propsitos de aprendizaje usaremos el tercer enfoque, es decir
programacin en ambientes visuales y usando el lenguaje de programacin
Borland Delphi
2.- BORLAND DELPHI MODELO DE SOLUCION

En general un problema de informacin es posible entenderlo, analizarlo y


descomponerlo en todos sus componentes o partes que de una u otra manera
intervienen tanto en su planteamiento como en su solucin.
Una herramienta rpida que nos permite descomponer en partes un problema
para su solucin, es el llamado modelo de solucin, este consiste de una
pequea caja que contiene los tres elementos ms bsicos en que se puede
descomponer cualquier problema sencillo de informacin, estas tres partes
son:
1. LA PRIMERA PARTE son todos los datos que el computador ocupa
para resolver el problema, estos datos son almacenados internamente en
la memoria del computador en las llamadas variables de entrada.
2. LA SEGUNDA PARTE son todas las operaciones generalmente
algebraicas necesarias para solucionar el problema, generalmente esta
parte del modelo es una formula (o igualdad matemtica, ej. X= y + 5).
3. LA TERCERA PARTE es el resultado o solucin del problema que
generalmente se obtiene de la parte de operaciones del modelo y dichos
datos estn almacenados en las llamadas variables de salida.
En resumen para todo problema sencillo de informacin es necesario
plantearse las siguientes preguntas:
Que datos ocupa conocer el computador para resolver el problema y en cuales
variables de entrada se van a almacenar ?
Que procesos u operaciones debe realizar el computador para resolver el
problema planteado ?

Que informacin o variables de salida se van a desplegar en pantalla para


responder al problema planteado originalmente?
Como nota importante no confundir los trminos datos, variables e
informacin;
Datos se refiere a informacin en bruto, no procesada ni catalogada, por
ejemplo Tijuana, calle primera # 213,15 aos, $2,520.00, etc.
Variables es el nombre de una localidad o direccin interna en la memoria del
computador donde se almacenan los datos, ejemplo de variables para los casos
del inciso anterior, CIUDAD, DIRECCION, EDAD, SUELDO, ETC.
Informacin son datos ya procesados que resuelven un problema planteado.
EJEMPLO DE MODELO DE SOLUCION
Construir un modelo de solucin que resuelva el problema de calcular el rea
de un tringulo con la formula rea igual a base por altura sobre dos.
Variable(s) Entrada
BASE ALTURA

Proceso u operacin
AREA = BASE * ALTURA 2

Variable(s) salida
AREA

PROBLEMA 2.- CONVERTIR LA EDAD EN AOS DE UNA PERSONA A


MESES.
PROBLEMA 3.- CONVERTIR PESOS A DOLARES.
PROBLEMA 4.- CALCULAR EL AREA DE UN CIRCULO CON LA
FORMULA

PROBLEMA 5.- EVALUAR


CUALQUIER VALOR DE X.

LA

FUNCION

PARA

Observar para el caso de constantes fijas o conocidas (PI) no se debe dar como
dato de entrada su valor, en cambio colocar directamente su valor dentro de la
formula, en la parte de operaciones del problema.
Pero recordar tambin que existirn problemas sencillos donde:

No se ocupan entradas o no se ocupan operaciones, pero todos ocupan


salida.
Una formula grande o muy compleja puede ser ms segura y fcil de
resolver, si es descompuesta y resuelta en partes, juntando al final los
parciales para obtener el resultado final.
Un problema puede tener ms de una solucin correcta.
El problema no esta suficientemente explicado o enunciado, entonces,
estudiarlo, analizarlo y construirlo de manera genrica.
TAREAS BORLNAD DELPHI
Construir los modelos de solucin de los siguientes problemas:
PROBLEMA 6.- Convertir millas a kilmetros(caso normal)
PROBLEMA 7.- Convertir 125 metros a centmetros(no ocupa entradas)
PROBLEMA 8.- Se calcula que en promedio hay 4.7 nidos en cada rbol en la
UABC, tambin se calcula que en cada nido existen un promedio de 5.8
pjaros, se pide calcular la cantidad total de nidos y de pjaros en los 227
arboles que existen en la UABC. (no ocupa entradas)
PROBLEMA 9.- La gorda Sra. Lpez y sus 8 hijos solo compran una vez al
mes su mandado en conocido supermercado, en dicha tienda el kilogramo de
frijol cuesta $8.75, el paquete de tortillas cuesta $3.55 y el frasco de caf vale
$14.25, si solo compran de estos tres productos para su mandado, calcular su
gasto total. ( problema no claro)
PROBLEMA 10.- Capturar y desplegar los cinco datos mas importantes de un
automvil(no ocupa operaciones)
PROBLEMA 11.- La distancia Tijuana - Ensenada es de 110 kilmetros. Si un
automvil la recorre a una velocidad constante de 30 millas por hora, cuanto
tiempo tarda en llegar. ( 1 milla = 1.609 Km.) (dos maneras correctas de
resolverlo).

PROBLEMA 12.- Evaluar la funcin


(caso normal).

para cualquier valor de x.

PROBLEMA 13.- Evaluar la funcin


(no ocupa entradas).

para cuando x vale 4 .

14.- Evaluar el factorial de cualquier numero usando la formula: n!=n!-1


15.- La distancia que recorre un auto es de 50 kms y su velocidad es de 30
millas por hora Cuanto tiempo tardara en llegar?
16.- Encontrar la derivada de x para cualquier valor con la formula(d/dx(x)=1)
17.- Calcular l interes que gana un capital de x pesos a una tasa de interes del
15% annual en un periodo de n aos.
18.-Que aceleracion tiene un tren que parte de tijuana a 10 km/hr y pasa por
ensenada una hora despues a 50 km/hr.
19.- Calcular el numero de aulas en una escuela que tiene 10 edificios y cada
edificio 3 pisos y cada piso 5 aulas, excepto un edificio que solo tiene dos
pisos.
20.- Si en una escuela hay 30 maestros y 15 son hombres que atienden a 10
alumnos cada uno. Cuantas maestras hay?
21.- Calcular la corriente de un circuito con un voltaje de 15v y una resistencia
de 6 ohms. Formula (I= V/R)
22.- Calcular la normal estandar(z) dados los datos por el usuario: X=dato,
=media, d=desviacion. Formula (Z = X-M / d)
23.- Dado un numero(N) cualesquiera obtener su raiz y potencia cuadrada .
24.- Determinar la media de 5 numeros diferentes.
25.- Determinar la velocidad v requerida para recorrer una distancia d en un
tiempo t . Formula (V = d * t)
26.- Determinar la pendiente de una recta. Formula (y = m x + b)

27.- Calcular la funcion de y= x + 8x + 3 para cualquier x


28.- Convertir minutos a horas.
29.- Aplicar la formula general para a=1, b=2, c=3.
30.- Se desea instalar un cable de red, el cliente pide 30 pies, considerando
que se venden en metros, cuantos debera comprar.
31.- Un campesino siembra trigo en un area cuadrada de 25 mts., cual es el
largo del cerco frontal en cms.?
32.- Resolver x + 15x - 8 para cualquier variable (X).
33.- Convertir C a F.
34.-Si cada salon de la escuela tiene 40 alumnos y son 30 salones Cuantos
alumnos son en toda la escuela?
35.- Si Juan trabaja 5 dias a la semana y descansa 2 Cuantos dias trabajo en 4
aos?
36.- Si en una oficina se procesan 20 facturas cada 10 minutos cuantas se
procesaran si se trabajan 5 horas?
37.- Si una empresa tiene _ de activo y un pasivo de _ Cual es su capital?.
Formula (C = A-P)
38.- Calcule el voltaje de un circuito dada una intensidad I y una resistencia R.
Formula (V=IR)
39.- Calcule la frecuencia de una onda que circula con un tiempo t. Formula
(F=1/t)
40.- Calcule la potencia de un circuito con un voltaje V y una intensidad I.
Formula (f = VI)
41.- Calcule el total que tendra que pagar una persona que va al cine
dependiendo del no. de boletos a comprar y el precio.

42.- Calcule las anualidades que tendra que pagar una persona que pidio un
prestamo. Dependiendo del tiempo que el elija y el interes por ao. Formula
(Anualidad=(Prestamo/Tiempo)+interes)
43.- Determinar cuanto ganara una persona en base a la horas trabajadas.
Tomando en cuenta el pago por hora.
44.- Convertir horas a segundos.
45.- Calcular la fuerza. Formula (fuerza = trabajo / tiempo)
3.- BORLAND DELPHI BUILDER VARIABLES

Identificadores son conjuntos de letras y/o nmeros que se utilizan para


simbolizar todos los elementos que en un programa, son definibles por el
usuario (programador o ingeniero de software) del mismo, como son las
variables donde se almacenan datos, funciones( pequeos mdulos con
cdigo), etiquetas, clases, objetos, etc.
En BORLAND DELPHI un identificador es una palabra compuesta de letras
y/o nmeros de hasta 32 caracteres significativos, empezando siempre con una
letra.
Una variable se define como un identificador que se utiliza para almacenar
todos los datos generados durante la ejecucin de un programa.
Existen ciertas reglas en cuanto a variables:
Claras y con referencia directa al problema.
No espacios en blanco, ni smbolos extraos en ellas.
Se pueden usar abreviaturas, pero solo de carcter general.
No deben ser palabras reservadas del lenguaje.
Ejemplos de buenas variables:
Nombre, Edad, SdoDiario, IngMensual, Permetro, Calif1, etc.

4.- BORLAND DELPHI TIPOS DE DATOS

A toda variable que se use en un programa, se le debe asociar (generalmente al


principio del programa) un tipo de dato especfico.
Un tipo de dato define todo el posible rango de valores que una variable puede
tomar al momento de ejecucin del programa y a lo largo de toda la vida til
del propio programa.
Los tipos de datos ms comunes en BORLAND DELPHI son:
TIPO
char
byte
integer
Real
Boolean
shortint
word
longint
String

RANGO
Caracter ASCII
0 a 255
-32,768 a 32,767
1E-38 a 1E+38
TRUE o FALSE
-128 a 127
0 a 65535
-2147483648 a 214748364
Cadena caracteres

Para el caso de strings se prodra usar cualquiera de los dos siguientes


formatos:
Var
Nombre:string;
Carrera:string[30];
Para el primer caso delphi pascal reserva 255 bytes de memoria, para el caso
de carrera pscal solo reservara 30 bytes, es obvio cual de los dos casos es mas
eficiente.
TEMA 5: OPERADORES ARITMETICOS BORLAND DELPHI

Un operador es un smbolo especial que indica al compilador que debe


efectuar una operacin matemtica o lgica.
DELPHI reconoce los siguientes operadores aritmticos:
Operador
+
*
/
Div
Mod

Operacin
SUMA
RESTA
MULTIPLICACION
DIVISION
DIVISION ENTERA
MODULO O RESIDUO

Como nota importante a recordar siempre;


Si se usa el operador DIV en problemas de divisin entre enteros, pascal
trunca la parte residual, es decir;
// rea de declaracin de variables
real a;
// rea de operaciones
a := 10 div 4;
// rea de despliegue de resultados
desplegar a; -> En pantalla sale ( 2.000000 )
El problema no es el tipo real, sino que por definicin de la divisin entre
enteros pascal trunca la parte residual.
El operador (%) devuelve el residuo entero de una divisin entre enteros,
ejemplo;
// rea de declaracin

integer alfa;
// rea de operaciones
alfa := 23 mod 4;
// rea de despliegue
desplegar alfa; -> El resultado en pantalla es 3
Otro ejemplo;
alfa := 108 mod 10;
desplegar alfa; -> El resultado en pantalla es 8
Para resolver los problemas de potencias y races, se usan ciertas
instrucciones especiales que proporciona el lenguaje, llamadas funciones
matemticas, en pascal existe todo un conjunto de instrucciones o funciones
matemticas.
Y ademas deberan recordar sus leyes de logaritmos y de potencias:
Con el uso de los logaritmos, los procesos de multiplicacin, divisin,
elevacin a potencias y extraccin de races entre nmeros reales pueden
simplificarse de la manera siguiente.

1.- El logaritmo de un producto es igual a la suma de los logaritmos de los


factores.
Log ( a . m) = log a + log m
2.- El logaritmo de un cociente es igual a la diferencia de los logaritmos de los
trminos
Log(a:m) = log a - log m

3.-El logaritmo de una potencia es igual al exponente por el logaritmo de la


base.
Log am = m * Log a
4.- El logaritmo de una raiz es igual al logaritmo del radicando dividido por el
ndice de la raz
log

= m/n log a

Las dos funciones que se usan para resolver este problema son:
Ln(x) Nos regresa el logaritmo natural del numero x.
EXP(x) nos regresa eX es decir el antilogaritmo de un numero.
Otra vez si se ocupa resolver la multiplicacion de 5 * 20, la regla de
logaritmos nos dice que el resultado es = log(5) + log(20) aunque en pascal se
usa Ln(5) + Ln(20) pro en estos casos lo que se tiene de resultado no es 100
sino el logaritmo de 100, porque estamos sumando los logaritmos, es decir al
resultado de la suma de logaritmos le tenemos que sacar su antilogaritmo, para
conocer el resultado final(100) de la mulptiplicacion.
Ejemplo en pascal
Real alfa
Alfa := Exp( Ln(5) + Ln(20) );
Como se observa primero se calculan los logaritmos de 5 y de veinte con (Ln),
luego los sumamos y a este resultado le extraemos el antilogaritmo con (EXP)
que seria el resultado final.
Otro ejemplo si se tiene la potencia 53 entonces aplicando la regla de
logaritmos el programa quedaria:
Real alfa

Alfa = EXP(5 * Ln(3));


Y si se tiene que obtener la raiz de 9 9 en borland delphi sera:
Alfa = EXP( 1/2 * Ln(9));
TEMA 6: BORLAND DELPHI JERARQUIA DE OPERACIONES

En BORLAND DELPHI el problema de no tomar en cuenta la jerarqua de los


operadores al plantear y resolver una operacin casi siempre conduce a
resultados muchas veces equivocados como estos:
Ejemplos:

2+ 3* 4 := 20(incorrecto)
:= 14 (correcto)

b) si calif1=60 y calif2=80 y si entonces en programa se usa


promedio := calif1 + calif2/2
la pc dara como resultado promedio = 100

Recordar siempre, que antes de plantear una formula en un programa se


deber evaluar contra el siguiente:
Orden de operaciones:

1.- Parntesis
2.- Potencias y races
3.- Multiplicaciones y divisiones

4.- Sumas y restas


5.- Dos o ms de la misma jerarqua u orden, entonces resolver de izquierda a
derecha

Nota: Si se quiere alterar el orden normal de operaciones, entonces usar


parntesis.
Nota: Tampoco es bueno usar parntesis de mas en una operacin, esto solo
indica que no se evalo bien la formula, como en el siguiente ejemplo;

aqu los parntesis estn de mas, porque por orden de operaciones,


multiplicacin y divisin tienen la misma jerarqua y entonces se resuelven de
izquierda a derecha, en otras palabras ni que falten parntesis ni que sobren
parntesis.
7.- DELPHI ENTRADAS / SALIDAS EN PROGRAMACION VISUAL

Entradas o capturas de datos y salidas o despliegues de informacin o


resultados son de los procesos ms comunes en cualquier tipo de problema de
informacin, estos procesos o instrucciones varan de acuerdo a los lenguajes
y ambientes de programacin a usar.
El lenguaje y ambiente de programacin a utilizar, es de tipo visual, y muchos
de los problemas asociados a entradas y salidas se encuentran ya resueltos por
el propio compilador.
El ambiente de construccin de programas a usar, es el siguiente:
SOLO CARGARLO EN PANTALLA EJECUTANDO EL BORLAND
DELPHI, QUE SE ENCUENTRA EN LA BARRA DE START DE
WINDOWS.

Sus elementos bsicos son:


1.- La barra de mens (file, edit , etc.);
2.- La barra de herramientas(icono de grabar, run, forma, etc.)
3.- La barra de componentes
4.- El Inspector de Objetos
5.- La forma activa o principal
8.- TFORM, ACTIVA O PRINCIPAL

Es sobre esta forma donde se construye el programa y esta forma se convierte


en ventana al momento de ejecutarse el programa.
Es decir ser la primera ventana que el usuario ve al momento de ejecutarse el
programa, su nombre es Form1.

Esta forma o ventana es un objeto de Borland Delphi y como todos los


objetos de Delphi y del universo, la forma o ventana tiene asociados
propiedades y eventos.
Propiedades son todas las caractersticas particulares que diferencian un objeto
de otro objeto, las propiedades o caractersticas mas comunes son forma,
tamao, color, etc., para objetos en DELPHI estas propiedades se modifican o
individualizan usando el Inspector de Objetos, que es la parte del programa
que las contiene.

Tambin se pueden modificar las propiedades dentro de un programa, usando


instrucciones apropiadas, mismas que llevan el siguiente formato:

nomobjetopropiedad := nvovalor;
ej.; Form2Color := clRed;

Eventos, son todos aquellos sucesos de carcter externo que afectan o llaman
la atencin del objeto, para estos caso la forma o ventana:
1. Debe tener capacidad de detectar el evento

2. Aun mas importante debe tener capacidad de reaccionar y emitir una


respuesta, mensaje o conducta apropiada a el evento detectado.
Evento es por ejemplo que otro objeto llamado humano, pulse el objeto tecla
ESC, o haga click derecho con el objeto ratn en alguna parte de la ventana ,
etc. , es en estos casos, cuando la ventana detecta un evento de estos, la propia
forma deber responder de manera apropiada.
Esta respuesta no es automtica, sino son la serie de instrucciones del lenguaje
(o programa) que los ingenieros de software disean(o programan), en otras
palabras son los eventos quienes contendrn los programas.
Es tambien el Inspector de Objetos, quien contiene todos los posibles eventos
asociados a la forma.

Para los primeros programas en Borland Delphi solo se usaran propiedades


sencillas como color, font, etc. de Form1, y no se usan, de momento los
eventos que puede detectar Form1.
9.- BORLAND DELPHI PROGRAMAS, FORMAS Y COMPONENTES

Un programa o problema de informacin en Borland Delphi no es mas que


una o mas formas o ventanas, donde cada una de ellas contiene elementos u

objetos especiales llamados componentes, dichos componentes DELPHI los


proporciona a travs de la barra de componentes.

Es decir toda la interfase que se quiera manejar con el usuario del programa,
no consiste mas que de una coleccin de componentes agrupados en una
forma o ventana.
La coleccin de componentes que pone a nuestra disposicin DELPHI estn
agrupados en diversos folder o pestaas o paginas en la barra de componentes,
las principales categorias para este curso contienen los siguientes
componentes:
Standard.- Frames MainMenu PopupMenu Label Edit Memo Button
CheckBox RadioButton ListBox ComboBox ScrollBar GroupBox
RadioGroup Panel ActionList

Additional.- BitBtn SpeedButton MaskEdit StringGrid DrawGrid Image


Shape Bevel ScrollBox CheckListBox Splitter StaticText ControlBar
AplicationsEvents Chart

Data Access.- DataSource Table Query StoredProc DataBase Session


BatchMove UpdateSQL NestedTable

Data Controls.- DBGrid DBNavigator DBText DBEdit DBMemo DBImage


DBListBox DBComboBox DBCheckBox DBRadioGroup DBLookupListBox
DBLookupComboBox DBRichEdit DBControlGrid DBChart

Win31.- DBLookupList, DBLookupCombo, TabSet, Outline, Header,


TabbedNotebook, NoteBook.

Dialogs.- OpenDialog, SaveDialog, FontDialog, ColorDialog, PrintDialog,


PrinterSetupDialog, FindDialog, ReplaceDialog.

System.- Timer, PaintBox, FileListBox, DirectoryListBox, DriveComboBox,


FilterComboBox, MediaPlayer, OleContainer, Ddeclientconv, DdclientItem,
Ddeserverconv, DdeserverItem.

QReport.- QuickReport, QRBand, QRGroup, QRDetailLink, QRLabel,


QRMemo, QRDBText, QRDBCalc, QRSysData, QRShape, QRPreview.

Para incorporar un componente a una forma solo basta seleccionarlo con un


click derecho en su icono y luego colocar el cursor dentro de la forma en el
lugar donde se quiere que aparezca y volver a hacer un click derecho.
Tambin los componentes son objetos de borland delphi y como tales tambin
tienen asociados propiedades y eventos, tales como los tiene la forma
principal, solo que existen pequeas variaciones en cuanto a sus propiedades y
eventos propios con respecto a Form1.

Recordar adems, que es el Inspector de Objetos en primera instancia quien


permite asociar o modificar propiedades especificas tanto a una forma como a
un componente.
Ya en segunda instancia las propiedades de formas y componentes se pueden
modificar tambin directamente dentro de un programa, usando instrucciones
como las ya descritas en prrafos muy anteriores.
Analizaremos ahora los dos primeros componentes, que tambin se usaran
para construir o disear nuestro primer programa en Visual de BORLAND
DELPHI

10.- COMPONENTE LABEL (Standard)

Este componente se utiliza para desplegar textos o mensajes estticos dentro


de las formas, textos tales como encabezados, solicitud al usuario del
programa para que proporcione algn dato o informacin(edad, dame sueldo,
etc.), en cierta forma hace las funciones de printf, cout, writeln, print, display,
etc., pero solo cuando se consideran en su parte de mensajes.
Tambin es un objeto en Borland Delphi y por tanto tiene asociados sus
propias propiedades y eventos, al mismo tiempo como se est usando dentro
del objeto form1, muchas propiedades que se definan para el objeto Form1, el
objeto Label1 las va a heredar.
Si bien es cierto que el objeto se llama Label, pero cuando se ponen dentro de
una forma Borland Delphi los va numerando automticamente, si se ponen
tres Labels en Form1, ellos se llaman o simbolizan o se procesan o programan
con Label1, Label2, Label3.
Es la propiedad Caption, la que lleva el contenido del mensaje que se quiere
desplegar en la pantalla, solo click derecho a un lado de la propiedad Caption
en el Inspector de Objetos, teniendo seleccionada la caja Label1 en la forma y
escribir el texto indicado.

11.- COMPONENTE BUTTON(Standard)

Es el componente principal de la forma, contiene el cdigo principal del


programa y su activacin por el usuario provoca que se realicen los principales
procesos del problema planteado (aqu es donde se capturan datos, se realizan
operaciones, etc.).
De este componente se maneja su propiedad Caption para etiquetarlo con la
palabra OK o ACEPTAR o EXE y su evento OnClick para activarlo, es
en dicho evento donde se construye el cdigo del programa.
Recordar que aunque no es un componente necesario en los programas, ya que
el cdigo se puede asociar o pegar a cualquier evento de cualquier forma, o
componente del programa, Microsoft ya acostumbro a todos los usuarios al
botn OK, de acuerdo, OK.
Este botn tambin puede activar su evento OnClick, cuando el usuario
presione la tecla <ENTER>, solo poner la propiedad Default en true, en este
caso el botn de ordenes, se le conoce como botn de default.
Igualmente puede activar su evento OnClick cuando el usuario, presione la
tecla <ESC>, solo poner la propiedad Cancel en true, a este caso se le conoce
como CANCEL BUTTON.
PRACTICA
Construir un primer programa que consiste en un forma que contenga los
cinco datos mas importantes de un automvil, y uno de esos datos solo deber
aparecer cuando el usuario haga click en el botn de ejecucin o de orden o de
OK.
Para este programa se ocupa, una forma, dos componentes labels para
encabezados apropiados al problema, 10 componentes labels para textos y
datos, un componente Button.
Para el ultimo componente Label su propiedad Caption se dejara en blanco o
vaca para que sea el usuario del programa quien lo cargue al apretar el botn
de ordenes o botn de OK.

Recordar que Borland Delphi va numerando automticamente todos los


componentes en el programa en forma consecutiva, es decir al finalizar el
diseo
del
programa
se
tendrn,
los
componentes
form1,
label1,label2,label3,..button1.
El procedimiento completo para crear y ejecutar el programa es:
1.- Cargar Delphi
2.- Al cargarlo ya estar en la pantalla la primera forma (Form1).
3.- Antes de poner el primer componente usar la opcin, File Save Project As,
aparece la siguiente ventana:

Donde se deber seleccionar primero, el icono de nuevo folder( arriba a la


derecha y tiene un folder con rayitos), esto es, para crear un nuevo folder o
directorio donde quedara guardado o almacenado el programa, en cuanto se
crea el nuevo folder, sobrescribir la palabra new folder que aparece, con el
nombre que tendr el directorio donde quedara almacenado el programa,
escribir por ejemplo programa uno ( Windows95 ya permite que los
nombres de directorios y sus archivos ya sean mas largos y no necesariamente
del tipo antiguo de 8.3), al terminar de sobrescribir, la palabra programa uno
apretar tecla <ENTER> y esperar un momento a que se cree el directorio.
Ya creado y renombrado el directorio, observar que en la parte inferior de la
ventana el programa ya tiene el nombre de Unit1.pas, a un lado esta una caja

o botn de OPEN, mismo que se deber apretar y despus usar en la misma


parte un botn llamado SAVE para almacenar Unit1.dpr.
4.- Ahora ya que se tiene Form1 en pantalla, recordar que se pueden modificar
sus propiedades como color, font, etc. usando el Inspector de Objetos que esta
a un lado de la forma ( se sugiere practicar un poco esto), los cambios que se
hacen en el Inspector de Objetos se van reflejando automticamente en la
forma en pantalla y tambin en la ventana que el usuario vera al ejecutarse el
programa.
5.- Ahora se selecciona con un click el componente llamado Label en la barra
de componentes y luego poner el cursor dentro de la forma en el lugar donde
se quiera que aparezca el componente, y volver a hacer click con el ratn para
que ya aparezca dicho componente en la forma.
Observar que el componente en la forma, que est seleccionado ( esto se
puede hacer, usando un click dentro de el componente) se puede arrastrar para
cambiarlo de lugar o posicin o hacerlo mas pequeo o mas grande.
Como nota tambin a recordar siempre, un componente o la propia forma, est
seleccionado, si el Inspector de Objetos lo esta referenciando, es decir es el
Inspector de Objetos quien contiene el nombre del componente en la parte de
arriba del propio Inspector de Objetos.
Para cargar o para que despliegue un texto el componente Label1, solo escribir
dicho texto en la cajita que esta a un lado de la propiedad Captin en el
Inspector de Objetos, por ejemplo para el problema, escribir la palabra
AUTOS ECONOMICOS, y recordar que tambin est componente tambin
tiene propiedad font que se puede usar para alterar el tipo de letra que
despliega el componente.
6.-Repetir el procedimiento anterior hasta tener los doce componentes Label
bien acomodados y organizados en la forma y con sus textos correspondientes,
solo recordar dejar el componente Label12 con su propiedad Caption en
blanco(usando tecla backspace).
7.- Seleccionar y acomodar ahora un componente Button en la forma y
colocarlo en la esquina inferior derecha, en su propiedad Caption = escribir la
palabra OK.

Recordar que este componente, es quien contiene el cdigo del programa y


mas especficamente es su evento OnClick quien lo contiene y quien adems
lo activa o lo ejecuta.
Para aadirle el cdigo(en este ejemplo que cargue el Caption de Label12 al
tiempo de ejecucin del programa y por decisin del propio usuario) existen
dos maneras:
En el Inspector de Objetos, hacer click en la pestaa o folder llamado event y
ahora en lugar de propiedades el Inspector de Objetos, muestra todos los
eventos que el componente puede detectar(observar y anotarlos), ahora click
en la cajita que esta a un lado del evento llamado OnClick y con este paso
aparece el siguiente minieditor de programas de Borland Delphi:

Observar que ya trae listo el evento Button1Onclick() para programarse y es


dentro del BEGIN-END donde se construye el programa.
Solo escribir dentro de las llaves la instruccin Label8.Caption := FORD;
Escribirla dentro del BEGIN END como lo muestra el ejemplo
No olvidar terminar con ( ; )

Respetar y aprender siempre la ortografa de componentes, propiedades


y valores de propiedades
Recordar que cualquier propiedad de cualquier componente se puede
programar con el formato ya descrito;
NomComponente.NomPropiedad := NvoValor;
Observar que Caption se carga como si fuese una variable de tipo
string, dentro de un programa, es decir entre apostrofes ( ' ).
Observar que atrs del editor esta Form1, si se selecciona con un click,
este procedimiento lo regresa a la forma para seguir arreglando o
colocando nuevos elementos.
Otra manera de estarse intercambiando entre forma y editor ( ahora lo
llamaremos Unit1.cpp), es decir entre form1 y Unit1, es usar el icono
Toggle Form/Unit
que se encuentra en la barra de componentes
arriba y a la izquierda.
La otra manera y mas sencilla de cargar el editor, es haciendo un dobleclick
dentro del componente.
8.- Ahora ya esta lista la forma o programa para ejecutarse, tambin existen
dos maneras:
1. Usar la opcin Run que esta arriba en la barra de mens.
2. Usar icono run

en barra de herramientas.

Nota.- Tambin se puede usar tambin la primera letra dentro del botn de
comando o de ordenes (OK) para activar las instrucciones o acciones del
botn, es decir se puede usar click en botn o solo pulsar la letra O, para que
se ejecute este ultimo procedimiento , solo poner un smbolo & en el caption
del botn antes de la letra O.
El programa ya en ejecucin debe ser similar(pero mejor diseado) al
siguiente ejemplo:

Ya que se practic, la mecnica de creacin de programas, resolveremos el


problema de interactividad con el usuario.
Es decir en estos casos es el usuario quien generalmente proporciona los datos
para su procesamiento en el problema el trabajo del ingeniero de software, es
procesarlos y darles sentido, coherencia y sobre todo eficiencia.
Para esto se ocupan componentes llamados de input, entrada o captura,
que permitan al usuario cargar o proporcionar un dato en ellos, dichos
componentes son:
12.- COMPONENTE EDIT (Standard)

Este componente es el mas importante componente visual de Borland Delphi,


su funcin principal es manejar todos los procesos de entrada y salida
(input/output) al programa.
En resumen de este componente, se necesita entender lo siguiente:

Este componente Edit, es el equivalente a las variables en cualquier


lenguaje de programacin, mas la instruccin de captura o despliegue
correspondiente, es decir;
a) En BASIC, Input Edad Edit1
b) En PASCAL, Read(Ciudad) Edit2
c) En C, printf(%d, sueldo) Edit3
d) En C++, cin.get(nombre,30) Edit4
e) En Cobol Display metros Edit5
Ya aclarada su funcin, es necesario entender primero, que este componente
permite capturar datos y tambin como en el caso del componente Label
desplegar datos, textos, mensajes o resultados de operaciones de ser necesario,
usando la propiedad Text del componente Edit.
Esta propiedad Text, as como la propiedad Caption en Label, permiten
igualarse a muchos procesos bsicos, es decir es fcil igualar Text o
Caption a un dato, una variable, otro Text u Caption, o una expresin
algebraica normal, como en los siguientes ejemplos;

Edit2.Text := 5;
Label3.Caption := 'PATO';
Edit4.Text := 3 * 6.2 ;

En principio su valor de default es la palabra Edit1 y es en su propiedad Text


donde se modifica, generalmente al principio de un programa se deja en
blanco, y al ejecutarse el programa, el usuario lo llena con los datos
solicitados o el programa lo llena con el resultado de las operaciones.
Es importante entender que la propiedad TEXT de este control o componente
se cargara o se leera como una STRING, es decir para procesarlo se usa
codigo similar a :

Edit10.Text := '3,1416';
String temporal := Edit10.Text;
Observar que aunque se cargue con un dato aparentemente de tipo REAL la
propiedad TEXT solo puede contener STRINGS.
Se usaran mucho a lo largo de todo el curso las siguientes funciones de
BROLAND DELPHI para estar conviertiendo de STRINNS a VALORES
NUMERICOS y tambien de VALORES NUMERICOS a STRINGS.
a) Val(Edit1.Text,temporal,error) ESTA FUNCION TOMA LA STRING
QUE ESTA EN TEXT Y LA MANDA O CARGA LA VARIABLE
NUMERICA (INTEGER O REAL ) TEMPORAL, APARTE VAL CARGA
UNA VARIABLE INTEGER ERROR CON UN CODIGO DE ERROR SI SE
DIO ALGUN ERROR EN EL PROCESO DE CONVERSION, ES DECIR
VAL SE USA PARA CONVERTIR TEXT A VARIABLES NUMERICAS.
B) STR( 3.1416,temporal ) SE USA PARA CARGAR UNA VARIABLE
STRING TEMPORAL CON UN DATO O VALOR NUMERICO
DETERMINADO, RECORDAR QUE SE USA PARA CONVERTIR DATOS
NUMERICOS A STRINGS, NO TEXT
C) Edit1.Text:=FloatToStr(123.45) SE USA PARA CARGAR LA
PROPIEDAD TEXT DE UN EDIT CON UN DATO O VARIABLE ENTERA
O REAL.
D) FloatToDecimal (PROCEDIMIENTO) CONVIERTE U FLOTANTE A
DECIMAL
E) FloatToStr (FUNCION) EJEMPLO CASO C) CONVIERTE
FLOTANTE A STRING
F) FloatToStrF (FUNCION) SIMILAR A C) PERO SE PUEDE
AGREGAR UN FORMATO, PARTE ENTERA Y DECIMALES (VER
EJEMPLOS EN PROGRAMAS )
G) FloatToText(FUNCION) CONVIERTE FLOTANTES A TEXT,
INCLUYENDO FORMATO, PARTE ENTERA Y DECIMALES.

H) FloatToTextFmt(FUNCION) CONVIERTE FLOTANTE A TEXT


USANDO UN FORMATO DETERMINADO.
I) FormatFloat(FUNCION) FORMATEA UN FLOTANTE:
EJEMPLO:
EDIT1.TEXT := '23.456789';
Format('%0:2f',[Edit1.Text]) EL DESPLIEGUE SERA 23.45
ALGUNAS CONSTANTES DE FORMATEO SON:
%5:5d > despliega cinco digitos enteros y cinco decimales, si el dato tiene
menos partes enteras se rellenara con ceros 0000.
%u > similar a %d excepto que no muestra el signo (+/-) del dato.
%e > despliega en notacion cientifica o exponencial.
%f > fijo dos decimales por default.
%g > el compilador decide si lo manda a decimal o exponencial.
%n > similar a %f solo que los miles se separan con comas.
%m > formato monetario.
%x > lo convierte a hexadecimal.
J) StrToCurr(FUNCION) > CONVIERTE UNA STRING A FORMATO
MONETARIO.
H) StrToFloat (FUNCION) > CONVIERTE STRING A FLOTANTE.
I) TextToFloat(FUNCION) CONVIERTE TEXT A FLOTANTE.
ing-point value from a null-terminated string.
Cuando un usuario lo carga con un dato recordar que el dato almacenado
queda de tipo texto, no importa lo que haya escrito el usuario.

Para resolver el problema de usar datos numricos dentro del Text de un


componente Edit, en operaciones matemticas, solo USAR LAS
FUNCIONES APROPIADAS, como se muestra en el siguiente ejemplo.

temp := StrToFloat(Edit1.Text)* 5;
Edit1.Text := FloatToStrF(temp,ffGeneral,5,2);
ffExponent, ffFixed, ffGeneral, ffNumber

NOTA:

ffCurrency,

Recordar que el usuario, usara un componente Edit para almacenar los datos
de entrada del problema, muchas veces estos datos son de tipo numrico, por
ejemplo en un componente Edit se almacena la cantidad de pesos, el precio de
un articulo, la edad de una persona, etc.
Solo recordar siempre usar el componente Edit, directamente como una
variable cualquiera(con su mtodo o funcin correspondiente ) y
construir la operacin o formula con los propios componente o cajas edit.
Es decir, por ejemplo, si se pide resolver el problema de multiplicar dos
nmeros cualesquiera, se ocuparan tres ` cajas Edit,(factor1, factor2,
producto), es en estos casos donde se usan tres componentes Edit como si
fuesen tres variables simples directamente.
Ya en programa se ocupan 3 componentes Label para ttulos (Multiplicando,
Multiplicador, Multiplicacin), tres componentes Edit para los datos (dos
proporcionados por el usuario y uno calculado por el programa) y un
componente Button(OK) para realizar la operacin.
Codigo;
procedure TForm1.Button1Click(Sender: TObject);
var
temp:Real;
begin

temp := StrToFloat(Edit1.Text)* StrToFloat(Edit2.Text);


Edit3.Text:=Format('%0.2f',[temp]);
end;
corrida:

notas:
Como se observa este componente Edit permite capturar datos por parte del
usuario del programa.
Es mas sencillo considerar, estos componentes como variables normales y
usarlos directamente.
Solo en problemas algebraicos usar propiedad Text con las funciones
apropiadas.
Respetar la ortografa en el ejemplo, sobre todo en las instrucciones (las que
terminan con ;)
Si son muchas operaciones en un problema, el procedimiento es similar, solo
resolverlo por partes ya que una formula que contenga cuatro o cinco Edit, se
convierte en un rengln de cdigo gigante.

sin embargo es mas sencillo usar el mtodo que se usa en el programa dado de
ejemplo para la multiplicacin, es decir considerar los componentes Edit como
variables normales, y usar:
Edit3.Text:=Format('%0.2f',[temp]);
Edit8Text.ToDouble();
Para el caso de resultados decimales , la salida incluye todo el conjunto de
decimales asociados a un tipo double(muchos ceros), para resolver este
problema se pueden usar directamente algunos mtodos asociados a la clase
AnsiString , por ejemplo uno de esos mtodos es;
Format('string de formato', var real);
La string de formato contiene una serie de simbolos literales que se utilizan
para darle el formato de salida deseado, esto simbolos o constantes literales
son;
Const. Lit. Significado

0(cero) Rellena con 0(ceros) todas las posiciones indicadas, ejemplo


0000.00 para el numer 23.4 la string de salida seria 0023.40
# Constante muy usada para formato de valores numricos, esta constante solo
despliega el valor numrico normal.
. Se utiliza para separar la parte entera de la parte decimal.
,(coma) Se utiliza para separar el valor numrico en unidades de millar.
E+, E-, e+, e- Se utilizan para convertir a notacin cientfica exponencial el
valor de salida.

En resumen, este componente Edit, es el componente mas importante y


elemental en todo problema que involucre el procesamiento de datos en
ambientes visuales, se debe acostumbrar a considerarse como un elemento

importante en cualquier problema visual, y acostumbrarse a procesarlo como


si fuese una variable normal cualesquiera.
EL RESUMEN DE CONVERSION DE DATOS A COMPONENENTE Y
QUE SE USA A LO LARGO DE ESTE CURSO EN GENERAL
DESCANSA EN LAS SIGUIENTES 4 FUNCIONES.
1.- IntToStr( dato o variable integer);
2.- StrToInt( variable string o propiedad text de un componente visual);
3.- FloatToStr( dato o variable real);
4.- StrToFloat(variable string o propiedad text de un componente visual);
ESTAS CUATRO FUNCIONES REPITO SERAN LAS MAS UTILIZADAS
A LO LARGO DEL CURSO, PERO DE TODOS MODOS ESTUDIAR Y
RECORDAR TODAS LAS ANTERIORES)
PROGRAMA EJEMPLO
Se construye y resuelve el segundo programa del modelo de solucin del rea
del tringulo.
Para crear y disear la forma y sus componentes se ocupa, una forma, seis
labels, tres edits y un Button, quedando as;
a)Pantalla de diseo

b)Programa
El cdigo o miniprograma ( es miniprograma porque no se tiene que
programar mucho de la pantalla), solo disearla, y dentro del evento Click del
componente Button1, queda as;
procedure TForm1.Button1Click(Sender: TObject);
var
temp:Real;
begin
temp := StrToFloat(Edit1.Text)* StrToFloat(Edit2.Text)/ 2;
Edit3.Text:=Format('%0.2f',[temp]);
end;
c) Pantalla de ejecucin o de salida

Recordar que cuando se capturen los datos de base y altura, no dejar espacios
en blanco antes del primer numero o se darn problemas y errores de
conversin a valores numricos.
Para resolver mejor este problema de formatos mas adecuados para captura de
datos, se usaran nuevos componentes que se analizan mas adelante.

TAREAS PROGRAMACION BORLAND DELPHI


1.- CONVERTIR A PROGRAMAS 7 DE LOS PROBLEMAS VISTOS EN
EL MODELO DE SOLUCION.
13.- COMPONENTE MaskEdit (Adicional)

Este componente es muy similar en su uso al componente Edit, excepto que


proporciona una mascara especializada para el formato de datos, es decir se
puede usar para que el usuario proporcione datos con formatos bien definidos,
como son valores numricos que incluyan puntos y comas por ejemplo
3,345.87, o que incluyan smbolos como el de $, o para el caso de fechas que
lleven su propio separador como por ejemplo 02/28/97.
Tambin se puede usar, para asegurarse que el dato proporcionado por el
usuario, solo incluya nmeros, o solo contenga letras, etc.
Para darle formato al dato que el usuario debe proporcionar solo hacer
dobleclick a un lado de la propiedad EditMask en el Inspector de Objetos y
esto nos da el siguiente minieditor de datos:

Observar en la ventana derecha, algunos ejemplos de mascaras de


edicin.

Es en la ventanilla arriba a la izquierda donde se colocan los caracteres


especiales de edicin ( en el ejemplo se estn usando, $, #, puntos y
comas).
Es en la ventanilla abajo a la izquierda donde se pueden proporcionar
algunos datos de prueba, para probar el formato diseado.
Recordar que este formato es para capturas, no para despliegues, puesto
que para este caso (despliegue) se usa FormatFloat().
No olvide usar el botn OK, cuando se termine de construir la mascara
de edicin.
Los principales caracteres especiales de edicin son:
carcter significado

! Caracteres opcionales se despliegan en blanco


Caracteres que siguen deben ser maysculas
< Caracteres que siguen deben ser minsculas
L Requiere una letra en esta posicin
l Permite una letra es esta posicin pero no la requiere
A Requiere un alfanumrico en esta posicin
a Permite un alfanumrico pero no lo requiere
0 Requiere un numero en esta posicin
9 Permite un numero pero no lo requiere
# Permite un numero y tambin signos mas y menos
: Separa horas:minutos:segundos
/ Separa meses/das/aos

; Se utiliza para separar los tres campos o partes de una mascara


_ inserta espacios en blanco en el texto

Cualquier otro carcter que no aparezca en la tabla anterior, puede aparecer en


una mascara, pero solo se tomara en cuenta como una literal cualesquiera, es
decir son insertados automticamente y el cursor los brinca.
El segundo campo o parte de una mascara es un carcter simple que indica que
carcter literal debe ser incluido como parte del texto del componente
MaskEdit, por ejemplo (000)_000-0000;0;*,
Un 0 en el segundo campo indica que solo deben capturarse los diez dgitos
marcados con O, en lugar de los 14 que tiene la mascara.
El tercer campo de la mascara, es el carcter que se quiera que aparezca en
lugar de espacios en blancos.
Nota: para procesarlo usar solo Text DE MANERA NORMAL COMO SE
RELIZO EN EL TEMA ANTERIOR DE EDIT.
TAREAS PROGRAMACION BORLAND DELPHI
1.- OTROS 7 DE LOS PROBLEMAS QUE VIENEN EL EL TEMA DE
MODELO DE SOLUCION.
14.- COMPONENTE ComboBox (Standard) BORLAND DELPHI

Existen muchas ocasiones en donde el usuario del programa tiene que


proporcionar datos que provienen de un conjunto finito y muy pequeo de
posibles respuestas, esto significa que cada vez que se ejecute el programa, el
usuario estar proporcionando las mismas respuestas.
Ejemplo de esta clase de datos, son por ejemplos Municipio en BC, las
posibles respuestas solo son (Tecate, Tijuana, Mexicali, Ensenada, Rosarito),
otro ejemplo es Sexo (Hombre, Mujer), etc.

Para situaciones como esta, existen componentes que permiten programar por
adelantado las posibles respuestas, y el usuario solo debe seleccionar la
respuesta apropiada , en lugar de tener que escribirla.
Este componente ComboBox nos permite definir en primera instancia un
conjunto de datos o valores respuestas asociados a una caja de edicin
cualesquiera, as ahora el usuario tendr la oportunidad de seleccionar un dato
del conjunto de datos o respuestas ya predefinido.
Este componente ComboBox tiene dos partes, una parte de encabezado, para
poner el nombre del grupo de respuestas( por ejemplo municipios, sexo, etc.),
que se carga usando la propiedad Text del componente.
La segunda parte es la lista de opciones o respuestas que se debe cargar al
tiempo de diseo de la ventana, en el momento de poner el componente
ComboBox1, solo hacer dobleclick a un lado de la propiedad Items en el
Inspector de objetos y sale el siguiente editor de strings:

Al momento de ejecucin del programa, toda la lista de respuestas, estarn a la


vista del usuario, para que este ultimo la seleccione.
Recordar que el usuario al momento de ejecucin del programa, solo vera el
encabezado, para seleccionar su respuesta deber apretar la flechita que esta a
un lado del encabezado.

Para procesar este componente:


Usar su popiedad Text de manera normal, es decir si la respuesta se ocupa en
string,
Solo usar ComboBox1.Text, o si la respuesta se quiere numerica solo
convertir Text a flotante de manera normal ( ver el ejemplo del tema EDIT ).
TAREAS PROGRAMACION BORLAND DELPHI
1.- REEDITAR LOS PROBLEMAS YA RESUELTOS, AGREGANDO ESTE
COMPONENTE EN LOS CASOS DE CAPTURAS QUE LO PUEDEN
ADMITIR ( CAPTURAS DONDE YA SE TIENEN LAS ENTRADAS
SELECCIONADAS O CONOCIDAS DE ANTEMANO).
15.- BORLAND DELPHI COMPONENTES DE AGRUPAMIENTO

Como ya se empieza a notar en los programas construidos, la cantidad de


datos e informacin empiezan a amontonarse en la ventana simple que se ha
venido construyendo.
Para resolver este problema, se tienen dos mtodos, el primero de ellos
consiste de una serie de componentes que permiten agrupar datos o
informacin(resultados) de una manera mas lgica y esttica.
El segundo mtodo consiste de construir y trabajar con dos o mas ventanas a
la vez.
Se empieza por el primero mtodo , es decir componentes de
agrupamiento.
16.- BORLAND DELPHI COMPONENTE PANEL ( Standard y atrs flecha
negra)

Es el componente mas sencillo y comn de agrupamiento, se utiliza para


poner un panel o un cuadro o marco dentro de una ventana.

El componente Panel1 puede contener una toda una serie lgica de otros
componentes.
Solo se deber recordar colocar primero todos los paneles en la forma y
encima de ellos los componentes que contendrn.
Este componente tambin tiene una serie de propiedades que le dan una mejor
presentacin usando las propiedades BevelInner, BevelOuter, BevelWidth, y
BorderWidth.
Es decir se puede dividir una sola ventana en varias partes, por ejemplo en un
panel se ponen los componentes donde se capturan los datos de un problema
junto con el botn de OK, y en otro panel se construye la salida, por ejemplo
se crea un panel para capturar los datos de un empleado incluyendo sueldo
diario y das trabajados y un segundo panel contiene su cheque semanal de
pago ( problema sugerido tambin ).
Para modificar programas construidos sin paneles, el procedimiento para
agregarlos es:
1.- Mover todos los componentes abajo en la ventana.
2.- Colocar el panel en su posicion.
3.- Click en Componente a relocalizar.
4.- DobleClick, Copy
5.- DobleClick, Cut
6.- Click dentro del panel, donde se quiere el componente
7.- DobleClick, Paste
TAREAS PROGRAMACION BORLAND DELPHI
1.- REEDITAR E INCLUIR ESTE COMPONENTE PANEL, EN TODOS
LOS PROGRAMAS IMPARES HECHOS.
17.- BORLAND DELPHI COMPONENTE GROUPBOX (Standard)

Este componente es otra forma standard de agrupamiento de componentes de


programas en Windows, se usa para agrupar componentes relacionados dentro
de una forma.
Tambin se utiliza para separar reas lgicas dentro de una ventana de
Windows.
El texto que identifica el propsito general del grupo se escribe dentro de la
propiedad Caption en el Inspector de Objetos, teniendo seleccionado este
componente GroupBox.
Adems de sus propiedades, mtodos y eventos propios, como todos los
componentes de este tipo, tiene o hereda las propiedades, mtodos y eventos
de todos los controles generales de tipo Windows.
Es muy similar al componente panel, excepto que incluye una pestaa que
permite dejar mas claro, el proposito del grupo.
TAREAS PROGRAMACION BORLAND DELPHI
1.- REEDITAR E INCLUIR ESTE COMPONENTE GroupBox PARA
TODOS LOS PROBLEMAS PARES YA CONSTRUIDOS
18.- VENTANAS EN DELPHI

El siguiente problema comn, con el manejo de programas en borland delphi,


es el de poder crear, controlar y administrar mas de dos formas o ventanas a la
vez.
Lo primero que hay que entender para poder resolver este problema es que en
borland delphi , cada forma o ventana tiene asociado ciertos recursos, ademas
de los componentes que contiene, tambien una serie de recursos especiales, en
general, la forma, los recursos y los objetos hijos o componentes, se
encuentran relacionados todos ellos, en un archivo especial, llamado
Unit1.pas.

Es decir si se crea una segunda forma o ventana,, dicha form2, junto con sus
recursos, componentes, etc., se encontrara contenida en el archivo llamado
Unit2.pas y as sucesivamente.
Pero recordar y tambin tomar en cuenta, que los componentes de esta
segunda forma, tambin se simbolizaran y procesaran normalmente, es
decir ellos tambin sern (Edit1, Label5, etc.).
Para crear una segunda forma (form2), solo usar el icono de new Form
que se encuentra en la barra de herramientas, recordar adems que los otros
iconos de dicha barra sirven para estarse intercambiando entre formas y
Unit(cdigo fuente).
La segunda forma se construye normalmente, pero queda el problema de
donde queda el botn de ordenes, le respuesta es, se pone en la primera forma
o ventana principal del programa.
El proceso en este botn es similar a todos los programas anteriores, es decir
primero se capturan los datos ( pantalla o ventana de captura)luego se resuelve
las operaciones y luego traspasar los datos a los componentes de la segunda
forma o ventana.
Para poder realizar este procesos, solo usar ahora un nuevo formato de
trabajo con todos los componentes usados, para que ahora incluyan la
forma que lo contiene, es decir se usa ahora ;
NOMFORMA.NOMCOMPONENTE.NOMPROPIEDAD
Ejemplos;
a) Form5.Edit3.Text := Form1.Edit2.Text;
// se esta pasando el texto de edit2 de primera
// ventana al texto de edit3 de la quinta ventana
b) REAL alfa := StrToFloat(Form2.Edit4.Text);
// se esta poniendo en una variable real el contenido

// de la caja cuatro de la tercera ventana


como se observa, procesar los elementos de dos ventanas, es sencillo pero
adems existen ciertas condiciones que debern cuidarse para que estos
procesos funcionen, estas condiciones son:
Crear, armar y disear todas las ventanas primero, junto con sus componentes
y miniprogramas.
Cualquier ventana que mencione o contenga una referencia dentro de su
cdigo a otra ventana, deber incluir en su Unit respectiva, la unidad (Unit) de
la otra forma o ventana, esto es muy similar a lo que se hace en PASCAL para
el manejo de unidades.
Para incluir la unidad(Unit) de la otra forma o ventana, solo tener seleccionada
o al frente la ventana que llama, y usar la orden File, USE Unit, que se
encuentra en arriba en la barra de men, junto con el Run, Compile, etc., al dar
esta orden(File USE Unit) sale una lista con todas las unidades(Unit) que ya se
disearon, seleccionar la apropiada y ya se incluir automticamente en la
forma o ventana actual.
Si una ventana o forma referencia dos o mas formas diferentes, entonces usar
la orden File, USE Unit, tantas veces como sea necesario.
Este procedimiento permite construir programas con dos o mas ventanas, pero
el problema es que todas ellas estarn a la vista del usuario, para resolver este
problema, el procedimiento mas sencillo es poner en False la propiedad visible
de la forma o ventana que se quiera tener oculta y poner cualquiera de las
siguientes instrucciones en el cdigo del programa para que aparezcan o
desaparezcan a voluntad;
- Form2.Visible := true;
- Form2.Show(); // similar a la anterior(pero mas corta)
3) Form2.ShowModal(); // no permite accesar la primera ventana, hasta que se
cierra(X) la segunda ventana.

Programacin Avanzada permite crear y destruir ventanas y componentes al


tiempo de ejecucin del programa, pero estos conocimientos, no forman parte
del mbito de este libro.
Si se tienen formas de mas, o formas que ya no se quieren usar o de plano mal
construidas se pueden remover del proyecto usando PROJECT REMOVE
FROM PROJECT del menu normal y de la ventanilla que aparece seleccionar
la unidad que contiene la forma que se quiere eliminar.
TAREAS PROGRAMACION BORLAND DELPHI
1.- REEDITAR TRES CUALESQUIERA DE LOS PROBLEMA YA
RESUELTOS PARA QUE INCLUYAN CUANDO MENOS DOS
VENTANAS
2.- CONSTRUIR UN PROGRAMA DONDE LA PRIMERA VENTANA
CAPTURE LOS DATOS DE UN ALUMNO INCLUYENDO LAS
CALIFICACIONES DE 3 MATERIAS DIFERENTES Y UNA SEGUNDA
VENTANA DESPLIEGA UN REPORTE DE CALIFICACIONES DEL
ALUMNO INCLUYENDO PROMEDIO FINAL.
19.- COMPONENTE BITBUTTON (ADITTIONAL)

Este componente visual permite realizar en forma fcil toda una serie de tareas
comunes en Windows.
En principio es parecido al componente Button, pero en el ejemplo de arriba
observar que incluye un grfico o bitmap, que lo hace mas agradable y visible
al usuario.
Es en su propiedad KIND, en el inspector de objetos, donde se pueden definir
cualquiera de sus diez opciones, como lo muestra la siguiente pantalla.

Todos son BITBUTTON, nada mas con Kind Seleccionado.


Close, en una ventana, cuando el usuario lo selecciona, cierra la ventana.
UNIDAD 2 BORLAND DELPHI CONTROL DE PROGRAMA
1.- INTRODUCCION PROGRAMACION

Instrucciones de control de programa permiten alterar la secuencia normal de


ejecucin de un programa.
Estas instrucciones se dividen en tres grandes categoras:
Instrucciones Condicionales que en BORLAND DELPHI se implementan con
las instrucciones if y case.
Instrucciones de ciclos con, for, while. Repeat until.
Instruccin de salto incondicional goto.
Muchas de ellas con sus correspondientes componentes visuales.
2.- INSTRUCCIONES CONDICIONALES

Una de las mas poderosas caractersticas de cualquier computador es la


capacidad que tiene de tomar decisiones.
Es decir al comparar dos alternativas diferentes el computador puede tomar
una decisin, basndose en la evaluacin que hace de alguna condicin.
ejemplo de instrucciones condicionales ;

a)
si sueldo > 3000
desplegar rico
si no
desplegar pobre
fin-si
b)
si sexo = 'm'
imprime mujer
si no
imprime hombre
fin-si

De los ejemplos observar que los caminos por el computador dependern de la


evaluacin que el computador hace con y de la condicin.
Todo lenguaje de programacion debe tener instrucciones que permitan formar
condiciones e instrucciones que pueden evaluar esas condiciones.

Para propsito de construccin visual de programas, este tipo de instrucciones


condicionales se usaran en forma interna es decir son parte del cdigo del
programa que se empotra dentro de los eventos de componentes, no son
formas o componentes en si.
Pero recordar que lenguajes visuales de igual forma tienen componentes que
permiten del mismo modo al usuario tomar decisiones, incluso directamente
en pantalla, es decir existen los llamados componentes de seleccin y
decisin.
El formato general de una instruccin condicional es:

Como se observa son cuatro partes bien diferenciadas entre si;


La propia instruccin condicional en si
La condicin
El grupo cierto de instrucciones
El grupo falso de instrucciones
Cuando el computador evala una condicin,, el resultado de esa evaluacin
solo es evaluado de dos maneras o la condicin es CIERTA o la condicin es
FALSA.
Esto depender del valor que tenga asignado o que se haya capturado para la
variable que esta en la condicin, por ejemplo si se capturo 6000 en sueldo en
el ejemplo a), entonces el computador indicara que la condicin es CIERTA,
pero en otro caso, si a la variable sueldo primero se le asigno un valor de 250
entonces el computador indicara que la condicin, es FALSA.

Ya dependiendo del resultado de la evaluacin, el computador ejecuta las


instrucciones contenidas en la parte CIERTA o en la parte FALSA de la
condicin.
Empezamos borland delphi con el anlisis de la CONDICION.
3.- DELPHI CONDICIONES SIMPLES

En general todas las condiciones simples se forman con;


variables operadores relacinales constante o var.
sexo = m
sueldo > 300,000
Una condicin simple se define como el conjunto de variables y/o constantes
unidas por los llamados operadores relacinales.
Los operadores relacinales que reconoce el lenguaje borland delphi son:
Operador
=
>
<
>=

<>
IN

Significado
Igual que
Mayor que
Menor que
Mayor o igual que
Menor o igual que
No es igual o es diferente que
Pertenece A

NOTA IMPORTANTE, Para el caso de objetos de tipo string, los operadores


mencionados arriba funcionan, es decir es valido usar la siguiente condicin:
string carrera;
if (carrera='informatica') etc, etc, etc,
4.- DELPHI INSTRUCCION IF

Es la instruccin condicional mas usada en los diversos lenguajes de


programacin, su formato completo y de trabajo en borland delphi es :

cargar o asignar la variable de condicin;


if condicin Then
begin
grupo cierto de instrucciones;
end
else
begin
grupo falso de instrucciones;
end;

Primus.- Observar donde van y donde no van los puntos y comas;


Secundus.- Si un if no ocupa un grupo falso de instrucciones, entonces no se
pone el else, y la llave antes del else si terminara con punto y coma.
Programa Ejemplo:
Codigo:
procedure TForm1.Button1Click(Sender: TObject);
var
temp,error:integer;
begin

Val(Edit1.Text,temp,error);
if temp >= 1000 then
begin
Label2.Caption := 'RICO';
end
Else
begin
Label2.Caption := 'POBRE';
end
end;
Corrida:

TAREAS PROGRAMACION BORLAND DELPHI


1.- Capturar un numero cualesquiera e informar si es o no es mayor de 100
2.- Capturar un numero entero cualesquiera e informar si es o no es mltiplo
de 4 ( recordar el operador mod(%), analizado en el tema de operadores
aritmticos).

3.- Capturar los cinco datos mas importantes de un Empleado, incluyendo el


sueldo diario y los das trabajados esto en un panel, desplegarle su cheque
semanal en un segundo panel solo si gan mas de $500.00 en la semana, en
caso contrario desplegarle un bono de despensa semanal de $150.00 en un
tercer panel.
4.- Capturar los datos mas importantes de un estudiante incluyendo tres
calificaciones, todo esto en una ventana, una segunda ventana que contiene
una boleta de calificaciones es llamada si el estudiante es de la carrera de
medicina, en caso contrario una tercera ventana despliega un oficio citando a
los padres del estudiante a una platica amistosa con los maestros dela escuela.
5.- Capturar los datos mas importantes de un producto cualesquiera,
incluyendo cantidad, precio, etc., desplegar una orden de compra, solo si el
producto es de origen nacional, en caso contrario no hacer nada.
5.- DELPHI CONDICIONES COMPUESTAS

En muchas ocasiones es necesario presentar mas de una condicin para su


evaluacin al computador.
Por ejemplo que el computador muestre la boleta de un alumno, si este estudia
la carrera de medicina y su promedio de calificaciones es mayor de 70.
Una condicin compuesta se define como dos o mas condiciones simples
unidas por los llamados operadores lgicos.
Los operadores lgicos que BORLAND DELPHI reconoce son;
OPERADOR
AND
OR
NOT

SIGNIFICADO
Y LOGICO
O LOGICO
NO NEGACIOn

Para que el computador evale como CIERTA una condicin compuesta que
contiene el operador lgico and, las dos condiciones simples deben ser
ciertas.

Para que el computador evale como CIERTA una condicin compuesta que
contiene el operador lgico or, basta con que una de las condiciones simples
sea cierta.
La cantidad total de casos posibles cuando se unen dos o mas condiciones
simples esta dada por la relacin donde n = cantidad de condiciones, la
primera mitad de ellos ciertos y la segunda mitad falsos.
Ejemplo, si formamos una condiciona compuesta con dos condiciones simples
y el operador lgico y, la cantidad total de casos posibles serian
, y se
puede construir la siguiente tabla de verdad.
Tabla de verdad con and
1cs 2cs Eval

CCC
CFF
FCF
FFF

La evaluacin final se obtiene usando la regla anteriormente descrita para una


condicin compuesta, que contiene el operador and.
Esta tabla significa lo siguiente;
1.- Cualquiera que san la cantidad de datos procesados siempre caer en uno
de estos cuatro posibles casos.
La tabla de verdad para una condicin compuesta con OR es la siguiente;
1cs 2cs Eval

CCC

CFC
FCC
FFF

Como se observa, una condicin compuesta con OR, es menos restrictiva, o


el 75% de los casos terminaran ejecutando el grupo CIERTO de instrucciones
de la instruccin condicional.
Construir una tabla de verdad para una condicin compuesta de tres o mas
condiciones simples, es tambin tarea sencilla, solo recordar que;
1.- La cantidad posible de casos es
casos posibles, la mitad empiezan
con Cierto y la otra mitad empiezan c con falso.
2.- Para evaluar esta condicin triple, primero se evalan las dos primeras
incluyendo su operador, bajo las reglas ya descritas y luego se evala, el
resultado parcial contra la ultima condicin, y ultimo operador, para obtener la
evaluacin final.
Ejemplo una condicin compuesta de tres condiciones simples, donde el
primer operador lgico es el y y el segundo operador lgico es el O, dara
la siguiente tabla de verdad.
1cs 'y' 2cs Eva Parcial 'o' 3cs Eva final

CCcCc
CCcFc
CFfCc
CFfFf
FCfCc
FCfFf

FFfCc
FFfFf

TAREAS PROGRAMACION BORLAND DELPHI


1.- Construir un programa que capture un numero cualesquiera e informe si es
o no es mayor de 50 y mltiplo de tres. ( solo escribir el mensaje de respuesta
de manera muy clara y esto resuelve el problema )
2.- Construir un programa que indique si un numero es un par positivo.
3.- Capturar los datos de un producto incluyendo su cantidad en existencia,
construir un panel que despliegue una orden de compra si la cantidad en
existencia del producto es menor que el punto de reorden, o si el origen del
producto es nacional.
4.- Construir el programa del ejemplo del empleado, pero construirlo con tres
ventanas, la del empleado, la del cheque y la del bono.
6.- DELPHI INSTRUCCION CASE

Tambin existen ocasiones o programas donde se exige evaluar muchas


condiciones a la vez, en estos casos, o se usan una condicin compuesta muy
grande o se debe intentar convertir el problema a uno que se pueda resolver
usando la instruccin case;
La instruccin case es una instruccin de decisin mltiple, donde el
compilador prueba o busca el valor contenido en una variable contra una lista
de constantes ints o chars, cuando el computador encuentra el valor de
igualdad entre variable y constante, entonces ejecuta el grupo de instrucciones
asociados a dicha constante, si no encuentra el valor de igualdad entre variable
y constante, entonces ejecuta un grupo de instrucciones asociados a un default,
aunque este ultimo es opcional.
El formato de esta instruccin es el siguiente;

capturar o asignar variable de condicin;


CASE var int o char OF
const1: begin instruccin(es); end;
const2: begin instruccin(es); end;
const3: begin instruccin(es); end;
else begin instruccin(es); end
END;

OBSERVAR donde se usan y donde no se usan los ( : ) y los ( ; )


Mejor un ejemplo practico:
Codigo:
procedure TForm1.Button1Click(Sender: TObject);
begin
case Edit1.Text[1] of
'a': begin Label2.Caption := 'AGUILA'; end;
'b','B': begin Label2.Caption := 'BECERRO'; end;
'c': begin Label2.Caption := '5 ' + 'CABALLOS'; end;
else begin Label2.Caption := 'No Hay' end;
end
end;

Corrida:

Recordar que la propiedad Text de cualquier componente, puede usar o


accesar cualquier [posicin o carcter] usando los corchetes por ejemplo;
si Edit4 = Juan entonces:
Label3.Caption = Edit4Text[2]; pasa solo la 'u' al caption
Notas:
1.- Solo se puede usar como variable de condicin una variable entera o
variable char.
2.- Se esta usando como variable de condicin, solo la primera letra o carcter
de la caja de edicin, que es equivalente a una variable char.
3.- Observar que usando corchetes ej. [posicin] en la propiedad Text, se
puede referenciar o procesar cualquier carcter dentro del Texto.
4.- Las constantes que estamos buscando y comparando son de tipo char, por
eso se deben encerrar entre apstrofes ( ').
5.- Si se quiere resolver el problema de maysculas o minsculas en el
teclado, observar que las dos constantes se separan con comas,
En particular, instrucciones de tipo case se utilizaban para construir programas
de seleccin de mens, donde al usuario se le planteaban dos o tres problemas
distintos y el propio usuario seleccionaba cual de ellos quera ejecutarse.
TAREAS BORLAND DELPHI

1.- Construir una ventana que contenga el siguiente men

1. conversin de pesos a dlares


2. conversin de libras a kilogramos
3. conversin de kilmetros a millas
4. fin de men
seleccionar opcin [ ] Este es el edit del switch().

Para resolver este programa, primero disear las cuatro formas o ventanas que
se ocupan, y en la primera forma que contiene el men para el usuario,
programar el evento onclick del Button de ordenes con la instruccin case, los
case solo contienen cdigo para llamar o poner a la vista del usuario la
ventana o forma respectiva.
Y adems recordar poner en cada ventana de solucin de un problema un
botn de orden, con cdigo de regreso a la ventana de men, solo escribir en
el Caption de este botn la palabra [men] y en su evento OnClick ocultar la
ventana de problema y poner visible la ventana o forma del men o mejor aun
usar los bitbuttons.
2.- Construir un programa que capture un deporte y despliegue la imagen de
dos implementos deportivos apropiados, usar los componentes de imagen de
borland delphi.
3.- Evaluar cualquier funcin vista para cuando x =3,-4, 5
7.- DELPHI COMPONENTES VISUALES DE SELECCION Y DECISIN

Las instrucciones if y case, nos permiten tomar decisiones o realizar


seleccionase dentro del cdigo de un programa.

BORLAND DELPHI proporciona una serie de componentes visuales que


permiten al usuario, no al programador, tomar decisiones en pantalla, el
programador solo se encarga de implantar cdigo adecuado a la decisin
tomada por el usuario.
8.- COMPONENTE CheckBox (Standard) DELPHI

El componente CheckBox permite seleccionar una opcin al usuario del


programa o tomar una decisin, directamente en pantalla.
Es la propiedad Text del componente donde se escribe sentido de la seleccin
ej.;

En los ejemplos, los componentes checkbox, son las cajas donde el usuario
toma un decisin (ej. 3) o realiza una seleccin (ej. 1,2)
Existen dos maneras de programar este componente:
- Cuando el usuario selecciona un checkbox la propiedad Checked refleja esta
decisin quedando cargada con las constantes true o false, en estos casos solo
validar con un if por cada CheckBox dentro de nuestro botn de ordenes, el
estado de dicha propiedad.
Programa ejemplo:

procedure TForm1.Button1Click(Sender: TObject);


begin
if CheckBox1.Checked Then
Begin Label1.Caption := 'CALIENTE' end
else begin Label1.Caption := ' '; end;
if CheckBox2.Checked Then
Begin Label2.Caption := 'FRIO' end
else begin Label2.Caption := ' '; end;
if CheckBox3.Checked Then
Begin Label3.Caption := 'TEMPLADO' end
else begin Label3.Caption := ' '; end;
end;
corrida:

Notas:
1.- Observar que por cada checkbox en la forma se ocuapara un if.
2.- La propiedad Checked estara cargada con TRUE o FALSE al ejecutarse el
programa y por tanto la instruccion IF ejecutara la parte cierta o la parte falsa
de instrucciones apropiada, es decir se uso CHECKBOX.CHECKED
directamente
en
la
instruccion
porque
seria
equivalente
a
CHECKBOX.CHECKED = TRUE.
b) El segundo mtodo para programar el componente, involucra el evento
OnClick de este componente CheckBox, este evento OnClick es activado
automticamente en cuanto el usuario realiza o marca o toma su seleccin, es
claro que si no se programa este evento el usuario no observara ningn
proceso, sino que tendr que indicar que ya hizo su decisin, apretando el
botn de OK.
Pero si se programa el evento OnClick de este componente con el cdigo
adecuado, ni se tendr que agregar un botn OK, ni se ocupara usar un
if(Checked), porque el usuario ya indico cual es su decisin o seleccin.
Recordar que para programar este evento OnClick, solo hacer un dobleclick,
dentro del componente.
Este mtodo es el mejor porque evita cdigo de mas y cada componente solo
tiene asociado el cdigo que ocupa.
TAREAS PROGRAMACION BORLAND DELPHI
1.- Evaluar la funcin
para x 2,-5, 8 (usar un CheckBox por
cada valor de x, y programar cada evento OnClick de cada CheckBox con la
operacin correspondiente y el despliegue del resultado).
2.- Construir un panel con los datos de un automvil, un segundo panel
muestra un plan de financiamiento a dos aos y un tercer panel muestra un
plan de financiamiento a tres aos. ( son dos checkbox en el primer panel y no
hay botn de ok).
3.- Construir el programa de men, que se dejo en el tema de instruccin case
( aqu no se ocupa case ni pedir la opcin, ni botn de ok, solo un CheckBox
programado a un lado de cada opcin del men).

9.- COMPONENTE RadioButton ( Standard ) DELPHI

Se utilizan para presentar al usuario un conjunto de opciones mutuamente


excluyentes entre si, es decir si el usuario selecciona un componente
RadioButton todos los dems componentes RadioButton en la forma, se
desmarcan solos, o se deseleccionan solos, como mejor se entienda.
Es su propiedad Caption donde se pone el texto que identifica el propsito del
botn, es su propiedad Checked quien refleja el cambio( True , False ),tambin
su evento onclick es activado automticamente cada vez que es seleccionado
el RadioButton por el usuario.
Recordar tambin que cuando el usuario selecciona un RadioButton, todos los
dems RadioButton en el objeto(forma o ventana) son deseleccionados
automticamente esto es por que dos RadioButton son mutuamente
excluyentes entre si.
Esta ultima situacin deber resolverse por parte del programador, es decir se
supone un programa donde el usuario debe seleccionar uno de entre dos sexos
y uno de entre cinco municipios, en este caso se ocupan ocho RadioButton,
pero como todos son mutuamente excluyentes entre si, cuando el usuario
seleccione uno de ellos, todos los dems se desmarcaran automticamente.
Para resolver este problema se deber usar los ya ampliamente conocidos y
practicados componentes de agrupamiento, como son el componente Panel y
el componente GroupBox.
Es decir se deber encerrar en su propio panel o GroupBox todos los
RadioButton lgicos, es decir en un Panel los de sexo, en otro Panel los de
municipios, etc.
De esta manera BORLAND DELPHI los evala por separado y se puede tener
seleccionado un RadioButton en cada Panel.
TAREAS PROGRAMACION BORLAND DELPHI
1.- Disear y construir tres problemas similares a los resueltos con el
componente CheckBox.

10.- COMPONENTE RadioGroup(Standard) DELPHI

Aunque es comn agrupar un conjunto de RadioButton dentro de


componentes Panel Y RadioGroup, BORLAND DELPHI proporciona este
componente RadioGroup que esta especializado en la agrupacin de
RadioButton.
Un componente u objeto RadioGroup es una caja especial que solo contiene
componentes RadioButton, tambin cuando el usuario marca o selecciona uno
de ellos, todos los dems se desmarcan o deseleccionan .
Para aadir los RadioButton a el componente RadioGroup, solo editar la
propiedad Items en el Inspector de Objetos, que entonces nos muestra el
minieditor de strings ya visto y practicado en el tema de ListBox, solo
recordar que cada rengln en el editor corresponder a un RadioButton dentro
del RadioGroup.
[[|Para procesar o programar el RadioButton seleccionado por el usuario, [[|[[|
solo usar la propiedad ItemIndex que queda cargada con el numero [[|[[|de
RadioButton seleccionado por el usuario.]]]]]]]]]]
Este cdigo deber usarse dentro del evento OnClick de un componente
Button(OK).
ejemplo

if(Form5.RadioGroup3.ItemIndex==4){ cdigo a ejecutar si el usuario


selecciono el RadioButton 4 del RadioGroup 3 etc. };

Tambin se pueden desplegar los botones en una o mas columnas, usando la


propiedad Columns en el Inspector de Objetos, para indicarle cuantas
columnas de RadioButton se quieren manejar.
TAREAS BORLAND DELPHI

1.- CAPTURAR LOS CINCO DATOS MAS IMPORTANTES DE UN


CLIENTE, USANDO RadioButton PARA LAS RESPUESTAS, UN
SEGUNDO PANEL ABAJO EN LA FORMA DESPLIEGA EN
COMPONENTES NORMALES EDIT O LABEL LAS SELECCIONES DEL
USUARIO
2.- CONSTRUIR UN CUESTIONARIO DE 6 PREGUNTAS SOBRE LOS
HABITOS DE ESTUDIO DE UN ESTUDIANTE.
3.- CONSTRUIR UN CUESTIONARIO DE 5 PREGUNTAS CON LAS
PREFERENCIAS POLITICAS DE UNA PERSONA, UN PANEL ABAJO
DESPLIEGA UN CONCENTRADO CON TOTALES Y PORCENTAJES
ACUMULADOS POR CADA PREGUNTA.
ES DECIR UN USUARIO RESPONDE EL CUESTIONARIO APRIETA EL
BOTON DE OK, EL PANEL DE ABAJO SE ACTUALIZA PARA
MOSTRAR TOTALES Y PORCIENTOS DE CADA PREGUNTA, Y SE
LIMPIAN LAS RESPUESTAS, UN SEGUNDO USUARIO RESPONDE EL
CUESTIONARIO. Y ASI SUCESIVAMENTE.
PARA TOTALES Y PORCENTAJES, SOLO RECORDAR DOS DE
LOS CONCEPTOS MAS ELEMENTALES DE PROGRAMACION
BASICA.
CONTADORES ;
CONT=CONT+1 RESULTADO 1, 2, 3,4,5,.
ACUMULADORES ;
ACUM = ACUM + CONT RESULTADO CON EL EJEMPLO DE
ARRIBA 1,3,4,10,15
RECORDAR LAS CAJAS EDIT TAMBIEN PUEDEN FUNCIONAR
COMO CONTADORES O ACUMULADORES.
NO SE OCUPA CONVERTIRLAS A VARIABLES, TRABAJARLAS
DIRECTAMENTE
11.- COMPONENTE MainMenu(Standard)DELPHI

Con este componente MainMenu se forman las barras de men normales en


cualquier programa de Windows (la barra que contiene File, Edit, etc.) junto
con sus opciones correspondientes.
Cuando se pone este componente en una forma, se deber entender que form1
ahora mostrara o desplegara una barra de men, tal como si fuese una ventana
normal de Windows.
Para construir un programa de seleccin de men;
1.- Poner un componente MainMenu en una parte de la forma donde no
estorbe (esto es porque este componente queda flotando dentro de Form1 y
solo activa o se convierte en barra de men al momento de ejecucin del
programa).
2.- Para cargarle las opciones, no del cdigo que ejecutara cada opcin, solo
dobleclick dentro de este componente para que aparezca el siguiente diseador
de mens.

1.- No es Form1, es una forma especial que se parece mucho, pero solo se
activa cuando se hace un dobleclick en un componente MainMenu.

2.- La barra superior es el men, cada opcin del men ( Moneda,


Temperatura, Distancias, etc.) tienen sus propias subopciones o submenus.
3.- Para escribir las opciones( Moneda, Temperatura, etc.) primero hacer un
click en la parte correspondiente (en el lugar que ocupan o donde se
desplegaran) y escribir en la propiedad Caption del Inspector de Objetos la
palabra correspondiente.
4.- Para escribir las subopciones, primero hacer click en la opcin
correspondiente ( por ejemplo en la parte donde esta la palabra Distancias) y
ya aparece abajo de ella la primera subopcion marcada y seleccionada (es un
cuadrito que se pone abajo de Distancias) y escribir en el Caption Del
Inspector de Objetos la palabra adecuada a la subopcion correspondiente
(ejemplo Millas-Kms), al escribir y usar tecla <ENTER> en el caption ya
aparece el cuadrito de la segunda subopcion.
5.- Para marcar una letra de una opcin o subopcion como HotKey ( lo siento
no se pudo traducir), solo poner el signo & antes de la letra correspondiente.
6.- Con los pasos 3,4,5 ya queda construido el men, pero ahora falta cargarles
el cdigo o programa a ejecutar por y a cada opcin o subopcion del men,
recordar que estos eventos tambin se activan al hacer un click el usuario en
cada opcin o a seleccionar la primera letra(si se uso el &), para cargar cdigo
entonces.
7.- Solo dobleclick en la opcin o subopcion correspondiente y ya aparece el
minieditor de programas, listo con el evento OnClick de la opcin o subopcion
correspondiente.
8.- El cdigo a escribir en la mayor parte de los casos, solo consiste en ocultar
la ventana principal y llamar la ventana que contendr el programa
correspondiente a la opcin deseada.
9.- Para terminar y regresar a la forma principal solo click en la X del
diseador de mens.
TAREAS PROGRAMACION BORLAND DELPHI
1.- EL DE LA MUESTRA CON DOS CONVERSIONES MONETARIAS,
DOS OPCIONES DE TEMPERATURAS Y DOS DE DISTANCIAS.

PRIMERO DISEAR Y CONSTRUIR TODAS LAS FORMAS QUE


VA A OCUPAR
NO OLVIDE PONER ALGUNAS LABELS DE ENCABEZADO EN
LA VENTANA PRINCIPAL
EN EL BOTON OK O EN OTRO BOTON SIMILAR DE CADA VENTANA
DE TRABAJO NO OLVIDAR AGREGAR CODIGO PARA OCULTAR
DICHA VENTANA Y REGRESAR A LA VENTANA CON EL MENU
PRINCIPAL.

12.- COMPONENTE PopupMenu (Standard)DELPHI

Este componente encapsula propiedades, mtodos y eventos de un men


popup, este minimenu se activa cuando el usuario hace un click derecho en
muchos componentes que lo pueden contener.
Un ejemplo;

Recordar que este componente PopupMenu se tiene que pegar a otro


componente, por ejemplo un Label o un Edit, etc.

Para crear un PopupMenu, solo seleccionar el componente PopupMenu en la


barra de componentes y ponerlo en una parte de la forma donde no estorbe
(tambin queda flotando).
Para cargarlo de opciones solo dobleclick en dicho componente e igual que en
componente MainMenu, sale el minieditor, click en la parte donde va la
opcin escrita y escribir la palabra en la propiedad Caption del Inspector de
Objetos.
Para cargarle el cdigo a cada opcin , solo dobleclick en la opcin
correspondiente.
Para salirse del minieditor, solo click en la [X] de arriba.
Por ultimo y muy importante, recuerde que se tiene que pegar a un
componente cualesquiera, para esto solo seleccionar el componente y click en
la propiedad popup del componente, sale la lista con todos los componentes
PopupMenu que ya se hayan construidos.
TAREAS PROGRAMACION BORLAND DELPHI
1.- CONSTRUIR UN MENU CON LAS SIGUIENTES OPCIONES:
[AUTOS] FINANCIAMIENTO A 2,3,4 aos
[LAVADORAS] FINANCIAMIENTO A 2,3 aos

13.- CICLO FOR DELPHI


Instrucciones para ciclos, resuelven el problema de repetir todo el programa, o
cierta parte del programa mas de una vez.
Este ciclo es uno de los mas usados para repetir una secuencia de
instrucciones, sobre todo cuando se conoce la cantidad exacta de veces que se
quiere que se ejecute una instruccin simple o compuesta.
Su formato general es:
for VARCONTROL := ValorInicial to ValorFinal do

begin instrucciones; end;


ejemplo:

FOR x :=1 TO 10 DO
BEGIN Label4.Caption := 'pato'; END;

Casos Particulares;
1.- El ciclo comienza en uno y se incrementa de uno en uno, este es el caso
mas general.
2.- Pero el valor inicial puede se diferente de uno, ejemplo;
for x := 5 to 15 DO begin etc
3.- Incluso el valor inicial puede ser negativo, ejemplo;
for x := -3 to 8 do etc
4.- Los incrementos tambin pueden ser diferentes al de uno en uno, solo
alterar el contador de ciclos dentro del for pero tener cuidado que el ultmo
cambio no se salga del limite del ciclo y usar un if para validar el limite de
contador;
for x := 1 to 20 do begin inst(es) x := x + 3 if x 20 then x x:=19 etc..
5.- Un ejemplo para usarlo en los problemas sugeridos mas adelante;
ejemplo;
desplegar los nmeros enteros, comprendidos entre el 10 y el 20.
Ocupamos ahora un componente que pueda almacenar y desplegar un
conjunto de los 10 resultados, el nico componente visto hasta ahora con esta
capacidad es el componente ComboBox, sin embargo existe otro componente
llamado ListBox(Standard), muy similar a ComboBox, excepto que no tiene
encabezado y todos sus elementos los mantiene a la vista del usuario, no

ocultos como el ComboBox, dicho componente ListBox se analiza a fondo en


la siguiente unidad, pero es el que de momento permite resolver el problema
del for (desplegar un conjunto de datos o resultados a la vez).
Tanto ComboBox como ListBox permiten cargar todos sus elementos o
valores, dentro de un programa, usando un mtodo llamado Add(valor) en su
propiedad Items, como se ve en el siguiente programa ejemplo;
Para este problema se ocupa poner en Form1, un componente Button OK que
en su evento OnClick contiene el for y la carga del componente ListBox, con
el siguiente;
Pantalla de diseo

Programa
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
For x:= 10 to 20 do

begin ListBox1.Items.Add(IntToStr(x));
end;
end;
La pantalla de salida debe ser igual o parecida a la siguiente;

Este procedimiento y mtodo igualmente trabaja con un componente


ComboBox.
Recordar que todos los componentes visuales analizados hasta ahora, en sus
propiedades text o caption, entran y salen puras strings.
Por eso en el programa se uso la funcion IntToStr(variable entera) para cargar
una string en el componente LISTBOX.
Practicar hasta conseguir tener esta pantalla de salida o de ejecucin, cuando
se consiga entonces ya se esta listo para lo siguiente.
TAREAS PROGRAMACION BORLAND DELPHI
1.- CONSTRUIR UN PROGRAMA QUE DESPLIEGUE LOS NUMEROS
DEL 20 AL 30.

2.- DESPLEGAR LOS ENTEROS ENTRE 30 Y 50 ACOMPAADOS DE


SU POTENCIA CUADRADA Y RAIZ CUBICA RESPECTIVA ( OCUPA
TRES ListBox o mejor aun, un solo listbox y vayan encadenando las trings
temporales con el signo + ).
3.- DESPLEGAR UNA TABLA DE MULTIPLICAR QUE EL USUARIO
INDIQUE .
14.- CICLO WHILE DELPHI

En este ciclo el cuerpo de instrucciones se ejecuta mientras una condicin


permanezca como verdadera, en el momento en que la condicin se convierte
en falsa el ciclo termina.
Su formato general es :
Cargar o inicializar variable de condicion;
while ( condicion ) do
begin
instrucciones;
instruccion de salida de ciclo ;
end;
programa ejemplo;
var
x:integer;
begin
x:=1;
while (x<=10) do

begin
ListBox1.Items.Add(IntToStr(x)+' pato');
x:=x+1;
end;
end;
corrida:

While puede llevar dos condiciones, en este caso inicializar 2 variables de


condicin y cuidar que existan 2 de rompimiento de ciclo.
El grupo cierto de instrucciones puede ser una sola instruccin o todo un
grupo de instrucciones.
La condicin puede ser simple o compuesta.
A este ciclo tambin se le conoce tambin como ciclo de condicin de entrada
prueba por arriba, porque este ciclo evala primero la condicin y
posteriormente ejecuta las instrucciones.
TAREAS PROGRAMACION BORLAND DELPHI
1.- DESPLEGAR ENTEROS ENTRE 50 Y 80

2.- DESPLEGAR MULTIPLOS DE 4 ENTRE 60 Y 20 ACOMPAADOS DE


SU LOGARITMOS DE BASE 10 Y BASE e RESPECTIVOS ( A REVISAR
LA AYUDA Y BUSCAR LAS FUNCIONES MATEMATICAS DE
BORLAND DELPHI )
3.- CONSTRUIR LA TABLA DE DIVIDIR QUE EL USUARIO INDIQUE.
15.- CICLO REPEAT UNTIL DELPHI

Su diferencia bsica con el ciclo while es que la prueba de condicin es hecha


al finalizar el ciclo, es decir las instrucciones se ejecutan cuando menos una
vez, porque primero ejecuta las instrucciones y al final evala la condicin;
Tambin se le conoce por esta razn como ciclo de condicin de salida.
Su formato general es :
cargar o inicializar variable de condicin;
repeat
instrucciones ;
instruccion de salida del ciclo
until (condicion) ;
programa ejemplo:
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
x:=1;

repeat
ListBox1.Items.Add(IntToStr(x)+' gato');
x:=x+1;
until (x>=10);
end;
CORRIDA:

Otra diferencia bsica con el ciclo while es que, aunque la condicin sea falsa
desde un principio, el cuerpo de instrucciones se ejecutara por lo menos una
vez.
TAREAS PROGRAMACION BORLAND DELPHI
1.- DOS DE LAS DEL FOR
2.- DOS DE LAS DEL WHILE
16.- CONCLUSIONES CICLOS DELPHI
El problema de dado un problema cualesquiera en borland delphi , cual ciclo
se debe usar se resuelve con:
Si se conoce la cantidad exacta de veces que se quiere que se ejecute el ciclo o
si el programa de alguna manera puede calcularla usar for.

Si se desconoce la cantidad de veces a repetir el ciclo o se quiere mayor


control sobre la salida o terminacin del mismo entonces usar while.
Si se quiere que al menos una vez se ejecute el ciclo entonces usar repeat
until .
III BORLAND DELPHI ARREGLOS
1.- INTRODUCCION DELPHI

Uno de los problemas mas comunes en los diversos sistemas de informacin,


es el tratamiento o procesamiento de una gran volumen de datos o de
informacin.
Variables o componentes visuales manejados hasta ahora, no pueden ayudar a
resolver este problema.
Las variables usadas hasta ahora reciben propiamente el nombre de variables
escalares, porque solo permiten almacenar o procesar un dato a la vez.
No confundir esto con el tipo de dato o rango de datos que una variable tiene
la capacidad de almacenar.
Por ejemplo si se quiere almacenar nombre y edad de 15 personas, con el
mtodo tradicional se ocuparan 30 variables o 30 componentes visuales, y solo
es nombre y edad de 15 personas, agreguen mas datos y mas personas y ya es
tiempo de empezar a analizar otro tipo de variables y de componentes.
Es decir, en problemas que exigen manejar mucha informacin o datos a la
vez, variables escalares o componentes visuales de manipulacin de datos
normales (edit, label, etc.), no son suficientes, ya que su principal problema es
que solo permiten almacenas un dato a la vez.
Se ocupa entonces variables o sus correspondientes componentes visuales que
sean capaces de almacenar y manipular conjuntos de datos a la vez.
Variables de tipo arreglo y sus correspondientes componentes visuales, si
permiten almacenar y procesar conjuntos de datos del mismo tipo a la vez.

Cada dato dentro del arreglo, se le llama elemento del arreglo y se simboliza y
procesa(captura ,operacin ,despliegue ), usando el nombre del arreglo
respectivo y un subndice indicando la posicin relativa del elemento con
respecto a los dems elementos del arreglo.

NOMBRES
Juan
Pedro Nombres[2]
Jos
Ana Nombres[4]
Carmen

EDAD
18 Edad[1]
20
25
30 Edad[4]

Sin embargo sus problemas son similares a los de variables normales, es decir
hay que declararlos, capturarlos, hacer operaciones con ellos, desplegarlos,
compararlos, etc.
Para propsitos del aprendizaje se analiza o clasifican en grupos diferentes los
arreglos que ofrece BORLAND DELPHI, ellos son;
1.- Arreglos tradicionales en PASCAL (internos dentro del programa)
2.- Componentes Visuales de tipo Arreglo

2.- ARREGLOS TRADICIONALES EN DELPHI

En programacin tradicional siempre se manejan dos tipos de arreglos, los


arreglos tipo listas, vectores o unidimensionales y los arreglos tipo tablas,
cuadros, concentrados, matrices o bidimensionales, en ambos casos son
variables que permiten almacenar un conjunto de datos del mismo tipo a la
vez, su diferencia es en la cantidad de columnas que cada uno de estos tipos
contiene, como en los siguientes ejemplos;
1. ARREGLOS TIPO LISTA
Juan
Pedro Nombres[2]
Jos
Ana Nombres[4]
Carmen

18 Edad[1]
20
25
30 Edad[4]

1. ARREGLOS TIPO TABLAS

CIA ACME
ING MENS VTAS

(MILES DE $)
ENE FEB MAR ABR MAY
SUC A 10 12 15 10 9
SUC B 8 7 5 9 6
SUC C 11 18 20 14 17

INST TECN DE TIJUANA


CONCENTRADO DE CALIF
MAT FIS QUIM HIST
JUAN 5 5 5 5
JOSE 4 4 4 4
PEDRO 3 3 3 3
ANA 9 9 9 9

Como se observa, la diferencia principal entre un arreglo tipo lista, y un


arreglo tipo tabla, son las cantidades de columnas que contienen.
NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS AQUI ESTAN
ENFOCADOS A LOS SISTEMAS DE INFORMACION CONTABLES
FINANCIEROS ADMINISTRATIVOS.
EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS CONCEPTOS
DE VECTORES Y MATRICES, PERO LAS OPERACIONES Y METODOS
SON PRECISAMENTE LOS DEL ALGEBRA MATRICIAL Y NO ES
PROPOSITO O LUGAR INDICADO PARA TRATAR PROBLEMAS Y
OPERACIONES CON MATRICES.
3.- ARREGLOS TIPO LISTA DELPHI

Un arreglo tipo lista se define como una variable que permite almacenar un
conjunto de datos del mismo tipo organizados en una sola columna y uno o
mas renglones.
Tambin reciben el nombre de
unidimensionales en programacin.

vectores

en

lgebra,

arreglos

Los procesos normales con una lista o con sus elementos, incluyen declarar
toda la lista, capturar sus elementos, desplegarlos, realizar operaciones con
ellos, desplegarlos, etc.
Para declarar una lista se usa el siguiente formato;
VAR
nomlista :array [1..n] of Integer;
* ESTO SIGNIFICA que el arreglo debera declararse en la parte VAR
publica del programa (AL PRINCIPIO DEL PROGRAMA ARRIBA DEL
PROCEDIMIENTO BUTTONCLIK SE ENCUENTRAN ESTAS
PARTES VAR Y TYPE DEL PROGRAMA)
* Y el indice (n) es la cantidad de elementos de la lista.
ejemplos;

VAR
Edades : array[1..12] of integer;
Sueldos : array[1..10] of Real;
Municipios : array[1..5] of string[20];
Nota: en caso de listas de strings observar que la string se le asigna un tamao
especifico.

notas:
Declaracin.- Es necesario recordar, que la declaracin de un arreglo tipo lista
se puede hacer en dos lugares diferentes, dependiendo de si solo se usa un
botn de ordenes en la pantalla, o si dos o mas botones de ordenes, estarn
procesando el arreglo, el segundo caso, es el mas comn.
Si un solo botn, en toda la ventana va a realizar, todos los procesos
( declaracin, captura, operaciones, comparaciones, despliegue), con la lista,
solo hacer la declaracin de la lista, al principio del evento onclick, como lo
muestra el programa ejemplo.
El dato capturado, proviene de momento de un componente visual escalar y
por tanto para capturas se usan algunas variables de control como lo muestra
el siguiente programa ejemplo, para capturar y procesar cuatro edades, el
cdigo y pantalla se es;
Programa ejemplo;
var
Form1: TForm1;
edad : array[1..5] of integer;
ren:integer=1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
if ren <= 5 then
begin
edad[ren]:=StrToInt(Edit1.Text);

ListBox1.Items.Add(IntToStr(edad[ren]));
ren := ren + 1 ; Edit1.Text :=' ';
end;
if ren = 6 Then ShowMessage ('LISTA LLENA');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
r:integer;
begin
for r := 1 to 5 do
begin
ListBox1.Items.Add(IntToStr(edad[r] * 12));
end;
end;
Pantalla de corrida

Notas:
La declaracion del arreglo y la variable de control renglon se realiza en la
parte VAR del PROGRAMA no las partes verdes de var que se han puesto
dentro del procedimiento buttonclick como se ha realizado en todos los
programas que se han construido hasta la fecha.
Recordar que estas variables son globales o compartidas por todos los
procedimientos o eventos del programa.
Se uso un componente nuevo el ShowMessage('MENSAJE'); para
desplegar un mensaje de lista llena.
Para el caso de operaciones y comparaciones con todos los elementos de la
lista a la vez, se deber usar un ciclo for con una variable entera llamada
rengln, misma que tambin se usara como ndice de la lista como se hizo en
el problema ejemplo.

Recordar que todos los datos internos de la lista estarn almacenados en la


memoria ram del computador, para despliegues se usa un componente visual
que permite manipular un conjunto de datos a la vez, el ListBox, pero se tiene
que usar un ciclo for() para ir aadiendo o agregando elemento por elemento
como se observa en el problema ejemplo que se ha venido desarrollando.

TAREAS PROGRAMACION BORLAND DELPHI


1.- Capturar y desplegar 5 precios de productos cualesquiera, usando dos
panel, uno para capturar y uno para desplegar.
2.- Capturar 4 sueldos en un panel, desplegarlos aumentados en un 25% en
otro panel.
3.- Capturar los datos de 5 productos comprados en una tienda, incluyendo
nombre, precio y cantidad en sus 3 listas respectivas, despus calcular una
cuarta lista con el gasto total por cada producto desplegarlo todo en un
segundo panel e incluir tambin el gran total.
4.- Capturar en una lista solamente 6 nmeros mltiplos de 5, se debe de estar
capture y capture nmeros hasta que se completen los 6 mltiplos de 5.
4.- BORLAND DELPHI ARREGLOS TABLA

Un arreglo tipo tabla se define como un conjunto de datos del mismo tipo
organizados en dos o mas columnas y uno o mas renglones.
Para declarar un arreglo de este tipo se usa el siguiente formato:
VAR
Nomtabla: array[1..1,1..c] of Integer;
Para procesar ( recordar solo operaciones y comparaciones) internamente
todos los elementos de la tabla se ocupan dos ciclos for uno externo para
controlar rengln y uno interno para controlar columna.
Solo recordar que en capturas, se debern usar logica de control ya sea con
variables globales o se pueden usar controles o componentes ocultos de tipo
label o edit y en despliegue usar un ListBox como lo muestra el programa
ejemplo.
Programa delphi
var

Form1: TForm1;
calif : array[1..3,1..4] of integer;
ren:integer=1;col:integer=1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Label2.Caption:=IntToStr(ren);
Label3.Caption:=IntToStr(col);
calif[ren,col]:=StrToInt(Edit1.Text);
col := col+1;
Edit1.Text :=' ';
if (col=5) then
begin ren:=ren+1; col:=1;
end;
if (ren=4)
then
begin
ShowMessage('TABLA LLENA');
Edit1.Visible := false;

end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
r:integer;c:integer;
temp:string;
begin
for r := 1 to 3 do
begin
for c:= 1 to 4 do
begin
// operaciones calif + 10 puntos
calif[r,c]:=calif[r,c]+10;
// juntando columnas para desplegar
temp:= temp + IntToStr(calif[r,c])+ ' ';
end;
// desplegando
ListBox1.Items.Add(temp);
temp:='';
end;

end;
Pantalla de salida

TAREAS PROGRAMACION BORLAND DELPHI


1.- CONSTRUIR UN CUADRO QUE CONTENGA LOS COSTOS FIJOS
DE CUATRO PRODUCTOS CUALESQUIERA, QUE SE PRODUCEN EN
TRES PLANTAS DIFERENTES DE UNA EMPRESA MAQUILADORA.
2.- CONSTRUIR UN CUADRO QUE CONTENGA LOS INGRESOS
MENSUALES POR VENTAS DURANTE LOS TRES PRIMEROS MESES
DEL AO DE CUATRO SUCURSALES DE UNA CADENA DE
AUTOREFACCIONES, AGREGAR AL FINAL UNA LISTA QUE
MUESTRE LOS INGRESOS MENSUALES TOTALES POR MESES Y
UNA SEGUNDA LISTA QUE MUESTRE LOS INGRESOS MENSUALES
TOTALES POR SUCURSAL.
3.-CONSTRUIR UN CUADRO QUE CONTENGA LAS COMISIONES
GANADAS POR TRES VENDEDORES DIFERENTES DE 5 TIPOS DE
MUEBLES DE LINEA BLANCA, AGREGAR ADEMAS LISTAS DE
COMISIONES TOTALES POR VENDEDORES Y POR TIPO DE MUEBLE
Y LISTAS DE COMISIONES PROMEDIO POR VENDEDORES Y POR
TIPO DE MUEBLES.
SUGERENCIA; PRIMERO HACER UN BOSQUEJO EN PAPEL DE
COMO QUEDARAN LOS CUADROS Y LAS LISTAS EN PANTALLA.

5.- COMPONENTE ListBox (Standard) DELPHI

Este componente permite procesar visualmente un conjunto de elementos de


tipo string.
Este componente hereda muchas de las propiedades y mtodos de TStringList
y TStrings, que son las clases bases de las cuales hereda propiedades y
metodos, mas algunas propiedades y mtodos propios tales como:
1.-Propiedades;

Capacity.- Es la cantidad o tamao del arreglo de apuntadores a los objetos en


la lista.
Count.- Numero de objetos contenidos actualmente en la lista Items.- Se usa
para referenciar o accesar los objetos en la lista.
Recordar que las propiedades en un programa, se manejan con el formato
nomobjeto.nompropiedad.

2.- Mtodos;

Add.- Inserta un objeto nuevo al final de la lista y regresa el lugar o posicin


donde hizo la insercin.
Clear.- Se usa para vaciar el arreglo, tambin libera la memoria ocupada por
los objetos de la lista.
Delete.- Se usa para eliminar un objeto especifico, lleva como argumento o
parmetro la posicin del objeto.
Exchange.- Intercambia dos objetos de la lista.

Expand.- Se usa para agregar mas espacio para nuevos objetos en la lista.
First.- Se utiliza para regresar al primer objeto de la lista.
IndexOf.- Regresa la posicin del objeto en la lista.
Insert.- Inserta un objeto en la posicin deseada.
Last.- Regresa la posicin del ultimo objeto en la lista.
Move.- Mueve el objeto de una posicin a otra posicin.
Pack .- Compacta todos los objetos en una lista y libera la memoria ocupada
por los objetos que estaban en la parte inferior de la lista.
Remove.- Remueve o elimina un objeto especificado, el resto los recorre a la
posicin que ocupaba el objeto eliminado.
Sort.- Ordena los objetos de la lista, usando QuickSort.
Como se observa contiene muchas propiedades y mtodos que facilitan
grandemente el trabajo con los elementos de una lista.

Se puede aadir, eliminar e insertar tems en la lista usando los mtodos Add,
Delete, Insert con la propiedad Items, que tambin es de tipo TStrings.
Si se quiere que ListBox presente varias columnas, solo cambiar el valor de la
propiedad Columns, para ordenar o clasificar los tems, usar la propiedad
Sorted.
Se puede permitir que un usuario realice una seleccin mltiple, poniendo la
propiedad MultiSelect en true, la propiedad ExtendedSelect determina como
se realiza la seleccin mltiple.
Para determinar cual tem en particular esta seleccionado solo validar la
propiedad Selected, para conocer cuantos tems se han seleccionado revisar
los valores de la propiedad SelCount.
Propiedades:

BorderStyle.- Despliega la lista con un marco sencillo o sin marco.


Canvas.- Se utiliza para asociar un rea de dibujo o de imagen a un tem de la
lista (consultar ayuda de esta propiedad en ListBox puesto que es interesante).
Columns.- Define una determinada cantidad de columnas para su despliegue
dentro del ListBox.
ItemIndex.- Se utiliza para seleccionar la posicin o ndice de un tem o
elemento en la lista.
Items.- Es la propiedad que mas se ha venido usando, se utiliza para accesar
las diversas propiedades y mtodos de las strings en la lista.
Sorted.- Se usa para ordenar alfabticamente los elementos de la
lista( ListBox1.Sorted := true; )
Style.- Define diversos o varios estilos o formas de ListBox.

Mtodos:

Clear.- Elimina todos los elementos a la vez.

En la practica para cargar o capturar sus elementos, se deber usar el mtodo


Add, ya que no se permite cargar directamente sus datos o elementos por el
usuario del programa, solo usar cdigo como el analizado en los temas
anteriores ;
Recordar que se pueden usar todos los mtodos, para insertar, eliminar, contar,
etc.
Si los valores son de tipo numrico, se pueden efectuar procesos con ellos
de dos maneras:

Pasando los valores de ListBox a una variable numrica de tipo arreglo y


procesando esta ultima variable.
Usar instrucciones directamente de proceso con las funciones INTTOSTR y
STRTOINT.
Si es necesario pasar el contenido de ListBox1 a ListBox2, solo usar la
propiedad Text en ambas, ej.; (ListBox2.Text := ListBox1.Text).
LO MAS IMPORTANTE A TOMAR EN CUENTA Y RECORDAR ES
QUE A DIFERENCIA DE ARREGLOS TRADICIONALES LISTBOX
EMPIEZA SU PRIMRE INDICE O RENGLON EN 0 ( CERO ) COMO
ES COMUN EN EL LENGUAJE DE PROGRAMACION C++,
RECORDAR AJUSTAR SUS CICLOS DE PROCESOS Y SUS
CONTADORES DE CONTROL PARA QUE TOMEN ESTA NOTA EN
CONSIDERACION.
Ejemplo con ListBox, para este caso se pide capturar 5 edades en un ListBox,
luego sumarle 3 aos a cada una usando el mismo ListBox, y desplegarlas en
un segundo ListBox convertidas a meses.
Pantalla de diseo:

Cdigo:
procedure TForm1.Button1Click(Sender: TObject);

begin
ListBox1.Items.Add(Edit1.Text);
Edit1.Text := '';
end;
procedure TForm1.Button2Click(Sender: TObject);
var
r, temp :integer;
Begin
for r:=0 to ListBox1.Items.Count - 1 do
begin
temp := StrToInt(ListBox1.Items.Strings[r]) * 12;
ListBox2.Items.Add(IntToStr(temp));
end;
end;
Pantalla de salida:

TAREAS PROGRAMAS BORLAND DELPHI


1.- CAPTURAR EN UNA LISTA LOS SUELDOS DE 6 EMPLEADOS Y
DESPLEGARLOS EN UNA SEGUNDA LISTA AUMENTADOS EN UN
30%
2.- CAPTURAR EN UNA LISTA LOS PESOS EN KILOGRAMOS DE 6
PERSONAS
DESPLEGARLOS
EN
UNA
SEGUNDA
LISTA
CONVERTIDOS A LIBRAS Y ADEMAS SOLO LOS MAYORES DE 100
LIBRAS.
3.- CAPTURAR EN SUS 4 LISTAS RESPECTIVAS MATRICULA,
NOMBRE Y DOS CALIFICACIONES DE 5 ALUMNOS, DESPUES
CALCULAR UNA LISTA DE PROMEDIOS DE CALIFICACIONES.
4.- CAPTURAR EN SUS LISTAS RESPECTIVAS NUMEMPLEADO,
NOMEMPLEADO, DIAS TRABAJADOS Y SUELDO DIARIO DE 5
EMPLEADOS, DESPLEGAR EN OTRA PANTALLA O PANEL LA
NOMINA PERO SOLO DE AQUELLOS EMPLEADOS QUE GANAN
MAS DE $300.00 A LA SEMANA.
6.- COMPONENTE StringGrid (adicional) DELPHI

Este componente es de los mas importantes, para el procesamiento de muchos


datos, permite concentrar, procesar y mostrar gran cantidad de informacin
para la vista del usuario.
Este componente presenta, manipula y procesa conjuntos de datos de tipo
strings en forma tabular, es decir en forma de tablas, matrices, cuadros
concentrados, ejemplo;
CIA ACME
INGRESOS POR VENTAS MENSUALES
MILLONES DE PESOS
ENE FEB MAR ABR
SUC A 1 2 3 4
SUC B 5 6 4 5
SUC C 6 7 8 9
Recordar que son los datos numricos internos quienes se procesan (es decir,
se capturan, se realizan operaciones con ellos, se despliegan, etc.), es la
informacin externa quien le da sentido.
Y RECORDAR QUE SUS INDICES EMPIEZAN EN RENGLON=0 y
COLUMNA=0.
Algunas de sus propiedades y mtodos mas interesantes son:

ColCount.- Determina la cantidad de columnas que contendr la tabla.


Recordar que para efectos de programacin, la primera de ellas es la columna
0.
RowCount.- Determina la cantidad de renglones que contendr la tabla.
Recordar que para efectos de programacin, el primero de ellos es el rengln
0.

Fixedcol , Fixedrow.- Determinan la cantidad de columnas y renglones fijos o


de encabezado, estas propiedades ponerlas en 0.
+Options, goediting = true; Para que permita editar o capturar datos al
usuario.
+Options, gotab = true; Para que el usuario pueda navegar entre celdas usando
la tecla del tabulador.
Cells[columna,rengln], Es la propiedad mas importante, porque es la que
permite el acceso a cualquier celda de la tabla, ej.
StringGrid1.Cells[1,1] := 'PATO';
Edit1.Text=StringGrid1.Cells[0,0];

Las dems propiedades investigarlas en la ayuda del borland delphi .


Para procesar todos los elementos de la tabla, solo recordar que se deben usar
dos ciclos for uno externo para controlar columnas y uno interno para
controlar rengln ( observar que es lo inverso de las tablas o arreglos
normales).
Ejemplo capturar una tabla de 3 * 4 enteros, y restarles 4 despus;
Pantalla de Diseo: (inspector objetos)

FORM1:

Programa;
procedure TForm1.Button1Click(Sender: TObject);
var
c,r,temp:integer;

begin
for c:=0 to 2 do begin
for r:=0 to 3 do
begin
temp:= StrToInt(StringGrid1.Cells[c,r])-4;
StringGrid1.Cells[c,r] := IntToStr(temp);
end; end; end;
Pantalla de Corrida:

[[|Un proceso muy comn con tablas, cuadros y concentrados es agregarles


listas [[|[[|de totales y promedios ya sea por columna o por rengln o ambas ,
por ejemplo;]]]]]]
CIA ACME
INGRESOS MENSUALES
(MILES DE PESOS)
ENE FEB MARZO TOTALSUC PROMSUC
SUC A 1 2 3 6 2

SUC B 4 5 6 15 5
SUC C 7 8 9 24 8
SUC D 10 11 12 33 11
TOTMES 22 26 30
PROMMES 5.5 6.5 7.8
En este ejemplo aparte de la tabla se ocupan 4 listas, dos para totales y dos
para promedios.
El cdigo en C++ es sencillo, pero cambiarlo a borland delphi, recordarlo y
aprenderlo para siempre:
//declaracin
float tabla[4][3], totsuc[4], promsuc[4];
float totmes[3], promes[3];
//observar tamaos de listas que referencian rengln
// listas que referencian columnas, se supone que la tabla // ya esta capturada.
//cdigo para operaciones para totales y promedios //renglones por sucursal:
for(reng=0;reng<=3;reng++)
for(col=0;col<=2;col++)
{ totsuc[reng]=totsuc[reng]+tabla[reng][col]; };
for(reng=0;reng<=3;reng++) promsuc[reng]=totsuc[reng] / 3.0 ;
// operaciones para totales y promedios por mes
for(reng=0;reng<=3;reng++)

for(col=0;col<=2;col++)
{totmes[col]=totmes[col]+tabla[reng][col]; };
for (col=0;col<=2;col++) prommes[col]=totmes[col]/4.0;
TAREAS PROGRAMACION BORLAND DELPHI
1.- Construir un concentrado que despliegue los costos fijos de tres diversos
productos que se fabrican en cuatro sucursales de una empresa
MAQUILADORA.
2.- Construir un concentrado que contenga los ingresos por ventas mensuales
de los 4 primeros meses del ao de tres sucursales de una cadena
refaccionara, agregar listas de ingresos totales por mes e ingresos promedios
por sucursal.
3.- Construir un cuadro que contenga las calificaciones de 5 materias de cuatro
alumnos cualesquiera, incluir promedios de calificaciones por materia y por
alumno.
IV UNIDAD BORLAND DELPHI INT A LAS BASES DE DATOS
1.- INTRODUCCION DELPHI

En este capitulo se analizan en general dos problemas:


Variables que permitan almacenar conjuntos de datos como los arreglos pero
de distintos tipos de datos, este primer problema se resolva en la antigedad
usando las llamadas variables registro, o tipo struct en C.
Permanencia de los datos, hasta ahora todos los datos capturados, calculados,
creados, etc. al terminar o cerrarse el programa se pierden y es necesario
volver a capturarlos, etc., en la siguiente ejecucin o corrida del programa.
Tradicionalmente en programacin antigua este segundo problema se resolva
usando el concepto de archivos, que son medios permanentes de
almacenamiento de datos en los dispositivos o perifricos apropiados,
generalmente disco, cinta magntica, etc.

2.- MODELOS DE ALMACENAMIENTO DE DATOS DELPHI

En general existen dos modelos de almacenamiento de datos en los sistemas


de informacin.
El modelo tradicional de archivos que se construye con los siguientes
elementos:
a.1) Variables Registros, como ya se indico son variables que permiten
almacenar conjuntos de datos de diverso tipo.
Tambin se pueden definir como representaciones simblicas y programaticas
de entidades lgicas de informacin, ejemplos de variables registros son
alumnos, empleados, clientes, proveedores, productos, autos, etc.
Esta variables registros, tambin ocupan programas o rutinas de programas
para procesarlas, por ejemplo un procedimiento, modulo o subrutina, se
encargara de capturar los datos que contendr la variable registro, otro
procedimiento para corregir los datos que ya contiene, otro procedimiento
para desplegarlos en pantalla ya cuando ha sido capturada y as
sucesivamente.
a.2) Archivos, que en principio pueden entenderse como una especie de
almacenes o bodegas para almacenamiento de datos en forma permanente en
disco, es decir un archivo de empleados en disco contiene todos los datos de
todos los empleados de una empresa.
Igualmente los archivos ocupan su propios programas o subrutinas o
procedimientos especializados por ejemplo, procedimientos para crear los
archivos, para almacenar o dar de altas los registros en el archivo,
procedimientos para buscar un registro determinado, procedimiento para dar
de baja un registro, etc.
a.3) Una aplicacin, que es un programa que se encarga de coordinar todos los
programas descritos y presentrselos a los usuarios de manera clara, fcil y
accesible y entendible.
Salta a la vista que construir un sistema de informacin por ejemplo para una
tienda de vdeo o para un refaccionara, etc. involucra un gran cantidad de

trabajo de programacin, puesto que hay que programar muchas variables


registros, muchos archivos en disco, y una o varias aplicaciones.
Este modelo se usa todava en la actualidad, pero es obvio que mejores
maneras, mas rpidas, seguras y eficientes existen en la actualidad para
resolver estos problemas, y esto nos lleva al segundo modelo de datos.
[[|Modelo de Bases de Datos Relacinales, este modelo intenta simplificar
la construccin de sistemas de informacin como los antes descritos, este
modelo solo incluye en forma simple los siguientes elementos:]]
Tablas es una combinacin de las variables registro y de los archivos del
modelo anterior.
Es decir cuando un programador moderno define o declara una tabla en un
programa, realmente esta haciendo dos cosas por el precio de una, es decir
crea una variable registro en memoria que almacenara los datos y al mismo
tiempo ya esta creando un archivo en disco que se llamara igual que la tabla o
variable registro y que automticamente se convertir en un espejo de la tabla
en memoria, es decir cuando se cargan los datos en la tabla en memoria,
tambin se estarn cargando ala vez en disco.
Otra vez cuando el programador escribe cdigo para capturar los datos y
mandarlos a la tabla en pantalla-memoria, realmente tambin lo esta haciendo
para darlos de alta en disco.
Aplicacin, que tiene la misma funcin que en el modelo anterior.
No confundir este concepto de tablas en base de datos con el concepto de
tablas, vistos en el capitulo de arreglos, aunque en la practica se parecen
mucho la diferencia es que los datos no se van a disco.
Como se observa en este modelo, es mas sencillo construir sistemas de
informacin con el, puesto que la parte programatica se reduce ampliamente.
3.- TABLAS DELPHI

Una Tabla simple, representa una unidad de informacin de una entidad lgica
de informacin:

Tabla Empleado:
Clave Empleado
Nombre Empleado
Direccin Empleado
Edad Empleado
Telfono Empleado
etc. Empleado

Tabla Proveedor:
Clave Proveedor
Nombre Proveedor
Empresa Proveedor
Telfono Proveedor
Fax Proveedor
Celular Proveedor
etc. Proveedor

Tabla Autos:
Numero de Serie
Modelo

Marca
Tipo
Color
Capacidad
etc.

Observar que cada tabla, empieza con una clave generalmente de tipo
numrica.
Todos los elementos de la tabla, solo hacen referencia hacia el mismo ente o
sujeto de informacin.
Cada elemento solo representa o debe contener un solo dato de informacin.
No se respetan o siguen al pie de la letra estos tres postulados y empiezan los
problemas al tiempo de programacin.
Existe una segunda forma o manera de representar las tablas, ejemplo:

Tabla: Camisas
NumCamisa Marca Estilo Medida Color Material
1 Jeans Manga Corta Grande Azul Algodn
2 Volis Camiseta Mediana Negra Poliester
3 Genrica Manga Larga Chica Morado Rayn
etc. etc. etc. etc. etc. etc.

Tabla: Clientes

NumCliente NomCliente DirCliente TelCliente


1 Juan Prez Av. aba 121212
2 Luis Prez calle zeta 898989
3 Jos Prez cjon sss 000000
etc. etc. etc. etc.

Recordar siempre, una tabla almacena o representa un conjunto de datos


relacionados entre si, la tabla de alumnos es para almacenar y manipular
muchos alumnos, la tabla de productos es para almacenar y manipular muchos
alumnos, en resumen si en un problema de informacin solo se presenta una
instancia o rengln de una entidad lgica, entonces no es tabla, es un
encabezado.
TAREAS PROGRAMACION BORLAND DELPHI
1.- CONSTRUIR EN CUADERNO LAS SIGUIENTES TABLAS, LA
MITAD DE ELLAS CON EL PRIMER FORMATO Y LA SEGUNDA
MITAD CON EL SEGUNDO FORMATO.
1.- PACIENTES
2.- PERROS
3.- PLUMAS
4.- MERCANCIAS
5.- PELICULAS
6.- MEDICINAS
7.- MAESTROS
8.- MATERIAS
9.- COMPUTADORAS

10.- BANCOS
4.- TABLAS (CONTINUACION)

El trabajo correcto con bases de datos relacinales, se divide en dos grandes


pasos o etapas bien diferenciadas entre si:
En la primera etapa se disea la tabla , con sus campos, llaves y condiciones
especiales, luego se usa un paquete o programa de software especializado en
la construccin, mantenimiento y administracin de la base de datos, este
software se usa para convertir la tabla o tablas ya bien diseadas en un archivo
en disco.
Estos paquetes, o software reciben el nombre de DBMS(DATA BASE
MANAGEMENT SYSTEM) o sistema administrador de bases de datos.
Este software se especializa en la creacin, mantenimiento, seguridad,
privacidad, etc. de un conjunto de tablas o mejor dicho una base de datos, los
DBMS mas comunes son Oracle, SqlServer, Informix, Sysbase, etc.
Borland la compaa que fabrica C++Builder, proporciona junto con el
BORLAND DELPHI , un mini DBMS llamado DataBase Desktop, mismo
que se encuentra en el mismo folder o subdirectorio que el BORLAND
DELPHI, y que tambin se usara para construir las tablas y/o archivos fsicos.
La segunda etapa consiste en construir la aplicacin o aplicaciones que ya
tendrn acceso o podrn manipular los datos contenidos en la tabla, estas
aplicaciones se escriben usando ya sea lenguajes clsicos de programacin
como BASIC, PASCAL, COBOL, CBUILDER, DELPHI, etc., o tambin se
pueden accesar paquetes comunes de manipulacin de archivos o bases de
datos como DBASE, CLIPPER, VISUALFOX, ACCESS, etc.
DISEO Y CREACION DE UNA TABLA
El primer paso antes de usar el paquete correspondiente a esta tarea, es disear
la tabla completamente, esto exige:
1. Nombre apropiado
correspondientes

determinacin

de

atributos

campos

2. Seleccionar y determinar el atributo principal o campo clave o llave


primaria que se utiliza como el identificador nico que permite
diferenciar cada instancia o rengln diferente dentro de la tabla.
3. Tambin se puede seleccionar otros campos que puedan servir mas
adelante para ordenar de manera diferente la tabla, es decir una tabla en
principio ya est ordenada por el campo clave, por ejemplo, la matricula
de un alumno, el numero de empleado, etc., pero existirn muchas
ocasiones mas adelante donde se puede pedir un orden diferente, por
ejemplo, por ciudad, por carrera, por nombre, por edad, etc., la buena
ingeniera de una base de datos exige tomar en cuenta estos y otros
muchos problemas y detalles.
A estos atributos o campos especiales se les conoce como claves o llaves
secundarias, que internamente generan otra tabla especial llamada tabla o
archivo de ndices, (tabla o archivo que contiene dos campos,
el primero es la clave secundaria ordenada y el segundo la posicin o rengln
donde se encuentra en la tabla original).
1. Escribir restricciones y condiciones apropiadas para ciertos atributos ,
por ejemplo el nmero de empleado deben comenzar en 500, la edad no
debe ser mayor de 150 aos, etc.
Ya listo el diseo de la tabla, se pasa a el programa correspondiente para su
creacin y almacenamiento, dicho programa que se encuentra dentro de el
folder o subdirectorio de BORLAND DELPHI y como ya se dijo es:
5.- DATABASE DESKTOP DELPHI

No es un componente de la barra de herramientas, es el icono de un programa


que se encuentra en el mismo folder o directorio que el C++Builder.
El procedimiento completo para construir la tabla, es:

Primero crear un folder o subdirectorio especial en el disco duro C:, para


guardar o almacenar las tablas o base de datos (conjunto de tablas), esto se
hace con un click en My Computer, luego click en disco C;, luego File, New
Folder, y renombrarlo por ejemplo a Datos1, o Tablas o Base de Datos (Win95
permite directorios con espacios en blanco intermedios).
a) Ahora cargar o ejecutar el DESKTOP DATABASE ( SE ENCUENTRA
EN PROGRAM FILES\BORLAND\DATABASE\DESKTOP)
La pantalla de entrada es:

b) Crear una nueva con file, new, table, DD pregunta cual formato de tabla se
va a usar;

c) El formato a seleccionar es Paradox 7,(Borland es la compaa propietaria


de los arriba mencionados, otras versiones de BORLAND DELPHI ya traen

licencias para nuevos tipos, como Access, etc.), ya hecha la seleccin


entramos a el siguiente editor de tablas:

Tomar nota de las dos reas del editor, la primera de ellas es el field roster y
la segunda rea es la de propiedades de la tabla.
d) Se usa ahora la primera rea, para escribir los campos o atributos de la
tabla, la segunda columna es el tipo de dato del atributo, para asignar un tipo
de dato a un atributo, pulsar dos veces la barra espaciadora en el teclado para
que salga la siguiente lista de tipos de datos:

Como se observa existen muchos e interesantes tipos de datos, de momento


solo usar los mas comunes, enteros, short, numricos, y alpha para el caso de
strings.
La opcin size(tamao) solo se usa cuando el campo es de tipo string
( ALPHA) y se tiene que dar el tamao de la string, por ejemplo en campo
Direccin el size o tamao es 30.
La opcin Key, es para marcar un atributo o campo, como llave primaria, o
llave principal de las instancias o renglones u objetos diferentes de la tabla,
para marcar un campo como llave primaria, solo dobleclick en esta opcin
Key.
e) La segunda rea de la tabla, son las propiedades de la tabla, todas las
propiedades de la tabla estn dentro del siguiente combobox.

Todas y cada una de las propiedades, se definen abajo en la parte de


propiedades del editor de tablas, es decir la propiedad validity check tiene
como elementos:

[] campo requerido
[] valor mnimo
[] valor mximo
[] valor de default
[] picture(mascarilla de edicin)
La propiedad siguiente tiene sus propios elementos y as sucesivamente.
De momento solamente dejar las propiedades o sus partes en blanco.
f) No olvidar usar la opcin SAVE abajo para guardar la tabla, en esta parte
sale la ventana normal de Windows para grabacin, esa ventana donde se
puede crear un nuevo folder, etc., solo buscar el directorio que se creo al
principio de la sesin con my computer, abrirlo(OPEN) y escribir un nombre
apropiado para la tabla por ejemplo (MITABLA).
Ya creada la tabla, es conveniente cargarle unos cuantos renglones registros o
datos para pruebas, esto se hace con:
c.1) Usar el icono de OPEN tabla

y seleccionar la tabla a cargar.

c.2) Entrar al modo de edicin usando la opcion TABLE EDIT TABLE o


TECLA F9 o icono EDIT
(para que se vea este icono maximizar

DATABASE DESKTOP) y ya se puede empezar a capturar los datos en cada


rengln.
c.3) Para terminar solo click en la X arriba en la tabla respectiva.
Ejemplo de una tabla;

Recordar que como la clave es de tipo AUTOINCREMENT en mi ejemplo, no


se ocupa capturarla, solo capturar el resto del renglon y cambiarse de renglon,
para que database desktop la cargue.
Recordar que todos los cambios hechos a una, aadir, insertar, eliminar,
modificar, etc quedan grabados automticamente en disco, este hecho es la
razn por lo que no existe una opcin de grabar un rengln o registro
cualesquiera.
Ahora si, ya creada, declarada o definida la tabla, es tiempo ahora de construir
la aplicacin, para esto se usara nuevamente el BORLAND DELPHI

6.- APLICACIONES O PROGRAMAS CON TABLAS DELPHI

Bsicamente una aplicacin consiste de un programa o forma que permite


accesar, manipular, editar, procesar, etctera, los datos, registros, o renglones
de una tabla, es decir es la aplicacin la que constituye, la vista sobre la que
trabaja el usuario del programa.
Como ya se explico en el modelo tradicional de almacenamiento de datos,
existan muchos procesos, tanto para la manipulacin de registros en memoria,
capturas, modificaciones, etc., como para el almacenamiento de todos ellos en
archivos en disco, el famoso ABC de un sistema de archivos (altas, bajas,
consultas, modificaciones, etc.) y todos ellos haba que construirlos
programarlos a mano, era terrible la situacin de los programadores de antao.
En el modelo relacional visual de datos, mucho de este trabajo no existe, solo
se construye una forma, y se pegan unos cuantos componentes para que
aparezcan las propias tablas y componentes para que se procesen los datos que
contendrn la tablas.
Recordar tambin que la aplicacin ya no deber preocuparse, donde se
almacenan los datos, de validar las condiciones y restricciones impuestas en
ellos, etc., todo este trabajo ahora es responsabilidad del miniDBMS que
usado, el DataBase Desktop.
En Borland Delphi existen dos maneras sencillas de construir
aplicaciones, la primera de ellas es presentarle al usuario un solo rengln
de informacin para su proceso y manipulacin y la segunda es
presentarle toda la tabla a la vez, tambin para su manipulacin y
proceso.
7.- APLICACIONES POR RENGLON DELPHI

Para construir una aplicacin, presentndole un solo rengln al usuario para su


procesamiento en Borland Delphi solo se ocupa una forma (Form1) y cuatro
componentes diferentes de acceso y manipulacin de tablas, estos cuatro
componentes son:
PROCEDIMIENTO Y COMPONENTES

1.- Colocar un componente Table (Data Access )


en algn lugar de la
forma donde no estorbe( este componente quedara flotando y no aparece al
momento de ejecucin del programa).
Este componente Table, sirve de enlace fsico entre la tabla real que se creo
con el DataBase Desktop y el resto de los componentes que se usaran para la
construccin de la aplicacin.
Sus tres propiedades mas importantes son:
Propiedad DataBaseName = Solo escribir el directorio donde se
encuentra la tabla real, por ejemplo c:\datos
Propiedad TableName = Solo click a un lado de esta propiedad y
seleccionar la tabla a usar, por ejemplo seleccionar la tabla de clientes.
Propiedad Active = Ponerlo en valor True.
2.- Colocar un componente DataSource (Data Access)
lugar en la forma donde no estorbe.

tambin en algn

Este Componente acta como el enlace fsico entre el Componente Table y el


resto de componentes que procesan los datos de la tabla, es decir el
componente Table apunta a la tabla real en disco, el componente DataSource
apunta al componente Table, y el resto de los componentes apuntan a
DataSource.
Su nica propiedad a modificar es:
Propiedad DataSet = Click a un lado y seleccionar el componente Table al que
se quiere enlazar, por ejemplo Table1.
3.- Componente DBEdit (Data Controls)

Este componente permite presentar y manipular un dato de la tabla a la vez.


Es un componente muy similar al componente Edit y comparte muchas de las
propiedades y mtodos de este ultimo, su diferencia principal es que Edit,

carga sus datos desde el usuario y DBEdit los carga desde la tabla almacenada
en disco.
De este componente se deben colocar tantos de ellos en la forma, como
columnas existan en la tabla a procesar.
Sus dos propiedades mas importantes y en el orden abajo descrito son:
Propiedad DataSource = Click a un lado y seleccionar el DataSource al que se
quiere enlazar, por ejemplo DataSource1.
Propiedad DataField = Click a un lado y seleccionar el campo o atributo o
columna que se quiere representar o enlazar por ejemplo ClaveCliente,
NomCliente, etc.
Recordar que se deben colocar tantos DBEdit en la forma, como columnas
existan en la tabla, o como columnas se quieran presentar al usuario para su
manipulacin.
Recordar poner unos cuantos componentes Label, arriba del componente
DBEdit y cargarlos en su propiedad caption con el nombre del campo o
columna respectivo.
4.- Componente DBNavigator (Data Controls)

Este componente contiene todos los procesos mas usuales para la


manipulacin y procesamiento de los datos en renglones de la tabla.
Su aspecto fsico en pantalla es:

como se observa, es una pequea barra de botones, donde cada uno de


ellos, representa y ejecuta un proceso con todo un rengln de la tabla,
dichos procesos son:
Button Significado

First Regreso al primer registro o rengln de la tabla.

Prior Regreso a registro o rengln anterior.


Next Avanza al siguiente rengln.
Last Avanza a el ultimo rengln.
Insert Inserta un nuevo rengln en la tabla.
Delete Borra o elimina el rengln o registro actual.
Edit Pone el registro actual en estado de edicin para su modificacin
Post Graba el registro o rengln actual en la tabla en disco.
Cancel Cancela modo edicin y restaura los datos anteriores que tenia el
rengln.
Refresh Refresca o regraba toda la informacin.

Recordar poner unos cuantos componentes Label arriba de los botones del
navegador para su aclaracin, uso y manejo al usuario.
Sus dos propiedades mas importantes son:
Propiedad DataSource = Click a un lado y seleccionar el DataSource al que se
quiere enlazar, por ejemplo DataSource1.
Propiedad +VisibleButtons = Click en el signo +, para activar(True) o
desactivar(False) los botones de proceso de renglones de la tabla, que se
quieran mostrar u ocultar al usuario.
Con estos cuatro componentes ya se construye una aplicacin, ejemplo;
Pantalla de Diseo:

Pantalla de ejecucin:

TAREAS PROGRAMACION BORLAND DELPHI


1.- Construir aplicaciones para la mitad de las tablas hechas en el DataBase
Desktop.
8.- APLICACION POR TABLA DELPHI
En este tipo de aplicacin, al usuario se le presenta toda la tabla completa a la
vez para su procesamiento y manipulacin.

Para construir esta tipo de aplicacin, solo se ocupan tres componentes y dos
de ellos ya son conocidos, estos componentes son:
Componente Table ( Data Access)
propiedad DataBaseName = c:\datos
propiedad TableName = Clientes.db
propiedad Active = True
Componente DataSource ( Data Access)
propiedad Dataset = Table1
Componente DBGrid ( Data Controls)
Este componente le presenta todos los renglones a la vez al usuario para su
procesamiento, en un formato muy similar al visto en el componente
StringGrid.
Su propiedad mas comn es:
DataSource = Click a un lado de la propiedad, para seleccionar el
DataSource respectivo a enlazar, por ejemplo DataSource1.
Una caracterstica interesante, es que este componente DBGrid, trae asociado
un editor de columnas, solo poner el componente DBGrid en la forma,
enlazarlo al DataSource y luego doble click dentro del DBGrid y aparece el
siguiente editor:

Primero usar el botn Add All Fields para cargar todos los campos columnas a
la primera ventana y de esta ventana ir seleccionando el campo o columna a
procesar, observar que se pueden agregar nuevas columnas, o eliminar
columnas existentes y para cada columna que se vaya seleccionando ya
funciona la segunda parte del editor.
Componente DBNavigator( Data Access)
propiedad DataSource = DataSource1
propiedad +VisibleButtons = activar o desactivar los botones
apropiados
Aunque este componente no se ocupa en este tipo de aplicacin, puesto que el
usuario puede realizar todos los procesos bsicos directamente dentro de la
tabla, es conveniente poner un navegador para darle una segunda opcin o
manera de realizar los procesos bsicos.
Un ejemplo de aplicacin con esta estructura es:
Pantalla de Diseo

Pantalla de ejecucin:

TAREAS PROGRAMACION BORLAND DELPHI


1.- CONSTRUIR APLICACIONES CON ESTE FORMATO PARA LA
SEGUNDA MITAD DE LAS TABLAS CREADAS CON EL DATABASE
DESKTOP.
9.- PROCESOS BASICOS DELPHI

Analizaremos ahora algunos procesos tambin bsicos que pueden realizarse


con los dos tipos de aplicaciones y que adems no estn contemplados en
algunos de los botones del navegador.
OPERACIONES CON CAMPOS
Para el caso de aplicaciones construidas con componentes DBEdit, recordar
que comparte muchas propiedades y mtodos con el componente edit, as que
es valido por ejemplo en una aplicacin donde la tabla tiene el campo edad en
DBEdit3) poner un componente edit1 para desplegarlos en meses y realizar la
siguiente operacin en el onclick de un botn apropiado como lo muestra el
siguiente programa ejemplo
procedure TForm1.Button1Click(Sender: TObject);
var
meses:integer;
begin
meses := StrToInt(DBEdit3.Text) * 12;
Edit1.Text := IntToStr(meses);
end;
corrida:

Como se observa se puede accesar y manipular los componentes DBEdit


usando la propiedad Text, tanto para leerlos como para cargarlos.
TAREAS PROGRAMAS BORLAND DELPHI :
1.- Una tabla de productos con campos costounitario, margen de utilidad y
tasa de iva, calcular el precio de venta.
a.2) Para el caso de aplicaciones con DBGrid, se pueden accesar sus celdas
para su lectura y proceso usando cdigo como en el siguiente ejemplo, en
algn botn o evento apropiado:
procedure TForm1.Button1Click(Sender: TObject);
var
temp:integer;
begin
temp:= DBGrid1.Fields[2].AsInteger * 5;
Edit1.Text:=IntToStr(temp);
end;

Observar la propiedad Fields[col], es para indicar la columna deseada y


adems comienza en la 0(cero), recordar adems que este acceso ser
realizado solamente sobre el rengln seleccionado en la tabla (aquel que esta
seleccionado con un *).
Tambin se esta usando el mtodo AsInteger para leerlo como entero.
Es conveniente usar la ayuda del borland delphi para el componente DBGrid
para conocer todas sus propiedades y mtodos.
Para cargar una celda con un nuevo valor, usar cdigo como el siguiente en
algn botn o evento apropiado.
Onclickbutton5(){
DBGrid1.Edit();
DBGrid1.Fields[3].Value = 300;
}
1.- Observar que son dos pasos en el primero se pone todo el DBGrid en modo
de edicin y en el segundo se carga ya la celda seleccionada con el nuevo
valor.
2.- Recordar que el cambio es en una celda de un solo rengln y es el rengln
seleccionado.
3.- Como primera nota interesante, esta propiedad Edit() es tambin la del
navegador, es decir es valido DBGrid1.First, etc.
4.- Para la modificacin de la celda, se usaron otra vez la propiedad
Fields[col] y mtodo Vale recordar nuevamente estudiar propiedades y
mtodos de DBGrid.
TAREAS PROGRAMACION BORLAND DELPHI
1.- La misma tarea anterior, pero ahora con tabla.
10.- BUSQUEDAS DELPHI

Un problema muy comn en los sistemas de informacin basados en bases de


datos es el de bsquedas en estos casos el usuario proporciona un dato,
generalmente la clave del registro, para que se localice toda la informacin
pertinente.
Para resolver este problema, solo se ocupa:
a) Una aplicacin construida por rengln, es decir con DBEdit para desplegar
el resultado.
b) Un Edit para almacenar el dato o valor a buscar por parte del usuario.
c) Haber estudiado la ayuda del borland delphi para las propiedades y mtodos
del componente Table.
- Un botn de ordenes (OK) con el siguiente cdigo:
procedure TForm1.Button1Click(Sender: TObject);
var
temp:integer;
opcion:TLocateOptions;
begin
Table1.Locate('NOMBRE',Edit1.Text,[]);
end;
corrida:

Los parmetros del mtodo Locate(), son;


Locate(Columna de bsqueda ,Dato a buscar , [loCaseInsensitive,
loPartialKey]);
cuando opcin = loCaseInsensitive ignora diferencia entre maysculas y
minsculas
cuando opcin = loPartialKey resultado parcial, ejemplo si se busca ju se
posesiona en el primer rengln donde ese campo empiece con ju, ejemplo
Juan, juvenal, etc.
TAREAS PROGRAMACION BORLAND DELPHI
1.- CONSTRUIR UNA APLICACION DE BUSQUEDAS PARA UNA
TABLA DE AUTOS, CON OPCIONES DE BUSQUEDA POR CLAVE,
MODELO, COLOR, PRECIO.
11.- FILTROS DELPHI

Un filtro es una condicin que permite desplegar solo determinada


informacin de una tabla.

Es decir, en ocasiones solo se quiere desplegar informacin condicionada al


usuario, por ejemplo de la tabla de clientes solo desplegar aquellos que sean
de la ciudad de Tijuana, de la tabla de autos, solo desplegar aquellos de
modelo 1990 en adelante.
Como se observa, filtrar una tabla, es condicionar uno o mas campos o
columnas.
Filtros o condiciones se tendrn que programar tomando en cuenta a como
Pascal maneja las constantes strings, los operadores relacinales y los
operadores lgicos.__
a) Datos o constantes strings en PASCAL, van encerrados entre
apstrofes( comillas sencillas), ejemplo 'Juan', 'Tijuana', etc.
b) Los operadores relacinales son ( =, >, <, >=, , <> ).
c) Los operadores lgicos son ( and, or, not ).
Existen dos maneras de poner filtros o condiciones para una tabla, ellas son:
1.- Interna, debe haber un DBGrid en la aplicacin y para el componente
Table, modificar las siguientes propiedades:
propiedad Filter = condicin, ejemplos para la tabla de clientes:
= ClaveCliente < 3
= Ciudad <> 'Tijuana'
= ClaveCliente > 2 and Ciudad = 'Tijuana'
propiedad Filtered = true
2,- Externa, es el usuario quien construye el filtro o condicin, usando un
componente Edit para el filtro y un botn de ordenes (OK) para que se ejecute
y despliegue la tabla filtrada, el cdigo en dicho botn es;
onclickbutton1()
{

Table1.Filter = Edit1.Text;
Table1.Filtered = true;
}
TAREAS PROGRAMACION BORLAND DELPHI
1.- UNA TABLA DE AUTOS FILTRADA INTERNAMENTE POR COLOR
AZUL Y MODELO DE 1990 EN ADELANTE.
2.- UNA TABLA DE PROVEEDORES Y QUE SEA EL USUARIO QUIEN
CONSTRUYA EL FILTRO O CONDICION.
13.- QREPORT BORLAND DELPHI

Imprimir tablas o construir reportes sobre las mismas, es tambin una tarea
comn en los sistemas de informacin basados en bases de datos.
Lo bueno es que se tiene un folder o pestaa llamada QReport cargada de
componentes visuales especializados en la impresin de reportes, esta librera
de componentes, no es hecha por Borland, es hecha por una compaa llamada
QSOFT
QReport
Practica para construir un reporte que contiene la cdula de un y solamente un
cliente de la tabla de clientes.
Los componentes y propiedades a usar son:
1.- Table1
DataBaseName = c:\datos
TableName = Clientes.db
Active = true

Filter = ClaveCliente = 2 (observar que aqu es donde se determina cual


cliente se imprime)
Filtered = true
2.- QuickRep1, se encuentra en pestaa QReport.
Es el componente principal para impresin.
Toma la forma y tamao de una hoja de impresora dentro de Form1.
Sus propiedades a usar son:
Dataset = Table1
Zoom = 50
3.- QRShape1
Se usara para crear un rectngulo para encabezados de la cdula de un cliente.
Son varios tipos o formas las que existen de QRShape, rectngulos, lneas,
crculos, etc., rectngulo es default, y la propiedad para cambiar de forma es
Shape.
Acomodarlo y expanderlo en la parte superior de la hoja de impresin
(QickRep1).
Sus propiedades a usar son:
- +Pen = Click en signo + y poner:
Color = clgreen
Width = 5
4.- QRLabel1
Similar a label, contienen textos o mensajes estticos.
Colocarlo dentro del rectngulo o seccin de encabezado.

Propiedades:
Caption = CIA ACME
+Font = dar color y tamao de font
5.- QRSysData1
Componente especiales que contienen datos fijos de impresin, tales como
numero de pagina, fecha, hora, etc.
Colocarlo tambin dentro de la seccin o banda de encabezado.
propiedades:
Data = click a un lado y seleccionar qrsdate
6.- QRSysData2
Otro del anterior, colocarlo dentro de la banda de encabezado, propiedad
Data = click a un lado y seleccionar qrsPageNumber
7.- QRShape2
Con este se forma ahora un seccin, rectngulo o banda principal.
Cuando un reporte, imprime mas de un rengln, por ejemplo todos los
clientes, esta parte de la hoja recibe el nombre de banda de detalle.
Propiedades:
- +Pen = darle color y tamao(Width) apropiados.
8.- QRLabel###
Colocar varios dentro de la banda de detalle, con caption apropiado, ejemplo,
clave, nombre, foto, etc.
9.- QRDBText1

Componente para desplegar cada dato de una celda o campo o columna de una
tabla, es similar a DBEdit pero es esttico, es decir solo despliega.
Se debern poner tantos componentes QRDBText en esta banda o seccin de
detalle, como columnas de datos existan o se quieran desplegar de la tabla.
Propiedades:
Dataset = Table1
DataField = seleccionar columna apropiada
Font = color, tamao, etc. que se quieran
10 .-QRDBImage
Componente para desplegar e imprimir campos de tipo Graphics ( BMP, ICO,
WFW).
Propiedades:
Dataset = Table1
DataField = Seleccionar una columna de tipo Graphics
Stretch = true
Notas:
1.- El componente QuickRep, tiene la propiedad +Frame, para que tambin
pueda desplegar e imprimir un marco apropiado.
2.- Para ir desplegando un Preview de impresin al tiempo del diseo del
reporte, solo dobleclick dentro de la hoja de impresin (QuickRep) para que
aparezca una ventana de Preview de impresin.
3.- Para Preview o impresin en tiempo de ejecucin, solo aadir un botn de
ordenes OK, y usar solo una de las siguientes instrucciones:
OnClickButton1() {

QuickRep1.Preview();
o QuickRep1.Print();
solo

una

de

las

dos

ejemplo:

a)Pantalla

de

diseo

b)Programa:
<code>
Button1Click(TObject *Sender)
QuickRep1.Preview();

</code>

c)Pantalla

de

d)Pantalla

corrida:

de

Preview

durante

ejecucin:

bueno parte de
ella. TAREAS PROGRAMACION BORLAND DELPHI 1.- REPORTE CON
UN AUTO DE LA TABLA DE AUTOS 2.- REPORTE DE UN PROVEEDOR,
DE LA TABLA DE PROVEEDORES, PERO EL USUARIO SELECCIONA EL
FILTRO O LA CLAVE DEL PROVEEDOR ( CONSTRUIR DOS PANTALLAS,
UNA CON EL FILTRO Y BOTON DE IMPRESION O PREVIEW Y LA
SEGUNDA CON EL REPORTE).
14.- REPORTES DELPHI

Imprimir toda la tabla significa muchas hojas de impresora.


Primero se deber quitar el filtro en la tabla y segundo entender lo que tienen
en comn todas las hojas de impresora que se ocupan para imprimir la tabla.
Primero todas las hojas ocupan un mismo encabezado o un mismo pie de
pagina, donde puede ir por ejemplo la fecha o el numero de pagina.
La primera hoja de todo el reporte, cuando menos debe llevar una banda de
titulo, con el nombre de la compaa, el titulo y propsito de la tabla, la fecha,
etc.

Todo los renglones de la tabla, ocuparan muchas hojas de impresora para


desplegarse, incluyendo un encabezado para todas las columnas que estn en
la hoja, repito necesitamos un encabezado para columnas y que aparezca en
todas las paginas.
Probablemente, en la hoja final, seria conveniente aadir algunos contadores y
acumuladores, por ejemplo la cantidad de renglones, algn acumulado de
alguna columna numrica en especial, etc.
QReport, usa este modelo de bandas para la construccin de reportes, es decir,
en la practica anterior se uso un componente QRShape, para dividir el reporte
en dos partes, secciones o bandas, pero QReport trae incorporado un
componente llamado QRBand que permite dividir en partes, secciones o
bandas todo el reporte.
Este componente QRBand, en su propiedad BandType, permite construir los
siguientes seis tipos importantes de banda.
BANDA NOTAS

PAGE HEADER Banda de encabezados de paginas.


Aparece en todas las hojas impresas.
Poner dentro componentes para numero de pagina, etc.
TITLE Banda de Titulo o encabezados del Reporte.
Solo aparece en la primera hoja impresa.
Poner componentes qrlabel con el nombre de la compaa, el propsito de la
tabla, fecha, etc.
COLUMM HEADER Banda de o para encabezados de columnas.
Aparece en todas las hojas impresas.
Poner dentro componentes qrlabel con el encabezado que lleva cada columna
de la tabla.

DETAIL Banda de detalle.


Es la mas importante, porque es la que contiene los datos de los renglones de
la tabla.
Es la que constituye el grueso de las hojas impresas.
Solo colocar dentro de esta banda los componentes de datos impresos,
QRDBText y QRDBImage
SUMMARY Banda de resumen.
Solo aparece en la hoja final de impresin.
Poner dentro de ella componentes de operaciones como es QRExpr y
estudiarlo en la ayuda, para conocer sus mtodos (funciones) y aplicarlas.
PAGE FOOTER Banda de pie de pagina.
Aparece en todas las hojas impresas.
Su funcin es similar a la banda de encabezado.
De hecho, en un reporte solo se usa la b banda de encabezado o la banda de
pie de pagina, pero no las dos.
Solo poner dentro de esta banda, componentes de numero de pagina, o de
fechas, o de hora, etc.

Lo mas importante a tomar en cuenta es cada componente QRBand que se


ponga dentro de un reporte, se deber definir usando su propiedad BandType,
como una cualquiera de los seis tipos de bandas, es decir,
QRBand1 = banda de encabezado,
QRBand2 = Banda de titulo,
QRBand3 = Banda de detalle, etc.
En general el procedimiento completo es:

1.-Poner un componente Table en la forma y nadamas cargarle sus tres


propiedades bsicas( no usar filtros).
2.-Poner un Componente QuickRep( es la hoja de impresin) y cargarle las
propiedades ya descritas en procedimiento de impresin anterior.
3.- Colocar y expandir un primer componente QRBand dentro del componente
QuickRep y primero asociarle el tipo de banda que representa, por ejemplo de
encabezado o de titulo, recordar que un reporte no necesariamente tiene que
llevar las seis bandas.
A este componente QRBand, cambiarle propiedades de font, frame, color, etc.
4.- Colocar dentro del componente QRBand1, los componentes necesarios y
apropiados como se indico en el cuadro anterior de bandas y significados, por
ejemplo QRLabel, etc.
5.-Colocar otro componente QRBand en la hoja de impresin, expanderlo y
definirlo como banda de titulo o banda de encabezado de columnas, etc.
6.-Repetir los pasos anteriores, hasta completar todas las bandas.
7.- Colocar un botn de ordenes OK, y asociarle el cdigo de Preview o de
impresin.
TAREAS PROGRAMACION BORLAND DELPHI
1.- Desplegar la tabla de Productos, y agregar un botn de impresin de tabla (
son dos formas una con la tabla y su navegador y la segunda es la forma de
reporte) no olvidar Include File Unit.

Você também pode gostar