设计我自己的新 TSeqLink 可视化组件。它拥有,除其他外,财产
published
property Handler: TLinkHandler read FHandler write SetLinkHandler;
这也指向它自己的非可视 TLinkHandler 组件,该组件负责处理 TSeqLink 实例之间的链接。在表单上放置一个新的 TSeqLink 实例后,用户必须在 Object Inspector 窗口中为 Handler 属性分配一个值(如果他想在设计时执行此操作)。假设表单已经放置了一个 TLinkHandler 的实例,那么为了在其中选择一个值,我必须在 SetlinkHandler 过程中分析表单上的所有组件。像这样的东西:
with Owner do
if csDesigning in ComponentState then
begin
for i:=0 to ComponentCount-1 do
if Components[i] is TLinkHandler then
<обработка>
end;
如果表单上有多个 TLinkHandler 实例怎么办?我应该如何处理这种情况,以便列出可能的选项?如果表单上没有 TLinkHandler 的单个实例,我可以在 Object Inspector 中以某种方式创建它的新实例,以便它出现在表单上吗?
首先,在问题的代码中(它在里面,对吗?),要查找具有相同所有者
TSeqLink.SetLinkHandler的实例,您应该查看所有者的组件:TLinkHandler我仍然不明白为什么您不喜欢用于绑定组件的标准设计器行为 - 例如,在 -
TDataSource和TDataSet-s 之间。TDataSource将一个或多个ovs放在表单上,然后在属性编辑器中TClientDataSet查看属性中删除的内容。DataSource1.DataSet更新
您还没有解释为什么需要一个完整的方法来设置属性的值:
不要忘记重写
Notification方法TSeqLink:更新
首先,您需要确定谁负责提供指向
TLinkHandler. 如果在将组件放在表单上的用户身上,那么上面的代码就足够了。如果它必须自己做TSeqLink,那么该方法SetLinkHandler将不会被调用,并且<обработка>将代码放在那里是没有意义的。因此,您需要(至少为您自己)描述所需的行为 - 如何建立组件之间的连接。