Я определил класс компонента, у которого есть свойство собственного типа:
TMyComponent = class(TComponent)
private
FLinkedComponent : TMyComponent;
procedure SetLinkedComponent(AValue : TMyComponent);
published
property LinkedComponent : TMyComponent read FLinkedComponent write SetLinkedComponent;
end;
В Object Inspector
это, очевидно, позволяет мне назначать свойство LinkedComponent
самому компоненту, но я не хочу, чтобы это могло произойти.
На данный момент я достиг своей цели, добавив условие в установщик свойств, но мне интересно, есть ли способ избежать отображения компонента в раскрывающемся списке.
procedure TMyComponent.SetLinkedComponent(AValue : TMyComponent);
begin
if(AValue = Self)
then raise Exception.Create('Can''t set this component as LinkedComponent');
FLinkedComponent := AValue;
end;
FSetLinkedComponent
следует назватьSetLinkedComponent
. - person David Heffernan   schedule 26.04.2017