0% encontró este documento útil (0 votos)
29 vistas11 páginas

Delphi 08 Parametro Sender

Cargado por

carlos
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
29 vistas11 páginas

Delphi 08 Parametro Sender

Cargado por

carlos
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

El parámetro Sender

Los métodos ingresados a través del Inspector de Objetos se


caracterizan por tener un parámetro común: el parámetro
Sender.
Este parámetro permite saber cuál es la componente que
recibió el evento.
procedure TForm1.Button1Click(Sender: TObject);
{ el parámetro Sender se refiere al botón }
begin
{ definición del OnClick del botón }
1
end;
El parámetro Sender
A fin de poder ser aplicado a cualquier clase de
componente, Sender está especificado como un objeto
genérico; esto queda indicado al decir que pertenece a
la clase TObject.
TObject es la clase más genérica a la que pertenecen
todos los componentes de Delphi.
Es necesario “convertir” (cast) el parámetro Sender
para poder acceder a la componente que recibió el
evento.

2
El parámetro Sender

Convirtiendo el parámetro Sender


Nombre_de_la_clase( Sender)
Sender as Nombre_de_la_clase

Ejemplos:
TEdit( Sender ).Text
(Sender as TEdit).Text

3
El parámetro Sender

Si es necesario verificar la clase a la pertenece


el parámetro Sender puede utilizarse el
operador is
Sintaxis : Objeto is Nombre_de_la_clase
Ejemplo:
if Sender is TEdit then
TEdit( Sender ).Text :=‘Nuevo’;
4
Ejemplo Botones.dpr

Al presionar sobre cualquiera de los botones se


debe visualizar su caption

5
Ejemplo Botones.dpr

Una forma de resolverlo sería escribir 8 procesos distintos,


uno para cada botón, de la siguiente forma:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage( Button1.caption);
end;
Todos los procesos son bastante parecidos. Es de esperar
que esto se pueda resolver de una forma más eficiente.
6
Ejemplo Botones.dpr

Puede usarse un único proceso compartido


o referenciado por todos los botones:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage( (Sender as TButton).caption );
end;
El parámetro Sender se refiere al botón que invocó a este
proceso. La conversión permite acceder a las propiedades de
dicho botón. 7
Ejemplo Botones.dpr
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage( (Sender as TButton).caption );
end;
—————————————————————
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage( TButton(Sender).caption );
end;
8
Ejemplo Botones.dpr
procedure TForm1.Button1Click(Sender: TObject);
Var EsteBoton : TButton;
begin
EsteBoton := TButton( Sender );
ShowMessage( EsteBoton.caption );
end;

IMPORTANTE: el método se escribe una UNICA vez y


los demás botones hacen referencia a él.
9
Sender.dpr

El formulario modifica su caption según cual sea el


elemento clickeado. Si es un edit toma su única
línea de texto y si es un memo toma sólo la
primera.

10
Sender.dpr

procedure TForm1.Edit1Click(Sender: TObject);


begin
if Sender is TEdit then
Form1.caption := TEdit(Sender).text
else Form1.caption := (Sender as TMemo).Lines.strings[0];
end;
Este proceso está asociado, a través del Inspector de
Objetos, al OnClick de las 4 componentes.
11

También podría gustarte