delphi - delphi 中的表单切换

标签 delphi delphi-7

Possible Duplicate:
Delphi application with login / logout - how to implement?

我试图在我的delphi应用程序中的两个窗体之间切换,首先出现一个登录屏幕,然后出现应用程序的主窗体。

我正在使用 formx.hide 和 .show 在表单之间切换。 例如。 //密码检查后 表单1.隐藏; 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;

使用 Application.CreateForm 创建的第一个表单将成为应用程序的主表单。当主窗体关闭时,整个应用程序也会随之关闭。在我看来,您应该仅使用 Application.CreateForm 创建主表单。可以使用 TMyForm.Create 语法创建任何其他表单。如果您遵循该政策,则无需担心表单的创建顺序。

关于delphi - delphi 中的表单切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768892/

相关文章:

delphi - TWebBrowser 是否随 IE 更新?

delphi - JVCL Docking-Docking_in_Code 示例 - Tab Dock 可能出现错误

mysql - 如何从 Delphi 7 中的表填充 DBComboBox 控件?

delphi - 使用 Delphi 7 在运行时获取类中的变量名列表

delphi - 手动滚动 TComboBox

user-interface - 有没有办法在不丢失 native 窗口边框的情况下舍入Delphi VCL Form

delphi - 如何从剪贴板保存 PngImage

delphi - 如何保持生成的TLB文件整洁?

delphi指针问题

delphi - Delphi 中的时间戳 (%d) 相当于什么?