Delphi语言实现在Form完成Show后再处理逻辑
发布:智码IT网 阅读:
最近用Delphi做项目,本来希望等到窗口show了以后,再处理一些逻辑,比如弹窗,于是写了如下代码:
procedure TForm1.FormShow(Sender: TObject);
begin
ShowMessage('期望弹窗在Form显示出来以后才出现');
end;
运行发现,弹窗其实会在Form显示出来之前就弹出。查阅资料和研究发现,按以下步骤可以实现该需求。
1、定义常量
const
UM_CHECKFIRSTRUN = WM_USER + 200;
2、定义消息AfterShowView,并编写处理逻辑
procedure AfterShowView(var Message: TMessage); message UM_CHECKFIRSTRUN;
处理逻辑如下:
procedure TForm1.AfterShowView(var Message: TMessage);
begin
ShowMessage('111');
end;
3、在Form的Show或Create事件中Post消息
procedure TForm1.FormShow(Sender: TObject);
begin
PostMessage(Handle, UM_CHECKFIRSTRUN, 0, 0);
end;
或
procedure TForm1.FormCreate(Sender: TObject);
begin
PostMessage(Handle, UM_CHECKFIRSTRUN, 0, 0);
end;