Das Objekt hinter dem Interface IDockWindow muß Owner des Fensters sein.
- entweder erst wenn das Objekt gelöscht wird, wird auch die Form gelöscht
(wird das Formular geschlossen, wird dieses nur unsichtbar gemacht)
- oder das Formular wird freigegeben, aber IDockWindow reagiert dann entsprechend, wenn man doch noch versucht drauf zuzugreifen
(anfragen ignoreren, diese nur intern verwalten oder einen "Fehler" auslösen)
2. entweder man registriert bei IDockWindow die entsprechenden Methoden/Callbackfunktionen
(wie in deinem Beispliel)
oder man läßt sich vom Plugin passend zu den "Komponenten" ein Event-Interface übergeben.
Delphi-Quellcode:
IEvent = interface
procedure OnEnterEvent(Sender: IObject);
procedure OnExitEvent(Sender: IObject);
procedure OnClickEvent(Sender: IObject);
procedure OnDblClickEvent(Sender: IObject);
end;
IEdit = interface(IObject)
procedure SetOnChange(OnChangeIntf: IOnChangeEvent);
property OnChange: IOnNotifyEvent write SetOnChange;
end;
IFactory = interface
function CreateEdit(pos: TRect; events: IEvent): IObject{IEdit};
end;
Es gibt da tausende Möglichkeiten.