在多个表单之间实现导航时避免“循环单元引用”

问题描述 投票:0回答:2

我有两个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;

我该怎么做?

forms delphi delphi-2010 multiple-forms
2个回答
0
投票

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

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

您需要做的就是关闭模态表单。更换

frmHome.ShowModal;
Hide;

ModalResult := mrOK;

如果您希望两个表单同时可见并启用,则不得以模态方式显示它们。


0
投票

如果我明白你想要做什么,那么这应该可以正常工作。

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

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

由于其他表单已禁用,因此在启用它之前它无法成为焦点。

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

© www.soinside.com 2019 - 2024. All rights reserved.