Hallo, Delphi Experten!
Ich bin recht neu auf dem Gebiet von
COM bzw.
ActiveX und hänge nun mit Verständnisproblemen.
Durch 'Import Type Library' habe ich aus einer
dll einen tlb-File mit Wrapper erzeugt und nach Vorschrift des Herstellers einen Client erstellt - passt alles.
Nun habe ich auch selbst einen Automation Object geschrieben, das wie auch die
dll Events unterstützt. Dabei habe ich folgenden Unterschied bemerkt.
Bei mir sieht die Server-Initialisierung im Client (z.B. im FormCreate) folgendermaßen aus:
Code:
FEventServer : IEventServer;
LocalEventServer : TEventServer;
procedure OnMyEvent(Sender : TObject);
..
..
FEventServer:=CoEventServer.create;
LocalEventServer:=TEventServer.create(nil);
With LocalEventServer do
begin
AutoConnect:= False;
ConnectTo(FEventServer);
LocalEventServer.OnServerEvent:=OnMyEvent;
end;
Bei der
dll reicht folgendes:
Code:
..
..
ExternServer:=TExternServer.create(self);
ExternServer.OnEvent1:=MYOnEvent1;
Hier wird also nicht das Create der CoClass aufgerufen, und auch das ConnectTo für die Events fehlt (setzte ich Autoconnect auf false und kommentiere ConnectTo aus, bekomme ich bei jedem Event eine
Exception). Kann mir jemand den Unterschied erklären bzw. erläutern, wie ich mein Automation Object so hinbringe, dass es gleich verwendbar ist wie die
dll?