我正在尝试在我的Delphi应用程序中切换两个窗体,首先是登录屏幕,然后是应用程序的主窗体。 我使用formx.hide和.show来在窗体之间进行切换。
例如:
//密码检查后
form1.hide;
form2.show;
第二个窗体出现了,但似乎无法与之交互,就像被禁用一样。 为什么会这样?
ModalResult
属性。如果您隐藏而不是关闭,则主表单仍将被禁用。关键是您必须正确关闭模式窗体,然后才能使用主窗体。var
LoginForm: TLoginForm;
MainForm: TMainForm;
LoginSucceeded: Boolean;
begin
Application.Initialize;
LoginForm := TLoginForm.Create(nil);
try
LoginForm.ShowModal;
LoginSucceeded := LoginForm.Successful;
finally
LoginForm.Free;
end;
if LoginSucceeded then
begin
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end;
end;
Application.CreateForm
创建的第一个表单将成为您应用程序的主要表单。当主表单关闭时,整个应用程序也随之关闭。我认为,您应该仅使用 Application.CreateForm
来创建主表单。其他任何表单都可以使用 TMyForm.Create
语法来创建。如果您遵循这个规则,那么您就不需要担心表单创建的顺序。主窗体实际上是第一个被创建的窗体吗?使用Application.CreateForm(检查.dpr文件的源代码)创建的第一个窗体被视为主窗体。关闭该窗体实际上会关闭整个应用程序。