Ver Mensaje Individual
  #7  
Antiguo 28-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.

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
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation   {$R *.dfm}

(* Todas las asignaciones realizadas en OnCreate,
   se pueden hacer en tiempo de diseño desde el Object Inspector *)
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;

// Asignado al evento OnMouseEnter de todos los TPanels
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;

// Asignado al evento OnMouseLeave de todos los TPanels
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
__________________
Daniel Didriksen

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