![]() |
Event aus Komponente abfragen
Hi allerseits,
ich habe eine Komponente, die aus einer MessageQueue Nachrichten Empfangen kann. Diese Komponente erzeugt beim Empfang einer Nachricht ein Event MessageReceived(out InMessage: Idispatch) Ich möchte jetzt in meiner Anwendung auf dieses Event reagieren um die Message abzuholen. Wie kriege ich das Event aus der Komponente in die aufrufende Anwendung oder besser: was muss ich tun, damit in der Anwendung ein Event ausgelöst wird, wenn die Komponente das "MessageReceived"-Event auslöst? danke Eddie |
Re: Event aus Komponente abfragen
Habe was in .Net gefunden, dort gibt es "include", das macht genau das was ich will, gibt es so etwas auch in Delphi für Win32?
|
Re: Event aus Komponente abfragen
Was spricht gegen einen Callback? Du deklarierst ein Property als Methoden- oder Prozedurzeiger und setzt dieses Property im Hauptprogramm, in der Komponente wird die Routine ausgelöst. Genau so macht es die VCL.
|
Re: Event aus Komponente abfragen
Normalerweise werden Events in Delphi für Win32 so abgehandelt, dass eine Komponente (wie du schon sagtest) verschiedene Events publiziert, die mit Event-Handlern belegt werden können.
Zum Beispiel TButton publiziert OnClick, ... Damit diese auch ausgelöst werden, müssen diese zugewiesen werden. Entweder über den Objekt-Inspektor oder Hartcodiert, sprich in deiner Klasse muss eine Prozedur deklariert werden, die den Kopf des Event-Handlers abbildet. Bei OnClick wäre das zB procedure ButtonClick(Sender: TObject). Würdest du das jetzt hartcodieren, würdest du sowas machen:
Delphi-Quellcode:
Und für deinen Fall wird das auch nichts anderes sein. Nur fehlt mir generell 'n Überblick über das was du machen willst, um dein Beispiel hier zu verwenden. Das Prinzip sollte aber verständlich werden.
interface
type TForm1 = class (...) Button1: TButton; procedure FormCreate (Sender: TObject); public procedure myButtonClick (Sender: TObject); end; implementation procedure TForm1.FormCreate (Sender: TObject); begin // Event zuweisen Button1.OnClick := myButtonClick; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 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