我试图在我的delphi应用程序中切换两个表单,首先,出现登录屏幕,然后出现应用程序的主要表单.
我使用formx.hide和.show在表单之间切换.例如.//密码检查后的form1.hide; form2.show;
第二种形式出现,但无法与之交互,就像它被禁用一样.为什么要这样做?
由于您没有提供任何代码,我们必须猜测您的问题是什么.所以这里.
当其他表单以模态方式显示时,表单将被禁用,然后在关闭模式表单时重新启用表单.因此,您最有可能以模态方式显示登录表单,然后隐藏它而不是关闭.要关闭模态窗体,您需要设置模态窗体的ModalResult属性.如果隐藏而不是关闭,则主窗体仍将被禁用.关键是你必须在主表单可用之前正确关闭模态表单.
通常,对于具有初始登录表单的应用程序,您可以组织应用程序的.dpr文件,如下所示:
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;
Run Code Online (Sandbox Code Playgroud)
使用的第一个表单Application.CreateForm成为应用程序的主要表单.当主窗体关闭时,整个应用程序都会关闭.在我看来,你应该Application.CreateForm只用于创建主表单.可以使用TMyForm.Create语法创建任何其他表单.如果您遵循该政策,则无需担心表单的创建顺序.