Ver Mensaje Individual
  #4  
Antiguo 27-09-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Una opción sería controlar el nombre del panel en el evento asignado a los paneles cuando el cursor ingresa al control y cuando lo abandona.

En este momento sólo tengo a mano Delphi 7 por lo que debo interponer la clase y resulta algo similar a:
Código Delphi [-]
...
type
  TPanel = class(ExtCtrls.TPanel)
  private
    FMouseEnter: TNotifyEvent;
    FMouseLeave: TNotifyEvent;
    procedure CMMouseEnter(var M: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var M: TMessage); message CM_MOUSELEAVE;
  public
    property OnMouseEnter: TNotifyEvent read FMouseEnter write FMouseEnter;
    property OnMouseLeave: TNotifyEvent read FMouseLeave write FMouseLeave;
  end;

  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

...
implementation

procedure TPanel.CMMouseEnter(var M: TMessage);
begin
  if Self.Name = 'Panel1' then
    Color := clLime
  else if Self.Name = 'Panel2' then
    Color := clYellow
  else if Self.Name = 'Panel3' then
    Color := clRed
  else if Self.Name = 'Panel4' then
    Color := clPurple
  else if Self.Name = 'Panel5' then
    Color := clBlue
  else
    Color := clAqua;
end;

procedure TPanel.CMMouseLeave(var M: TMessage);
begin
  Color := clBtnFace;
end;

Resultando:


Pero, dado que estas usando la última versión de Delphi, ya dispones de los eventos OnMouseEnter y OnMouseLeave. En ellos podes acceder al control actual vía el parámetro Sender de tipo TObject:
Código Delphi [-]
...
var
  pnl: TPanel;
begin
  pnl := TPanel(Sender);
  
  if pnl.Name = 'Panel1' then
    ....

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita