Delphi TFrame[3] 自定義顯示、銷毀、隱藏事件(onShow 、OnHide、OnDestroy)
Frames中本身不存在顯示onShow 、OnHide、OnDestroy事件
方法1:通過設置框架的屬性形式來模擬調用 frame的onshow過程
type
TFrame2 = class(TFrame)
Edit1: TEdit;
private
{ Private declarations }
fmOnShow : TNotifyEvent;
fmOnHide : TNotifyEvent;
procedure fmSetOnShow(ps: TNotifyEvent);
procedure fmSetOnHide(ph: TNotifyEvent);
procedure FrameOnShowHide(var M: TMessage); message CM_SHOWINGCHANGED;
public
{ Public declarations }
property OnShow : TNotifyEvent write fmSetOnShow; //通過設置框架的屬性形式來模擬調用 frame的onshow過程
property OnHide : TNotifyEvent write fmSetOnHide;
end;
implementation
{$R *.dfm}
{ TFrame2 }
procedure TFrame2.fmSetOnHide(ph: TNotifyEvent);
begin
fmOnHide := ph;
end;
procedure TFrame2.fmSetOnShow(ps: TNotifyEvent);
begin
fmOnShow := ps;
end;
procedure TFrame2.FrameOnShowHide(var M: TMessage);
begin
inherited;
if Showing then
if Assigned( fmOnShow ) then
fmOnShow( Self )
else
if Assigned( fmOnHide ) then
fmOnHide( Self );
end;
調用:
procedure FrameShiJian(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FrameShiJian(Sender: TObject);
begin
Frame2.Edit1.Text:='Hi,Delphi';
ShowMessage('hi,滔Roy');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Frame2.OnShow:=FrameShiJian; //放在onshow之前
end;
方法2:繼承 AfterConstruction 和 BeforeDestruction,類似OnCreate 和 OnDestroy
type
TFrame3 = class(TFrame)
Label1: TLabel;
Image1: TImage;
private
{ Private declarations }
public
{ Public declarations }
procedure AfterConstruction; override; //類似OnCreate事件
procedure BeforeDestruction; override; //類似OnDestroy事件
end;
implementation
{$R *.dfm}
{ TFrame3 }
procedure TFrame3.AfterConstruction;
begin
inherited;
label1.Caption:='Hi,滔Roy!';
end;
procedure TFrame3.BeforeDestruction;
begin
inherited;
end;
創建時間:2021.12.16 更新時間:
