Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie geerbte Ereignisse verarbeiten ?? (https://www.delphipraxis.net/55945-wie-geerbte-ereignisse-verarbeiten.html)

Net7 29. Okt 2005 10:36


Wie geerbte Ereignisse verarbeiten ??
 
Hi Leute,

Ich sitze hier wieder vor einem Problem, bei der Komponentenentwicklung.

Es geht um ein Events von ServerSocket.


So ist dieses äusserlich zu sehen.

Delphi-Quellcode:
procedure TForm1.SocketServer1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
end;
Wie kann ich dieses Event innerhalb der Komponente abfragen, ob dieses aufgetreten ist?? :gruebel:

Für Tipps wäre ich sehr dankbar.

Dust Signs 29. Okt 2005 10:38

Re: Wie geerbte Ereignisse verarbeiten ??
 
OnClientDisconnect überschreiben und im Event deinen Code inkl. inherited?

Dust Signs

SirThornberry 29. Okt 2005 10:41

Re: Wie geerbte Ereignisse verarbeiten ??
 
es gibt die Methode:
Delphi-Quellcode:
procedure ClientDisconnect(Socket: TCustomWinSOcket); dynamic;
Diese einfach überschreiben.

@DustSigns: Ein Event kann man nicht überschreiben.

Dust Signs 29. Okt 2005 10:47

Re: Wie geerbte Ereignisse verarbeiten ??
 
Zitat:

Zitat von SirThornberry
@DustSigns: Ein Event kann man nicht überschreiben.

Echt :shock: Upsi :oops: Wieso eigentlich nicht? Ich mein, ich hab's noch nie versucht, weil es nie notwendig war, aber ich würd trotzdem gern wissen warum :stupid:

Delphi-Quellcode:
procedure OnBla(Blub: TBlub); override;
{..}
procedure TMuh.OnBla(Blub: TBlub);
begin
  inherited;
  {..}
end;
Dust Signs

Net7 29. Okt 2005 10:58

Re: Wie geerbte Ereignisse verarbeiten ??
 
Hmm.....

Zitat:


Delphi-Quellcode:
procedure ClientDisconnect(Socket: TCustomWinSOcket); dynamic;


Irgendwie stehe ich aufn schlauch :roll:

Wird denn diese Procedure aufgerufen wenn es ein Disconnect gibt??

Ich will doch auch nix überschreiben das Event soll ja bleiben so wie es ist.
Ich möchte kein neues Basteln. Ich möchte nur innerhalb der Kompo wissen ob es auftritt.


Oder bin ich aufm Holzweg. :gruebel:

Khabarakh 29. Okt 2005 11:04

Re: Wie geerbte Ereignisse verarbeiten ??
 
Zitat:

Zitat von Dust Signs
Wieso eigentlich nicht?

OnDisconnect ist ja nur eine Property für FOnDisconnect. Da müsstest du schon eine Variable überschreiben können (bzw. die Compiler-Magic, die hinter den Methodenzeigern steckt) :stupid: .

@Net7: Der Weg ist der richtige. ClientDisconnect ist der sog. Event-Dispatcher von OnDisconnect. Wenn die Komponente das Event auslösen will, wird sie immer ClientDisconnect aufrufen.

Net7 29. Okt 2005 11:41

Re: Wie geerbte Ereignisse verarbeiten ??
 
Zitat:

Zitat von Khabarakh
@Net7: Der Weg ist der richtige. ClientDisconnect ist der sog. Event-Dispatcher von OnDisconnect. Wenn die Komponente das Event auslösen will, wird sie immer ClientDisconnect aufrufen.

Die Procedure
Delphi-Quellcode:
procedure ClientDisconnect(Socket: TCustomWinSOcket);
begin
       ...schreib log.. //um zu sehen ob sie angesprungen wurde
end;
wird aber kommischerweise nicht aufgerufen innerhalb der Kompo wenn der Client disconnect.

Mach ich was falsch oder verstehe ich was nicht :wall:

SirThornberry 29. Okt 2005 11:45

Re: Wie geerbte Ereignisse verarbeiten ??
 
@Net7: Hast du die Methode nur neu declariert oder überschrieben? (eventuell Override vergessen)

Khabarakh 29. Okt 2005 11:52

Re: Wie geerbte Ereignisse verarbeiten ??
 
Checkliste:
  • Du musst eine Klasse von TServerSocket ableiten.
  • In dieser musst du ClientDisconnect überschreiben. Also eine Methode mit gleichem Namen, gleicher Signatur (gleiche Sichtbarkeit ist auch nie falsch) und der Direktive override;.
  • In dieser solltest du unbedingt inherited; aufrufen. Aber auch ohne sollte dein Code aufgerufen werden.
  • Du musst deine Klasse verwenden. Also nicht einfach einen ServerSocket aus der Tool-Leiste auf die Form ziehen, das funktioniert sicher nicht :wink: . Entweder du erstellst deinen neuen Socket zur Laufzeit oder registrierst ihn auch als Komponente.

Net7 29. Okt 2005 11:54

Re: Wie geerbte Ereignisse verarbeiten ??
 
Zitat:

Zitat von SirThornberry
@Net7: Hast du die Methode nur neu declariert oder überschrieben? (eventuell Override vergessen)


Ich erweitere die Klasse TServerSocket um ein parr Funktionen und Proceduren

Die Urklasse ist halt TServersockt. Damit ich zb. bestimmte Proceduren aufrufen kann, muss ich zb. Wissen ob Onclientdisconect der UrKlasse aufgetreten ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz