我正在尝试实现类似于旧版本Access的界面,它将表单嵌入到表单内的表单中。
我有一个表单(Form1)和TPanel(Panel1)。我创建了另外两个表单并说他们的Parent = Panel1;
问题是我无法激活Form2(将她放在Form3前面),除非我点击它的标题栏。单击表单本身没有任何效果,即使在拖动表单时它仍然不在Form3后面,我需要单击表单或拖动它自动变为“活动”,意味着在Form3前面。
怎么做? Delphi& C ++ Builder解决方案是可以接受的。
答案 0 :(得分:3)
虽然我同意其他关于使用MDI的信息,但是在将这些表单放在面板中时,你会将它们作为请求者控件(而不是表单)。因此,您需要为每个表单收听Click事件,然后在收到时调用BringToFront。
procedure TForm3.FormClick(Sender: TObject);
begin
BringToFront;
end;
如果您在这样的环境中点击表单的某个控件(控件事件是否会触发),我不知道该事件将如何工作,但这样做会产生您正在寻找的效果