DELPHI
Bibliograf�a
� Delphi 5. Francisco Charte. Anaya .(de car�cter introductorio)
� Programaci�n con delphi 5. Charte Francisco
� Delphi aplicaciones bajo windows. Dubois
� Borland Delphi iniciaci�n y referencia .Joyanes Luis
Algunos sitios de inter�s :
� http://www.borland.com/delphi
� http://community.borland.com
� http://www.arrakis.es//~ppriego/delphi
Objetivos del curso
� Introducir al alumno en el paradigma de programaci�n visual.
� Proporcionar los conceptos b�sicos de la programaci�n en Delphi.
� Desarrollar aplicaciones bien dise�adas.
� Adquirir un buen estilo de programaci�n.
Por otro lado, se pretende que el curso sea :
� Din�mico.
� Enfoque pr�ctico, pero sin descuidar los contenidos te�ricos relevantes.
� Establecer un nexo con otras materias.
� Extender los conceptos vertidos a otros entornos visuales.
PARADIGMA : Vocablo que deriva del griego que significa �ejemplar� o �ejemplo�; actualmente designa las corrientes o tendencias cuya aparici�n continua las ha convertido en un modelo a seguir o imitar.
PARADIGMA DE PROGRAMACI�N : Tendencia que establece el modo de construir programas.
Un paradigma de programaci�n est� ligado a una familia de lenguajes.
Los distintos paradigmas no son entidades aisladas sino que se relacionan entre s�.
� IMPERATIVO
� ENSAMBLADOR
� 4GL
� FUNCIONAL
� L�GICO
� ORIENTADO A OBJETOS
� VISUAL
� INTERNET
IMPERATIVO
Tambi�n conocido como procedimental. Es el de uso m�s extendido. Pertenecen A �l C, Pascal, cobol, y en gral todos los lenguajes de tercera generaci�n. Se enfoca la atenci�n en c�mo resolver el problema. Se emplea el concepto algoritmos+estructuras de datos = programas.
ENSAMBLADOR
El m�s cercano a la m�quina. Instrucciones asociadas a memoria y registros de la m�quina.
4GL
Prometieron revolucionar el dise�o de soft, pero esa promesa no se ha cumplido. Se enfoca la atenci�n en el qu�. Una l�nea de c�digo en 4GL equivale a unas 10 l�neas de un lenguaje imperativo. Ejemplos : XBASE, SQL.
FUNCIONAL
Se construye una funci�n que resuelve el problema. Ejemplos : Lisp, C, PF, APL.
L�GICO
Muy usado en I.A.. El ejemplo cl�sico es prolog. Hace uso de expresiones l�gicas basadas en c�lculo de predicados.
ORIENTADO A OBJETOS
El elemento b�sico es el OBJETO. Un OBJETO es una entidad dentro del dominio del problema que tiene atrbutos y servicios propios (caracter�sticas+comportamiento).
Un OBJETO pertenece a una CLASE.
Una CLASE es un conjunto de objetos que poseen las mismas caracter�sticas.
Un OBJETO es una instancia de una CLASE.
ABSTRACCI�N DE DATOS : ocultar los detalles de implementaci�n.
ENCAPSULACI�N : es un concepto cohesivo. Los m�todos asociados a un objeto deben estar junto a dicho objeto formando una c�psula.
HERENCIA :es un mecanismo que permite definir nuevas clases partiendo de otras ya existentes. Se forman jerarqu�as de clases. Facilita la reutilizaci�n de c�digo.
POLIMORFISMO :un objeto polim�rfico es aquel que en el momento de la codificaci�n no conoce su clase. El polimorfismo permite la manipulaci�n homog�nea de objetos que son diferentes. Permite el ahorro de c�digo.
SE�AL O MENSAJE : petici�n que se hace a un objeto para que haga algo.
Ejemplos : C++, Java, Eiffel, Smalltak, Object Pascal.
VISUAL
Libera al programador de la construcci�n de la interfaz. Proporciona un mecanismo de tipo RAD( rapid application develonment) que facilita el dise�o de la interfaz a trav�s de controles. Se suele emplear el concepto de programaci�n orientada a eventos, es decir se�ales que ocurren en el sistema que son detectadas por la aplicaci�n y que generan como respuesta acciones realizadas a trav�s de m�todos(rutinas).
Los entornos visuales facilitan adem�s la construcci�n de prototipos.
Ejemplos : Delphi, Visual C++, Visual Basic.
INTERNET
Es el �ltimo paradigma en aparecer. Combina paradigmas y conceptos ya existentes con otros nuevos. El objetivo central es la conectividad. ASP es la nueva tecnolog�a Internet m�s interesante ya que nos permite crear aplicaciones independientes de la plataforma que se podr� utilizar en cualquier navegador. Figuran HTML, Java, etc.
PROGRAMACI�N VISUAL
EVENTOS, M�TODOS, PROPIEDADES
El c�digo de un programa visual no se ejecuta secuencialmente sino que lo hace seg�n las se�ales que recibe. Ejemplos de se�ales son hacer clic con el mouse o pulsar una tecla. En Delphi estas se�ales son gestionadas autom�ticamente por cada componente y traducidos en eventos. Luego, se puede asociar a cada evento un m�todo, que no es m�s que una rutina que se ejecutar� al producirse dicho evento. Gr�ficamente :
� Delphi 1 es una potente herramienta de desarrollo de programas que permite la creaci�n de aplicaciones para Windows 3.x, Windows95/98 y Windows NT.
� Las aplicaciones pueden colocarse de forma muy sencilla en la pantalla seg�n el principio de m�dulos. Para ello se dispone de una paleta dotada de una gran variedad de componentes, algo as� como los bloques de construcci�n de cada programa. Esta paleta es denominada por Borland VCL (Visual Component Library), o biblioteca de componentes visuales. Tiene un aspecto similar a Visual Basic, pero aunque el aspecto externo indica la misma facilidad de uso que Visual Basic, el coraz�n del sistema Delphi es mucho m�s potente.
� Esta VCL es mucho m�s amplia que la de Turbo Pascal para Windows o la conocida OWL 1.0 (Object Windows Library) de Borland Pascal, y ofrece adem�s una abstracci�n mucho m�s alta del sistema operativo. El programador es totalmente independiente de las particularidades de Windows, tales como manejadores (Handlers), punteros y funciones del API de Windows (Application Programming Interface). La programaci�n se realiza con los c�modos componentes de Delphi y no con las complejas llamadas al sistema de Windows. Esto simplifica enormemente la hasta ahora poco clara programaci�n bajo Windows.
� En realidad el hecho de que no necesitemos (normalmente) usar llamadas al API, no quiere decir que Delphi no lo permita. En casos muy concretos es necesario y no se puede hacer de otra manera.
� A diferencia de otras herramientas de desarrollo visuales (Visual Basic, Toolbook, etc) con Delphi es posible crear nuevos componentes que pueden entonces incorporarse en la paleta con los componentes ya existentes y que pueden ser utilizados de la misma forma. La VCL puede estructurarse libremente y as� adaptarse totalmente a las situaciones propias de programaci�n.
� Delphi no solo dispone de componentes para la sencilla creaci�n de entornos de aplicaciones como cuadros de lista, conmutadores o cuadros de di�logo terminados, sino que cubre con sus componentes muchos temas de la programaci�n bajo Windows: se incluye entre los mismos un completo centro de control para la creaci�n de aplicaciones multimedia, as� como una gran variedad de componentes que act�an "debajo" del entorno, como tipos de listado muy variados y contenedores generales de datos. Tambi�n hay herramientas de comunicaci�n para DDE y OLE a trav�s de las que se pueden crear v�nculos de datos y comandos con otras aplicaciones. Uno de los aspectos m�s destacados lo constituyen los componentes que Borland ha incluido en Delphi para el desarrollo de completas aplicaciones de bases de datos. No se est� limitado a un formato de datos determinado, sino que se tiene acceso a 50 formatos de datos diferentes a trav�s de controladores suministrados por terceros (IDAPI y ODBC). Entre �stos se encuentran todos los est�ndares importantes de bases de datos en el �rea del PC como XBase, Paradox, Access, etc. Pero tambi�n es posible acceder de forma muy c�moda a servidores de bases de datos de otros sistemas (por ejemplo UNIX) por medio del SQL (Structured Query Language) que constituye un est�ndar de lenguaje de uso general para consultar y modificar datos administrados por servidores especiales de bases de datos como Oracle, Sybase, Informix o Adabas.
� Delphi dispone del Object Pascal, un lenguaje de programaci�n muy poderoso que est� sin dudas a la altura del C++ y que incluso lo supera en algunos aspectos. Este lenguaje surge a partir del desarrollo del Borland Pascal 7.0, un lenguaje que ocupa un lugar muy importante en la programaci�n de ordenadores personales. El Object Pascal es totalmente compatible con el Borland Pascal 7.0, lo que permite que programas desarrollados con este �ltimo puedan ser convertidos a Delphi. Incluso la biblioteca de clases OWL 1.0 se incluye con el paquete de Delphi. Aspectos nuevos en el Object Pascal en relaci�n a sus predecesores son el Exception-Handling (tratamiento y canalizaci�n de errores en run-time), un manejo m�s sencillo de los punteros con reconocimiento autom�tico y referenciaci�n, las llamadas propiedades de objetos que pueden ser asignadas como las variables, etc.
� Las aplicaciones terminadas quedan disponibles como archivos ejecutables (.EXE) que pueden utilizarse solos y sin bibliotecas adicionales. Consecuentemente la velocidad con la que pueden ejecutarse los programas creados es muy alta. Excepcionalmente, si se incluyen llamadas a VBX, o DLLs, �stas se deben incluir junto con el ejecutable. Delphi es una "Two-Way-Tool", es decir, una herramienta de dos direcciones, porque permite crear el desarrollo de programas de dos formas: una de forma visual en la pantalla, por medio de las funciones de Drag & Drop (Arrastrar y colocar) y la otra a trav�s de la programaci�n convencional, escribiendo el c�digo. Ambas t�cnicas pueden utilizarse de forma alternativa o simult�nea.
Programaci�n MDI
Se denomina tecnolog�a MDI (Multiple Document Interface) al conjunto de servicios de Windows que posibilita la construcci�n de aplicaciones capaces de trabajar con m�ltiples
documentos simult�neamente, disponi�ndose de una ventana principal o marco, en cuyo interior aparecen las ventanas hijas que pueden ser redimensionadas, minimizadas y maximizadas ajust�ndose siempre a los l�mites de la ventana padre.
Por tanto, aunque cambiemos las dimensiones de la ventana padre, las hijas siempre quedar�n dentro de los l�mites de dicha ventana.
La ventana principal de el programa (Main) se distingue de cualquier otra por el valor de la propiedad FormStyle, que debe ser fsMDIForm, no pudiendo existir en el mismo proyecto m�s de una ventana con �ste atributo.
Las fichas hijas (FormDibu, FormElect y FormGraph) se caracterizan por tener el valor fsMDIChild en la propiedad FormStyle, lo que asegura su correcta asociaci�n con la ventana principal. Como vemos, en nuestra aplicaci�n MDI no todas las ventanas tienen que ser hijas, las ventanas de di�logo, de funciones de las fuerzas, etc. no lo son, ni tienen por qu� serlo puesto que son ventanas que se ejecutan y desaparecen, y no nos interesa tenerlas presentes simult�neamente con las dem�s ventanas hijas.
Con el fin de facilitar la gesti�n de las ventanas hijas que se pueden encontrar abiertas en un momento dado, existen una serie de propiedades y m�todos que nos servir�n para establecer su posici�n y dimensiones, acceder individualmente a ellas, etc. Entre las m�s significativas se encuentran (son propiedades y m�todos que se aplican a la ventana padre y afectan a las hijas):
Propiedades:
� MDIChildCount: indica el n�mero de ventanas hijas abiertas.
� MDIChildren: Array din�mico de punteros que apuntan a cada una de las ventanas hijas (indexa desde 0 a MDIChildCount-1).
� ActiveMDIChild: Puntero que apunta a la ventana hija activa en ese momento (solo una puede estar activa en cada momento).
M�todos:
� Previous: Activa la ventana hija anterior.
� Next: Activa la siguiente ventana hija.
� Cascade: Presenta las ventanas hijas en cascada.
� Tile: Presenta las ventanas hijas en mosaico.
Los errores se pueden dividir en dos grupos: errores en tiempo de compilaci�n (corregibles antes de hacer funcionar el programa), y errores en tiempo de ejecuci�n, m�s complicados de encontrar, puesto que el error puede depender de las acciones del usuario y manifestarse solo ocasionalmente.
Una excepci�n es una se�al provocada por un error, tal como pueda ser una divisi�n por cero, el sobrepasar los l�mites de un array, o el intento de acceso a los datos apuntados por un puntero nulo, por ejemplo.
La excepci�n generalmente dispone de la informaci�n necesaria para conocer la causa del error. Dicha informaci�n la podemos aprovechar en nuestro c�digo si interceptamos la excepci�n, o bien ser� mostrada en un mensaje antes de que el programa se interrumpa, si no la interceptamos (no deseable).
Bases de la programaci�n orientada a objetos
A medida que las aplicaciones se van haciendo cada vez m�s complejas, el mantenimiento del c�digo tambi�n se hace m�s dif�cil, a pesar de que est� correctamente estructurado en funciones
y procedimientos y dividido en m�ltiples m�dulos. En un programa complejo, (solo la programaci�n del entorno bajo Windows ya hace de cualquier programa un programa complejo) es f�cil perderse entre la cantidad de procedimientos, funciones y distintas variables distribuidas en multitud de unidades, con lo que hay grandes probabilidades de errores al pasar par�metros incorrectos, modificar variables indebidas, etc.
Muchos de estos problemas encuentran su soluci�n en la programaci�n orientada a objetos (POO, u OOP en ingl�s), que no es m�s que una evoluci�n de los lenguajes estructurados hacia una simplificaci�n del mantenimiento del c�digo y unas mayores posibilidades de reutilizaci�n de �ste.
Object Pascal cuenta con todas las caracter�sticas de un lenguaje orientado a objetos, como son la encapsulaci�n, la herencia y el polimorfismo.
Un objeto es parecido a un registro (record), pero se caracteriza porque adem�s de contener miembros de distintos tipos, como n�meros, cadenas, punteros, etc., tambi�n es capaz de contener definiciones de procedimientos y funciones.
Para definir un nuevo tipo de objetos utilizamos una estructura similar a la de un registro, con la diferencia de que cambiaremos la palabra Record por Class (como en C++). Tras esta cabecera dispondremos los miembros que formar�n parte del tipo, que adem�s de variables pueden ser funciones y procedimientos. A los procedimientos y funciones que forman parte de la definici�n de un objeto se les llama gen�ricamente m�todos. Una clase lo m�s simple posible podr�a definirse como:
TPunto = Class {Objeto
TPunto}
x, y: Integer; {Coordenadas y color del
punto}
Color: Byte;
Procedure DibujaPto; {M�todo que dibujar�
el punto}
End;
Para utilizar el objeto anterior, definimos una variable de tipo TPunto:
Var
Punto: TPunto;
Pero en realidad Punto es una referencia al tipo de objeto (un puntero), por lo que deberemos crear el objeto din�micamente y liberarlo despu�s de usado:
new (Punto) {Crea
objeto}
Punto.x:=25; {Uso del
objeto}
Punto.y:=33;
Punto.color:=0;
Punto.DibujaPto;
dispose (Punto) {Libera
objeto}
Normalmente, los objetos ya llevan sus propios m�todos de creaci�n y liberaci�n. Los m�todos denominados "Constructores" (Objeto.Create) y "Destructores" (Objeto.Free) sirven para crear e inicializar el objeto, y para liberarlo, por lo que no se suele usar new y dispose (o getmem y freemem, o similares).
Si tenemos un componente correctamente dise�ado, los datos que se declaren en el interior del objeto s�lo ser�n manipulados por los m�todos de ese objeto, que estar�n precisamente especializados en la manipulaci�n de los miembros del objeto. A esta caracter�stica se le conoce como encapsulaci�n .
Para gestionar de forma correcta la encapsulaci�n, se pueden dividir los miembros del objeto en partes p�blicas (Public), privadas (Private) y protegidas (Protected). Las declaraciones existentes en el grupo Public ser�n p�blicas, y por lo tanto otros programas o m�dulos podr�n acceder a los miembros. En el apartado Private podemos incluir la declaraci�n de todos aquellos miembros que no deseamos poner a disposici�n de terceros. Todas las variables y m�todos que incluyamos en esta parte ser�n accesibles s�lo desde el propio objeto, es decir, desde los m�todos del objeto. Por �ltimo tenemos el apartado Protected, que da paso a la parte protegida del objeto, que es un paso intermedio de las dos anteriores. Los identificadores creados en la parte protegida no ser�n accesibles desde otros programas o m�dulos, pero s� tendr�n acceso a ellos aquellos objetos que sean derivados del nuestro.
Un ejemplo de como podr�amos dividir el objeto TPunto en partes p�blicas y privadas podr�a ser:
TPunto = Class {Objeto
TPunto}
Private {Parte
privada}
x, y: Integer; {Coordenadas y color del
punto}
Color: Byte;
Public {Parte p�blica}
Procedure Inicializa (PX, PY: Integer;
PColor: Byte);
Procedure DibujaPto; {M�todo que dibujar�
el punto}
End;
De esta forma no podemos acceder directamente a las coordenadas y al color, sino que hacemos la asignaci�n mediante el m�todo "Inicializa", que ser�a el encargado de asignar las coordenadas y el color al objeto a trav�s de los par�metros pasados.
Otro de los pilares de la OOP es la herencia. Esta caracter�stica nos permitir� no tener que escribir completamente el c�digo del componente que necesitemos, sino derivarlo de otro componente que tenga las caracter�sticas b�sicas que necesitemos, y adaptarlo a nuestra necesidad concreta a�adi�ndole s�lo las caracter�sticas adicionales que necesitemos. Adem�s es posible ir ampliando en sucesivas derivaciones un objeto haci�ndolo cada vez m�s complejo y adecuado a una utilidad particular.
Por ejemplo podemos crear un objeto TRectangulo derivado del TPunto ya definido, que se ocupe de dibujar un rect�ngulo (lo har� dibujando sucesivos puntos con los miembros heredados):
TRectangulo = Class(TPunto) {derivado de
TPunto}
Private {Dimensiones y color del
rect�ngulo}
left, top, width, height, color:
integer;
Public
Procedure
Ini(izda,arriba,ancho,alto,colorR:
integer);
Procedure
DibujaRectangulo;
End;
Para implementar el m�todo DibujaRectangulo podemos usar los m�todos y miembros de la clase ancestro TPunto porque ya son parte del propio objeto TRectangulo:
Procedure
TRectangulo.DibujaRectangulo;
var
cont,cont2:integer;
begin
for cont:=left to left+width do {Dibuja
rectangulo}
for cont2:=top to top+height
do
begin
Inicializa(cont,cont2,100); {Dibuja
punto}
DibujaPto;
end;
end;
Si un objeto no se deriva de ning�n otro (como el objeto TPunto del ejemplo), en Object Pascal se derivar� por defecto del tipo TObject, con lo cual podemos usar en cualquier objeto los m�todos Create, Free, etc. y adem�s al tener una ra�z com�n, podemos tratar a los objetos polim�rficamente. Polimorfismo es la capacidad de un objeto de corresponder a distintos tipos, esto es, por ejemplo un objeto TPunto podr�a apuntar a un TRectangulo, o a un TCirculo (si lo hubi�semos definido como derivado de TPunto), de forma que podemos tratar objetos de distinto tipo gen�ricamente. Por ejemplo podr�amos tener un array del tipo TPunto que contuviese objetos TRectangulo y TCirculo.
Objetos
Como su propio nombre indica, el Object Pascal (usado por Delphi) es un lenguaje totalmente orientado a objetos. Pr�cticamente todos los elementos del entorno Delphi son objetos, que unas veces se encuentran definidos de antemano (los forms, los componentes de la paleta, objetos no
visuales, etc), y otras se definen en nuestra propia aplicaci�n.
Todo el desarrollo de aplicaciones en Delphi est� �ntimamente ligado con la definici�n y uso de objetos, por lo que es fundamental conocer la mec�nica que Object Pascal utiliza para describir un objeto, sus caracter�sticas y su funcionamiento, sobre todo a la hora de que el programador cree sus propios componentes. En muchos casos no es necesario conocer el funcionamiento de la programaci�n orientada a objetos para programar con Delphi, puesto que en la mayor�a de los casos existen controles ya creados sin necesidad de tener que programarlos.
La propia programaci�n visual de Delphi, que escribe parte del c�digo autom�ticamente, hace posible utilizar objetos de forma pr�ctica sin tener por qu� comprender al cien por cien su funcionamiento.
Los componentes son las piedra angular de la programaci�n en Delphi. Aunque la mayor�a de los componentes representan partes visibles de la interfaz de usuario, existen tambi�n componentes no visuales, como por el ejemplo los objetos Timer y Database.
Un componente, en su definici�n m�s simple no es m�s que un objeto descendiente del tipo TComponent. Todos los componentes descienden en su forma m�s primitiva de TComponent, ya que TComponent proporciona las caracter�sticas b�sicas que todo componente debe tener: capacidad de ser mostrado en la paleta de componentes as� como de operar a nivel de dise�o de formulario.
Los componentes hacen f�cil la programaci�n en Delphi. En vez de tener que operar a nivel de unidades, el usuario de un componente simplemente tiene que pinchar en �l y situarlo en la posici�n deseada de su form. Eso es todo: Delphi se encarga de lo dem�s.
Todos los componentes forman parte de la jerarqu�a de objetos denominada Visual Component Library (VCL). Cuando se crea un nuevo componente, este se deriva a partir de un componente existente (bien sea TComponent o alg�n otro m�s especializado) y se a�ade a la VCL.
El programador tambi�n
puede crear sus propios componentes y usarlos en distintas
aplicaciones, de forma que la reusabilidad del c�digo es
m�xima. A los componentes que cuentan con una parte visual,
como puede ser un bot�n, se les denomina
controles.
Propiedades
Los componentes, y de hecho todos los objetos de Delphi son de uso general, por lo que a la hora de usarlos de alguna forma deberemos adecuarlos a nuestras necesidades. Para ello nos serviremos de las propiedades de cada objeto, mediante las cuales podremos establecer el t�tulo de una ventana, el tipo de letra de una etiqueta de texto o el
color en el que aparecen los distintos controles.
Se puede pensar en las propiedades como si fuesen variables pertenecientes a un objeto (veremos que no es as� exactamente), de tal forma que para acceder a ellas generalmente habr� que indicar no s�lo el nombre de la propiedad, sino tambi�n a qu� objeto pertenece.
La modificaci�n o consulta del valor de una propiedad puede diferir seg�n intentemos acceder a ella mientras estamos dise�ando un form, en tiempo de dise�o, o bien mediante el c�digo del programa, en tiempo de ejecuci�n. Ciertas propiedades est�n s�lo accesibles en tiempo de ejecuci�n, por lo que mientras estamos dise�ando la ficha no aparecer�n. Adem�s hay algunas propiedades que son de s�lo lectura, por lo que su valor puede ser consultado, pero no modificado, y otras que son s�lo de escritura.
Aunque a primera vista si
usamos un componente prefabricado, las propiedades pueden
parecer simples variables, en la mayor�a de las ocasiones una
propiedad no es una variable, y la modificaci�n o consulta de
su valor puede conllevar que internamente el componente
ejecute un cierto c�digo. Si por ejemplo tuvi�semos un
componente para comunicaciones serie que se encargase de
enviar mensajes a un ordenador remoto, podr�amos tal vez
asignar una cadena de caracteres a una hipot�tica propiedad
"Envia". De esta forma, con una simple asignaci�n
(Envia:='Mensaje a mandar') se pondr�a en marcha todo el
mecanismo impl�cito en el componente para enviar el mensaje al
ordenador remoto. Esta propiedad podr�a ser un ejemplo de
propiedad de s�lo escritura, ya que s�lo interesa mandar el
mensaje al ordenador remoto, sin conservar informaci�n acerca
del mensaje, por lo que ser�a inapropiada su
lectura.
Eventos
Los eventos son las conexiones existentes entre un determinado suceso y el c�digo escrito por el programador de componentes. Asi por ejemplo, ante el suceso clic del rat�n se podr�a mostrar un mensaje en pantalla. Al c�digo que se ejecuta cuando se produce un determinado evento se le denomina manejador de eventos (event handler) y normalmente es el propio usuario del componente qui�n lo escribe. Los eventos m�s com�nes ya forman parte de los propios componentes de Delphi (acciones del rat�n, pulsaciones de teclado...), pero es tambi�n posible definir nuevos eventos.
La programaci�n en el entorno Windows se caracteriza por estar dirigida por eventos, de tal forma que un programa no tiene por qu� ejecutarse necesariamente de forma secuencial, sino que ciertas porciones de c�digo se ejecutar�n cuando ocurra un cierto evento.
Los
eventos son se�ales que el entorno recibe desde distintos
elementos, como puedan ser el rat�n, el teclado o un
temporizador. Estos eventos son redirigidos a las
aplicaciones, que en caso de aceptarlos deber�n responder
adecuadamente de ellos. En Delphi pr�cticamente todo el c�digo
que escribimos ir� asociado a alg�n evento. Normalmente los
eventos a los que reaccionar�n los componentes ser�n las
pulsaciones del teclado o el rat�n, activaciones de los
componentes, etc.
M�todos
Los m�todos son los procedimientos y/o funciones que forman parte del componente. El usuario del componente los utiliza para realizar una determinada acci�n o para obtener un valor determinado al que no se puede acceder por medio de una propiedad. Ya que requieren ejecuci�n de c�digo, los m�todos s�lo est�n disponibles en tiempo de ejecuci�n.
Los componentes Delphi adem�s de disponer de propiedades y poder responder a ciertos eventos, habitualmente tambi�n disponen de m�todos. Un m�todo es un procedimiento o funci�n que nos permite realizar una determinada acci�n en el componente, pudiendo necesitar o no el paso de alg�n par�metro.
Al igual que ocurre en las propiedades, a la hora de usar un cierto m�todo normalmente tendremos que indicar primero el objeto o componente al que pertenece, de tal forma que la acci�n del m�todo recaiga sobre �l, y no sobre cualquier otro. El hecho de que cada objeto sea propietario de una serie de propiedades y m�todos, variables y c�digo, que no son accesibles a ning�n otro objeto externo, recibe el nombre de encapsulaci�n, aunque tambi�n es posible definirlos de tal modo que sean accesibles a otros objetos.
Entorno de Delphi
El entorno de programaci�n t�pico consta en Delphi de cuatro ventanas que comparten el espacio
disponible de la pantalla. Cada una de estas ventanas puede modificarse, cerrarse y volverse a
abrir mediante el men� View. Estas ventanas fundamentales son:
1. La ventana principal
2. El inspector de objetos (object inspector)
3. El editor de c�digo fuente
4. La ficha (Forms)
La ventana principal
La barra de programa del margen superior de la pantalla representa la ventana principal de Delphi. Si se cierra, todas las otras ventanas tambi�n finalizan su servicio. En la barra de men�s
de la ventana principal est�n disponibles todas las �rdenes relacionadas con el procesamiento de un proyecto concreto. La carga y almacenamiento de proyectos pertenecen igualmente al men�, as� como la presentaci�n u ocultaci�n de las distintas ventanas del entorno de desarrollo.
Tambi�n se encuentran aqu� las �rdenes para compilar y ejecutar un programa. El mayor espacio de la ventana principal lo ocupa la paleta de componentes, que se encuentra dividida en secciones tem�ticas a trav�s de unas pesta�as.
La ventana de programa. Formularios (Forms)
realmente importante de codificar el programa, no el entorno.
El entorno (ventanas, colocaci�n de botones, listas, etc) se crea de forma puramente visual, es decir, simplemente se coge con el rat�n el componente deseado de la barra de herramientas de la ventana principal y lo sit�a en la ventana sobre la que se desarrolla el programa (Form).
En el Form se puede
reproducir el aspecto y el comportamiento de todo tipo de
ventanas, simplemente especificando las propiedades
correspondientes y/o escribiendo ampliaciones propias. De esta
forma se caracteriza a la ventana a trav�s de sus propiedades:
anchura, altura, coordenadas, estilo de los bordes, colores,
eventos ante los que reacciona,
etc.
El inspector de objetos (object inspector)
Como se ha mencionado, los componentes vienen definidos por sus propiedades, y los eventos
ante los que reaccionan (aparte de los "m�todos" de que disponga, que son parecidos a los procedimientos).
El inspector de objetos es una ventana desde la cual se pueden ver y modificar la mayor�a de las propiedades y eventos del componente, ya que se listan en dicha ventana tanto las propiedades como los eventos por orden alfab�tico.
La mitad derecha de la ventana contiene el valor actual de cada propiedad. Puede tratarse de n�meros, cadenas de caracteres, constantes determinadas, gr�ficos, textos, punteros, etc.
En
el caso de estar visualizando la parte correspondiente a
eventos, vemos que sale una lista con muchos de los eventos
ante los cuales el componente reacciona (no todos, algunos no
son accesibles a trav�s del inspector de objetos y hay que
definirlos mediante
c�digo).
El editor de c�digo fuente
Como se indic� al principio, Delphi es una "Two-Way-Tool", de forma que lo que se va programando visualmente, va apareciendo en forma de c�digo en el editor de c�digo fuente. De la misma forma, si no queremos hacer uso de las capacidades de programaci�n visual, podemos limitarnos a escribir el c�digo (incluida la creaci�n de ventanas, etc.) que se ejecutar�.
El editor dispone de una ventana distinta por cada Unit de que disponga el programa, seleccion�ndose una ventana u otra por medio de pesta�as.
Ejemplo
Insertar un bot�n . Al oprimirlo de debe mostrar un cartel con el mensaje �oprimido�. Todo consiste en insertar un bot�n de la solapa Standard de la paleta de componentes. No es obligatorio pero si recomendable cambiar algunas propiedades a trav�s del inspector de objetos. En nuestro ejemplo para la ficha la propiedad caption ( lo que se ve en la barra de t�tulo de la ventana) se cambia a Proyecto 1 y name a ficha. Para el bot�n, Caption = oprimir y name = boton. Luego haciendo doble clic sobre el bot�n o a trav�s del inspector de objetos, seleccionando el componente bot�n de la lista y haciendo doble clic sobre el valor del evento OnClick accedemos al editor de c�digo, dentro del procedimiento correspondiente al m�todo asociado. En este lugar deberemos escribir showmessage('OPRIMIDO'). Esta rutina pertenece a la unidad dialogs (ver la cl�usula Uses). Para ejecutar el programa pulsar F9 o el bot�n correspondiente.
|
|
|
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
Tficha = class(TForm)
boton: TButton;
procedure botonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ficha: Tficha;
implementation
{$R *.DFM}
procedure Tficha.botonClick(Sender: TObject);
begin
showmessage('OPRIMIDO')
end;
end.
PROYECTOS
En Delphi, una aplicaci�n consiste en un PROYECTO. Un proyecto es el conjunto de unidades, fichas y cualquier otro elemento que forme parte de un programa.
Todo proyecto posee al menos una ficha, de las cuales una ser� la principal.
Cada ficha tiene asociada una Unit o unidad. Existe adem�s un archivo de proyecto que contiene el c�digo que se encargar� de enlazar las distintas unidades. Para verlo ir a Project/View Source.
Ejemplo :
Program project1;
uses
Forms,
Unit1 in 'Unit1.pas' {ficha1};
Unit2 in 'Unit2.pas' {ficha2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(Tficha1, ficha1);
Application.CreateForm(Tficha2, ficha2);
Application.Run;
end.
Extensiones
Archivos de proyecto : . DPR
Archivos de unidades : . PAS
Archivos de ficha : DFM
Grupos de proyectos : BPG
Packages(paquetes) :. DPK