Podrías valerte del Custom Message CM_VISIBLECHANGED
Un ejemplo funcional:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TMiPanel = class(TPanel)
private
procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FMiPanel: TMiPanel;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TMiPanel.CMVisibleChanged(var Message: TMessage);
begin
Caption := DateTimeToStr(Now);
inherited;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FMiPanel := TMiPanel.Create(Self);
FMiPanel.Parent := Self;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FMiPanel.Visible := not FMiPanel.Visible;
end;
end.