在运行时复制TPanel及其所有控件

时间:2013-06-06 17:43:21

标签: delphi runtime controls delphi-5

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

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

在此过程中,将“对齐”和“事件”名称设置为应用于每个副本,如...

第一个复制到空白主表单......

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

第二份副本

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

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

我查了一下 how to copy all the TLabels parented with a TPanel on delphi to another TPanel?

这个 Duplicating components at Run-Time

但不要以为任何一个都会做我需要的。

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:6)

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