我已經創建了一個派生自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;
任何解決方案或不同的方法將不勝感激。
從TComponentEditor派生並實現Get/ExecuteVerb來調用ShowCollectionEditor工作完美。非常感謝你。 – avenmore
哇,我必須承認我有點驚訝,這真的很容易,這是從幾年前,當我最後做了這樣的事情! –