PDA

Ver la Versión Completa : Componentes en Tiempo de Ejecucion


Caro
16-05-2005, 16:21:18
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:


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:


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.