将子窗体中的选项卡合并为主窗体

时间:2009-08-26 18:26:47

标签: delphi tabbed-document-interface

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

我没有使用MDI风格

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

  • 在主窗体页面中创建一个标签 对应于孩子的控制 标签

  • 迭代中的控件 子选项卡并更改父级 属性到标签页你刚才 创建

您不需要处理作为其他控件的子控件的控件。例如如果您的子选项卡中有一个组合框,则更改它的父组件会将及其中的所有控件带到新父组件。

如果你需要能够在任何时候“取消合并”你的标签,那么你需要设计一些机制来跟踪控件的来源,这样你就可以将原来的恢复为/需要时。

为了让事情变得更容易,您可以在子标签中放置 TPanel ,并将对齐属性设置为 alClient 。将所有控件放在该面板上的选项卡中,然后当您需要合并/取消合并时,只需设置面板控件的

答案 2 :(得分:0)

我刚试过

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

它工作正常。我错过了一些明显的东西,或者为什么每个人都提供如此复杂的解决方案: - )