Tworzę komponent, jednym z pól jest klasa dziedzicząca z TOwnedCollection. Jego elementy - klasa dziedzicząca TCollectionItem ma właściwości read i write, różnie. Wycinek kodu dla jasności (może czegoś tam nie przekleiłem i zmieniłem nazwę, ale to chyba nieważne):

TMyCollectionItem = class (TCollectionItem)
     private
      FMyStringData  : String;
      FMyIntegerData : Integer;
     public
      procedure Assign (ASource : TPersistent); override;
     published
      property MyStringData  : String  read FMyStringData  write 
FMyStringData;
      property MyIntegerData : Integer read FMyIntegerData write 
FMyIntegerData;
     end;

TMyCollection =  class (TOwnedCollection)
private
  function Add  :TCollectionItem;
  function Insert(const AIndex : Integer) : TCollectionItem;
protected
  function  GetItem (const AIndex : Integer) : TCollectionItem;
  procedure SetItem (const AIndex : Integer;
                    const AValue : TCollectionItem);

public
  constructor Create (const AOwner : TComponent);
  function FindItemID (const AID    : Integer) : TCollectionItem;
  property Items      [const AIndex : Integer] : TCollectionItem read GetItem write SetItem;
end;

TTestComponent = class(TComponent)
     private
      FMyCollection: TMyCollection;
    procedure SetMyCollection(const Value: TMyCollection);
     public
      constructor Create(AOwner: TComponent); override;
      destructor Destroy; override;
     published
      property MyCollection: TMyCollection read FMyCollection; // <-- o to się rozchodzi
     end;

Po położeniu komponentu na formę mam do dyspozycji domyślny edytor do property MyCollection (podobnie jak to jest w TPanels w TStatusBar itp.), w którym mogę nie tylko zmieniać właściwości, ale i oczywiście dodawać lub usuwać same elementy. No i problem: nie wiem jak zrobić, żeby nie można było dodawać ani usuwać tych TCollectionItem z poziomu edytora w trybie programowanie (IDE). Rzecz w tym, że constructor TMyCollection sam tworzy tyle TMyCollectionItems, ile trzeba (na podstawie zasobow systemu), i nie chcę tego w żaden sposob zmieniać. Czym w ogóle można "wpłynąć" na pracę domyślnego edytora?

Jacek

Mam rozwiązanie - RegisterPropertyEditor(TypeInfo(TmyCollection), nil, '', TMyCollectionProperty); gdzie nadpisana jest funkcja GetColOptions w TCollectionProperty.

Jacek