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:
procedure myButtonClick(Sender: TObject);
Recuerde que los TNotifyEvents son metodos con el parametro Sender.
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{Public declarations}
procedure myButtonClick(Sender: TObject); //<<<<<----------------------------
end;
Definimos el procedimiento que en realidad es un Evento
procedure TForm1.myButtonClick(Sender: TObject);
var
msg: string;
begin
if Sender is TButton then
msg := TButton(Sender).Caption
else msg := 'No es un boton';
ShowMessage('Pulsaste el boton: ' + msg);
end;
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......
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.OnClick := myButtonClick;
Button2.OnClick := myButtonClick;
Button3.OnClick := myButtonClick;
Label1.OnClick := myButtonClick;
end;