Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Event erweitern (https://www.delphipraxis.net/44435-event-erweitern.html)

Pseudemys Nelsoni 19. Apr 2005 14:25


Event erweitern
 
Moin,

Sagen wir mal meine Klasse1 hat folgendes Event: "OnMessage" und ich möchte in einer Nachfolgerklasse dieses Event erweitern, z.B "ShowMessage('bla')" soll aufgerufen werden sobald das Event auftritt... Nur wie mach ich das in einer Nachfolgerklasse? Eine Methode zum überschreiben gibts ja nicht, weil: Event halt.

Stevie 19. Apr 2005 14:32

Re: Event erweitern
 
Du kannst das Event sehr wohl überschreiben, aber nicht in dem herkömmlichen Sinne.
In der Klasse1 muss ja eine Methode implementiert sein, die überprüft, ob eine Event-Methode ausgeschrieben wurde.
Diese sieht im Allgemeinen ungefähr so aus:
Delphi-Quellcode:
procedure TKlasse1.DoMessage;
begin
  if Assigned(FOnMessage) then
    FOnMessage(Self);
end;
Somit kannst du die DoMessage-Methode überschreiben, und dort dein ShowMessage einbauen.

MfG
Stevie

Pseudemys Nelsoni 19. Apr 2005 14:38

Re: Event erweitern
 
Moin Stevie,

ich habe solche Do...-Methoden nicht in meiner Mainklasse, d.h ich müsste für jedes Event noch ne extra prozedur adden, richtig?

Ich frage, weil ich die Events direkt im OnRead von ClientSocket ausführe

Stevie 19. Apr 2005 14:45

Re: Event erweitern
 
Deine Klasse ist zumindest besser strukturiert, wenn du diese Do..-Methoden
einbaust und leichter zu erweitern, wie du an diesem Beispiel sehen kannst.
Außerdem kannst du nur über diesen Weg die Events durch Überschreiben der
Do..-Methoden (sollten also protected sein) erweitern.

Pseudemys Nelsoni 19. Apr 2005 14:50

Re: Event erweitern
 
Danke für die Hilfe ;)

Edit:

Zitat:

procedure TKlasse1.DoMessage;
begin
if Assigned(FOnMessage) then
FOnMessage(Self);
end;
Dann muss ich in Klasse2 aber auch nochmal mit Assigned prüfen oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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