Изменить метку TCollectionItem в редакторе Delphi
Компонент, над которым я работаю, использует TCollection для хранения ссылок на другие компоненты. Когда элементы редактируются в дизайнере, их ярлыки выглядят примерно так:
0 - TComponentLink
1 - TComponentLink
2 - TComponentLink
3 - TComponentLink
Как добавить значимые метки (возможно, имя связанного компонента)? например
0 - UserList
1 - AnotherComponentName
2 - SomethingElse
3 - Whatever
В качестве бонуса, можете ли вы сказать мне, как сделать так, чтобы редактор коллекции появлялся, когда компонент дважды щелкнул?
2 ответа
Для отображения значимого имени переопределите 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;
Будьте осторожны, чтобы не изменить DisplayName, если пользователь уже установил его. Это основное раздражение пользовательского интерфейса.