Hola.
Hice nuevamente una prueba ya sobre
Delphi Tokyo y no me sucede la persistencia del color luego del click (es decir que vuelve a su color original):
Código Delphi
[-]
...
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel5: TPanel;
Panel6: TPanel;
procedure FormCreate(Sender: TObject);
procedure MouseEnter(Sender: TObject);
procedure MouseLeave(Sender: TObject);
procedure PanelClick(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;
C : TComponent;
begin
for i := 0 to ComponentCount-1 do
begin
C := Self.Components[i];
if C is TPanel then
begin
Tpanel(C).ParentBackground := False;
TPanel(C).ParentColor := False;
TPanel(C).OnMouseEnter := MouseEnter;
TPanel(C).OnMouseLeave := MouseLeave;
TPanel(C).OnClick := PanelClick;
end;
end;
end;
procedure TForm1.MouseEnter(Sender: TObject);
var
pnl: TPanel;
begin
pnl := TPanel(Sender);
Caption := pnl.Name;
if pnl.Name = 'Panel1' then
pnl.Color := clLime
else if pnl.Name = 'Panel2' then
pnl.Color := clYellow
else if pnl.Name = 'Panel3' then
pnl.Color := clRed
else if pnl.Name = 'Panel4' then
pnl.Color := clPurple
else if pnl.Name = 'Panel5' then
pnl.Color := clBlue
else
pnl.Color := clAqua;
end;
procedure TForm1.MouseLeave(Sender: TObject);
var
pnl: TPanel;
begin
pnl := TPanel(Sender);
pnl.Color := clBtnFace;
pnl.Caption := pnl.Name;
end;
procedure TForm1.PanelClick(Sender: TObject);
var
pnl: TPanel;
begin
pnl := TPanel(Sender);
pnl.Caption := 'Se hizo click sobre ' + pnl.Name;
end;
end.
Resultado:
Saludos