![]() |
Re: Wie geerbte Ereignisse verarbeiten ??
@DustSigns: Du hast geschrieben er soll "OnClientDisconnect" überschreiben. Und OnClientDisconnection ist nur das Event was man nicht überschreiben kann. Bei den meisten komponenten gibt es Methoden welche das Event ausführen und somit kann man diese Methoden überschreiben. Es gibt aber auch den Fall das die Methode welche das Event auslöst nicht dynamic ist und somit kann man diese teilweise auch nicht überschreiben. Es ist also ein Unterschied ob man ein Event überschreibt (was nicht geht) oder die Methode die das event auslöst. "OnClientDisconnect" ist also etwas anderes als ClientDisconnect
|
Re: Wie geerbte Ereignisse verarbeiten ??
Zitat:
@Net7: Zitat:
![]() |
Re: Wie geerbte Ereignisse verarbeiten ??
Zitat:
Hmmm so habe ich es ja probiert, nur es funktioniert ja nicht, weil mir beim Compilieren der Fehler auftritt.. "Methode ClientDisconnect" nicht in Basisklasse gefunden. Und ich konnte die richtige Basisklasse auch bis jetzt nicht ermitteln. Ich helfe mir nun aus in der Anwendung damit die Daten zurückzuvermitteln in die Komponente.
Delphi-Quellcode:
procedure TForm1.Net7Server1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin Net7Server1.ClientDeleteList(Socket); end; deklariert in der kompo ist das so
Delphi-Quellcode:
.
. public procedure ClientDeleteList(DSocket: TCustomWinSocket);virtual; . . . Ich weiß das das absolut unelegant ist. Nur was soll ich machen... :wall: |
Re: Wie geerbte Ereignisse verarbeiten ??
Oh, hab gerade in die Socket-Sourcen geschaut... erstens ist es anders und zweitens als man denkt :stupid: .
TServerSocket bezieht seine gesamten Client-Events von FServerSocket(TServerWinSocket). Du musst also von TServerWinSocket ableiten und dort ClientDisconnect überschreiben. Damit die neue Klasse auch verwendet wird, muss nun FServerSocket auch als diese instanziiert werden. Dazu fallen mir zwei Möglichkeiten ein: 1. Du leitest von TServerSocket ab und überschreibst den Constructor:
Delphi-Quellcode:
Finde ich allerdings nicht ganz so schön, besser ist IMO:
begin
inherited; FServerSocket.Free; FServerSocket := TMyNewServerWinSocket.Create(INVALID_SOCKET); end; 2. Leite von TCustomServerSocket ab, mit folgendem Constructor (Original: TServerSocket.Create):
Delphi-Quellcode:
Außerdem kopierst du den Interface-Teil von TServerSocket, was aber nicht viel ist (neue Implementierungen gibts auch nicht).
begin
inherited Create(AOwner); FServerSocket := TMyNewServerWinSocket.Create(INVALID_SOCKET); //<- Veränderung InitSocket(FServerSocket); FServerSocket.ThreadCacheSize := 10; end; Das Ganze ist also doch nicht so trivial :zwinker: . |
Re: Wie geerbte Ereignisse verarbeiten ??
Zitat:
Tja wird mir wohl nix anderes übrig bleiben das so zumachen wie du vorschlägst. :roll: |
Re: Wie geerbte Ereignisse verarbeiten ??
Zitat:
|
Re: Wie geerbte Ereignisse verarbeiten ??
Zitat:
Tja dann hast du mir eins vorraus, die gibs bei mir irgendwie nicht OnSource.. :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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