Manejo de La Paleta de Componentes Delphi
Manejo de La Paleta de Componentes Delphi
Manejo de La Paleta de Componentes Delphi
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
{$R *.dfm}
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in [0..9,#8]) then
begin
key:=#0;
beep;
end;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
if (Edit2.Text=hola) then
begin
Edit1.Color:=clLime;
edit1.Text:=clLime;
end
else
begin
edit1.Color:=clGray;
edit1.Text:=clGray;
end;
end;
end.
2) COMPONENTE
Label
label
12
MS Sans Serif
Label2:
14
Label3:
Label4:
Color
clYellow
Label5:
3
Caption:
Size:
Label6:
Caption:
Size: 16
Style:
fsUndeline: True
Como podemos ver las caractersticas de cada componente Label, las
estamos manipulando desde las propiedades del Object Inspector, esto
quiere decir que las caractersticas impuestas nunca podrn 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;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1:
Label2:
Label3:
Label4:
Label5:
Label6:
TLabel;
TLabel;
TLabel;
TLabel;
TLabel;
TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
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 nmero 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 Borrar
c) 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);
5
randomize;
str(random(100),S);
dato.Text:=S;
end;
procedure TForm1.BorrarClick(Sender: TObject);
begin
dato.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);
begin
primo.Enabled:=false;
end;
end.
FORMULARIO EN PLENA EJECUCION:
5) COMPONENTE
CheckBox
x: string;
end;
var
Form1: 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 aplicacin,
Saliendo del la aplicacim, mb_YesNo + mb_IconInformation) = IdYes then
begin
MessageDlg(Terminando la aplicacin, mtInformation,
[mbOk], 0);
canClose:=True;
end
else
begin
canClose:=False;
end;
end;
end.
6) COMPONENTE
RadioButton
11
a)
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:
7) COMPONENTE
ListBox
13
Usar ListBox para desplegar una lista de artculos que los usuarios pueden
seleccionar, agregar o anular, segn sea la naturaleza de la aplicacin.
Por otro lado en esta aplicacin aprenderemos como usar dos archivos PAS en una
misma aplicacin, para lo cual necesitamos que haga las cosas con mucho cuidado.
Un componente clave para el diseo de esta aplicacin es el componente Frame.
Efectuar los siguientes pasos para agregar un Frame:
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 <> then
ListList.Items.Add (EditList.Text);
end;
procedure TFrame1.btnDeleteClick(Sender: TObject);
begin
if ListList.ItemIndex >= 0 then
ListList.Items.Delete (ListList.ItemIndex);
end;
end.
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;
procedure TForm1.Frame11EditListChange(Sender: TObject);
begin
if not(frame11.EditList.Text=) then
begin
frame11.btnAdd.Enabled:=true;
end
else
begin
frame11.btnAdd.Enabled:=false;
end;
end;
16
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:
17
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;
begin
x:=lista.Count;
lista.ItemIndex:=1;
for i:=1 to x do
begin
lista.Items.Delete(lista.ItemIndex);
lista.Refresh;
lista.ItemIndex:=lista.ItemIndex+1;
end;
end;
end.
Hay un pequeo detalle que no hemos tomado en cuenta, hasta el momento, el
ComboBox no tiene ningn elemento en su listado, para eso debemos ubicar la
propiedad Items, haga doble clic sobre ella o un solo clic del botn 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 botn OK.
18
9) COMPONENTE
Image
Este componente es usado para cargar una imagen grfica en un formulario. Usar
objetos TPicture en la propiedad Picture para especificar el mapa de bit 1, icono,
metafile, u otro objeto de grfico desplegados por TImage. Pueden usarse las
propiedades y mtodo 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 cmo la imagen se despliega
dentro de los limites del objeto de TImage.
10)
COMPONENTE
BitBtn
Es un control Button que tiene las caractersticas 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 imgenes graficas correspondientes y conductas de valor
predeterminado, para que usted pueda agregarlos fcilmente a su aplicacin con
pequeo o ningn requisito codificado.
11)
COMPONENTE
Bevel
Use Bevel para crear cajas biseladas, marcos, o lneas. Este control puede verse en
alto o bajo relieve.
12)
COMPONENTE
OpenDialog
OpenDialog muestra una caja del dilogo modal en donde podemos seleccionar y
abrir los archivos. La caja de dilogo no aparece al momento de ejecutar la
aplicacin, hasta que se active por una llamada al mtodo Execute. Cuando los
clics del usuario Abren, el dilogo cierra y se guardan el archivo seleccionado o
archivos en la propiedad de los Archivos.
19
El ejemplo siguiente hace referencia a los controles antes mencionados. Para lo cual
necesitaremos los siguientes componentes:
20
Luego en el cuadro de dialogo Picture Editor pulse el botn OK. Con esto la
imagen debe cargarse en el control.
Layout: blGlyphTop
Component List y buscando en dicha lista dicho control para luego hacer clic
en Add to form, con las siguientes propiedades:
Name: OpenDialog1
DefaultExt: .bmp
d) Para especificar que tipos de archivos deseamos cargar, haga clic en el botn de
la propiedad Filter. Al abrirse el cuadro de dialogo Filter Editor, siguiente
figura, escriba lo siguiente, para indicar que se abrirn archivo de tipo Icono y
BMP y luego pulse el botn OK.
21
23
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
Tiempo: TStaticText;
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 do
begin
with TcheckBox.Create (self) do
begin
SetBounds (Random (ScrollBox1.ClientWidth),
Random (ScrollBox1.ClientHeight),50, 16);
Parent := ScrollBox1;
Caption := CheckBox + IntToStr (I);
end;
with TRadioButton.Create (self) do
begin
SetBounds (Random (ScrollBox1.ClientWidth),
Random (ScrollBox1.ClientHeight),
Width, Height); // default
Parent := ScrollBox1;
Caption := Radio + IntToStr (I);
end;
Application.ProcessMessages;
end;
25
15)
COMPONENTE
DirectoryListBox
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 mtodos para ayudar a manejar la colocacin de controles empotrados en el
tablero.
26
Usted tambin 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 ningn fronterizo) en lugar del contorno de la caja de grupo. Se
usan los paneles tpicamente para agrupar los controles dentro de un solo
formulario.
17)
COMPONENTE
FileListBox
18)
COMPONENTE
DriveComboBox
Align: alLeft
FullRepaint: True
TabOrder: 0
Panel3:
Align: alTop
FullRepaint: True
TabOrder: 1
DriveComboBox
27
AutComplete: true
DirList: DirectoryListBox1
TabOrder: 0
TextCase: tcUpperCase
Scale:
PixelFormat:
ColorSpace:
Performance:
DirectoryListBox1:
Align: alTop
FileList: FileListBox1
TabOrder: 0
FileListBox1:
Align: alClient
FileType: [ftNormal]
MultiSelect: False
TabOrder: 1
ScrollBox1:
Align: alClient
28
AutoScroll: True
AutoSize: False
TabOrder: 2
Image1:
AutoSize: True
Picture: None
ColorSpace: TComboBox;
Performance: TComboBox;
ScrollBox1: TScrollBox;
Image1: TImage;
procedure AlSeleccionarConClic(Sender: TObject);
procedure FormCreate(Sender: TObject);
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);
30
end;
Scale.Enabled := Temp;
PixelFormat.Enabled := Temp;
Colorspace.Enabled := Temp;
Performance.Enabled := Temp;
end;
procedure TForm1.AbrirArchivo(const Filename: String);
begin
try
Image1.Picture.LoadFromFile(Filename);
except
on EInvalidGraphic do
Image1.Picture.Graphic := nil;
end;
SiEsJPEG(Image1);
end;
end.
a)
19)
COMPONENTE
ColorBox
COMPONENTE
ColorDialog
end;
procedure TForm1.ColorBox1Select(Sender: TObject);
begin
shape1.Brush.Color:=ColorBox1.Selected;
shape1.Repaint;
end;
procedure TForm1.ColorClick(Sender: TObject);
begin
if ColorDialog1.Execute then
shape1.Brush.Color:=ColorDialog1.Color;
end;
end.
FORMULARIO EN TIEMPO DE DISEO:
34
21)
COMPONENTE
MediaPlayer
Expulsar: TImage;
Play: TImage;
Minimizar: TImage;
Cerrar: TImage;
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;
36
str(pos,x);
str(mediaplayer1.Tracks,y);
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
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 then
begin
mediaplayer1.Stop;
mediaplayer1.Rewind;
mediaplayer1.Play;
mediaplayer1.Refresh;
pos:=1;
end
else
begin
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;
if (mediaplayer1.Tracks>=30) or (mediaplayer1.Tracks<=0) then
begin
38
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);
begin
mediaplayer1.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);
begin
Application.Minimize;
end;
end.
En la siguiente figura podemos ver la aplicacin en plena ejecucin, claro que
esto puede diferir de su aplicacin, eso depender bastante de que tipo de
imgenes ha utilizado.
39
22)
COMPONENTE
TabControl
COMPONENTE
UpDown
40
TabStop: true
Text: 1
Top: 32
Width: 177
Por ultimo un control UpDown con las siguientes caractersticas:
Height: 21
Left: 377
Max: 10000
Min: -10000
Name: ConvValueIncDec
Orientation: udVertical
Position: 1
TabOrder: 2
TabStop: False
Top: 32
Width: 16
Esta aplicacin contar con dos unidades (Unit) diferentes, recordemos que
una aplicacin anterior ya hemos realizado una tarea similar, por que no
explicaremos como hacerlo solo les presentaremos ambas unidades con los
cdigos respectivos:
La Unit primaria, la cual debemos de agregar, ser EuroConv y consta del
siguiente cdigo 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
http://pacific.commerce.ubc.ca/xr/rates.html
42
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/eurlex/en/lif/dat/1998/en_398R2866.html
[2]
Article
1
in
http://europa.eu.int/eurlex/en/lif/dat/2000/en_300R1478.html
[3]
Article
4.4
in
http://europa.eu.int/eurlex/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
45
46
ConvertUSDToEUR, ConvertEURToUSD);
euGBP := RegisterEuroConversionType(cbEuro, SGBPDescription,
ConvertGBPToEUR, ConvertEURToGBP);
euJPY := RegisterEuroConversionType(cbEuro, SJPYDescription,
ConvertJPYToEUR, ConvertEURToJPY);
finalization
// Unregister all the conversion types we are responsible for
UnregisterConversionFamily(cbEuro);
end.
Ahora debemos escribir el cdigo 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;
48
var
LValue: Double;
LBaseType, LTestType: TConvType;
I: Integer;
begin
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
:=
24)
COMPONENTE
Timer
COMPONENTE
MainMenu
COMPONENTE
PopupMenu
siguientes
Timer1: TTimer;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Timer2: TTimer;
Label2: TLabel;
MainMenu1: TMainMenu;
File1: TMenuItem;
Jugar1: TMenuItem;
Reiniciar: TMenuItem;
N1: TMenuItem;
Salir1: TMenuItem;
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}
54
begin
Application.MessageBox ('Preprese 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
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);
begin
if not image2.Enabled=False then
begin
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;
56
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
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;
58
TObject;
Button:
end.
59
end.
61