0

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

旧 Access 的屏幕截图,其中包含表单中的表单

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

在此处输入图像描述

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

这个怎么做?Delphi 和 C++ Builder 解决方案都可以接受。

4

1 回答 1

3

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

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

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

于 2013-07-29T09:18:25.647 回答