例如,是否可以在运行时使用实例化(有条件地)的子类组件替换和释放TEdit?如果是这样,应该如何以及何时完成?我试图将父设置为nil并在表单构造函数和AfterConstruction方法中调用free(),但在这两种情况下我都遇到了运行时错误.
更具体一点,我遇到了访问冲突错误(EAccessViolation).看起来弗朗索瓦是正确的,他说在框架构造中释放组件会使用Form来控制内务管理.
可能重复:
在运行时复制组件
我有一个TMyControl(Control1)与它自己的属性/事件.
如何创建Control2具有完全相同属性/事件的重复实例?
更具体地说,我想克隆现有TADODataSet的流媒体字段(和一些事件):
object ADODataSet1: TADODataSet
Connection = ADOConnection1
CursorType = ctStatic
AfterOpen = ADODataSet1AfterOpen
CommandText = 'select top 10 * from Polls'
Parameters = <>
Left = 224
Top = 40
object ADODataSet1PollID: TGuidField
FieldName = 'PollID'
FixedChar = True
Size = 38
end
object ADODataSet1Title: TWideStringField
FieldName = 'Title'
Size = 255
end
object ADODataSet1Description: TWideStringField
FieldName = 'Description'
Size = 4000
end
object ADODataSet1PollType: TIntegerField …Run Code Online (Sandbox Code Playgroud) 德尔福5版.我有一个文件比较应用程序我在一起,它在主窗体上有一个左,右面板.每个面板(pnlLeft和pnlRight)具有相同的控件和事件范围,仅按名称分隔.即btnCheckLeft(...和btnCheckRight(......)我在保持代码更改在两个Panel之间同步时遇到问题.
我想知道我是否可以使用所有控件和事件制作单个Panel(在单独的Form上),然后在运行时将其复制两次,一次用于pnlLeft,另一次用于pnlRight到主窗体.在单个表单上,我可以只管理一次编码,而不是尝试复制所有内容.
在此过程中,将"对齐"和"事件"名称设置为应用于每个副本,如...
第一个复制到空白主表单...
pnlLeft.Align:=alLeft;
pnlLeft.Button1Click(Sender)...
Run Code Online (Sandbox Code Playgroud)
第二份副本
pnlRight.Align:=alLeft;
pnlRight.Button1Click(Sender)...
Run Code Online (Sandbox Code Playgroud)
怎么可能?我想我需要一个完整Panel的Component,但我还不够熟练,无法创建这种复杂性的Component.
我检查了 如何将delphi上TPanel的所有TLabel复制到另一个TPanel?
和 运行时的复制组件
但不要以为任何一个都会做我需要的.
感谢您提供的任何帮助.