PDA

Ver la Versión Completa : Evento onClick


jzk
27-10-2004, 16:42:50
Hola a tod@s,

Tengo en una aplicación tres botones distintos que basicamente tienen que hacer lo mismo. Lo que he decidido es escribir en el Boton1 el código que necesito (en el evento OnClick) y los otros dos redirigir su correspodiente evento onClick al del boton1.

Cuando dije que básicamente tienen que hacer lo mismo era porque en cada uno de ellos hay una pequeña excepción, por lo que pretendo saber cual de ellos ha sido pulsado una vez este dentro del evento OnClick.

Es posible tal hazaña y de ser así de que manera puede hacerse???

Procedure TForm1.Boton1Click(Sender: TObject);
Begin
query1.Insert;
showmessage('hola');
End;

Trigger
27-10-2004, 16:56:31
Saludos

Me imagino que en los eventos de Boton2 y Boton3 de onclick, le asignas boton1.onclick, bueno entonces tienes que hacer lo siguiente


procedure TForm1.Boton1Click(Sender: TObject);
begin
if Sender = Boton1 then
begin
query1.Insert;
showmessage('1');
end;
if Sender = Boton2 then
begin
query2.Insert;
showmessage('2');
end;
if Sender = Boton3 then
begin
query3.Insert;
showmessage('3');
end;

end;


Tambien puedes declarar un evento general no necesariamente tiene que estar asociado a ningun objeto, y se lo puedes asignar a los tres botones

OK

roman
27-10-2004, 17:18:31
if Sender is Boton1 then
Debería ser

if Sender = Boton1 then

// Saludos

jzk
27-10-2004, 17:42:51
Ahora mismo iba a escribir lo mismo que tu Roman.

Gracias a los dos, de esta manera tan sencilla puedo adecuar el funcionamiento del programa en función del botón pulsado.

Gracias de nuevo.

defcon1_es
27-10-2004, 18:46:02
Hola,
sólo quiero comentar que también puedes asignarle valores distintos a la propiedad Tag de cada botón,
con lo que ahorrarás líneas de código.

Ejemplo suponiendo que los botones son TButton:

procedure TForm1.Boton1Click(Sender: TObject);
begin
case (Sender as TButton).Tag of
1: query1.Insert;
2: query2.Insert;
3: query3.Insert;
end;
showmessage(IntToStr((Sender as TButton).Tag));
end;


Salu2.