我有两个delphi表格;
frmHome
和frmStats
。主窗体上有一个按钮 (frmHome
),当您单击它时,它会将您带到 frmStats
。
在按钮上单击
frmHome
:
frmStats.ShowModal;
Hide;
这工作正常,但是在
frmStats
上还有一个按钮,我想在单击该按钮时将用户带回主窗体。问题是我收到错误消息。
如果我引用这样的表单,我会收到错误消息“无法使可见窗口模式化”:
implementation
uses frmHome_u;
但是,如果我像这样进行引用,则会收到消息“循环单位引用”:
interface
uses {a bunch of uses} , frmHome_u;
在按钮上单击
frmStats
:
frmHome.ShowModal;
Hide;
我该怎么做?
模态表单有所有者。当显示模态表单时,这些所属表单将被禁用。表单始终显示在其所有者上方。
您试图使 form1 成为 form2 的所有者,然后让 form2 拥有 form1。这种循环所有权是不允许的。这意味着两个窗口都将被禁用,并且每个窗口都位于另一个窗口之上。
您需要做的就是关闭模态表单。更换
frmHome.ShowModal;
Hide;
与
ModalResult := mrOK;
如果您希望两个表单同时可见并启用,则不得以模态方式显示它们。
如果我明白你想要做什么,那么这应该可以正常工作。
frmStats.Enabled := True;
frmStats.Show;
Enabled := False;
Hide;
您有另一种形式的倒数代码。
由于其他表单已禁用,因此在启用它之前它无法成为焦点。
如果用户关闭FrmStats并且FrmHome是主窗体,那么您必须在onclose事件中启用它。