0

我有两种德尔福形式;frmHome 和 frmStats。主窗体 (frmHome) 上有一个按钮,当您单击它时,它会将您带到 frmStats。

在 btn 点击 frmHome:

frmStats.ShowModal;
Hide;

这工作正常,但在 frmStats 上还有一个按钮,我想在单击时将用户带回主窗体。问题是我收到错误消息。

如果我像这样引用表单,我会收到错误消息“无法制作可见窗口模式”

implementation
uses frmHome_u;

但是,如果我这样引用,那么我会收到消息“循环单元引用”

interface
uses  {a bunch of uses} , frmHome_u;

在 btn 点击 frmStats:

frmHome.ShowModal;
Hide;

我该怎么做呢?

4

2 回答 2

0

如果我了解您要做什么,那么这应该可以正常工作。

frmStats.Enabled := True;
frmStats.Show;
Enabled := False; 
Hide;

你有另一种形式的倒数代码。

由于其他表单已禁用,因此在启用之前无法将其聚焦。

编辑

如果用户关闭 FrmStats 并且 FrmHome 是主窗体,那么您必须在 onclose 事件中启用它。

于 2015-08-28T00:13:13.623 回答
0

模态表单有所有者。当显示模态表单时,这些拥有表单被禁用。表单始终显示在其所有者上方。

您正试图让 form1 成为 form2 的所有者,然后又让 form2 拥有 form1。这种循环所有权是不允许的。这意味着两个窗口都将被禁用,并且每个窗口都在另一个窗口之上。

您需要做的是关闭模态表单。代替

frmHome.ShowModal;
Hide;

ModalResult := mrOK;

如果您希望两个表单同时可见和启用,那么您不能以模态方式显示它们。

于 2015-08-23T12:46:10.450 回答