代码之家  ›  专栏  ›  技术社区  ›  William

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

  •  2
  • William  · 技术社区  · 15 年前

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

    我没有使用MDI样式

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

    3 回复  |  直到 12 年前
        1
  •  2
  •   Deltics    15 年前

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

    对于需要合并的每个子选项卡页:

    • 在主窗体页中创建选项卡 与子控件对应的控件 标签

    • 迭代 控制 在 子选项卡并更改 起源 属性到选项卡页 创建

    您不需要处理其他控件的子控件。例如,如果您的子选项卡中有一个GroupBox,那么更改它的父项将同时带来 以及其中的所有控件 给新的父母。

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

    为了使事情简单一点,你可以放一个 面板 在儿童标签中, 排列 属性设置为 客户端 . 将所有控件放置在该面板上的选项卡中,然后当需要合并/取消合并时,只需设置 起源 面板控件的。

        2
  •  4
  •   Mason Wheeler    15 年前

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

        3
  •  0
  •   Uli Gerhardt    15 年前

    我只是尝试

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

    而且效果很好。我是否遗漏了一些显而易见的东西,或者为什么每个人都给出如此复杂的解决方案?-)

    推荐文章