情况如下:在应用程序主窗体上创建事件时,某些条件未得到满足,因此应用程序需要关闭。
是的,这是一个糟糕的设计,但是应用程序应该如何关闭?使用Application.MainForm.Close 生成一个AV。应用程序.终止 http://docwiki.embarcadero.com/Libraries/XE2/en/Vcl.Forms.TApplication.Terminate不是一个很好的选择。还有其他想法吗?
Application.Terminate
工作得很好。但是,请记住,它是一个delayed终止,它所做的只是发布一个WM_QUIT
消息发送到调用线程的消息队列,因此应用程序不会真正终止,直到Application.Run()
被调用来开始处理主线程的消息队列。因此,在应用程序实际终止之前,您可能会看到 MainForm 在屏幕上短暂闪烁。如果你想避免这种情况,你可以设置Application.ShowMainForm
属性为 false,例如:
procedure TMainForm.FormCreate(Sender: TObject);
begin
if (some condition) then
begin
Application.ShowMainForm := False;
Application.Terminate;
end;
end;
然而,正如其他人所说,更好的设计是在项目的 DPR 文件中进行检查,甚至在必要时根本不创建 MainForm,例如:
Application.Initialize;
if not (some condition) then
begin
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)