在Delphi编辑器中更改TCollectionItem的标签

问题描述:

我正在使用的组件使用TCollection来保存指向其他组件的链接。当项目在设计中编辑其标签是这个样子:在Delphi编辑器中更改TCollectionItem的标签

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

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

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

作为奖励,您能告诉我如何在组件双击时显示集合编辑器吗?

要显示一个有意义的名字覆盖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); 

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

item.DisplayName := linkedItem.Name; 

要小心,不要更改显示名称,如果用户已经设置它,但。这是一个主要的UI烦恼。

+3

感谢梅森,但不幸的是,它并没有为我工作。然而,它却让我想到了一个可行的答案。简单地覆盖TCollectionItem“GetDisplayName”函数,例如 function TMyCollectionItem.GetDisplayName:string; 开始 结果:='我的收藏品名称'; 结束; – norgepaul 2009-09-12 14:33:48