Manejo de La Paleta de Componentes Delphi

71
Manejo de la paleta de Componentes 1. INTRODUCCION DELPHI tiene una serie de componentes que nos ayudan a realizar nuestro trabajo, como todos los elementos de DELPHI estos son tratados como objetos a esto se le suma un interfaz grafica muy amigable, la cual nos ayuda a crear interfaces de usuario mas elegantes y amigables para el usuario. Para usar cualquiera de los componentes solo basta con hacer clic sobre él en la barra de componentes y luego “dibujarlo” sobre el formulario. 1) COMPONENTE Edit Este componente nos permite ingresar texto, aunque también podemos mostrar un texto mediante la propiedad Text, existen otros controles que son más adecuados para este trabajo. PROGRAMA 1.- El siguiente programa muestra dos componente Edit: Edit1 y Edit2 Edit1 ha sido configurado en el evento KeyPress para aceptar solo los números del 0 al 9 y además la tecla de retroceso (mediante #8) en caso contrario se emitirá un sonido de advertencia Edit2 hace uso de su evento Change, de tal manera que si ingresamos la palabra adecuada cambiará el color de fondo de Edit1 unit Edit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; 1

description

Manejo de La Paleta de Componentes Delphi

Transcript of Manejo de La Paleta de Componentes Delphi

Page 1: Manejo de La Paleta de Componentes Delphi

Manejo de la paleta de Componentes

1. INTRODUCCION

DELPHI tiene una serie de componentes que nos ayudan a realizar nuestro trabajo, como todos los elementos de DELPHI estos son tratados como objetos a esto se le suma un interfaz grafica muy amigable, la cual nos ayuda a crear interfaces de usuario mas elegantes y amigables para el usuario.

Para usar cualquiera de los componentes solo basta con hacer clic sobre él en la barra de componentes y luego “dibujarlo” sobre el formulario.

1) COMPONENTE Edit

Este componente nos permite ingresar texto, aunque también podemos mostrar un texto mediante la propiedad Text, existen otros controles que son más adecuados para este trabajo.

PROGRAMA 1.- El siguiente programa muestra dos componente Edit: Edit1 y Edit2

Edit1 ha sido configurado en el evento KeyPress para aceptar solo los números del 0 al 9 y además la tecla de retroceso (mediante #8) en caso contrario se emitirá un sonido de advertencia

Edit2 hace uso de su evento Change, de tal manera que si ingresamos la palabra adecuada cambiará el color de fondo de Edit1

unit Edit1;interfaceuses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;

typeTForm1 = class(TForm)

Edit1: TEdit;Edit2: TEdit;

procedure Edit1KeyPress(Sender: TObject; var Key: Char);procedure Edit2Change(Sender: TObject);

private{ Private declarations }

public{ Public declarations }end;

varForm1: TForm1;

implementation

1

Page 2: Manejo de La Paleta de Componentes Delphi

{$R *.dfm}

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);begin

if not (key in [’0’..’9’,#8]) thenbeginkey:=#0;beep;end;

end;procedure TForm1.Edit2Change(Sender: TObject);

begin

if (Edit2.Text=’hola’) then

beginEdit1.Color:=clLime;edit1.Text:=’clLime’;end

else

beginedit1.Color:=clGray;edit1.Text:=’clGray’;

end;end;

end.

Observar que en la declaración de CLASE se están declarando los objetos TEdit, estas líneas de código no las escribimos nosotros, estas se generan por si solas al momento de “dibujar” el componente en el formulario.Para ingresar el código en los eventos siga los siguientes pasos:

Para el evento KeyPress del componente Edit1:a) Selecciones el componente haciendo u clic sobre élb) En el Object Inspector seleccione la pestaña Eventsc) Busque el evento OnKeyPressd) Haga doble clic en el cuadro vacio de la derechae) Aparecerá el siguiente código:

Pocedure TForm1.Edit1KeyPress(Sender:TObject; var Key: Char);beginend;

f) Luego escriba el código restante entre begin y end.

Nota.- El funcionamiento de ambos componentes es independiente aunque se intercambie información entre ellos.

FORMULARIO EN PLENA EJECUCION:

2

Page 3: Manejo de La Paleta de Componentes Delphi

2) COMPONENTE Label

Este componente ha sido diseñado para mostrar información al usuario, a diferencia del control Edit que no solo puede ser usado para mostrar información sino además ingresar información.

Los seis componentes Label tienen las siguientes propiedades, definidas en el Object Inspector:

Label1:

Caption: Escriba lo siguiente: Este es un ejemplo del uso de la etiqueta label

En la propiedad Font tenemos las siguientes propiedades

Size: 12

Name: MS Sans Serif

Label2:

Caption: Como se puede ver esta etiqueta es personalizable

En la propiedad Font tenemos la siguiente propiedad

Size: 14

Label3:

Caption: Se le puede asignar multiples características como:

En la propiedad Font tenemos la siguiente característica

Size: 12

Label4:

Caption: Color de fondo

Color clYellow

En la propiedad Font tenemos las siguientes propiedades:

Size: 12

Label5:

Caption: Que el curso cambie al pasar sobre la etiqueta

En la propiedad Font tenemos las siguientes propiedades

3

Page 4: Manejo de La Paleta de Componentes Delphi

Size: 8

Label6:

Caption: El tipo de letra, el color de la letra y su tamaño

En la propiedad Font tenemos las siguientes propiedades

Size: 16

Style:

fsUndeline: True

Como podemos ver las características de cada componente Label, las estamos manipulando desde las propiedades del Object Inspector, esto quiere decir que las características impuestas nunca podrán variar

PROGRAMA 2.- Este ejemplo contiene seis componentes Label de tipo TLabel con las diferentes propiedades descritas previamente, que puede observarse al ejecutar el programa:

unit Etiquetas;interfaceuses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;

typeTForm1 = class(TForm)

Label1: TLabel;Label2: TLabel;Label3: TLabel;Label4: TLabel;Label5: TLabel;Label6: TLabel;

private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}end.

FORMULARIO EN PLENA EJECUCION:

4

Page 5: Manejo de La Paleta de Componentes Delphi

3) COMPONENTE Button

Este es un componente muy importante y muy usado, mediante él podemos configurar diversas acciones a realizar y manipular, incluso, otros componentes.

PROGRAMA 3.- Este programa verifica si un número ingresado o generado es primo, para esto se necesitan los siguientes componentes:

a) Un componente Edit con name “Dato” b) Tres componentes Button: El primero deberá tener tanto en la propiedad Name como

en Caption la palabra Primo. El segundo se llamará Generar y el tercero Borrarc) Ahora colocar un control Label, borrar el Caption y como nombre colocar Res.

unit Ejem5;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,idglobal;

type TForm1 = class(TForm) Primo: TButton; dato: TEdit; Res: TLabel; Generar: TButton; Borrar: TButton; procedure PrimoClick(Sender: TObject); procedure GenerarClick(Sender: TObject); procedure BorrarClick(Sender: TObject); procedure datoChange(Sender: TObject); procedure FormCreate(Sender: TObject);

5

Page 6: Manejo de La Paleta de Componentes Delphi

private { Private declarations } public { Public declarations } end;

var Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PrimoClick(Sender: TObject);var x,num,code: integer; i: integer;

beginval(dato.Text,num,code);x:=0;for i:=1 to num dobegin if (num mod i)=0 then begin x:=x+1; end;

end;

if x>2 then begin res.Caption:='El número '+ dato.Text + ' no es primo';endelsebegin res.Caption:='El número '+ dato.Text + ' es primo';end;

end;

procedure TForm1.GenerarClick(Sender: TObject);var S: string;

beginrandomize;

6

Page 7: Manejo de La Paleta de Componentes Delphi

str(random(100),S);dato.Text:=S;end;

procedure TForm1.BorrarClick(Sender: TObject);begindato.Text:='';res.Caption:='';dato.SetFocus;end;

procedure TForm1.datoChange(Sender: TObject);begin if dato.Text='' then begin primo.Enabled:=false; end else begin primo.Enabled:=true; end;

end;

procedure TForm1.FormCreate(Sender: TObject);beginprimo.Enabled:=false;end;

end.

FORMULARIO EN PLENA EJECUCION:

Notar que los componentes Button tienen su acción en el evento OnClick, mientras que el componente Edit (Dato) lo hace en el evento OnChange , este procedimiento ha sido hecho para desactivar el componente Primo cada vez que Dato este vacio.

7

Page 8: Manejo de La Paleta de Componentes Delphi

Finalmente, el formulario también tiene un código FormCreate, esta referido al Constructor, aquí se esta desactivando el control Primo cada vez que se inicie la aplicación.

4) OTRO EJEMPLO CON Button

Programa donde se usaran los distintos tipos de mensajes vistos anteriormente, para esto necesitaremos seis componentes Button de nombre Mensaje1, Mensaje2, Mensaje3, Mensaje4, Mensaje5 y Salir, el código para esta aplicación es el siguiente:

PROGRAMA 4.-

unit Mensaje;interfaceuses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTMensajes = class(TForm)

Mensaje1: TButton;Mensaje2: TButton;Mensaje3: TButton;Mensaje4: TButton;Salir: TButton;Mensaje5: TButton;procedure Mensaje1Click(Sender: TObject);procedure Mensaje2Click(Sender: TObject);procedure Mensaje3Click(Sender: TObject);procedure Mensaje4Click(Sender: TObject);procedure SalirClick(Sender: TObject);procedure Mensaje5Click(Sender: TObject);

private{ Private declarations }public{ Public declarations }end;varMensajes: TMensajes;implementation{$R *.dfm}procedure TMensajes.Mensaje1Click(Sender: TObject);beginShowMessage(‘Este mensaje ha sido mostrado usando ShowMessage’);end;procedure TMensajes.Mensaje2Click(Sender: TObject);beginShowMessagePos(‘Este mensaje esta siendo mostrado usando showMessagePos, en la posición

(150,200)’,150,100);

8

Page 9: Manejo de La Paleta de Componentes Delphi

end;

procedure TMensajes.Mensaje3Click(Sender: TObject);beginMessageDlg(‘Para mostrar este mensaje se ha usado MessageDlg’,mtInformation, [mbOk],0);end;procedure TMensajes.Mensaje4Click(Sender: TObject);begin

MessageDlgPos(‘Este mensaje esta siendo mostrado por MessageDlgPos en la posición (150,200)’,

mtWarning, [mbOk],0,150,200);end;procedure TMensajes.SalirClick(Sender: TObject);beginif MessageDlg(‘Esta seguro que desea salir de la aplicación’,mtConfirmation, [mbYes, mbNo], 0) = mrYes thenbegin

MessageDlg(‘Terminando la aplicación’, mtInformation,[mbOk], 0);Close;

end;end;procedure TMensajes.Mensaje5Click(Sender: TObject);beginapplication.MessageBox(‘Este mensaje se muestra con MessageBox’, ‘Observe el idioma’, mb_Ok

+ mb_IconInformation);

end;end.

FORMULARIO EN PLENA EJECUCION:

5) COMPONENTE CheckBox

9

Page 10: Manejo de La Paleta de Componentes Delphi

Un componente CheckBox presenta una opción para el usuario. El usuario puede marcar la caja para seleccionar la opción, o desmarcarla para deseleccionar opción.

Dibujar los siguientes componentes en una nueva aplicación:

a) Un componente GroupBox: Este componente ha sido diseñado para albergar a uno o más componentes en su interior.

b) Dentro del control GroupBox colocar cuatro componentes CheckBox como se muestra en la siguiente figura, de nombre Parlantes, Monitor, CDROM y Fundas.

c) Agregar al formulario un componente Button de nombre btnAccion y en Caption colocar Procesar.

d) Por ultimo insertar un componente Label de nombre Texto con el Caption “Ud. ha elegido: “

FORMULARIO EN PLENA EJECUCION:

El código para el componente se muestra en el siguiente listado:

PROGRAMA 5.-

unit Ejem3;

interfaceuses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;

typeTForm1 = class(TForm)

GroupBox1: TGroupBox;Parlantes: TCheckBox;Monitor: TCheckBox;BtnAccion: TButton;texto: TLabel;CDROM: TCheckBox;Fundas: TCheckBox;procedure BtnAccionClick(Sender: TObject);

10

Page 11: Manejo de La Paleta de Componentes Delphi

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

private{ Private declarations }publicx: string;end;varForm1: TForm1;implementation{$R *.dfm}

procedure TForm1.BtnAccionClick(Sender: TObject);begin

x:=’Ud ha elegido :’;if parlantes.Checked=true then begin

x:=x+’ Parlantes’;

end;if monitor.Checked=true then begin

x:=x+’ Monitor’;

end;if cdrom.Checked=true then begin

x:=x+’ CD-ROM’;

end;if fundas.Checked=true then begin

x:=x+’ Fundas’;end;texto.Caption:=x;end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin

if application.MessageBox(‘Esta seguro que desea salir de la aplicación’,‘Saliendo del la aplicacióm’, mb_YesNo + mb_IconInformation) = IdYes thenbegin

MessageDlg(‘Terminando la aplicación’, mtInformation,[mbOk], 0);canClose:=True;

endelsebegin

canClose:=False;end;

11

Page 12: Manejo de La Paleta de Componentes Delphi

end;end.

6) COMPONENTE RadioButton

Este componente sirve para crear un juego de opciones mutuamente excluyentes para el usuario, solo un RadioButton puede seleccionarse de un grupo de estos componentes. Cuando el usuario selecciona un RadioButton, el RadioButton previamente seleccionado se deselecciona. Frecuentemente, se agrupan los RadioButton en una caja de TRadioGroup. Consecuentemente, agregar la caja de grupo primero al formulario, luego colocar los RadioButton dentro de él.

Para el ejemplo que ha continuación se presenta, insertar los siguientes componentes:

a) Agregar cuatro controles RadioButton de nombres: RBoton, REtiqueta, REdit y RCheckb) Luego agregar un componente Button de nombre Boton, un componente Label de

nombre Etiqueta, un componente Edit con el nombre Edit y finalmente un componente CheckBox de nombre Check.

El código se muestra en el siguiente listado:

PROGRAMA 6.-

unit ejem4;interfaceuses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

RBoton: TRadioButton;REtiqueta: TRadioButton;REdit: TRadioButton;Boton: TButton;Etiqueta: TLabel;Edit: TEdit;Check: TCheckBox;RCheck: TRadioButton;procedure RBotonClick(Sender: TObject);procedure REtiquetaClick(Sender: TObject);procedure REditClick(Sender: TObject);procedure RCheckClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

12

Page 13: Manejo de La Paleta de Componentes Delphi

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.RBotonClick(Sender: TObject);begin

boton.Enabled:=true;etiqueta.Enabled:=false;edit.Enabled:=false;check.Enabled:=false;

end;procedure TForm1.REtiquetaClick(Sender: TObject);begin

boton.Enabled:=false;etiqueta.Enabled:=true;edit.Enabled:=false;check.Enabled:=false;

end;procedure TForm1.REditClick(Sender: TObject);begin

boton.Enabled:=false;etiqueta.Enabled:=false;edit.Enabled:=true;check.Enabled:=false;

end;procedure TForm1.RCheckClick(Sender: TObject);begin

boton.Enabled:=false;etiqueta.Enabled:=false;edit.Enabled:=false;check.Enabled:=true;

end;end.

FORMULARIO EN PLENA EJECUCION:

13

Page 14: Manejo de La Paleta de Componentes Delphi

7) COMPONENTE ListBox

Usar ListBox para desplegar una lista de artículos que los usuarios pueden seleccionar, agregar o anular, según sea la naturaleza de la aplicación.

Por otro lado en esta aplicación aprenderemos como usar dos archivos PAS en una misma aplicación, para lo cual necesitamos que haga las cosas con mucho cuidado. Un componente clave para el diseño de esta aplicación es el componente Frame.

Efectuar los siguientes pasos para agregar un Frame:

a) Abrir un nuevo proyecto, desde el menú principal File con NewAplicationb) Luego escoger la opción New y luego Framec) La acción anterior nos mostrara una pantalla como la mostrada seguidamente:

Aunque tenga la apariencia de un formulario, no lo es, es un control Frame, en donde introducimos los siguientes componentes:

i) Un control Edit de nombre EditList

14

Page 15: Manejo de La Paleta de Componentes Delphi

ii) Un control ListBox de nombre ListListiii) Dos controles Button de nombres btnAdd y btnDelete

PROGRAMA 7.-

unit Frame;interfaceuses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls;typeTFrame1 = class(TFrame)

EditList: TEdit;ListList: TListBox;btnAdd: TButton;btnDelete: TButton;procedure btnAddClick(Sender: TObject);procedure btnDeleteClick(Sender: TObject);

private{ Private declarations }public{ Public declarations }end;implementation{$R *.DFM}procedure TFrame1.btnAddClick(Sender: TObject);begin

if EditList.Text <> “ thenListList.Items.Add (EditList.Text);

end;procedure TFrame1.btnDeleteClick(Sender: TObject);begin

if ListList.ItemIndex >= 0 thenListList.Items.Delete (ListList.ItemIndex);

end;end.Al guardar este archivo llámelo Frame. Lo que sigue ahora es insertar el Frame dentro

del formulario, para esto debemos seguir las siguientes instrucciones:

a) Desde la barra de componentes elegir el componente Frame y dibujarlo dentro del formulario

b) Al terminar de dibujar el Frame nos aparecerá el cuadro de dialogo Select Frame to insert. Aquí se mostrara un listado con los Frame existentes en el proyecto

c) Seleccione Frame 1 y haga clic en OK.d) Veremos que todo el contenido del Frame ahora figura en el formulario.

De esta manera se enlaza un Frame en un formulario. Lo último que queda es escribir el código :

15

Page 16: Manejo de La Paleta de Componentes Delphi

unit Form;interfaceuses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Frame;

typeTForm1 = class(TForm)Frame11: TFrame1;procedure Frame11btnAddClick(Sender: TObject);procedure Frame11btnDeleteClick(Sender: TObject);procedure Frame11EditListKeyPress(Sender: TObject; var Key: Char);procedure FormCreate(Sender: TObject);procedure Frame11EditListChange(Sender: TObject);private{ Private declarations }publicend;varForm1: TForm1;implementation{$R *.DFM}procedure TForm1.Frame11btnAddClick(Sender: TObject);begin

frame11.btnAddClick(Sender);frame11.EditList.Text:=”;if frame11.ListList.Count>0 then

frame11.btnDelete.Enabled:=true;end;procedure TForm1.Frame11btnDeleteClick(Sender: TObject);begin

Frame11.btnDeleteClick(Sender);

if frame11.ListList.Count<=0 then frame11.btnDelete.Enabled:=false;end;procedure TForm1.Frame11EditListKeyPress(Sender: TObject; var Key: Char);begin

if key=#13 then

frame11btnAddClick(frame11.btnAdd);end;

procedure TForm1.FormCreate(Sender: TObject);begin

frame11.btnDelete.Enabled:=false;frame11.btnAdd.Enabled:=false;

end;

16

Page 17: Manejo de La Paleta de Componentes Delphi

procedure TForm1.Frame11EditListChange(Sender: TObject);begin

if not(frame11.EditList.Text=”) thenbegin

frame11.btnAdd.Enabled:=true;

endelse

begin

frame11.btnAdd.Enabled:=false;

end;end;end.

8) COMPONENTE ComboBox

Este control se similar al control ListBox, con la diferencia que este despliega el listado completo del contenido de este control.

Veamos un ejemplo sencillo para comprender este componente:

Construir un formulario como el siguiente:

Este formulario consta de:

a) Un control ComboBox de nombre ComboBox1b) Un control ListBox de nombre Listac) Dos controles Button llamados Borrar y Borrar2

El código que se va a usar se muestra a continuación:

PROGRAMA 8.-

unit Combo;interfaceuses

17

Page 18: Manejo de La Paleta de Componentes Delphi

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

ComboBox1: TComboBox;Lista: TListBox;Borrar: TButton;Borra2: TButton;procedure ComboBox1Select(Sender: TObject);procedure BorrarClick(Sender: TObject);procedure Borra2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1Select(Sender: TObject);begin lista.Items.Add(combobox1.Text);end;procedure TForm1.BorrarClick(Sender: TObject);begin lista.Items.Delete(lista.ItemIndex);end;

procedure TForm1.Borra2Click(Sender: TObject);

var i,x:integer;

beginx:=lista.Count;lista.ItemIndex:=1;for i:=1 to x do

beginlista.Items.Delete(lista.ItemIndex);lista.Refresh;

18

Page 19: Manejo de La Paleta de Componentes Delphi

lista.ItemIndex:=lista.ItemIndex+1;

end; end;end.

Hay un pequeño detalle que no hemos tomado en cuenta, hasta el momento, el ComboBox no tiene ningún elemento en su listado, para eso debemos ubicar la propiedad Items, haga doble clic sobre ella o un solo clic del botón que contiene tres puntos (…), con lo cual se nos mostrara el cuadro de dialogo String List Editor.

En este cuadro de dialogo debemos escribir los elementos que deberá tener el ComboBox. Al terminar de ingresar todo el listado pulse el botón OK.

9) COMPONENTE Image

Este componente es usado para cargar una imagen gráfica en un formulario. Usar objetos TPicture en la propiedad Picture para especificar el mapa de bit 1, icono, metafile, u otro objeto de gráfico desplegados por TImage. Pueden usarse las propiedades y método de Picture para cosas como cargar una imagen desde un archivo, limpiar la imagen en el TImage, y asignar una imagen para otro control. TImage introduce varias propiedades para determinar cómo la imagen se despliega dentro de los limites del objeto de TImage.

10) COMPONENTE BitBtn

Es un control Button que tiene las características de poder incluir una imagen o mapa de bit. Este control tiene la misma conducta como los controles Button.

La propiedad Kind de TBitBtn proporciona botones normalmente usados, como OK, Cancel (Cancelar), Help (Ayuda) y así sucesivamente. Estos botones predefinidos tienen sus imágenes graficas correspondientes y conductas de valor predeterminado, para que usted pueda agregarlos fácilmente a su aplicación con pequeño o ningún requisito codificado.

19

Page 20: Manejo de La Paleta de Componentes Delphi

11) COMPONENTE Bevel

Use Bevel para crear cajas biseladas, marcos, o líneas. Este control puede verse en alto o bajo relieve.

12) COMPONENTE OpenDialog

OpenDialog muestra una caja del diálogo modal en donde podemos seleccionar y abrir los archivos. La caja de diálogo no aparece al momento de ejecutar la aplicación, hasta que se active por una llamada al método Execute. Cuando los clics del usuario Abren, el diálogo cierra y se guardan el archivo seleccionado o archivos en la propiedad de los Archivos.

El ejemplo siguiente hace referencia a los controles antes mencionados. Para lo cual necesitaremos los siguientes componentes:

a) Un control Image con las siguientes propiedades:

Name: FiguraAutosize: true

b) Un control BitBtn, que usaremos para cargar la imagen, con las siguientes propiedades:

Name: CargarKing: BtCustomCaption: &Cargar imagen

Para colocar una imagen en el control haga clic sobre el botón con tres puntos (…) de la propiedad Glyph, con lo que se abrirá el cuadro de dialogo Picture Editor, vea la siguiente figura, pulse el botón Load, al aparecer el cuadro de dialogo Load Picture, subsiguiente figura, seleccione una imagen con extensión .BMP y pulse el botón Abrir.

20

Page 21: Manejo de La Paleta de Componentes Delphi

Luego en el cuadro de dialogo Picture Editor pulse el botón OK. Con esto la imagen debe cargarse en el control.

Layout: blGlyphTop

c) Agregue un control OpenDialog, yendo a View del menú principal, luego a Component List y buscando en dicha lista dicho control para luego hacer clic en Add to form, con las siguientes propiedades:

Name: OpenDialog1DefaultExt: .bmp

d) Para especificar que tipos de archivos deseamos cargar, haga clic en el botón de la propiedad Filter. Al abrirse el cuadro de dialogo Filter Editor, siguiente figura, escriba lo siguiente, para indicar que se abrirán archivo de tipo Icono y BMP y luego pulse el botón OK.

21

Page 22: Manejo de La Paleta de Componentes Delphi

e) Agregue un componente Bevel, este control servirá de separación entre los componentes antes insertados y los componentes que insertaremos a continuación, por lo que debe de tener las siguientes propiedades:

Name: Bevel1Style: bsRaisedWidth: 6

f) Inserte un component Shape con el nombre de Shape1.g) Agregue un con ComboBox, con las siguientes propiedades:

Name: Forma

Items: Con las opciones Circulo, Rectángulo, Elipse, Cuadrado, Rect redondeado, Cuad redondeado.

Finalmente inserte el siguiente código en los respectivos eventos:

PROGRAMA 9.-

unit Image;interfaceuses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, Buttons, Mask;

type

TForm1 = class(TForm)

Figura: TImage;OpenDialog1: TOpenDialog;Cargar: TBitBtn;Bevel1: TBevel;Shape1: TShape;Forma: TComboBox;procedure CargarClick(Sender: TObject);procedure FormaSelect(Sender: TObject);

private{ Private declarations }public{ Public declarations }end;

varForm1: TForm1;

Implementation{$R *.dfm}

procedure TForm1.CargarClick(Sender: TObject);

22

Page 23: Manejo de La Paleta de Componentes Delphi

beginif OpenDialog1.Execute then

figura.Picture.LoadFromFile(opendialog1.FileName);

end;

procedure TForm1.FormaSelect(Sender: TObject);begin

//shape1.Shape:=stellipse;if strcomp(pchar(forma.Text),’Elipse’)=0 then

shape1.Shape:=stellipse;if strcomp(pchar(forma.Text),’Circulo’)=0 then

shape1.Shape:=stcircle;if strcomp(pchar(forma.Text),’Rectangulo’)=0 then

shape1.Shape:=strectangle;if strcomp(pchar(forma.Text),’Cuadrado’)=0 then

shape1.Shape:=stsquare;if strcomp(pchar(forma.Text),’Rect redondeado’)=0 then

shape1.Shape:=stroundrect;

if strcomp(pchar(forma.Text),’Cuad redondeado’)=0 then

shape1.Shape:=stroundsquare;

end;

end.

El formulario final debe tener la siguiente apariencia:

FORMULARIO EN PLENA EJECUCION:

23

Page 24: Manejo de La Paleta de Componentes Delphi

13) COMPONENTE ScrollBox

Usar este control para crear una caja con barras de desplazamiento, de esta manera prevenimos que hayan controles fuera de la vista del usuario.

14) COMPONENTE StaticText

Un StaticText tiene las funciones de un Label, solo que desciende de TWinControl y por consiguiente tiene una asa de ventana. Use StaticText en lugar de Tlabel cuando la tecla aceleradora del componente debe pertenecer, por ejemplo a una propiedad de pagina de un ActiveX

Realicemos el siguiente ejemplo, para lo cual necesitaremos de los siguientes controles:

a) Un control ScrollBox de nombre ScrollBox1b) Dos controles BitBtn de nombres Accion y Resetc) Un control StaticText de nombre tiempo

Escribir el siguiente código para completar la aplicación:

PROGRAMA 10.-

unit Scroll;interfaceuses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TForm1 = class(TForm)

ScrollBox1: TScrollBox;BitBtn1: TBitBtn;Tiempo: TStaticText;

24

Page 25: Manejo de La Paleta de Componentes Delphi

Reset: TBitBtn;procedure BitBtn1Click(Sender: TObject);procedure ResetClick(Sender: TObject);

private

{ Private declarations }

public

time: TDateTime;

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);

var

i: Integer;

begin

time := Now;for I := 0 to 500 dobeginwith TcheckBox.Create (self) do

beginSetBounds (Random (ScrollBox1.ClientWidth),

Random (ScrollBox1.ClientHeight),50, 16);

Parent := ScrollBox1;Caption := ‘CheckBox ‘ + IntToStr (I);end;with TRadioButton.Create (self) dobeginSetBounds (Random (ScrollBox1.ClientWidth),

Random (ScrollBox1.ClientHeight),Width, Height); // default

Parent := ScrollBox1;Caption := ‘Radio ‘ + IntToStr (I);

end;Application.ProcessMessages;

25

Page 26: Manejo de La Paleta de Componentes Delphi

end;time := Now - time;

Tiempo.Caption := ‘Tiempo :’ + FormatDateTime (‘nn:ss.zz’, time);

end;

procedure TForm1.ResetClick(Sender: TObject);begin

Time:=0;Tiempo.Caption := ‘Tiempo :’ + FormatDateTime (‘nn:ss.zz’, time);

end;end.

FORMULARIO EN PLENA EJECUCION:

15) COMPONENTE DirectoryListBox

DirectoryListBox representa un control de caja lista que es consciente de la estructura del directorio del drive actual.

DirectoryListBox lleva acabo la conducta genérica introducida en TCustomListBox. DirectoryListBox publica muchas propiedades heredadas de TCustomListBox e introduce la nueva conducta para permitir al usuario cambiar directorios o Drivers

16) COMPONENTE Panel

Usar Panel para poner un tablero vacio en un formulario. Los tableros tienen las propiedades de proporcionar una frontera biselada alrededor del control, así como los métodos para ayudar a manejar la colocación de controles empotrados en el tablero.

26

Page 27: Manejo de La Paleta de Componentes Delphi

Usted también puede usar los paneles para agrupar controles juntos, similar a la manera en que usted puede usar una caja de grupo (GroupBox), pero con una frontera biselada ( o ningún fronterizo) en lugar del contorno de la caja de grupo. Se usan los paneles típicamente para agrupar los controles dentro de un solo formulario.

17) COMPONENTE FileListBox

Agregue FileListBox a un formulario para permitir a los usuarios seleccionar un archivo. Use FileListBox junto con TDriveComboBox, TFilterComboBox, y TDirectoryListBox agregar el total de archivos seleccionados a un formulario.

18) COMPONENTE DriveComboBox

Agregar un control DriveComboBox a un formulario para permitir a los usuarios seleecionar un drive. Usar DriveComboBox junto con TFileListBox, TFliterComBox, y TDirectoryListBox.

Ahora intentemos construir la siguiente aplicación, el cual es un visor de archivos graficos, ver la siguiente figura, para esto necesitamos los siguientes controles:

a) Un Panel de nombre Panel3, sin texto en el Caption, en donde se insertaran los siguientes componentes: Un control DriveComboBox de nombre DriveComboBox1 Cuatro ComboBox de nombres Scale, PixelFormat, ColorSpace y Performance

b) Un Panel de nombre Panel1, sin texto en el Caption, en donde se insertaran los siguientes componentes: Un componente DirectoryListBox de nombre DirectoryListBox1 Un control FileListBox de nombre FileListBox1

c) Un control ScrollBox de nombre ScrollBox1 en cuyo interior se insertara el siguiente componente: Image de nombre Image1

Ahora debemos aplicar las propiedades a los componentes respectivos según se muestra a continuación:

Panel1:

Align: alLeft FullRepaint: True TabOrder: 0

Panel3:

Align: alTop FullRepaint: True TabOrder: 1

DriveComboBox

AutComplete: true DirList: DirectoryListBox1 TabOrder: 0

27

Page 28: Manejo de La Paleta de Componentes Delphi

TextCase: tcUpperCase

Scale:

Text: Ningún Texto Hint: Scale Items: 1:1, 1:2, 1:4, 1:8 TabOrder: 1

PixelFormat:

Text: Ningún Texto Hint: PixelFormat Items: 24 bit, 8 bit TabOrcer: 2

ColorSpace:

Text: Ningún texto Hint: ColorSpace Items: RGB, GrayScale TabOrder: 3

Performance:

Text: Ningún texto Hint: Performance Items: Quality, Speed TabOrder: 4

DirectoryListBox1:

Align: alTop FileList: FileListBox1 TabOrder: 0

FileListBox1:

Align: alClient FileType: [ftNormal] MultiSelect: False TabOrder: 1

ScrollBox1:

Align: alClient AutoScroll: True AutoSize: False TabOrder: 2

Image1:

28

Page 29: Manejo de La Paleta de Componentes Delphi

AutoSize: True Picture: None

Hasta el momento hemos estado usando eventos que encontramos en nuestros controles, pero que sucede cuando queremos usar nuestros propios procedimientos, para eso, vayamos hasta la clase donde normalmente se declaran los procedimientos y escribamos la siguiente línea de código:

Procedure AlSeleccionarConClic(Sender: TObject);

Luego sobre el nombre del procedimiento de un clic derecho y del menú emergente selecciones la opción complete class at cursor, con lo que se mostrara la creación del nuevo procedimiento de la siguiente manera:

Procedure TForm1.AlSeleccionarConClic(Sender: TObject);

Begin

End;

Finalmente dentro de este procedimiento escriba:

AbrirArchivo(FileListBox1:Filename);

De manera similar debe de crear los procedimientos Procedure SiEsJPEG(Sender: TObject); y en la parte privada (Privated) declare el procedimiento Procedure AbrirArchivo(const Filename: String); el código de toda la aplicación se muestra a continuación:

PROGRAMA 11.-

unit jpegdemo;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg, FileCtrl, ComCtrls;type TForm1 = class(TForm) Panel1: TPanel; DirectoryListBox1: TDirectoryListBox; FileListBox1: TFileListBox; Panel3: TPanel; DriveComboBox1: TDriveComboBox; Scale: TComboBox; PixelFormat: TComboBox; ColorSpace: TComboBox; Performance: TComboBox; ScrollBox1: TScrollBox; Image1: TImage; procedure AlSeleccionarConClic(Sender: TObject); procedure FormCreate(Sender: TObject);

29

Page 30: Manejo de La Paleta de Componentes Delphi

Procedure SiEsJPEG(Sender: TObject);

private { Private declarations }

public { Public declarations }

procedure AbrirArchivo(const Filename: String); end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);begin

Scale.ItemIndex := 0; PixelFormat.ItemIndex := 0; Colorspace.ItemIndex := 0; Performance.ItemIndex := 0; FileListbox1.Mask := GraphicFileMask(TGraphic);

end;

procedure TForm1.AlSeleccionarConClic(Sender: TObject);begin AbrirArchivo(FileListbox1.Filename);end;

procedure TForm1.SiEsJPEG(Sender: TObject);Var Temp: Boolean;begin

Temp := Image1.Picture.Graphic is TJPEGImage; if Temp then with TJPEGImage(Image1.Picture.Graphic) do

begin PixelFormat := TJPEGPixelFormat(Self.PixelFormat.ItemIndex); Scale := TJPEGScale(Self.Scale.ItemIndex); Grayscale := Boolean(Colorspace.ItemIndex); Performance := TJPEGPerformance(Self.Performance.ItemIndex);

end; Scale.Enabled := Temp; PixelFormat.Enabled := Temp;

30

Page 31: Manejo de La Paleta de Componentes Delphi

Colorspace.Enabled := Temp; Performance.Enabled := Temp;end;

procedure TForm1.AbrirArchivo(const Filename: String);begintry Image1.Picture.LoadFromFile(Filename); except on EInvalidGraphic do Image1.Picture.Graphic := nil; end; SiEsJPEG(Image1);

end;

end.

FORMULARIO EN TIEMPO DE DISEÑO:

Por ultimo debemos configurar eventos de la siguiente manera:

a) Los controles Scale, PixelFormat, colorSpace, Performance, en la propiedad OnClick, de un clic en la flechita que aparece en dicho evento y del listado seleccionar SiEsJPEG.

b) De manera similar el control FileListBox1 en su propiedad Onclick seleccione el procedimiento AlSeleccionarConClic

En la siguiente figura podemos ver la aplicación en plena ejecución

31

Page 32: Manejo de La Paleta de Componentes Delphi

19) COMPONENTE ColorBox

ColorBox es una ComboBox que permite a los usuarios seleccionar un color.

Usar ColorBox para proporcionar al usuario una forma fácil y rápida de seleccionar un color. Cada color se despliega al lado de un cuadrado pequeño que contiene el color correspondiente.

Usar la propiedad Select para acceder al color que el usuario selecciona. La Propiedad de Colors proporciona el acceso a la lista entera de colores, mientras la propiedad de ColorNames lista sus nombres.

20) COMPONENTE ColorDialog

ColorDialog muestra un cuadro de dialogo modal para la selección de un color.

El componente ColorDialog despliega una ventana o cuadro de dialogo mediante el cual podemos seleccionar un color determinado. Este cuadro de dialogo no aparece hasta que se active por una llamada al método Execute. Cuando el usuario selecciona un color y pulsa la tecla OK, el cuadro de dialogo se cierra y el color seleccionado se guarda en la propiedad Color.

El siguiente ejemplo es una variación de la aplicación antes relacionada donde usábamos un control Shape, por que necesitaremos los siguientes controles:

a) Un control Shape de nombre Shape1.

b) Un ComboBox de nombre Forma en cuya propiedad Items debe de tener las siguientes opciones: Circulo, Rectangulo, Elipse, Cuadrado, Rect redondeado, Cuad redondeado.

c) Insert un control ColorBox de nombre ColorBox1

d) Agregue un Button de nombre Color

32

Page 33: Manejo de La Paleta de Componentes Delphi

e) Por ultimo, un control ColorDialog de nombre ColorDialog1

Ahora escriba el siguiente código y pruebe su aplicación:

PROGRAMA 12.-

unit Image2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons, Mask;type TForm1 = class(TForm)

Shape1: TShape; Forma: TComboBox; ColorBox1: TColorBox; ColorDialog1: TColorDialog; Color: TButton; Label1: TLabel;

procedure FormaSelect(Sender: TObject); procedure ColorBox1Select(Sender: TObject); procedure ColorClick(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormaSelect(Sender: TObject);begin//shape1.Shape:=stellipse;if strcomp(pchar(forma.Text),'Elipse')=0 then shape1.Shape:=stellipse;if strcomp(pchar(forma.Text),'Circulo')=0 then shape1.Shape:=stcircle;if strcomp(pchar(forma.Text),'Rectangulo')=0 then shape1.Shape:=strectangle;if strcomp(pchar(forma.Text),'Cuadrado')=0 then shape1.Shape:=stsquare;if strcomp(pchar(forma.Text),'Rect redondeado')=0 then shape1.Shape:=stroundrect;if strcomp(pchar(forma.Text),'Cuad redondeado')=0 then shape1.Shape:=stroundsquare;end;procedure TForm1.ColorBox1Select(Sender: TObject);begin shape1.Brush.Color:=ColorBox1.Selected;

33

Page 34: Manejo de La Paleta de Componentes Delphi

shape1.Repaint;end;procedure TForm1.ColorClick(Sender: TObject);beginif ColorDialog1.Execute then shape1.Brush.Color:=ColorDialog1.Color;end;

end.FORMULARIO EN TIEMPO DE DISEÑO:

En la siguiente figura podemos ver la aplicación en plena ejecución

21) COMPONENTE MediaPlayer

34

Page 35: Manejo de La Paleta de Componentes Delphi

Usar el componente MediaPlayer para permitir a su aplicación controlar medios de reproducción o dispositivo de grabación como CD-ROM, Reproductores/Video grabadoras, o secuencias de MIDI

El siguiente ejemplo reproduce un CD-ROM de audio, para lo cual necesitamos construir el siguiente formulario:

Este formulario consta de los siguientes controles:

Ocho controles Image de nombres Play, Pausa, Adelantar, Retroceder, Alto, Expulsar, Minimizar, y Cerrar, deberá de cargar una imagen apropiada para el control, en archivo adjunto se proporcionan algunos gráficos que pueden ser de utilidad, por otro lado todos los controles tienen en su propiedad AutoSize a True, no se preocupe por la ubicación de estos controles dentro del formulario, ya que esas propiedades lo introduciremos mediante código.

Un control Timer llamado Timer1 Un control Label de nombre Pista. Un componente MediaPlayer de nombre MediaPlayer1

Ahora inserte el siguiente código en la aplicación, notara que en lugar de usar controles Button estamos usando los Image para configurar los movimientos de nuestro reproductor.

PROGRAMA 13.-

unit Reproductor;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, MPlayer;type TForm1 = class(TForm) Pausa: TImage; Alto: TImage; Expulsar: TImage; Play: TImage; Minimizar: TImage; Cerrar: TImage;

35

Page 36: Manejo de La Paleta de Componentes Delphi

MediaPlayer1: TMediaPlayer; Adelantar: TImage; Retroceder: TImage; Pista: TLabel; Timer1: TTimer; procedure SalirClick(Sender: TObject); procedure CerrarClick(Sender: TObject); procedure PlayClick(Sender: TObject); procedure AltoClick(Sender: TObject); procedure ExpulsarClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure PausaClick(Sender: TObject); procedure AdelantarClick(Sender: TObject); procedure RetrocederClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); procedure MinimizarClick(Sender: TObject); private { Private declarations } public x,y:string; pos:Integer; z:word; { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.SalirClick(Sender: TObject);begin close;end;procedure TForm1.CerrarClick(Sender: TObject);begin mediaplayer1.Stop; close;end;procedure TForm1.PlayClick(Sender: TObject);begin

mediaplayer1.Play;play.Visible:=False;pausa.Visible:= True;str(pos,x);str(mediaplayer1.Tracks,y);

36

Page 37: Manejo de La Paleta de Componentes Delphi

pista.Caption:=X + ' de '+ y;end;procedure TForm1.AltoClick(Sender: TObject);begin

mediaplayer1.Stop;mediaplayer1.Previous;mediaplayer1.Refresh;play.Visible:=True;pausa.Visible:=false;

end;procedure TForm1.ExpulsarClick(Sender: TObject);begin

mediaplayer1.Eject;pista.Caption:='Inserte un CD de audio';timer1.Enabled:=true;expulsar.Enabled:=false;

end;procedure TForm1.FormCreate(Sender: TObject);begin

mediaplayer1.DeviceType :=dtCdAudio;mediaplayer1.Open;pos:=1;timer1.Enabled:=false;form1.Left:=595;form1.Top:=475;form1.Color:=clBlack;form1.AutoSize:=False;BorderStyle:=bsNone;

play.Left:=8;play.Top:=32;pausa.Left:=8;pausa.Top:=32;adelantar.Left:=48;adelantar.Top:=32;retroceder.Left:=88;retroceder.Top:=32;alto.Left:=128;alto.Top:=32;expulsar.Left:=168;expulsar.Top:=32;minimizar.Left:=176;minimizar.Top:=0;Cerrar.Left:=192;Cerrar.Top:=0;pista.Font.Color:=clLime;

37

Page 38: Manejo de La Paleta de Componentes Delphi

Pista.Left:=56;Pista.Top:=80;

end;procedure TForm1.PausaClick(Sender: TObject);begin

mediaplayer1.Pause;pausa.Visible:=False;Play.Visible:=True;

end;procedure TForm1.AdelantarClick(Sender: TObject);begin

pos:=pos+1;if pos=mediaplayer1.Tracks+1 thenbegin mediaplayer1.Stop; mediaplayer1.Rewind; mediaplayer1.Play; mediaplayer1.Refresh; pos:=1;endelsebegin mediaplayer1.Next;end;str(pos,x);str(mediaplayer1.Tracks,y);pista.Caption:=X + ' de '+ y;

end;procedure TForm1.RetrocederClick(Sender: TObject);begin

mediaplayer1.Stop;mediaplayer1.AutoRewind:=True;mediaplayer1.Rewind;mediaplayer1.Play;pos:=1;mediaplayer1.Refresh;str(mediaplayer1.Tracks,y);pista.Caption:='1 de ' + y;

end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);begin

mediaplayer1.Close;end;procedure TForm1.Timer1Timer(Sender: TObject);begin

mediaplayer1.Refresh;

38

Page 39: Manejo de La Paleta de Componentes Delphi

if (mediaplayer1.Tracks>=30) or (mediaplayer1.Tracks<=0) then begin play.Visible:=true; pausa.Visible:=false; play.Enabled:=false; adelantar.Enabled:=false; retroceder.Enabled:=false; alto.Enabled:=false; inc(z); end else begin play.Enabled:=true; adelantar.Enabled:=true; retroceder.Enabled:=true; alto.Enabled:=true; pos:=1; expulsar.Enabled:=true; playClick(play); timer1.Enabled:=false; end;end;procedure TForm1.FormActivate(Sender: TObject);beginmediaplayer1.Refresh;if mediaplayer1.Tracks >30 then begin showmessage('Inserte un CD de audio'); timer1.Enabled:=true; timer1timer(timer1); end else begin playclick(play); minimizarclick(minimizar); end;end;procedure TForm1.MinimizarClick(Sender: TObject);beginApplication.Minimize;end;end.

En la siguiente figura podemos ver la aplicación en plena ejecución, claro que esto puede diferir de su aplicación, eso dependerá bastante de que tipo de imágenes ha utilizado.

39

Page 40: Manejo de La Paleta de Componentes Delphi

22) COMPONENTE TabControl

TabControl es un juego de etiquetas que tiene la apariencia de divisores de cuaderno.

Usar TabControl para agregar un control con las escenas de etiquetas múltiples a un formulario. Al contrario de un mando de la página, TabControl no esta hecho de varias páginas que contienen los mandos diferentes. En cambio, TabControl es un solo objeto. Cuando la etiqueta actual cambia, el mando de la etiqueta debe actualizar directamente su contenido para reflejar el cambio de un evento OnChange.

Desactivando un objeto de TabControl desactiva todas las etiquetas porque es un solo control. Para desactivar las etiquetas individuales, use PageControl y desactive los mandos de TagSheet que representan las paginas individuales.

23) COMPONENTE UpDown

Usar UpDown para agregar un control arriba-abajo a un formulario. Un control Arriba-abajo (Up-Down) consiste en un par de botones de flecha, como las flechas que aparecen en un spin box. Un control Up-Down permite a los usuarios cambiar el tamaño de un valor numérico haciendo clic en los botones de la flecha.

En base a estos dos controles, construyamos la siguiente aplicación, la cual permite realizar conversiones de varios tipos de unidades de medición. Para esto necesitamos los siguientes controles. Ver la figura siguiente:

40

Page 41: Manejo de La Paleta de Componentes Delphi

a) Un control TabControl de nombre ConvFamilies, en cuyo interior se deberá insertar los siguientes controles:

Un ListBox con las siguientes propiedades:Color: clWindowHeight: 391Left: 16Name: ConvTypesParentColor: FalseSorted: TrueTabOrder: 0TabStop: TrueTop: 32Width: 177

Otro ListBox con las siguientes propiedades:Color: clBtnFaceHeight: 367Left: 200Name: ConvResultsParentColor: TrueSorted: TrueTabOrder: 3TabStop: FalseTop: 56Width: 196

Inserte un control Edit con las propiedades que mencionamos a continuación:Height: 21Left: 200 Name: ConvValueTabOrder: 1

41

Page 42: Manejo de La Paleta de Componentes Delphi

TabStop: trueText: 1Top: 32Width: 177

Por ultimo un control UpDown con las siguientes características:Height: 21Left: 377Max: 10000Min: -10000Name: ConvValueIncDecOrientation: udVerticalPosition: 1TabOrder: 2TabStop: FalseTop: 32Width: 16

Esta aplicación contará con dos unidades (Unit) diferentes, recordemos que una aplicación anterior ya hemos realizado una tarea similar, por que no explicaremos como hacerlo solo les presentaremos ambas unidades con los códigos respectivos:

La Unit primaria, la cual debemos de agregar, será EuroConv y consta del siguiente código fuente:

unit EuroConv;{ *************************************************************************** Monetary conversion units The constants, names and monetary logic in this unit follow the various EU standards layed out in documents 397R1103, 398R2866 and 300R1478.

WARNING: In order for the rounding rules to exactly match the EU dictates this unit will adjust your application's rounding mode to rmUp. This will affect how rounding happens globally and may cause unforeseen side effects in your application.

At the time of the writing of this document those documents where at http://europa.eu.int/eur-lex/en/lif/dat/1997/en_397R1103.html http://europa.eu.int/eur-lex/en/lif/dat/1998/en_398R2866.html http://europa.eu.int/eur-lex/en/lif/dat/2000/en_300R1478.html

If not found there you can search for them on http://europa.eu.int/eur-lex

The conversion rates for US dollar, British pound and Japanese yen are accurate as of 12/12/2000 at 18:35 EST and were as reported by CNNfn (http://cnnfn.cnn.com/markets/currency)

Great monetary exchange rate sites

42

Page 43: Manejo de La Paleta de Componentes Delphi

http://pacific.commerce.ubc.ca/xr/rates.html http://www.imf.org/external/np/tre/sdr/drates/8101.htm http://www.belgraver.demon.nl/currconv2/

*************************************************************************** References: [1] Article 1 in http://europa.eu.int/eur-lex/en/lif/dat/1998/en_398R2866.html [2] Article 1 in http://europa.eu.int/eur-lex/en/lif/dat/2000/en_300R1478.html [3] Article 4.4 in http://europa.eu.int/eur-lex/en/lif/dat/1997/en_397R1103.html

}

interface

uses ConvUtils, Math;

var // ************************************************************************* // Euro Conversion Units // basic unit of measurement is euro cbEuro: TConvFamily;

euEUR: TConvType; { EU euro } euBEF: TConvType; { Belgian francs } euDEM: TConvType; { German marks } euGRD: TConvType; { Greek drachmas } euESP: TConvType; { Spanish pesetas } euFFR: TConvType; { French francs } euIEP: TConvType; { Irish pounds } euITL: TConvType; { Italian lire } euLUF: TConvType; { Luxembourg francs } euNLG: TConvType; { Dutch guilders } euATS: TConvType; { Austrian schillings } euPTE: TConvType; { Portuguese escudos } euFIM: TConvType; { Finnish marks }

euUSD: TConvType; { US dollars } euGBP: TConvType; { British pounds } euJPY: TConvType; { Japanese yens }

const // Fixed conversion Euro rates [1] EURToEUR = 1.00000; BEFToEUR = 40.3399; DEMToEUR = 1.95583;

43

Page 44: Manejo de La Paleta de Componentes Delphi

GRDToEUR = 340.750; // [2] effective 1/1/2001 ESPToEUR = 166.386; FFRToEUR = 6.55957; IEPToEUR = 0.787564; ITLToEUR = 1936.27; LUFToEUR = 40.3399; NLGToEUR = 2.20371; ATSToEUR = 13.7603; PTEToEUR = 200.482; FIMToEUR = 5.94573;

// Subunit rounding for Euro conversion and expressed as powers of ten [3] EURSubUnit = -2; BEFSubUnit = 0; DEMSubUnit = -2; GRDSubUnit = 0; // [2] effective 1/1/2001 ESPSubUnit = 0; FFRSubUnit = -2; IEPSubUnit = -2; ITLSubUnit = 0; LUFSubUnit = -2; NLGSubUnit = -2; ATSSubUnit = -2; PTESubUnit = -2; FIMSubUnit = 0;

var // Accurate as of 12/12/2000 at 16:42 PST but almost certainly isn't anymore // Remember if you are changing these values in realtime you might, depending // on your application's structure, have to deal with threading issues. USDToEUR: Double = 1.1369; GBPToEUR: Double = 1.6462; JPYToEUR: Double = 0.0102;

// Subunit rounding for Euro conversion and expressed as powers of ten USDSubUnit: Integer = -2; GBPSubUnit: Integer = -2; JPYSubUnit: Integer = -2;

// Registration methodsfunction RegisterEuroConversionType(const AFamily: TConvFamily; const ADescription: string; const AFactor: Double; const ARound: TRoundToRange): TConvType; overload;

function RegisterEuroConversionType(const AFamily: TConvFamily;

44

Page 45: Manejo de La Paleta de Componentes Delphi

const ADescription: string; const AToCommonProc, AFromCommonProc: TConversionProc): TConvType; overload;

// Types used during the conversion of Euro to and from other currenciestype TConvTypeEuroFactor = class(TConvTypeFactor) private FRound: TRoundToRange; public constructor Create(const AConvFamily: TConvFamily; const ADescription: string; const AFactor: Double; const ARound: TRoundToRange); function ToCommon(const AValue: Double): Double; override; function FromCommon(const AValue: Double): Double; override; end;

// various strings used in this unit

resourcestring SEuroDescription = 'Euro'; SEURDescription = 'EUEuro'; SBEFDescription = 'BelgianFrancs'; SDEMDescription = 'GermanMarks'; SGRDDescription = 'GreekDrachmas'; SESPDescription = 'SpanishPesetas'; SFFRDescription = 'FrenchFrancs'; SIEPDescription = 'IrishPounds'; SITLDescription = 'ItalianLire'; SLUFDescription = 'LuxembourgFrancs'; SNLGDescription = 'DutchGuilders'; SATSDescription = 'AustrianSchillings'; SPTEDescription = 'PortugueseEscudos'; SFIMDescription = 'FinnishMarks'; SUSDDescription = 'USDollars'; SGBPDescription = 'BritishPounds'; SJPYDescription = 'JapaneseYens';

implementation

{ TConvTypeEuroFactor }

constructor TConvTypeEuroFactor.Create(const AConvFamily: TConvFamily; const ADescription: string; const AFactor: Double; const ARound: TRoundToRange);begin inherited Create(AConvFamily, ADescription, AFactor);

45

Page 46: Manejo de La Paleta de Componentes Delphi

FRound := ARound;end;

function TConvTypeEuroFactor.FromCommon(const AValue: Double): Double;begin Result := SimpleRoundTo(AValue * Factor, FRound);end;

function TConvTypeEuroFactor.ToCommon(const AValue: Double): Double;begin Result := AValue / Factor;end;

function RegisterEuroConversionType(const AFamily: TConvFamily; const ADescription: string; const AFactor: Double; const ARound: TRoundToRange): TConvType;var LInfo: TConvTypeInfo;begin LInfo := TConvTypeEuroFactor.Create(AFamily, ADescription, AFactor, ARound); if not RegisterConversionType(LInfo, Result) then begin LInfo.Free; RaiseConversionRegError(AFamily, ADescription); end;end;

function RegisterEuroConversionType(const AFamily: TConvFamily; const ADescription: string; const AToCommonProc, AFromCommonProc: TConversionProc): TConvType;begin Result := RegisterConversionType(AFamily, ADescription, AToCommonProc, AFromCommonProc);end;

function ConvertUSDToEUR(const AValue: Double): Double;begin Result := AValue * USDToEUR;end;

function ConvertEURToUSD(const AValue: Double): Double;begin Result := SimpleRoundTo(AValue / USDToEUR, USDSubUnit);end;

function ConvertGBPToEUR(const AValue: Double): Double;

46

Page 47: Manejo de La Paleta de Componentes Delphi

begin Result := AValue * GBPToEUR;end;

function ConvertEURToGBP(const AValue: Double): Double;begin Result := SimpleRoundTo(AValue / GBPToEUR, GBPSubUnit);end;

function ConvertJPYToEUR(const AValue: Double): Double;begin Result := AValue * JPYToEUR;end;

function ConvertEURToJPY(const AValue: Double): Double;begin Result := SimpleRoundTo(AValue / JPYToEUR, JPYSubUnit);end;

initialization

// Euro's family type cbEuro := RegisterConversionFamily(SEuroDescription);

// Euro's various conversion types euEUR := RegisterEuroConversionType(cbEuro, SEURDescription, EURToEUR, EURSubUnit); euBEF := RegisterEuroConversionType(cbEuro, SBEFDescription, BEFToEUR, BEFSubUnit); euDEM := RegisterEuroConversionType(cbEuro, SDEMDescription, DEMToEUR, DEMSubUnit); euGRD := RegisterEuroConversionType(cbEuro, SGRDDescription, GRDToEUR, GRDSubUnit); euESP := RegisterEuroConversionType(cbEuro, SESPDescription, ESPToEUR, ESPSubUnit); euFFR := RegisterEuroConversionType(cbEuro, SFFRDescription, FFRToEUR, FFRSubUnit); euIEP := RegisterEuroConversionType(cbEuro, SIEPDescription, IEPToEUR, IEPSubUnit); euITL := RegisterEuroConversionType(cbEuro, SITLDescription, ITLToEUR, ITLSubUnit); euLUF := RegisterEuroConversionType(cbEuro, SLUFDescription, LUFToEUR, LUFSubUnit); euNLG := RegisterEuroConversionType(cbEuro, SNLGDescription, NLGToEUR, NLGSubUnit); euATS := RegisterEuroConversionType(cbEuro, SATSDescription, ATSToEUR, ATSSubUnit); euPTE := RegisterEuroConversionType(cbEuro, SPTEDescription, PTEToEUR, PTESubUnit); euFIM := RegisterEuroConversionType(cbEuro, SFIMDescription, FIMToEUR, FIMSubUnit); euUSD := RegisterEuroConversionType(cbEuro, SUSDDescription, ConvertUSDToEUR, ConvertEURToUSD); euGBP := RegisterEuroConversionType(cbEuro, SGBPDescription, ConvertGBPToEUR, ConvertEURToGBP); euJPY := RegisterEuroConversionType(cbEuro, SJPYDescription, ConvertJPYToEUR, ConvertEURToJPY);finalization

47

Page 48: Manejo de La Paleta de Componentes Delphi

// Unregister all the conversion types we are responsible for UnregisterConversionFamily(cbEuro);end.

Ahora debemos escribir el código de la segunda Unit la cual es donde se encuentran los controles ya insertados, escriba lo siguiente:

PROGRAMA 14.-

unit ConvertItUnit;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;

type TForm1 = class(TForm) ConvTypes: TListBox; ConvValue: TEdit; ConvResults: TListBox; ConvValueIncDec: TUpDown; ConvFamilies: TTabControl; procedure FormShow(Sender: TObject); procedure ConvTypesClick(Sender: TObject); procedure ConvValueChange(Sender: TObject); procedure ConvFamiliesChange(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation

{$R *.dfm}

uses ConvUtils, StdConvs, EuroConv, StrUtils;

procedure TForm1.FormShow(Sender: TObject);var LFamilies: TConvFamilyArray; I: Integer; LStrings: TStringList;

48

Page 49: Manejo de La Paleta de Componentes Delphi

begin ConvFamilies.Tabs.Clear; LStrings := TStringList.Create; try GetConvFamilies(LFamilies); for I := 0 to Length(LFamilies) - 1 do LStrings.AddObject(ConvFamilyToDescription(LFamilies[I]), TObject(LFamilies[I])); LStrings.Sort; ConvFamilies.Tabs.Assign(LStrings); ConvFamiliesChange(Sender); finally LStrings.Free; end;end;

procedure TForm1.ConvFamiliesChange(Sender: TObject);var LFamily: TConvFamily; LTypes: TConvTypeArray; I: Integer;begin LFamily := TConvFamily(ConvFamilies.Tabs.Objects[ConvFamilies.TabIndex]); with ConvTypes, Items do begin BeginUpdate; Clear; GetConvTypes(LFamily, LTypes); for I := 0 to Length(LTypes) - 1 do AddObject(ConvTypeToDescription(LTypes[I]), TObject(LTypes[I])); ItemIndex := 0; EndUpdate; end; ConvTypesClick(Sender);end;

procedure TForm1.ConvTypesClick(Sender: TObject);begin ConvValueChange(Sender);end;

procedure TForm1.ConvValueChange(Sender: TObject);var LValue: Double; LBaseType, LTestType: TConvType; I: Integer;begin

49

Page 50: Manejo de La Paleta de Componentes Delphi

with ConvResults, Items do try BeginUpdate; Clear; try LValue := StrToFloatDef(ConvValue.Text, 0); if ConvTypes.ItemIndex <> -1 then begin LBaseType := TConvType(ConvTypes.Items.Objects[ConvTypes.ItemIndex]);

for I := 0 to ConvTypes.Items.Count - 1 do begin LTestType := TConvType(ConvTypes.Items.Objects[I]); Add(Format('%n %s', [Convert(LValue, LBaseType, LTestType), ConvTypeToDescription(LTestType)])); end; end else Add('No base type'); except Add('Cannot parse value'); end; finally EndUpdate; end;end;end.

50

Page 51: Manejo de La Paleta de Componentes Delphi

24) COMPONENTE Timer

Usar el componente Timer para activar un evento, en un determinado momento o repetidamente, después de un intervalo moderado. Escriba el código que usted requiere dentro del evento OnTimer.

25) COMPONENTE MainMenu

MainMenu encapsula una barra de menú y sus respectivos menús desplegables en un formulario.

Use MainMenu para mantener el menú principal en un formulario. Para empezar diseñando un menú, agregue un menú principal a un formulario y pulse doble clic sobre el componente.

MainMenu introduce propiedades u métodos por unir el drop-down (despliegue de opciones) menús del menú principal con el menú principal de otro formulario.

MainMenu introduce propiedades y métodos por ayudar en el proceso de negociación de menú de un objeto OLE.

26) COMPONENTE PopupMenu

PopupMenu encapsula las propiedades, métodos y eventos de un menú automático o menú flotante.

Use PopupMenu para definir el menú flotante que aparece cuando el usuario hace clic en un mando con el botón derecho del ratón. Para hacer un menú automático disponible, asigne el objeto PopupMenu a la propiedad de PopupMenu del mando.

El ejemplo que mostramos a continuación es un pequeño y simple juego, pero que resulta útil para explicar la utilización de los controles mencionados, el juego se llama MATASAPO y su construcción consta de los siguientes elementos:

Form1

El primer formulario, ver siguiente figura, contiene los siguientes componentes:

Cuatro controles Label de nombres Label1, Label2, Label3, Label4. Un control MainMenu de nombre MainMenu1, en este control debemos ingresar las

opciones de cada menú principal, esto se logra a través de la propiedad Items en el componente de la figura que sigue:

51

Page 52: Manejo de La Paleta de Componentes Delphi

Y se obtiene el siguiente menú principal:

Luego insertar un Panel con las siguientes propiedades:Alignment: taCenterCaption: No escriba nadaColor: clHightlightLeft: 0Name: Panel1Top: 40Width: 529Height: 283

En este panel inserte tres controles Image: Image1, el cual actuara como enemigo, Image3 será la bala y por ultimo Image2 el cual será el medio que el jugador va a dirigir, trate de insertar figuras adecuadas para es te juego.

Inserte dos controles Timer: Timer1 y Timer2.

52

Page 53: Manejo de La Paleta de Componentes Delphi

El código a usar para este primer formulario es el siguiente:

PROGRAMA 15.-

unit Matasapo;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, Menus, Ayuda;

type TForm1 = class(TForm) Label1: TLabel; Panel1: TPanel; Timer1: TTimer; Image1: TImage; Image2: TImage; Image3: TImage; Timer2: TTimer; Label2: TLabel; MainMenu1: TMainMenu; File1: TMenuItem; Jugar1: TMenuItem; Reiniciar: TMenuItem; N1: TMenuItem; Salir1: TMenuItem;

53

Page 54: Manejo de La Paleta de Componentes Delphi

Acercade1: TMenuItem; Label3: TLabel; Label4: TLabel; Delautor1: TMenuItem; PopupMenu1: TPopupMenu; Jugar2: TMenuItem; Reiniciar1: TMenuItem; N2: TMenuItem; Salir2: TMenuItem; procedure FormKeyPress(Sender: TObject; var Key: Char); procedure Timer2Timer(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Jugar1Click(Sender: TObject); procedure Salir1Click(Sender: TObject); procedure ReiniciarClick(Sender: TObject); Procedure Desactivar(); procedure Delautor1Click(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public Nivel: Integer; end;

var Form1: TForm1; salt : boolean;implementation

{$R *.DFM}

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);begin if not (image2.Enabled=False) then begin if key = #13 then // Si pulsamos enter osea disparo tonces... timer2.enabled := true; // hacemos que la bala comienze a moverse... if salt = true then // si la bala ha alcanzado el tope de alto permitio.. begin image3.left := image2.left; // la posicion horizontal de la bala es igual a la de la nave de disparo

54

Page 55: Manejo de La Paleta de Componentes Delphi

image3.top := image2.top - 10; // y lo mismo para la propiedad de la altura. image3.visible := true; // La hacemos visible salt := false; // Convertimos la propiedad en que no ha llegao end; end;end;

procedure TForm1.Timer2Timer(Sender: TObject);varl: integer; // Definimos contadorbegin if image3.Top < 18 then // si la variable ha pasado el tope tonces... begin image3.visible := false; // la bala se hace invisible salt := true; // convertimos el booleano en verdadero (ya ha sobrepasado el limite) timer2.enabled := false; // Y paramos el conometro que se encarga de regular el avance de la bala if (image3.left > image1.left - 10) and (image3.left < (image1.left + 35)) then // Damos un margen de error a la bala para que toque con la nave enemiga. begin beep; image1.top := 8; // Devolvemos la nave enemiga a la posicion inicial label1.caption := inttostr(strtoint(label1.caption) + 1); // Añadimos un punto If strtoint(Label1.Caption)=0 then Label1.Visible:=True; l := strtoint(label1.caption); // Incrementamos contador if l = 10 then begin Nivel:=Nivel+1; Timer1.Enabled:=False; Timer2.Enabled:=False; Label1.Visible:=False; Timer1.Interval:=Timer1.Interval-500; IF Nivel<=6 then begin Application.MessageBox ('Prepárese a pasar al siguiente nivel', 'Siguiente nivel', mb_ok + mb_IconExclamation); // Cuando tengamos 10 puntos entonces ganas. Timer1.Enabled:=True; Timer2.Enabled:=True; Label1.Caption:='-1'; label4.Caption:=inttostr(nivel); end else begin if Application.MessageBox ('Ud. es un genio jugando, intente otra vez', 'Felicitaciones', mb_okCancel + mb_IconExclamation)=idOK then

55

Page 56: Manejo de La Paleta de Componentes Delphi

Begin jugar1click(jugar1); Label1.Caption:='-1';

end else desactivar; end;

end; end; end else image3.top := image3.top - 10; // Si no ha alcanzado el tope entonces qeu suba de 10 en 10 end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);beginif not image2.Enabled=False thenbegin if image2.left < 440 then // Si no ha sobrepasado el limite derecho begin if key = vk_right then // y pulsamos el cursor derecho begin image2.left := image2.left + 51; // que la nave nuestra se mueva a la derecha end; end else if key = vk_left then // si por el contrario pulsamos la tecla izquierda... begin image2.left := image2.left - 51;// que se mueva hacia a la izquierda. end; if image2.left > 50 then // si no hemos sobrepasado el limite izquierdo... begin if key = vk_left then // y presionamos el cursor izquierdo.. begin image2.left := image2.left -51; // que la imagen se mueva hacia la izquierda end; end else if key = vk_right then begin image2.left := image2.left + 51; // si en cambio pulsamos el cursor derecho la imagen se mueva hacia la derecha end;

56

Page 57: Manejo de La Paleta de Componentes Delphi

end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);beginif image1.top > 250 then begin // si la nave enemiga ha llegado hasta nuestra posicion... label1.caption := '-1'; // la puntuacion pasa a 0 image1.top := 8; // Devolvemos la imagen a la posicion inicial showmessage('Perdiste'); // PErdiste desactivar; timer1.Interval:=3000;

end else image1.left := random (440); // sino que se mueva aleatoriamente por pantalla image1.top := image1.top + 5; // sino que se mueva aleatoriamente por pantalla end;

procedure TForm1.FormCreate(Sender: TObject);begin

Desactivar;end;

procedure TForm1.Jugar1Click(Sender: TObject);begin Timer1.Enabled:=True; Timer2.Enabled:=True; Image2.Enabled:=True; Image1.Enabled:=False; Image3.Enabled:=False; Reiniciar.Enabled:=True; reiniciar1.Enabled:=True; Nivel:=1; Timer1.Interval:=3000; Jugar1.Enabled:=False; jugar2.Enabled:=False; label4.Visible:=True; label4.Caption:='1'; label1.Caption:='-1';

end;

procedure TForm1.Salir1Click(Sender: TObject);begin

57

Page 58: Manejo de La Paleta de Componentes Delphi

Close;end;

procedure TForm1.ReiniciarClick(Sender: TObject);begin

Nivel:=1; Timer1.Interval:=2000; Timer1.Enabled:=False; Timer2.Enabled:=False; Timer1.Interval:=3000; Timer1.Enabled:=True; Timer2.Enabled:=True; Label1.Caption:='0'; image1.top := 8; Nivel:=1;

end;

procedure TForm1.Desactivar;begin timer1.Interval:=3000; timer1.Enabled:=False; Timer2.Enabled:=False; Image2.Enabled:=False; Image1.Enabled:=False; Image3.Enabled:=False; label1.Visible:=False; reiniciar.Enabled:=False; jugar1.Enabled:=True; reiniciar1.Enabled:=False; jugar2.Enabled:=True;end;

procedure TForm1.Delautor1Click(Sender: TObject);

var Ayuda: TForm2;begin Ayuda := TForm2.Create(Self); try Ayuda.ShowModal; finally Ayuda.Free; end; end;

58

Page 59: Manejo de La Paleta de Componentes Delphi

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin if application.MessageBox('Desea salir del Juego', 'Adios',mb_Okcancel + mb_IconInformation)=idOk then Begin CanClose:=True; end else CanClose:=False;end;

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin Panel1.PopupMenu:=PopuPmenu1;end;

end.

Notar que tendremos que crear el procedimiento llamado Desactivar, de manera similar a como ya lo hemos hecho antes: Si Observamos la parte de los Unit hacemos referencia a Ayuda, este es le segundo formulario que crearemos, el cual es algo sencillo, en el solo daremos información acerca del autor de la aplicación u otro data que Ud. Crea conveniente anunciar.

Desde el menú principal File de DELPHI selecciones la opción New/Form con la cual se insertará un nuevo formulario, llame a este formulario Ayuda al momento de grabarlo

Según se muestra en la figura siguiente este formulario consta de los siguientes componentes:

Un control Memo en cuya propiedad Lines, escribiremos el contenido que se quiere mostrar al usuario

Un control Button de nombre Aceptar.

59

Page 60: Manejo de La Paleta de Componentes Delphi

Finalmente, escriba el siguiente código:

unit Ayuda;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm2 = class(TForm) Memo1: TMemo; Aceptar: TButton; procedure AceptarClick(Sender: TObject); private { Private declarations } public { Public declarations } end;

var Form2: TForm2;

implementation{$R *.dfm}

procedure TForm2.AceptarClick(Sender: TObject);begin Close;end;

end.

60