我一直在使用TForm
的OnActivate
事件,让我有机会在我的应用程序启动后立即显示一个对话框。我希望主窗体已经加载并可见。有什么好方法吗?
我发现OnActivate
可以正常工作,除非WindowState
的形式为wsMaximized
。
过去,我以各种方式实现了我想要的目标,但是我希望有更好的方式。
这是对我有用的东西:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnIdle:=OnIdle;
end;
procedure TForm1.OnIdle(Sender: TObject; var Done: Boolean);
begin
Application.OnIdle:=nil;
form2:=TForm2.Create(Application);
form2.ShowModal;
end;
有没有更好的办法?
最佳答案
在MainForm的OnShow
事件中,您可以执行以下操作之一以在允许MainForm首先完成完全显示自身的延迟之后显示对话框:
PostMessage()
向自己发送自定义窗口消息。 TThread.CreateAnonymousThread()
或TTask
调用TThread.Queue()
。 TThread.ForceQueue()
(仅限10.2 Tokyo和更高版本)。 关于delphi - 我的应用程序主窗体可见后,如何使对话框立即发生?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6203090/