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
public
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