Ich weis das es nicht das ist, aber das was er möchte ist das was er als Beispiel mit TWebBrowser angeführt hat. Ergo: er fragt aus meiner Sicht nach einem Konzept, nach Möglichkeit auch umsetzbar. Und das was ich oben aufgezeigt habe ist das was heutztage als
OOP Konzept am verbreitesten ist.
Es gibt einen Weg exakt das machen zu können was er sich vorstellt, zumindestens sähe es im Source so aus.
Man arbeitet mit Interfaces ->
COM Objecten abgeleitet von IDispatch und deren späten Bindung. Das ist Vergleichbar mit den
Ole Objekten beim Zugriff auf ein Word-Dokument.
Allerdings: die Implementierung im Source sieht wieder exakt so aus wie normales
OOP nur eben dieses mal zusätzlich noch IINteerfaces basieren auf IDispatch.
In der endgültigen Anwendung wird man nun sein TWebBroweser Objekt als Variant speichern. Zb. so
Delphi-Quellcode:
var
Obj: Variant;
begin
Obj := CreateMyObject;
Obj.Starte.Dies.Und.Mache.Das.An.Position(0).OnCLick;
end;
Da unsere Objekt Instance im Variant Obj ein IDispatch ist und wir als Variante darauf zugreifen KANN der Compiler NICHT wissen welche Eigenschaften, Methoden etc.pp unser Objekt in Obj real implementiert. Also greift die späte Bindung und der Compiler legt im compilierten Code einen String als Konstante ab die etwa so aussieht:
"Starte.Dies.Und.Mache.Das.An.Position(0).OnCL ick"
Das bedeutet das du nun in deiner Objekt Implementation durchaus immer neuere Funktionen/Methoden und Hierarchien anlegen kannst und der Endanwender deiner Lib das erst zur Laufzeit quasi als interpretierbaren String aufruft, späte Bindung halt.
Nur, konzeptionell gesehen wird dann denoch der eigene Code gewohnt als
OOP programmiert.
Gruß Hagen