Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Ereignis überschreiben / eigenes Ereignis
RFZ - Mo 30.12.02 14:28
Titel: Ereignis überschreiben / eigenes Ereignis
Moin,
da ich die TNMHTTP Komponente hasse, will ich mir ne eigene machen, abgeleitet von TClientSocket.
Ich kenn mich da nicht viel aus, wie man eigene Prozeduren hinzufügt weiss ich, mehr nicht :)
Jetzt will ich das OnRead Ereignis irgendwie so bearbeiten, dass es der Eigenschaft Header und Body die empfangenen Strings zuweist, und dann mein eigenes Ereignis OnSuccess auslöst. OnRead kann öfter durchlaufen bevor OnSucces ausgelöst werden soll, da die Server die Website in 2 Teilen senden, OnSuccess könnte dann ähnlich wie OnDisconnect sein, ich hoffe ihr versteht was ich meine :)
Also, wie überschreibe ich OnRead, und wie erstelle ich mein eigenes Ereignis?
Danke, und gutn Rutsch!
cu RFZ
Tino - Mo 30.12.02 15:08
Hallo,
Deine Frage ist also
RFZ hat folgendes geschrieben: |
wie überschreibe ich OnRead, und wie erstelle ich mein eigenes Ereignis? |
Zum ersten:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure OnRead ({Parameter}); override;
{...}
procedure tMyComp.OnRead ({Parameter}); begin inherited;
{...} end; |
Zum zweiten:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Type tOnMyEvent = Procedure ({Parameter}) of object;
tMyComp = Class (tClientSocket) private fOnMyEvent: tOnMyEvent; published property OnMyEvent: tOnMyEvent read fOnMyEvent write fOnMyEvent; End; |
Und wenn Du das Event nun Aufrufen möchtest:
Quelltext
1: 2:
| If Assigned (fOnMyEvent) then fOnMyEvent ({Parameter}); |
Gruß
TINO
RFZ - Mo 30.12.02 15:09
Ich will aber ne eigene :P
Soll ja auch nen Lerneffekt haben.
cu RFZ
RFZ - Mo 30.12.02 15:15
@Tino
So?
Quelltext
1:
| procedure OnRead(Sender: TObject; Socket: TCustomWinSocket); override; |
[Fehler] HTTPClient.pas(25): Eine statische Methode kann nicht überschrieben werden
Scheint nicht zu funktionieren... Ausserdem dachte ich muss man bei OnDings die Prozedur Dings überschreiben... bei OnClick ist's jedenfalls Click...
cu RFZ
Tino - Mo 30.12.02 18:10
Hi,
handelt es sich bei OnRead um ein Event (also um eine Eigenschaft) oder um eine Methode? Letzendlich kannst du natürlich nur eine Methode überschreiben und diese muss dann auch als Virtual definiert sein. Ein Event kannst Du nicht überschreiben.
RFZ hat folgendes geschrieben: |
Ausserdem dachte ich muss man bei OnDings die Prozedur Dings überschreiben... bei OnClick ist's jedenfalls Click... |
Das muss nicht immer so sein. Letztendlich kannst Du nun mal kein Event überschreiben. Damit Du dennoch auf so ein Event in Deiner abgeleiteten Klasse reagieren kannst gibt es meistens eine Methode die (fast) nichts anderes macht als zum Beispiel das OnClick Event aufzurufen. Diese Methode ist meistens als Virtual definiert damit man diese dann in abgeleiteten Klassen überschreiben kann.
Gruß
TINO
Udontknow - Mo 30.12.02 18:31
Hi!
Nur so neben bei: Ein Event ist doch meist nach aussen als Property ansprechbar? Properties wiederum können überschrieben werden...
Cu,
Udontknow
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!