• Jueves 28 de Marzo de 2024, 16:58

Autor Tema:  Personalizar Eventos  (Leído 2168 veces)

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Personalizar Eventos
« en: Viernes 1 de Julio de 2005, 16:27 »
0
Esto permite asignarle un mismo Evento propio  a cualquir evento de un componente.

Se puede usar por ejemplo para una calculadora, en vez de modificar uno por uno los eventos de onClick de cada boton para que añadan un nuemero al Edit (la pantalla de la calculadora) se podría hacer un Evento universal para el proposito y asignarlo a todos los botones necesarios.

NECESARIO en la form:
Button1, Button2, Button3, Label1.

En los campos publicos o privados de la clase, añadir la cláusula:
Código: Text
  1.  
  2. procedure myButtonClick(Sender: TObject);
  3.  
  4.  
Recuerde que los TNotifyEvents son metodos con el parametro Sender.

Código: Text
  1.  
  2. type
  3.   TForm1 = class(TForm)
  4.     Button1: TButton;
  5.     Button2: TButton;
  6.     Button3: TButton;
  7.     Label1: TLabel;
  8.     procedure FormCreate(Sender: TObject);
  9.   private
  10.     { Private declarations }
  11.   public
  12.     {Public declarations}      
  13.     procedure myButtonClick(Sender: TObject); //<<<<<----------------------------
  14.   end;
  15.  
  16.  

Definimos el procedimiento que en realidad es un Evento
Código: Text
  1.  
  2. procedure TForm1.myButtonClick(Sender: TObject);
  3. var
  4.    msg: string;
  5. begin
  6.    if Sender is TButton then  
  7.     msg := TButton(Sender).Caption      
  8.    else msg := 'No es un boton';
  9.    ShowMessage('Pulsaste el boton: ' + msg);
  10. end;
  11.  
  12.  
En el codigo de arriba verificamos que el Sender, quien envia el Evento, es un Buton, luego si lo llegara a ser, hacemos el casting del Sender que es un TObject y lo usamos como TButton para sacarle el Caption.
Por si no es un Botton, añadimos una cláusula en el ELSE.

finalmente en el FormCreate agregamos......
Código: Text
  1.  
  2. procedure TForm1.FormCreate(Sender: TObject);
  3. begin
  4.   Button1.OnClick := myButtonClick;
  5.   Button2.OnClick := myButtonClick;
  6.   Button3.OnClick := myButtonClick;
  7.   Label1.OnClick := myButtonClick;
  8. end;
  9.  
  10.