2

我在主窗体中有页面控件,在子窗体中有页面控件,我使用停靠功能将子窗体放在主窗体中。

我没有使用 MDI 风格

现在两个表单在页面控件中都有选项卡,我需要将子表单选项卡合并到主表单页面控件中,最好的方法是什么?

4

3 回答 3

4

处理页面控件上的多个选项卡的最简单和最好的方法通常是使用 Frames。获取每个选项卡的内容并将它们分解到每个选项卡的单独框架中。将任何共享组件、状态和代码移动到数据模块。然后只需将这些框架放在页面控件的选项卡上。

于 2009-08-26T19:10:57.613 回答
2

这是一种相当简单的方法,可能适合也可能不适合您的需求。

对于您需要合并的每个子标签页:

  • 在主窗体页面控件中创建一个标签对应子标签

  • 遍历子选项卡中的Controls并将Parent 属性更改为您刚刚创建的选项卡页

您不需要处理属于其他控件的子控件的控件。例如,如果您的子选项卡中有一个分组框,那么更改它的父级会将它和其中的所有控件都带到新的父级。

如果您需要能够在任何时候“取消合并”您的选项卡,那么您将需要设计一些机制来跟踪控件的来源,以便您可以在需要时恢复原始级。

为了使事情稍微容易一些,您可以在子选项卡中放置一个TPanel ,并将其Align属性设置为alClient。将所有控件放在该面板上的选项卡中,然后当您需要合并/取消合并时,您只需设置面板控件的级。

于 2009-08-26T20:37:13.867 回答
0

我刚试过

procedure TForm1.Button1Click(Sender: TObject);
begin
  while Form2.PageControl1.PageCount > 0 do
    Form2.PageControl1.Pages[0].PageControl := PageControl1;
end;

它工作得很好。我是否遗漏了一些明显的东西,或者为什么每个人都提供如此复杂的解决方案?:-)

于 2009-08-27T07:35:42.170 回答