正常情况下,需要在启动之后直接执行某事件,一般会将函数放在Create或者OnShow里面。
但是,这种情况下,当事件耗时较久是,界面会迟迟不肯出现,只能等待Create喝OnShow执行完毕之后才会显示。
为了能够在界面能够先出现,然后运行需要的事件,可以使用消息的机制自定义添加一个AfterShow的函数。(Delphi中窗体没用相关函数,需要自定义)
原来的代码:
//示例代码
TForm1 = class(TForm)
Label1: TLabel;
procedure FormShow(Sender: TObject);
procedure DoSomething();//做某些耗时的事情
private
public
end;
//实现
procedure TForm1.FormShow(Sender: TObject);
begin
//这里耗时,会卡住界面不显示,完成之后才会跳出
DoSomething();
end;
添加AfterShow();:
const
WM_BEGIN = WM_USER + 1;
...
//示例代码
TForm1 = class(TForm)
Label1: TLabel;
procedure FormShow(Sender: TObject);
procedure DoSomething();//做某些耗时的事情
procedure AfterShow(var msg:TMessage);message WM_BEGIN;
private
public
end;
...
//实现
procedure TForm1.FormShow(Sender: TObject);
begin
PostMessage(Form1.handle,WM_BEGIN,0,0);
end;
procedure TForm1.AfterShow(var msg:TMessage);
begin
DoSomething();
end;
标签:end,DoSomething,Delphi,AfterShow,TForm1,界面显示,WM,procedure From: https://www.cnblogs.com/tutuleilife/p/18612288参考源:https://jingyan.baidu.com/article/b0b63dbf21e63f4a4830701c.html