4

我正在处理的组件使用 TCollection 来保存到其他组件的链接。在设计器中编辑项目时,它们的标签看起来像这样:

0 - TComponentLink
1 - TComponentLink
2 - TComponentLink
3 - TComponentLink

如何添加有意义的标签(可能是链接组件的名称)?例如

0 - UserList
1 - AnotherComponentName
2 - SomethingElse
3 - Whatever

作为奖励,你能告诉我双击组件时如何使集合编辑器出现吗?

4

2 回答 2

5

要显示有意义的名称覆盖 GetDisplayName:

function TMyCollectionItem.GetDisplayName: string; 
begin 
  Result := 'My collection item name'; 
end;

要在双击非可视组件时显示集合编辑器,您需要覆盖 TComponentEditor Edit 过程。

TMyPropertyEditor = class(TComponentEditor)
public
  procedure Edit; override; // <-- Display the editor here
end;

...并注册编辑器:

RegisterComponentEditor(TMyCollectionComponent, TMyPropertyEditor);
于 2009-10-12T10:20:27.043 回答
1

编辑器中显示的名称存储在项目的 DisplayName 属性中。创建链接时,尝试将代码设置为这样:

item.DisplayName := linkedItem.Name;

但是,如果用户已经设置了 DisplayName,请注意不要更改它。这是一个主要的 UI 烦恼。

于 2009-09-12T14:14:50.030 回答