Ho creato un componente derivato da TCustomPanel. Su quel pannello ho una proprietà pubblicata di una classe derivata da TOwnedCollection. Funziona tutto bene e facendo clic sui puntini di sospensione nell'Ispettore oggetti per quella proprietà si apre l'editor di raccolta predefinito in cui posso gestire i TCollectionItems nell'elenco.Come richiamare l'editor di proprietà di un componente in fase di progettazione
TMyCustomPanel = class(TCustomPanel)
private
...
published
property MyOwnedCollection: TMyOwnedCollection read GetMyOwnedCollection write SetMyOwnedCollection;
end;
Vorrei anche essere in grado di fare doppio clic sul pannello in fase di progettazione e hanno l'editor collezione aprirsi per impostazione predefinita. Ho iniziato creando una classe derivata da TDefaultEditor e registrandola.
TMyCustomPanelEditor = class(TDefaultEditor)
protected
procedure EditProperty(const PropertyEditor: IProperty; var Continue: Boolean); override;
end;
RegisterComponentEditor(TMyCustomPanel, TMyCustomPanelEditor);
Questo sembra essere eseguito al momento giusto, ma mi sono bloccato su come avviare l'editor di proprietà per la raccolta in quel momento.
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;
Qualsiasi soluzione o approccio diverso sarebbe apprezzato.
Derivando da TComponentEditor e implementando Get/ExecuteVerb per chiamare ShowCollectionEditor ha funzionato perfettamente. Grazie mille. – avenmore
Wow, devo ammettere che sono un po 'sorpreso che sia stato così facile, è stato letteralmente secoli fa quando ho fatto l'ultima volta qualcosa del genere! –