我正在处理的组件使用TCollection来保存指向其他组件的链接。在设计师中编辑项目时,他们的标签看起来像这样:
0 - TComponentLink
1 - TComponentLink
2 - TComponentLink
3 - TComponentLink
如何添加有意义的标签(可能是链接组件的名称)? e.g。
0 - UserList
1 - AnotherComponentName
2 - SomethingElse
3 - Whatever
作为奖励,你能告诉我如何在双击组件时显示收藏编辑器吗?
答案 0 :(得分:5)
显示有意义的名称覆盖GetDisplayName:
function TMyCollectionItem.GetDisplayName: string;
begin
Result := 'My collection item name';
end;
要在双击非可视组件时显示集合编辑器,您需要覆盖TComponentEditor编辑过程。
TMyPropertyEditor = class(TComponentEditor)
public
procedure Edit; override; // <-- Display the editor here
end;
...并注册编辑:
RegisterComponentEditor(TMyCollectionComponent, TMyPropertyEditor);
答案 1 :(得分:1)
编辑器中显示的名称存储在项目的DisplayName属性中。在创建链接时尝试设置代码以设置类似的内容:
item.DisplayName := linkedItem.Name;
但是,如果用户已经设置了DisplayName,请注意不要更改DisplayName。这是一个主要的UI烦恼。