Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Asignar una funcion al evento on click (https://www.clubdelphi.com/foros/showthread.php?t=64952)

abmicros 11-11-2009 11:37:05

Asignar una funcion al evento on click
 
Hola buenas, estoy haciendo una aplicacion en la que tengo que poner muchos botones (unos 50) que hagan casi lo mismo, por lo que esta pensando usar un array de botones para poder modificar caracteristicas como captions, posiciones, colores y cosas asi mediante un for, pero tengo problemas al asignar el metodo OnClick, ya que no puedo hacer:

boton1.Onclick := 'procedure'+i;


¿Como puedo hacer algo asi?


Muchas gracias.

Neftali [Germán.Estévez] 11-11-2009 12:56:13

Cita:

Empezado por abmicros (Mensaje 346258)
...pensando usar un array de botones para poder modificar caracteristicas como captions, posiciones, colores y cosas asi mediante un for, pero tengo problemas al asignar el metodo OnClick, ya que no puedo hacer:
boton1.Onclick := 'procedure'+i;
¿Como puedo hacer algo asi?

La idea es buena, lo que debes hacer es asignar a los 50 botones el mismo evento.

Código Delphi [-]
   boton1.Onclick := MyOnClickProcedure;
   boton2.Onclick := MyOnClickProcedure;
  ...

Dentro del procedimiento y utilizando el parámetro Sender puedes saber cual de los 50 botones es el que ha hecho la llamada.

Caro 11-11-2009 13:42:31

Hola abmicros, como te dice Neftali lo mejor es que asignes el mismo evento a todos tus botones y utilizar el parametro Sender, algo que también te podría ayudar es la propiedad Tag de cada boton dandole un numero correlativo, de esa forma puedes hacer esto:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 Case TButton(Sender).Tag of
  1 : Showmessage(TButton(Sender).Name);
  2 : Showmessage(TButton(Sender).Name);
  ................................
  ................................
 end;
end;

Saluditos

coso 12-11-2009 09:45:59

Hola,
puedes hacer tal cual habias planteado al principio (buscando el metodo mediante su nombre en una cadena y asignandolo a OnClick). Echale un vistazo a este truco. Un saludo.

abmicros 12-11-2009 11:56:36

Solucionado
 
Muchas gracias, me ha funcionado tal cual queria usando el sender y el tag del boton.


La franja horaria es GMT +2. Ahora son las 00:29:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi