![]() |
Auf Event einer Komponente reagieren
Hallo,
Ich verwende eine Komponente welche empfangene Nachrichten über TCPIP auswertet und dann Events abfeuert wenn diese assigned sind. Jedoch weiß ich nicht wie man an einem Event eine Methode aus einer anderen Unit anmeldet. Ich komme von C# und kenne das daher nur von delegates und Handlern. Wie mache ich also der Komponente welche nicht von mir implementiert ist klar, dass sie meine procedure startet? die Komponente besitzt ein:
Delphi-Quellcode:
und ein switch case
published property OnError : TErrorMessage read FOnError write FOnError;
Delphi-Quellcode:
Meine Unit hat nun eine Methode welche genau dem OnError in der Schnittstelle gleichkommt. Schnittstelle von Komponente:
...............
ERROR: begin if assigned(FKonsolenMemo) then FKonsolenMemo.Lines.Add('## TLogComponent: ERROR'); if sl.Strings[1] = 'details' then begin if assigned(FOnError) then FOnError(self, sl.Strings[1], sl.Strings[3], sl.Strings[4], sl.Strings[5]); end else begin if assigned(FOnAppError) then FOnAppError(self, sl.Strings[1], sl.Strings[3], sl.Strings[4], sl.Strings[5]); end; end; ...
Delphi-Quellcode:
Meine Unit:
TAppErrorMessage = procedure(Sender: TObject; te_id, err_id, prio, text : string
) of object;
Delphi-Quellcode:
Implementiert.
procedure LogComponentAppError(Sender: TObject; te_id, err_id, prio,
text: String); Was ich nun möchte: Wenn in der verwendeten Komponente ein ERROR auftritt möchte ich das der FOnError-Event abgefeuert wird. Wie melde ich in meiner Unit die von mir geschriebene Prozedur am Event der Komponente an sodass meine Funktion bei einem eingehenden Fehler gerufen wird??? Vielen Dank schonmal! |
Re: Auf Event einer Komponente reagieren
Hi,
Delphi-Quellcode:
Frank
Komponentenreferenz.OnError := LogComponentAppError;
|
Re: Auf Event einer Komponente reagieren
Deine Prozedur darf keine einfache Prozedur, sondern muss eine Methode sein. Anschließend genügt eine einfache Zuweisung.
Delphi-Quellcode:
Nun kannst Du diese Methode dem Handler der Komponente zuweisen.
type DeineClass = class
... procedure LogComponentAppError(Sender: TObject; te_id, err_id, prio, text: String); ... end; ... procedure DeineClass.LogComponentAppError(Sender: TObject; te_id, err_id, prio, text: String); begin //Code end;
Delphi-Quellcode:
Hth
Komponente.OnError := LogComponentAppError;
|
Re: Auf Event einer Komponente reagieren
Danke,
Das ging ja einfacher als ich es erwartet hatte. Nun ist mir geholfen und der Thread kann schon geschlossen werden ;-) :bounce2: ich freu mich. 1000 Dank für die so schnelle Hilfe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 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