TCustomPanel から派生したコンポーネントを作成しました。そのパネルには、TOwnedCollection から派生したクラスの公開済みプロパティがあります。すべてがうまく機能しており、そのプロパティのオブジェクト インスペクターで省略記号をクリックすると、デフォルトのコレクション エディターが開き、リスト内の TCollectionItems を管理できます。
TMyCustomPanel = class(TCustomPanel)
private
...
published
property MyOwnedCollection: TMyOwnedCollection read GetMyOwnedCollection write SetMyOwnedCollection;
end;
また、設計時にパネルをダブルクリックして、コレクション エディターをデフォルトで開くことができるようにしたいと考えています。TDefaultEditor から派生したクラスを作成して登録することから始めました。
TMyCustomPanelEditor = class(TDefaultEditor)
protected
procedure EditProperty(const PropertyEditor: IProperty; var Continue: Boolean); override;
end;
RegisterComponentEditor(TMyCustomPanel, TMyCustomPanelEditor);
これは適切なタイミングで実行されているようですが、その時点でコレクションのプロパティ エディターを起動する方法に行き詰まっています。
procedure TMyCustomPanelEditor.EditProperty(const PropertyEditor: IProperty; var Continue: Boolean);
begin
inherited;
// Comes in here on double-click of the panel
// How to launch collection editor here for property MyOwnedCollection?
Continue := false;
end;
任意のソリューションまたは別のアプローチをいただければ幸いです。