【问题标题】:Copy a TPanel and all of it's Controls at runtime在运行时复制 TPanel 及其所有控件
【发布时间】:2013-06-02 20:26:43
【问题描述】:

Delphi-version5. 我有一个要放在一起的文件比较应用程序,它在主窗体上有一个左右面板。每个面板(pnlLeft 和 pnlRight)都具有相同范围的控件和事件,仅按名称分隔。即 btnCheckLeft(... 和 btnCheckRight(... 我在保持两个面板之间的代码更改同步时遇到问题。

我想知道是否可以使用所有控件和事件制作一个面板(在单独的表单上),然后在运行时将其复制两次,一次用于 pnlLeft,另一次用于 pnlRight 到主表单。在那个单一的表单上,我可以只管理一次编码,而不是尝试复制所有内容。

在此过程中,设置 Align 和 Event 名称以应用于每个副本,如...

第一次复制到空白主窗体...

pnlLeft.Align:=alLeft;
pnlLeft.Button1Click(Sender)...

第二份

pnlRight.Align:=alLeft;
pnlRight.Button1Click(Sender)...

这怎么可能?我想我需要一个完整面板的组件,但我还不够熟练,无法创建这种复杂的组件。

我检查了这个 how to copy all the TLabels parented with a TPanel on delphi to another TPanel?

还有这个 Duplicating components at Run-Time

但不要认为两者都能满足我的需要。

感谢您提供任何帮助。

【问题讨论】:

    标签: delphi runtime controls delphi-5


    【解决方案1】:

    解决问题的方法不在于在运行时复制控件。相反,设计一个TFrame 对象。将所有特定于面板的代码放在那里,包括它需要的任何控件。然后,简单地实例化它两次,并给每一个不同的名字。那你可以参考LeftPanel.btnCheckRightPanel.btnCheck

    【讨论】:

    • 谢谢,但我想我解释得不好,我会尝试写一个更好的解释并重新发布。
    • 真的吗?您描述的问题是完全用框架解决的。在设计时定义一帧,然后在表单上放置两个实例。当您要进行更改时,请更改框架定义。更改将自动传播到表单上已有的两个框架。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多