Delphi Tutorial: Creating An Array of Edit Boxes: Click Here

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 25

Delphi tutorial: Creating an array of Edit Boxes

Click here if you want to know more about the source and format of these pages. There is a search button at the bottom of the page. This tutorial assumes that you are comfortable with using arrays in general. For example, if writing a program to keep track of a small shop's stock of the 20 items it routinely carries, it is assumed that you would immediately plan to use something like StockLevel:array[1..20] of integer; (Working from 0 is often beneficial, but used 1 in case the zero index confused anyone.) I hope you will see ways to write a better program as the tutorial progresses. I am trying to keep the project from having too many distracting embellishments. You may find one particular aspect of using an array of controls odd.... you won't be able to place them on your form as you would a plain edit box. More on this later. I am endebted to Mr. Alan Lloyd of comp.lang.pascal.delphi.misc newsgroup for getting me past obstacles I encountered when I first tried to use arrays of controls. The program will create a screen like:
==================== Add these up 4 2 ? 5 8 ? 1 1 ? 5 7 ?

Click here when done ====================

The user replaces each '?' with something, and the program marks the answers. N.B. For this tutorial about arrays, the program we are writing is NOT asking the user to add four thousand, five hundred, fifteen to anything. The user IS being asked to do four separate sums, the answer to the second being 13. (The program could be modified to ask the user to add two four digit numbers.) Arrays of edit boxes will be used for the digits of the first number in each problem (FirstNum[x]), for the digits of the second number (SecNum[x]), and the digits of the user's guess (Guess[x]). The digits of the right answer will be in an array of strings (Correct[x]). While it seems odd to be using strings to hold the elements of arithmetic problems, it works well. __________________ As a first step, we will create the array FirstNum, and the first element of that array. The index ("number") of that element is going to be 0. Start a new project called DD15, with my usual suffixes to distinguish forms, units, etc. Add StdCtrls to the Uses section. The TEdit control is defined in StdCtrls, so the compiler needs StdCtrls to set up our array of TEdit controls.

In the Var section add:


FirstNum:array [0..3] of TEdit;

Use the Object Inspector to create an OnCreate event handler for the application's form (DD15f1, in my naming scheme). Add the following to it:
FirstNum[0]:=TEdit.Create(Self); FirstNum[0].parent:=Self; FirstNum[0].top:=5; FirstNum[0].left:=5; FirstNum[0].height:=50; FirstNum[0].width:=50; FirstNum[0].enabled:=true; FirstNum[0].show; FirstNum[0].text:='Hi';

...and run the program. You should get an edit box in the upper left, saying 'Hi'. Some fine points: a) My teacher suggested using
FirstNum[0].parent:=TWinControl(Self);

I looked up what the Delphi help had to say about TWinControl: 'The TWinControl component is the abstract component type for windowed controls, which are controls with window handles, including the standard Windows controls. It is unlikely that you will ever derive a new component directly from TWinControl, however. Instead, you will usually derive from TCustomControl' My simpler version seems to work. (Alan was creating an array of panels, maybe that matters.) b) The program 'works' without the FirstNum[0].enabled:=true; and FirstNum[0].show;... but assumptions about initial states are always dangerous in programming. To quote from the Delphi Help: 'Since a constructor always clears the storage it allocates for a new object, all fields automatically have a default value of zero (ordinal types), nil (pointer and class types), or empty (string types).' c) Of course, the FirstNum[0].text:='Hi'; isn't necessary, but it does allow you to be sure that any edit box you see is the one you created. d) By the way... don't try to do FirstNum[0].setfocus; because it won't work within FormCreate, even for an 'ordinary' edit box. Setfocus must be done in a different procedure after form has been created. I've had this type of problem in other circumstances, and any feedback on ways around it would be welcomed! The problem: Often I create, initialise, etc, objects, etc, in the main form's OnCreate handler, but find that I can't do all of the initialisation I would like because, in essense(?) I'm trying to use things before they are set up and available(?)

Once you have the above working, you have mastered all of the essentials! The rest of the tutorial is just putting together the promised example, with a few hints at shortcuts along the way. ______________________________ Start a new project. Again, I'm calling mine DD15 Add StdCtrls to the Uses section. In the Var section add:
FirstNum, SecNum, Guess:array [0..3] of TEdit; Correct:array [0..3] of string;

(If I were writing this for the end result, I'd use a two dimensional array. You might like to try re-writing it that way as an exercise!) Just after the Var section, make a Const section with:
GridTop=25; GridLeft=15; VSpace=20; HSpace=40; Gap=10;

(These are just for things like positioning the edit boxes, they don't need to be 'understood'.) Use the Object Inspector to create an OnCreate event handler for DD15f1. Make it:
procedure TDemoF1.FormCreate(Sender: TObject); var b1:byte; begin for b1:=0 to 3 do begin FirstNum[b1]:=TEdit.Create(Self); secnum[b1]:=TEdit.Create(Self); Guess[b1]:=TEdit.Create(Self); FirstNum[b1].parent:=Self; secnum[b1].parent:=Self; Guess[b1].parent:=Self; FirstNum[b1].top:=GridTop; secnum[b1].top:=GridTop+Gap+VSpace; Guess[b1].top:=GridTop+2*(VSpace+Gap); FirstNum[b1].left:=GridLeft+b1*(HSpace+Gap); secnum[b1].left:=GridLeft+b1*(HSpace+Gap); Guess[b1].left:=GridLeft+b1*(HSpace+Gap); FirstNum[b1].width:=HSpace; secnum[b1].width:=HSpace; Guess[b1].width:=HSpace; FirstNum[b1].height:=VSpace; secnum[b1].height:=VSpace; Guess[b1].height:=VSpace; FirstNum[b1].show; secnum[b1].show;

Guess[b1].show; FirstNum[b1].enabled:=false; secnum[b1].enabled:=false; Guess[b1].enabled:=true; FirstNum[b1].text:='?'; secnum[b1].text:='?'; Guess[b1].text:='?'; end;(*for*) end;(*OnCreate*)

... and run the program. You should get a matrix of edit boxes, four wide, three high, all with a '?' in them. ____________ Now to set up problems to solve.... Add a menu with a 'New' option, named mmNew Make the mmNewClick event the following:
procedure TDemoF1.mmNewClick(Sender: TObject); var b1,bNum1,bNum2:byte; begin for b1:=0 to 3 do begin bNum1:=random(10); bNum2:=random(10); FirstNum[b1].text:=IntToStr(bNum1); SecNum[b1].text:=IntToStr(bNum2); Correct[b1]:=IntToStr(bNum1+bNum2); Guess[b1].text:='?'; end; Guess[0].setfocus; end;

Get that to run without error messages. (Unless you want the same problems over & over again, add randomize; to FormCreate) Add a button to the form, underneath where the matrix of edit boxes appears (though there will be none in sight on the form you edit... they only appear when the program runs, as you have seen by now.) Name it buClickToMark, Caption 'Click here to mark answers'. Add a label to the form below buClickToMark. Name: laScore, Visible: false. (Don't set Enabled false, by the way... it acts like Visible:=false!) When testing the program, using the tab key to go from window to window is easy. You never need touch the mouse. Make the OnClick for buClickToMark:
procedure TDemoF1.buClickToMarkClick(Sender: TObject); var b1,bScore:byte; begin

bScore:=0; for b1:=0 to 3 do begin if Guess[b1].text= Correct[b1] then inc(bScore); end; bScore:=bScore; laScore.caption:=IntToStr(bScore); laScore.show; end;

Remember: THis program is asking the user to do four separate addition problems. The user is NOT adding two four digit numbers, though you could modify the program for that use quite easily when everything else is working. (Irrelevant aside: You might be amused to know that I spent about half an hour trying to find out why I always got a score of 4 if the test before inc(bScore) was
if IntToStr(StrToInt(FirstNum[b1].text)+StrToInt(SecNum[b1].text))=Correct[b 1]

... of course, I looked in all the wrong places first.) There you have it! There's plenty of room to improve the application, of course, but the use of several arrays of edit boxes is clear, I hope. There is a Level Four tutorial which follows on from this with ideas for making use of modified standard components. (Filename at one point was Dt4a.htm) Tom Boyd

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); NOTA: ffCurrency, ffExponent, ffFixed, ffGeneral, ffNumber

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.

1. Sitas un componente tdatabase y haces doble clic sobre l. Selecciona el alias que apunta a tu bbdd Interbase y escribe el alias que utilizars en toda tu aplicacin. Clickea sobre defaults y rellena el usuario y password si fuera necesario y por ltimo deshabilita la opcin de Login prompt, en la parte inferior.

2. Sita un tquery y en la property databasename selecciona el alias que has puesto en el componente tdatabase. En la property SQL escribe "select * from <tabla>" 3.Situa un tdatasource y como property tdataset selecciona query1. 4.Sita un tdbgrid y como datasource selecciona datasource1. 5.Pon active a true de la query y ejecuta.

You might also like