Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ¿Cómo saber qué panel contiene a un Tlabel? (https://www.clubdelphi.com/foros/showthread.php?t=39775)

Angel Fernández 29-01-2007 20:04:02

¿Cómo saber qué panel contiene a un Tlabel?
 
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:

Código Delphi [-]
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

No puedo con Parent cambiar el color
 
Estoy intentado hacer
Código Delphi [-]
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

Cita:

Empezado por Angel Fernández
¿Cómo lo uso?

Pues haciendo un typecast como hiciste en el caso del Sender. Es decir:
Código Delphi [-]
  TPanel(TLabel(Sender).Parent).Color:= clRed;

Aunque no estaría mal, que hicieras un par de comprobaciones antes:
Código Delphi [-]
  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

Gracias seoane.
 
Funciona perfectamente lo que me has dicho. Supongo que es bastante fácil, pero no soy programador.

Muchas gracias.
Un saludo.


La franja horaria es GMT +2. Ahora son las 09:53:31.

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