![]() |
COM-Events verwenden
Hi,
ich stehe immer noch vor einem schweren Problem. :? Ich habe mich jetzt ein wenig durch die Doku von iTunes gewälzt (siehe ![]() Folgende Situation: In der entsprechenden Typenbibliothek gibt es ein Interface, das für die Events zu ständig ist. Das sieht folgendermaßen aus.
Delphi-Quellcode:
Nun soll es irgendwie möglich sein, dass ich selber auf das Event reagiere, was dort als Methode OnPlayerPlaEvent steht. Das muss möglich sein, da es unter allen anderen Programmiersprachen auch geht. Nur habe ich keine Ahnung wie. :(
_IiTunesEvents = dispinterface
['{5846EB78-317E-4B6F-B0C3-11EE8C8FEEF2}'] procedure OnDatabaseChangedEvent(deletedObjectIDs: OleVariant; changedObjectIDs: OleVariant); dispid 1; procedure OnPlayerPlayEvent(iTrack: OleVariant); dispid 2; procedure OnPlayerStopEvent(iTrack: OleVariant); dispid 3; procedure OnPlayerPlayingTrackChangedEvent(iTrack: OleVariant); dispid 4; procedure OnUserInterfaceEnabledEvent; dispid 5; procedure OnCOMCallsDisabledEvent(reason: ITCOMDisabledReason); dispid 6; procedure OnCOMCallsEnabledEvent; dispid 7; procedure OnQuittingEvent; dispid 8; procedure OnAboutToPromptUserToQuitEvent; dispid 9; procedure OnSoundVolumeChangedEvent(newVolume: Integer); dispid 10; end; Das Problem ist einfach nur, dass irgendwie diese Methode aufgerufen wird, aber ich selber will ja die Methode stellen und somit auf das Ereignis reagieren. Ich hoffe ihr versteht, was ich meine. *g* Kann mir jemand vielleicht ein wenig auf die Sprünge helfen? |
Re: COM-Events verwenden
Hab keine ITunes laufen, aber in der Regel baut der ActiveX-Importer beim Import der entsprechenden Schnittstelle die Eventschnittstelle passend zur Wrapper-Komponenten dazu.
Falls das hier nicht der Fall ist, schau dir mal ![]() Für eine Einarbeitung in COM empfehle ich dir das Buch ![]() |
Re: COM-Events verwenden
Hi Bernhard,
danke für den Link zu dem Tool. :) Das scheint sehr gut geeignet zu sein. ;) Chris |
Re: COM-Events verwenden
Ich habe hier ein ein Interface mit Events vorliegen:
Delphi-Quellcode:
Wie kann ich die nun nutzen? Hat da mal jemand ein kleines Beispiel für mich?
IJabberSessionEvents = dispinterface
['{F6C7A23B-B7B1-11D3-AECB-00A076A018E8}'] procedure OnConnect; dispid 1; procedure OnDisconnect; dispid 2; procedure OnAuthError(const ErrorText: WideString); dispid 3; procedure OnCommError(const ErrorText: WideString); dispid 4; ... ... ... Wenn ich schreibe:
Delphi-Quellcode:
dann kommt in Zeile 9 keine Codevervollständigung, die mir ein Event oder so vorschlägt. :(
procedure TForm1.Button1Click(Sender: TObject);
var JabSes: JabberSession; begin JabSes.Server := txtServer.Text; JabSes.Port := StrToInt(txtPort.Text); JabSes.Username := txtUser.Text; JabSes.Password := txtPass.Text; JabSes.On.. JabSes.DoConnect(False, jatPlainText); |
Re: COM-Events verwenden
So wie ich das sehe muss das Interface eine Methode der dahinter liegenden Klasse mitbringen, die dann das Event bildet. Also wär nix mit Events nachträglich umändern, da wär dann ein anderes Interface gefragt.
|
Re: COM-Events verwenden
Ich will ja nichts umändern. Es wird ja ein Event ausgelöst und darauf will ich reagieren, mehr nicht.
|
Re: COM-Events verwenden
Hat sich erledigt:
Delphi-Quellcode:
:roll:
procedure TForm1.JabOnConnect;
begin Memo1.Lines.Add('Verbunden'); end; procedure TForm1.JabOnAuthError(Sender: TObject; var ErrorText: OleVariant); begin Memo1.Lines.Add(ErrorText); end; procedure TForm1.JabOnCommError(Sender: TObject; var ErrorText: OleVariant); begin Memo1.Lines.Add(ErrorText); end; procedure TForm1.btnConnectClick(Sender: TObject); var JabSes : TJabberSession; begin JabSes := TJabberSession.Create(Form1); try JabSes.Server := txtServer.Text; JabSes.Port := StrToInt(txtPort.Text); JabSes.Username := txtUser.Text; JabSes.Password := txtPass.Text; JabSes.Resource := 'Spark'; JabSes.OnConnect := JabOnConnect; JabSes.OnAuthError := JabOnAuthError; JabSes.DoConnect(False, jatPlainText); finally JabSes.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz