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