Fundamentos de Delphi

Embed Size (px)

Citation preview

Objetivos Generales del Curso El estudiante conocer y aprender las caracteristicas principales del lenguaje Pascal: Conocer las palabras reservadas en el lenguaje pascal Aprender los elementos fundamentales de la sintasis del lenguaje Conocer los smbolos especiales del lenguaje Aprender a comentar en el lenguaje y conocer acerca de las directrices de compilacin. Conocer tanto los operadores aritmticos como los boleanos Aprender a declarar procedimientos y funciones as como a codificar ciclos en el lenguaje Conocer los diferentes tipos de datos manejados en el lenguaje El estudiante conocer de manera general el ambiente de desarrollo: Conocer las principales barras de commandos. Aprender que es el Object Inspector y cual es su uso. Aprender acerca del uso del componente Form y conocer acerca de las clases TApplication y TScreen. El estudiante conocer de manera general los componentes principales: Conocer la propiedades ms releventes de los componentes principales. Aprender una breve descripcin de los componentes principales El estudiante conocer acerca de aplicaciones del manejo de base de datos: Conocer que es el BDE y su uso. Aprender a utilizar el componente Table y Query. Conocer los principales componentes de base de datos y su uso. El ambiente delphi y sus libreras son basados en el lenguaje de programacin Borland Object Pascal, que es una extensin del lenguaje Pascal. Esta unidad abarca todos los temas para conocer en su base el lenguaje Borland Object Pascal y est enfocado a desarrolladores que no conozcan el lenguaje. En el prximo curso esta parte ser complementada en una seccin ms avanzada. Al finalizar el curso el desarrollador habr aprendido las principales palabras reservadas del lenguaje, as como el manejo de los ciclos y conocimientos de tipos de datos predeterminados. En fin el desarrollador tendr la capacidad de crear procedimientos y funciones adecuadamente con el uso de los elementos adquiridos en la unidad. Palabras RESERVADAS Esto es una lista de palabras reservadas y estas no pueden redefinirse o ser usadas como identificadores: and array as asm begin case class const constructor destructor dispinterface div

1

do downto else end except exports file finalization finally for function goto if implementation in inherited initialization inline interface is label library mod nil not object of or out packed procedure program property raise record repeat resourcestring set shl shr string then threadvar to try type unit until uses var while with xor En adicin a las palabras arriba, private, protected, public, published, y automated actan como palabras reservadas dentro las declaraciones de tipos de objetos, pero en otra forma son tratadas como directrices. Tambin las palabras at y on tienen significados especiales. ELEMENTOS FUNDAMENTALES DE SINTAXIS En el nivel ms simple, un programa es una secuencia de tokens delimitados por separators. Un token es la parte textual ms pequea con significado en un programa. Un separator puede ser un espacio o un comentario. Estrictamente hablando, no es necesario que siempre se coloque un separator entre dos tokens; por ejemplo, el siguiente fragmento: Size:=20;Price:=10; Es perfectamente legal. Por convencin y legibilidad lo escribimos de la siguiente forma: Size := 20; Price := 10; Los Tokens son categorizados como smbolos especiales, identificadores, palabras reservadas, directrices, nmeros, etiquetas y cadenas de caracteres. Un separator puede ser parte de un token solo si el token es parte de una cadena de caracteres. Al lado de un identificador, palabra reservada, numero, y etiqueta debe existir uno o ms separators entre ellos.

2

Smbolos especiales Los smbolos especiales son caracteres no alfabticos, o pares de estos caracteres, que tienen significados fijos. Los siguientes caracteres son smbolos especiales: #$&'()*+,./:;@[]^{} Los siguientes pares de caracteres tambin son smbolos: (* (. *) .) .. // := = < > Se puede ver claramente que !, , %, \,?,_, |, y ~ no son caracteres especiales. Comentarios y directrices de compilacin Los comentarios son ignorados por el compilador, excepto cuando su funcin es de separadores delimitando tokens adyacentes o directrices de compilacin. Existen muchas directrices de compilacin: { El texto entre llaves constituye un comentario. } (* El texto entre parntesis mas asteriscos constituye un comentario. *) // Todo texto despus de un doble slash constituye un comentario al final de la lnea. Un comentario que contenga un signo de $ es una directriz de compilacin. Por ejemplo, {$WARNINGS OFF} indica al compilador que no genere avisos. Operadores aritmticos Los operadores aritmticos, que operan con enteros o reales, incluye +, , *, /, div, y mod. Operador Operacin + * / div mod suma resta multiplicacin divisin divisin remainder Tipos Operadores integer, real integer, real integer, real real integer, integer integer integer Tipo resultado integer, real integer, real integer, real real real integer integer Ejemplo X+Y Result 1 P * InterestRate X/2 Total div UnitSize Y mod 6

Operadores Bolanos Los operadores Bolanos not, and, or, and xor toman como operadores tipos bolanos y retorna tipos bolanos. 3

Operador Operacin Tipos Operadores Tipo resultado Ejemplo not and or xor negacin conjuncin disyuncin disyuncin ex. Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean not (C in MySet) Done and (Total > 0) A or B A xor B

Estas operaciones son gobernadas por reglas estndar de lgica boleana. Por ejemplo, la expresin de la forma X y Y es verdadera si y solo si ambas X y Y son verdaderas(True). Declaracin de procedimientos y funciones Cuando se declara un procedimiento o una funcin se especifica el nombre, el nmero y el tipo de los parmetros, y , en el caso de una funcin el tipo que retorna; esta parte es llamada Encabezado. Luego se escribe el bloque de cdigo que se desea que ejecute siempre que se ejecute el procedimiento o funcin; esta parte es llamada cuerpo o bloque. El procedimiento estndar Exit puede ser llamado en el cuerpo de un procedimiento o de una funcin. Exit para la ejecucin de la rutina cuando ocurre e inmediatamente pasa el control al programa de vuelta al punto donde la rutina fue llamada. La declaracin de un procedimiento tiene esta forma: procedure NombreProcedimiento(ListaParametros); directrices; DeclaracionesLocales; begin Comandos; End; Donde el NombreProcedimiento es cualquier identificador valido, comandos es una secuencia de comandos que se ejecuta cuando el procedimiento es llamado, y (ListaParametro), directrices, y DeclaracionesLocales; son opcionales. He aqu un ejemplo de declaracin de procedimientos: procedure NumString(N: Integer; var S: string); var V: Integer; begin V := Abs(N);

4

S := ''; repeat S := Chr(V mod 10 + Ord('0')) + S; V := V div 10; until V = 0; if N < 0 then S := '' + S; end; La declaracin de una funcin tiene esta forma: function NombreFuncion(ListaParametros): TipoRetorno; directrices; DeclaracionesLocales; begin Comandos; End; Donde el NombreFuncion es cualquier identificador valido, TipoRetorno es cualquier tipo de datos, comandos es una secuencia de comandos que se ejecuta cuando el procedimiento es llamado, y (ListaParametro), directrices;, y DeclaracionesLocales; son opcionales. El nombre de la funcin dentro del bloque de la misma acta como variable para devolver el valor de la funcin as como la variable Result. He aqu un ejemplo de declaracin de funciones: function NumString(N: Integer): string; var V: Integer; S: String; begin V := Abs(N); S := ''; repeat S := Chr(V mod 10 + Ord('0')) + S; V := V div 10; 5

until V = 0; if N < 0 then S := '' + S; Result := S; end; CICLOS Los ciclos permiten que se ejecute una secuencia de comandos repetidamente, usando una condicin control o una variable para determinar cuando la ejecucin debe parar. Object Pascal tiene tres tipos de ciclos. Comando Repeat, Comando While, y comando For. Se puede usar los procedimientos estndares Break y Continue para controlar el flujo de la repeticin, para los comandos While, o For. Break termina el comando en el que se llama, mientras que Continue inicia ejecutando la siguiente iteracin de la secuencia. La sintaxis del comando repeat: repeat comando1; ...; comandon; until expresin Donde expresin devuelve un valor boleano. El ultimo punto y coma antes del until es opcional. El comando repeat ejecuta continuamente las iteraciones hasta que se cumpla la condicin de la expresin y evala al final. La secuencia se ejecuta al menos una vez ya que la evaluacin no se realiza al inicio sino al final. Ejemplos: repeat K := I mod J; I := J; J := K; until J = 0; repeat Write('Enter a value (0..9): '); Readln(I); until (I >= 0) and (I 0 do begin if Odd(I) then Z := Z * X; I := I div 2; X := Sqr(X); end; while not Eof(InputFile) do begin Readln(InputFile, Line); Process(Line); end; El comando For, a diferencia de los comandos repeat y while, requiere que se especifique explcitamente el numero de veces que se desea repetir el ciclo. La sintaxis es la siguiente: for contador := ValorInicial to ValorFinal do comando o for contador := ValorInicial downto ValorFinal do comando donde contador es una variable local de tipo ordinal. ValorInicial y ValorFinal son expresiones compatibles con el tipo del contador. comando es un simple comando o una estructura de ellos que no cambia el valor del contador. El comando for asigna el ValorInicial al contador, luego ejecuta el comando repetidamente, incrementando o disminuyendo el valor de contador en cada iteracin. Cuando contador retorna el mismo valor que ValorFinal, el comando es ejecutado una vez mas y el comando For termina. Ejemplos: for I := 2 to 63 do 7

if Data[I] > Max then Max := Data[I]; for I := ListBox1.Items.Count 1 downto 0 do ListBox1.Items[I] := UpperCase(ListBox1.Items[I]); for I := 1 to 10 do for J := 1 to 10 do begin X := 0; for K := 1 to 10 do X := X + Mat1[I, K] * Mat2[K, J]; Mat[I, J] := X; end; for C := Red to Blue do Check(C); TIPO DE DATOS El siguiente esquema presenta los tipos en Object Pascal. simple ordinal integer character Boolean enumerated subrange real string structured set

8

array record file class class reference interface pointer procedural variant Un tipo de dato entero representa un subconjunto de todos los nmeros. Los tipos enteros genricos son Integer y Cardinal; use esto cuando sea posible, ya que resulta que estos son los ms entendibles para el CPU y el sistema operativo. En la siguiente tabla se presenta sus rangos y los formatos para guardar por el compilador de 32 Bits. Tipos Rango Formato Integer 2147483648..2147483647 32bit con signo Cardinal 0..4294967295 32bit sin signo Existen otros tipos de enteros fundamentales con son: Shortint, Smallint, Longint, Int64, Byte, Word, y Longword. Tipos Rango Formato Shortint 128..127 8bit con signo Smallint 32768..32767 16bit con signo Longint 2147483648..2147483647 32bit con signo Int64 2^63..2^631 64bit con signo Byte 0..255 8bit sin signo Word 0..65535 16bit sin signo Longword 0..4294967295 32bit sin signo El tipo de dato real define un conjunto de nmeros que puede ser representado con notacin de punto flotante. La siguiente tabla presenta los rangos y los formatos almacenados para los tipos fundamentales de reales: Tipos Rango Dgitos Sign. Tam/ Bytes 9

Real48 2.9 x 10^39 .. 1.7 x 10^38 1112 6 Single 1.5 x 10^45 .. 3.4 x 10^38 78 4 Double 5.0 x 10^324 .. 1.7 x 10^308 1516 8 Extended 3.6 x 10^4951 .. 1.1 x 10^4932 1920 10 Comp 2^63+1 .. 2^63 1 1920 8 Currency 922337203685477.5808.. 922337203685477.5807 1920 8 Real 5.0 x 10^324 .. 1.7 x 10^308 1516 8 En una herramienta de desarrollo visual como Delphi, el rol del ambiente es definitivamente importante, y a veces ms importante que el lenguaje de programacin en s. En esta unidad se presentan los diferentes componentes del ambiente Delphi. El desarrollador podr reconocer y utilizar los componentes visuales ms importantes del ambiente de desarrollo de Delphi, y esto le dar la facilidad y la confianza para crear aplicaciones rpidamente. ToolBars de DELPHI Los toolbars en el IDE proveen accesos rpidos a comandos de men. Los comandos son organizados en diferentes toolbars, que pueden ser independientemente reposicionados o sacadas como ventanas flotantes arrastrndolos con el mouse. Se puede desplegar o remover los toolbars a travs de View|Toolbars o haciendo click derecho en cualquiera de los toolbars y marcando o desmarcando los nombres de los toolbar. Los toolbars que pueden aparecer en el IDE son Standard View Debug Custom ComponentPalette Desktops Los toolbars tiene Help Hints. Para habilitar los Help Hints, seleccione Show Hints desde las pagina Options del dialogo Customize Toolbar. Cuando los Help Hints estn habilitados, se puede posicionarse en cualquiera de los botones para ver para que se utilice. En Delphi 5 se puede guardar Desktops personalizados en el toolbar Desktops. Standard El toolbar Standard contiene los siguientes botones por defecto:

10

Botn New Open

Save

Save All Open Project Add file to project Remove file from project View toolbar

Significado Abre el dialogo de New Items. Despliega el dialogo de abrir archivo. El botn Open tiene un men desplegable hacia abajo que le permite elegir entre los proyectos abiertos ms recientes. Le permite guardar todos los cambios a todos los archivos del proyecto abierto usando el nombre actual de cada archivo. Esto es lo mismo que seleccionar File|Save desde el men. Permite guardar todos los archivos abiertos, incluyendo el proyecto actual y sus mdulos. Esto es lo mismo que seleccionar File|Save All desde el men. Permite abrir un proyecto existente. Esto es lo mismo que seleccionar File|OpenProject desde el men. Abre el dialogo Add to Project. Abre el dialogo Remove from Project.

El toolbar View contiene los siguientes botones por defecto: Botn View Unit View Form Toggle Form/Unit New Form Object INSPECTOR El Object Inspector es la conexin entre la apariencia visual de las aplicaciones y el cdigo que hace la aplicacin correr. El Object Inspector permite Configurar propiedades en modo de diseo a los componentes que se colocan en un formulario, y Crea y ayuda para navegar entre los manejadores de eventos. Filtra propiedades y eventos visible. El seleccionador de objetos en la parte superior del Object Inspector en una lista desplegable hacia abajo que contiene todos los componentes del form activo y tambin despliega el tipo del componente seleccionado. Esto permite desplegar rpidamente propiedades y eventos para diferentes componentes en el form actual. Se puede cambiar el tamao de las columnas del Object Inspector arrastrando la lnea separadora a una nueva posicin. El Object Inspector tiene dos paginas: Significado Abre el dialogo View Unit. Abre el dialogo View Form. Cambia de ventana entre el form y la unidad correspondiente. Crea y agrega un form en blanco al proyecto actual. Esto es lo mismo que elegir File| New Form desde el men.

11

Propiedades Eventos Para cambiar entre las paginas, haga click a la tecla ctrl+tab. TApplication, TScreen y TForm TApplication, Tscreen y TForm son clases VCL que forman la base de toda aplicacin Delphi controlando el comportamiento del proyecto. La clase TApplication forma la base de las aplicaciones Windows proveyendo propiedades y mtodos que encapsulen el comportamiento de un programa Windows. TScreen es usado en tiempo de ejecucin para mantener monitorizado los forms y los mdulos de datos que han sido cargados a memoria, as como, informacin especifica del sistema tal como la resolucin de la pantalla y que fuentes estn disponibles para desplegar. Instancias de la clase TForm son creados para generar la interface de usuario de las aplicaciones. Las ventanas y los dilogos son basados en TForm. Componente Form

Los forms son la base de toda aplicacin Delphi. El form es un componente. Se colocan otros componentes en el rea conformada por el form para construir interfaces de aplicaciones. Se desarrolla la aplicacin personalizando el form principal, y agregando y personalizando forms para otras interfaces. Se personalizan los form agregando componentes y cambiando sus propiedades. Los forms son ventanas y, por esto, por defecto incluyen cierta funcionalidad estndar de ventanas como: Control de men Botones Minimizar y Maximizar Barra de titulo Bordes para cambiar tamao Estas caractersticas, pueden ser cambiadas en modo diseo as como cualquier propiedad a travs del Object Inspector. Una aplicacin usualmente contiene mltiples forms: Un form principal, que es la interface primaria del usuario, y otros forms como ventana de dilogos, ventanas secundarias, y as sucesivamente. Se puede iniciar del diseo del form desde uno de las planillas que provee Delphi de forms. Se puede guardar cualquier form que se disee como una planilla para rehusarla en otros proyectos. Algunas tareas que se pueden realizar con los forms: Para hacer que una ventana se mantenga encima de las dems ventanas abiertas en tiempo de corrida configure la propiedad FormStyle a fsStayOnTop.

12

Para quitar los scrollbars por defecto de los forms, cambie el valor de las propiedades HorzScrollBar y VertScrollBar. Para cambiar los estilos de los bordes, utilice las propiedades BorderIcons y BorderStyle. (Los resultados son visible en tiempo de corrida.) Para cambiar el icono para el form minimizado, use la propiedad Icon. Para especificar la posicin inicial de un form en la aplicacin Windows, use la propiedad Position. Para especificar el estado inicial del form, (e.g., minimizado, maximizado o normal) use la propiedad WindowState. Para definir el rea de trabajo del form en tiempo de corrida, use las propiedades ClientHeight y ClientWidth. Para especificar cual control tenga el foco inicial de la forma en tiempo de corrida, use la propiedad ActiveControl. Para pasar todos los eventos del teclado al form, en vez del control seleccionado, use la propiedad KeyPreview. Para especificar un men particular, si el form contiene mas de un men, use la propiedad Men. Muchas veces no se desea que la aplicacin cargue a memoria todos los forms al mismo tiempo. Para reducir la cantidad de memoria requerida en el momento de la carga de la aplicacin, es posible que se desee crear algunos forms solo cuando se necesiten. Por ejemplo, un dialogo necesita estar en memoria solo durante el tiempo el usuario interacta con l. Para crear un form dinmicamente: Seleccione File|New Form de la barra componentes para desplegar un nuevo form. Remueva el form de la lista de forms Autocreate de la pagina Project Options|Forms. Esto remueve la invocacin del form al inicio. Como una alternativa, se puede remover manualmente la lnea del fuente del proyecto: Application.CreateForm(TResultsForm, ResultsForm); Invocar el form cuando se necesite usando el mtodo Show del form, si el form no es modal, o el mtodo ShowModal, si el form es modal. Un manejador de evento para el form principal debe crear una instancia del form resultado y destruirla. Una forma de invocar el form resultado es usar una variable global como se presenta. procedure TMainForm.Button1Click(Sender: TObject); begin ResultsForm:=TResultForm.Create(self) ResultsForm.ShowModal; ResultsForm.Free; end; El manejador de evento en el ejemplo borra el form despus de ser cerrado, as que el form debe ser recreado 13

si se desea usar en otro lado de la aplicacin. H asta este punto ha sido introducido al ambiente Delphi y ha visto superficialmente el lenguaje Object Pascal, con esto podemos pasar a ver el uso de los componentes en Delphi. Delphi se trata de esto precisamente. Programacin Visual usando componentes es la caracterstica principal del ambiente de desarrollo. Delphi viene con un numero detallado de componentes listo para usar. El objetivo de esta unidad es de mostrar como utilizar los principales componentes de las principales barras. Introduccin Todos los componentes de Delphi derivan de la clase TComponent por esta razn todos los componentes heredan las propiedades pblicas (published) Name y Tag. A travs de la propiedad Name se puede accesar las propiedades y mtodos del objeto. La propiedad Tag es una propiedad Integer para uso en cualquier propsito. Los componentes visibles derivan de las clases TGraphicControl, para aquellos que no usan manejadores de ventanas, o TWinControl, para aquellos que poseen manejadores de ventanas. Estas dos clases derivan directamente de la clase base TControl por esta razn todos los componentes visibles poseen algunas propiedades y mtodos comunes tales como: cursor, height, hint, left, top, width, action, show, hide, showhint, refresh, visible, entre otros... Nota: No se preocupe si no entiende a cabalidad los prrafos anteriores, ya que en el prximo curso se tocarn temas donde muchos de estos trminos sern debidamente definidos.

14

Componentes Standard Los componentes de la pgina de Standard de la paleta de Componentes forma los elementos de Controles de Windows para la aplicacin: Frames MainMenu Abre un dialogo que despliega el listado de frames incluidos en el proyecto actual. Seleccione cualquiera haciendo click en el botn OK. Crea una barra de men para el form. Para accesar a los eventos de los items del men principal, agregue al componente MainMenu a un form y haga doble click 15

PopupMenu Label Edit Memo Button CheckBox

para abrir el diseador de men. Crea un men popup que aparece cuando el usuario hace click derecho. Para accesar los eventos de los tem en un men popup, agregue el componente a un form y haga doble click para abrir el diseador de men. Despliega un texto que el usuario no puede seleccionar o manipular, como un titulo de una caja de edicin. Despliega una rea para editar donde el usuario puede entrar y modificar una lnea de texto. El Edit es uno de algunos controles de Texto. Despliega una rea para editar donde el usuario puede entrar y modificar mltiples lneas de datos. Crea un botn para presionar que el usuario utiliza para iniciar acciones. Presenta una opcin que el usuario puede cambiar entre Si/No o Falso/Verdadero. Use los check boxes para desplegar un grupo de opciones que no sean mutuamente exclusivas. Los usuarios puede seleccionar mas de una opcin a la vez. Presenta una opcin que el usuario puede cambiar entre Si/No o Falso/Verdadero. Use los radio buttons para desplegar un grupo de opciones mutuamente exclusivas. Los usuarios solo podrn seleccionar una opcin. Despliega una lista de opciones con scroll. Despliega una lista de opciones en una combinacin de list box y Edit Box. Los usuarios pueden entrar datos en el edit box o seleccionar un tem del list box. Provee un contenedor para agrupar opciones relacionadas en un form. Crea una caja de grupo que contiene radio buttons en un form. Crea paneles que pueden contener otros componentes en un form. Se puede usar paneles para crear toolbars y lneas de status. Crea una coleccin de acciones que centraliza las acciones de la aplicacin.

RadioButton ListBox ComboBox GroupBox RadioGroup Panel ActionList Componentes Additional

Los componentes en la pagina Additional de la paleta de Componentes hace los elementos especializados de una aplicacin Windows: BitBtn SpeedButton Image ApplicationEvents Crea un botn que despliega un bitmap. Provee un botn que despliega un glyph pero no un caption. Speed buttons pueden ser agrupados dentro de un panel para crear paleta de herramientas. Desplegar un bitmap, icono o meta file. Un componente que intercepta los eventos de un aplicacin. Utilice como una forma de configurar un manejador de eventos para los eventos de aplicaciones usando el IDE o para asociar los manejadores de eventos con cada form en la aplicacin.

Componentes Win32 Los componentes de la pagina Win32 provee acceso a los controles comunes de la interface de usuario de Windows 32bit a las aplicaciones.

16

TabControl PageControl

ImageList

ProgressBar

Animate

DateTimePicker

Similar a los divisores de un gabinete de archivos o de un cuaderno, este componente provee un conjunto de tabs para dividir. Un conjunto de paginas que hace un dialogo multipaginas. Use este control para definir mltiples paginas lgicas o secciones de informacin dentro de la misma ventana. Esto es una coleccin de imgenes del mismo tamao, cada cual puede ser referenciado por su ndice (Index). Las listas de imgenes son usadas para manejar eficientemente los conjuntos grandes de iconos y bitmaps. Todas las imgenes en un listado de imgenes son contenidas en un simple y gran bitmap en un formato de dispositivo de pantalla. Un image list tambin incluye bitmaps monocromticos que contengan mascaras usadas para dibujar imgenes transparentemente. Para crear un listado de imgenes, agregue el componente ImageList al form y haga doble click para desplegar el editor de Listado de Imgenes. Una barra rectangular que llena de izquierda a derecha, similar a la que se presenta cuando se copia archivos en el explorador de Windows. Use este control para proveer informacin acerca el progreso de una operacin larga o procesos en background. Un control de Windows de animacin que silenciosamente despliega un Audio Video Interleaved (AVI), una serie de cortes de bitmaps como un pelcula. Despliega un list box para entrada de fechas u horas. Los usuarios pueden seleccionar del calendario o seleccionar fechas y horas con las flechas de Arriba y Abajo o escribindolo. Se debe tener la ultima versin del COMCTL32.DLL, usualmente se localiza en el directorio Windows\System o en el directorio Windows\System32. rea para desplegar el estado de las acciones en el fondo de la pantalla. Maneja botones de herramientas y otros controles, ordenndolos en fila y automticamente ajustando sus tamaos y posiciones.

StatusBar ToolBar

Ejemplo Componentes Standard: A continuacin crearemos una aplicacin utilizando los componentes Button, Edit, Label, CheckBox y Radiogroup. Primero, se crea un nuevo proyecto, haga click en el men File | New Application. Segundo, colocaremos los componentes como se muestran:

17

Tercero, asignaremos las propiedades que como se muestra: Edit1 propiedad Text= Button1 propiedad Caption = 'Accin' CheckBox1 propiedad Caption = 'Negrita' CheckBox2 propiedad Caption = 'Cursiva' RadioGroup1 propiedad Caption = 'Color' , ItemIndex = 0 y Items.Strings = ( 'Blanco', 'Azul', 'Amarillo', 'Rojo') Cuarto, haremos doble click en el botn para asignar su evente OnClick como se muestra: procedure TForm1.Button1Click(Sender: TObject); var FS : TFontStyles; //TfontStyle es un conjunto de estilos (fsBold, fsItalic, //fsUnderline, fsStrikeOut) begin FS := []; if CheckBox1.Checked Then Include(FS,fsBold); //Include es procedimiento que incluye un elemento a un //conjunto if CheckBox2.Checked Then Include(FS,fsItalic); Edit1.Font.Style := FS; Case RadioGroup1.ItemIndex of 0: Edit1.Color := clWhite; 1: Edit1.Color := clBlue; 2: Edit1.Color := clYellow; 3: Edit1.Color := clRed; end; end;

18

Ejemplo Componentes Additional: A continuacin crearemos una aplicacin utilizando los componentes Image, BitBtn y SpeedButton. Primero, se crea un nuevo proyecto, haga click en el men File | New Application. Segundo, colocaremos los componentes como se muestran:

Tercero, se asignar las propiedades a los distintos componentes. Image1 haga click en su propiedad Picture y busque en disco una imagen SpeedButton1 cambie la propiedad Caption y escriba Stretch. SpeedButton2 cambie la propiedad Caption y escriba Center. BitBtn1 cambie la propiedad Kind y seleccione la opcin bkClose. Cuarto, asignar los manejadores de evnetnos de los botones (Speed): SpeedButton1 procedure TForm1.SpeedButton1Click(Sender: TObject); begin Image1.Stretch := Not Image1.Stretch; end; SpeedButton2 procedure TForm1.SpeedButton2Click(Sender: TObject); begin Image1.Center := Not Image1.Center; end;

19

Quinto, corra la aplicacin. Al hacer click en el botn Stretch podemos darnos cuenta que la imagen toma el tamao del recuadro. Cuando se presiona el botn Center se pude notar que la imagen es centralizada en el recuadro, esto lo podremos notar si no se encuentra Stretch. Ejemplo Componentes Win32: A continuacin crearemos una aplicacin utilizando los componentes ProgressBar, StatusBar, PageControl, Animate, MonthCalendar, ImageList y ToolBar. Primero, se crea un nuevo proyecto, haga click en el men File | New Application. Segundo, se colocan los componentes en el formulario se se les asigna las propiedades: ImageList1 haga doble click en el componente para agregar las imagenes que sern utilizadas. (Las imagenes seleccionadas en el ejemplo fueron tomadas del Program Files\Common Files\Borland Shared\Images\Buttons\ )

StatusBar1 cambie su propiedad SimplePanel y asignele el valor True. ToolBar1 cambie su propiedad Flat=True, Images=ImageList1. Haga click derecho en esta barra para crear tres botones en la opcin New Button. A cada botn asigne el evento OnClick: ToolButton1 procedure TForm1.ToolButton1Click(Sender: TObject); begin PageControl1.ActivePage := TabSheet1; end; ToolButton2 procedure TForm1.ToolButton1Click(Sender: TObject); begin PageControl1.ActivePage := TabSheet2; 20

end; ToolButton3 procedure TForm1.ToolButton1Click(Sender: TObject); begin PageControl1.ActivePage := TabSheet3; end; PageControl1 asigne su propiedad Align=alClient y Images=ImageList1. El object inspector busque el evento OnChange y haga doble click para asignar dicho evento. procedure TForm1.PageControl1Change(Sender: TObject); begin StatusBar1.SimpleText := PageControl1.ActivePage.Caption; end; Haga click derecho en el pagecontrol para crear tres tabsheet en la opcin New Page. A en el primer sheet asgigne su propiedad Caption=Calendario y coloque el componente Month Calendar1. En el segundo tab asigne su propiedad Caption=Animacin y coloque el componente Animate1 y asigne su propiedad CommonAvi= aviCopyFiles y su propiedad Active=True. El tercer tab asigne su propiedad Caption=Barra Progreso y coloque el componente ProgressBar1 asigne su propiedad Max=10000 y Step=1. Adems coloque un Button1 y asigne su propiedad Caption=Activa y haga doble click en l para programar su evento OnClick. procedure TForm1.Button1Click(Sender: TObject); begin progressbar1.Position := 0; While progressbar1.Position < progressbar1.Max do progressbar1.StepIt; end; Tercero, corra la aplicacin.

21

E l soporte para desarrollo de aplicaciones para base de datos en Delphi es una de la principales caractersticas del ambiente de programacin. Muchos programadores gastan la mayor parte de su tiempo desarrollando cdigo para acceso a base de datos, que debe ser la porcin mas robusta de la aplicacin. En esta unidad se presenta una introduccin de extenso soporte para desarrollo de aplicaciones para base de datos. Lo que no se cubre en esta seccin es una discusin sobre la teora del diseo de base de datos. Se asume que usted ya conoce los fundamentos del diseo de base de datos y ya ha diseado la estructura de alguna base de datos. Introduccin al BDE Borland Database Engine (BDE) es un software de 32 bits basado en Windows que es el corazn del manejo de Base de Datos y el encargado de las conexin a la misma detrs de los productos Borland, as como en Paradox para Windows y Visual dBase para Windows. El BDE ofrece un conjunto de caractersticas robustas para asistir los desarrolladores de aplicaciones ClienteServidor.

22

Acerca de Base de Datos y Tablas en Delphi En general, podemos utilizar el termino base de datos cono una coleccin de tablas. Pero que es exactamente una tabla? Una tabla en un base de datos puede ser comparada con un archivo de registros en pascal . Una tabla tiene registros o filas, y un numero determinado de columnas, una para cada campo del registro. Una vez se tenga un tabla de base de datos, uested puede realizar un numero determindado de acciones, como editar valores, insertar registros, y borrar registros existentes. Delphi incluye un numero de componetntes relativos a Base de Datos .La paleta de componentes Data Access contiene componentes usados para interactuar con las base de datos. La mayora de ellos son componnetes no visuales, ya que ellos encapsulan connexiones de base de datos, tablas, queries, y elementos similares. Delphi tambien provee un numero predefinido de componentes usted puede utilizar para visualizar y editar los datos. En la paleta de componentes Data Controls, estan los componentes visibles usados para visualizar y editar los datos en un Form. Estos controles son llamados controles dataaware. Uso de los componentes Table y Query La manera ms simple de especificar acceso a los datos en Delphi es usando el componente Table. Un objeto Table simplemente se refiere a una tabla de la base de datos. Cuando usted use un componente Table, usted necesita indicar el nombre de la base de datos que usted quiere utilizar en la propiedad DatabaseName. Puede poner un alias o un path de un directory donde se encuentre los archivos de datos. El Object Inspector lista los nombres disponibles, que dependen de los alias definidos e 23

instalados en el BDE. Ademas debe especificar la propiedad TableName. El Object inspector listar todas las tablas disponibles en la base de datos actual o el directorio, por ende debe asignar un valor a la propiedad DatabaseName primero y luego la propiedad TableName. Otro componente de acceso a datos en Delphi es el componente Query. Un query es usualmente ms complejo que un Table, poque requiere un comando del lenguaje SQL. El componente Query tiene la propiedad DatabaseName como el componente Table, pero no tiene una propiedad TableName. La tabla es indicada en el comando SQL, guardado en la propiedad SQL Como ejemplo puede escribir un comando simple de SQL como sigue: Select * from Customers donde .customers es el nombre de la tabla, y el asterisco (*) indica que cuanda se quiere usar todos los campos de la tabla. Si posee buenos conocimientos de SQL, usted podra usar un componente query ms a menudo, pero la eficiencia de la tabla o el query depende de la base de datos que se utilice. El componente Table tiende a ser ms rpido en base de datos locales, mientras que el componente Query tiende a ser ms rpido en los servidores SQL, adems esto no es siempre el caso. El tercer componente de accesso a datos es el StoredProc, que se refiere a procedimientos almacenados de los servidores de base de datos SQL. Puede correr estos procedimientos y obtener resultados en un form de una tabla. Los procedimientos almacenados pueden solamente ser usados con servidores SQL. En un dataset se pueden realizar un numero de operaciones para manejo de los datos, entre ellos: Next se coloca al siguiente registro del dataset. Prior se coloca en el registro anterior en el dataset. First se coloca en el primer registro del dataset. Last se coloca en el ultimo registro del dataset. BOF retorna True si se encuentra en el primer registro. EOF retorna False si se encuentra en el ultimo registro. CanModify retorna True si el dataset puede ser modificado. Algunas veces se trabaja con datasets de solo lectura. Puede ser el caso de una base de datos que se encuentre en un CDROM o de un query que no arroje resultado vivos. Antes de intentar modificar los datos de un dataset debe llamar este metodo. Edit coloca el dataset en modo de edicin y el estado en dsEdit. Insert o Append agrega un nuevo registro en el dataset y el estado en dsInsert. Delete elimina el registro seleccionado del dataset. Post guardar en la base de datos los cambios de un Edit o Append o Insert. Nota: Cuando se llaman los metodos Edit, Insert o Append debe recordar que los datos siempre se guardar cuando sale del registro actual. Cuando usted opera los datos con cada uno de estos tres componentes, se puede trabajar con diferentes estados que son especificados por la propiedad State, que puede tomar diferentes valores: dsBrowse indica que el conjunto de datos en modo normal, y es utilizado para ver y revisar los datos. dsEdit indica que el conjunto de datos esta en estado de ediccin. Estos componetes entran en modo de ediccin cuando el programa llama su mtodo Edit o el componente Datasource 24

tiene su propiedad AutoEdit con valor true, y el usario inicia una ediccin en un componente dataaware. Como DBGrid o DBEdit. Cuando el registro editado es guardado, el conjuto de datos sale del estado dsEdit. dsInsert indica cuando un registro nueva est siendo agregado al conjunto de datos. Esto puede suceder cuando se llama el mtodo Insert del componente. dsInactive es el estado de un conjunto de datos cerrado. dsSetKey indica cuando se est preparando una busqueda en el conjunto de datos. Este es el estado entre la llamada SetKey y la llamada a Gotokey or GotoNearst. dsFilter es el estado del conjunto de datos mientras se asigna un filtro; esto es, durante la llamada al evento OnFilterRecord. Adems tenemos los estados dsCalcFields, dsNewValue, dsOldValue y ds CurValue. Componentes Data Access Los componentes en la pagina de Data Access de la paleta de Componentes permite conectarse a base de datos usando el Borland Database Engine (BDE): DataSource Acta como medio entre un componente Dataset como TTable y los componentes de visualizacin de datos como TDBGrid. Toma los datos de una tabla fsicamente en una base de va el BDE y suple a uno o ms de los componentes de visualizacin de datos a travs de un componente DataSource. Convenientemente, enva data recibida del componente a la base de datos fsicamente va el BDE. Utiliza comandos SQL para tomar datos de una tabla fsica en una base de datos y suple uno o mas componentes de visualizacin a travs del componente TdataSource. Convenientemente, usa comando de SQL para enviar datos desde el componente a la base de datos fsicamente va el BDE. Configura una conexin persistente a una base de datos, especialmente a una base de datos remota requiriendo login y password de usuario.

Table

Query

Database

Componentes Data Controls Los componentes en la pagina Data Controls de la paleta de Componentes contiene elementos especializados de controles de base de datos disponibles para las aplicaciones: DBGrid Tablero que permite ver y editar los datos tabularmente similar a un hoja electrnica. Botones de navegacin que permite mover el puntero del registro actual hacia delante y hacia atrs. El navegador puede poner la tabla en estados de Insert, Edit o Browse, guardar o modificar registros y tomar datos actualizados para actualizar el despliegue. Etiqueta que despliega el valor de un campo en el registro actual. Caja de edicin que despliega o edita un campo en el registro actual. Caja memo para desplegar o editar textos en el registro actual. Caja de imagen despliega, corta o pega imgenes bitmaps al y desde el registro actual seleccionado. Caja de marcar que despliega o edita el valor de un campo boleano desde el registro actual.

DBNavigator

DBText DBEdit DBMemo DBImage DBCheckBox

25

DBRadioGroup

Grupo de botones radio que despliega o guarda valores de columna.

Primero, se crea un nuevo proyecto, haga click en el men File | New Application. Segundo, colocaremos los componentes como se muestran:

Tercero, se asignar las propiedades a los distintos componentes. Table1 (Data Access) cambie su propiedad DatabaseName='DBDEMOS', TableName='Animals.db'. Datasource1 (Data Access) cambie la propiedad Dataset=Table1. Ms adelante se darn algunos concepto de que es Datasource y como se utiliza. DBGrid1 (Data Controls) cambie la propiedad Datasource=Datasource1. Button1 (Standard) cambie la propiedad Name='bPrimero', Caption='>'. Label1 (Standard) cambie la propiedad Caption='Posicin'. Label2 (Standard) cambie la propiedad Name='lPos'. Cuarto, asignar los eventos a cada componente Datasource1 (OnDataChange) procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin if Table1.Bof Then lPos.Caption := 'Inicio' Else if Table1.Eof then lPos.Caption := 'Fin' else 26

lPos.Caption := 'Entre el inicio y el fin'; end; bPrimero (OnClick) procedure TForm1.bPrimeroClick(Sender: TObject); begin Table1.First; end; bAnterior (OnClick) procedure TForm1.bAnteriorClick(Sender: TObject); begin Table1.Prior; end; bSiguiente (OnClick) procedure TForm1.bSiguienteClick(Sender: TObject); begin Table1.Next; end; bUltimo (OnClick) procedure TForm1.bUltimoClick(Sender: TObject); begin Table1.Last; end; Quinto, corra la aplicacin.

27

TDatasource Un componente TDatasource fue utilizado en el ejemplo anterior. TDatasource es la va para abilitar la conexion entre un componente Data Acces como TTable y un componente Data Control como el TDBEdit o el TDBGrid que utilizamos en el ejemplo anterior. El TDatasource tiene unas cuantas propiedades y eventos que hacen la vida del programador mas simple cuando se manipulan datos. La propiedad State del TDatasource nos dice el estado actual del dataset. El evento OnStateChange se dispara cuando el valor de esta propiedad cambia. El evento OnDataChange es ejecutado cuando el dataset se activa o el dataset informa que los datos han cambiado en algo. El evento OnUpdateData ocurre cuando un registro es insertado o actualizado. Puede responder a este evento siempre que necesite dar seguimiento a algunos de los datos en su aplicacin. Los Mdulos de Datos Los mdulos de datos le permite tener todas las reglas de base de datos y relaciones de forma centralizadas para ser compartida a los diferentes proyectos, grupos y entidades de la corporacin. Los mdulos de datos estn encapsulados en el componente TDataModule del VCL. Piense en un TDataModule como un Form invisible donde puede colocar los componentes Data Access que se utilizarn en el proyecto. Para crear un instancia del mdulo de datos es bastante simple: Seleccione File | New del men prinicipal y luego seleccione Data Module del repositorio de objetos. La justificacin simple para usar el TDataModule de poner slo los componentes Data Access en un Form es que es mas sencillo compartir los mismos datos a multiples Forms y unidades en su proyecto. En una situacin ms compleja, se tendr una gran cantidad de componentes TTable, Tquery y/o TstoredProc. Se tendr relaciones definidas entre los componentes y adems reglas a nivel de campos, como valores mnimo / mximo o fromatos de despliegues. Adems este arreglo de componentes Data Access modela las reglas del negocio de la corporacin. Despues de tomar tanto tiempo para 28

configurar esto, no se deseara tener que hacer esto nuevamente en otra aplicacin. En estos casos, podra guardar su mdulo de datos en el repositorio de objetos para usarlo luego. Si trabaja en un ambiente de equipo, debera guardarse el objeto de repositorio compartido en la red para ser utilizado por los desarrolladores del equipo. En Delphi V el mdulo de datos adquirio nuevas caracteristicas para darle mayor facilidad en el manejo de los datos y los componentes dentro del mismo. El diseador de mdulo de datos se divide en dos paneles: El panel izquierdo, llamado Tree view, muestra la relacin padrehijo de los componentes en el mdulo de datos. El panel derecho tiene dos paneles: Componentes (Components) y Diagrama de Datos (Data Diagram). Haga click en la pestaa Components para ver los componentes del mdulo como apareceran en un Form (representados por los iconos de la paleta). Haga click en la pestaa Data Diagram la dependencia entre componentes. Los componentes no aparecern en el diagrama hasta que sean arrastrados desde el panel izquierdo Tree View. Puede agregar componentes al mdulo de datos seleccionandolos de la paleta de componentes y haciendo click en el Tree View o en la pgina de Componentes. Se puede utilizar el Object Inspector para configurar las propiedades de los componentes mientras se trabaja en diseo. Curso Delphi Bsico Desarrollo en Delphi V 1

29