Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Componentes en Tiempo de Ejecucion (https://www.clubdelphi.com/foros/showthread.php?t=21387)

Caro 16-05-2005 16:21:18

Componentes en Tiempo de Ejecucion
 
Hola a todos,

Al inicio de mi programa me creo dinamicamente varios labels y les doy de nombres labels1, labels2, labels3 y habilito su evento onclick para todos estos que seria el mismo.
lab:=TLabel.Create(self);
lab.Parent:=self;
lab.Left:=x+10;
lab.Top:=y+10;
lab.Width:=lab.Width+50;
lab.Caption:=etiqueta;
lab.Name:='labels'+indice;
lab.OnClick:=Label1Click;
En este evento onclick me gustaria poder saber cual de los labels creados esta siendo presionado, quiero recuperar el nombre del label presionado, mi problema es que cada vez que hago click en los labels creados siempre me recupera el nombre del ultimo label creado.

roman 16-05-2005 16:36:31

Usa el parámetro Sender del evento:

Código Delphi [-]
if (Sender is TLabel) then
  if TLabel(Sender).Name = 'Label1' then
    ...
  else if TLabel(Sender).Name = 'Label2' then
    ..
  else if TLabel(Sender).Name = 'Label3' them
    ..

También, cuando creas los label podrías usar su propiedad Tag en lugar de Name:

Label.Tag := 1 ó 2 ó 3

lo que te permite una construcción más clara en el evento:

Código Delphi [-]
if Sender is TLabel then
  case TLabel(Sender).Tag of
    1: ...
    2: ...
    3: ...
  end;

// Saludos

Caro 16-05-2005 16:49:01

Muchas Gracias, si funciona.


La franja horaria es GMT +2. Ahora son las 06:37:03.

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