如何激活具有父级的表单?

时间:2013-07-29 09:02:44

标签: delphi c++builder vcl

我正在尝试实现类似于旧版本Access的界面,它将表单嵌入到表单内的表单中。

Screenshot of old Access with forms inside forms

我有一个表单(Form1)和TPanel(Panel1)。我创建了另外两个表单并说他们的Parent = Panel1;

enter image description here

问题是我无法激活Form2(将她放在Form3前面),除非我点击它的标题栏。单击表单本身没有任何效果,即使在拖动表单时它仍然不在Form3后面,我需要单击表单或拖动它自动变为“活动”,意味着在Form3前面。

怎么做? Delphi& C ++ Builder解决方案是可以接受的。

1 个答案:

答案 0 :(得分:3)

虽然我同意其他关于使用MDI的信息,但是在将这些表单放在面板中时,你会将它们作为请求者控件(而不是表单)。因此,您需要为每个表单收听Click事件,然后在收到时调用BringToFront。

procedure TForm3.FormClick(Sender: TObject);
  begin
    BringToFront;
  end;

如果您在这样的环境中点击表单的某个控件(控件事件是否会触发),我不知道该事件将如何工作,但这样做会产生您正在寻找的效果