PDA

Ver la Versión Completa : ¿Cómo saber qué panel contiene a un Tlabel?


Angel Fernández
29-01-2007, 20:04:02
Saludos al foro.

Estoy intentando hacer varios paneles que al pasar por encima el ratón, cambie el color de fondo y cuando ya ha pasado vuelva el color blanco original. Esto sé cómo hacerlo:

procedure TForm1.colorentrada(sender: TObject);
begin
if (sender is TPanel) then
TPanel(sender).color := $0067E0FF;
end;

procedure TForm1.colorsalida(sender: TObject);
begin
if (sender is TPanel) then
TPanel(sender).color := clwhite;
end;

procedure TForm1.Panel7MouseLeave(Sender: TObject);
begin
colorsalida(sender);
end;

procedure TForm1.Panel7MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
colorentrada(sender);
end;

Ahora bien, cada panel tiene dentro varios tlabel (con la propiedad transparent=true) y quiero que al pasar el raton por encima también cambie el color de fondo del panel que contiene a dicho label. Y aquí viene mi pregunta: ¿cómo puedo saber, de forma global, qué panel contiene a dicho tlabel?

Obviamente, puedo ir editando label a label los eventos onmousemove y onmouseleave, pero con muchos paneles esto sería aburridísimo.

Espero haberme expresado bien.

Un saludo.

PD: No me aclaro con lo de resaltar sintaxis para delphi. Si previsualizo el mensaje y luego lo edito, el texto de delphi se vuelve loco ¿cómo se hace?

seoane
29-01-2007, 20:17:23
Prueba con la propiedad Parent del TLabel

Angel Fernández
29-01-2007, 20:29:05
Estoy intentado hacer
Tlabel(sender).parent.color:=blabla;

Pero parent no tiene una propiedad color.

¿Cómo lo uso?

Gracias por tu respuesta

seoane
29-01-2007, 20:37:12
¿Cómo lo uso?


Pues haciendo un typecast como hiciste en el caso del Sender. Es decir:

TPanel(TLabel(Sender).Parent).Color:= clRed;


Aunque no estaría mal, que hicieras un par de comprobaciones antes:

if Sender is TLabel then
if TLabel(Sender).Parent is TPanel then
TPanel(TLabel(Sender).Parent).Color:= clRed;

Angel Fernández
29-01-2007, 20:40:14
Funciona perfectamente lo que me has dicho. Supongo que es bastante fácil, pero no soy programador.

Muchas gracias.
Un saludo.