Delphi TFrame[3] 自定義顯示、銷燬、隱藏事件(onShow 、OnHide、OnDestroy)
阿新 • • 發佈:2021-12-16
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 更新時間:
部落格園 滔Roy https://www.cnblogs.com/guorongtao 希望內容對你所有幫助,謝謝!