AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OnEvent überschreiben?

Ein Thema von Pseudemys Nelsoni · begonnen am 19. Aug 2004 · letzter Beitrag vom 22. Aug 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 19:17
Zitat von Pseudemys Nelsoni:
Bernhard, ich glaub das ist mir auch "zu schwer"
Wieso zu schwer?

Delphi-Quellcode:
type
  TMyClass = class(TComponent)
  private
    FClientSocket: TClientSocket;
    FOnConnect: TNotifyEvent;

    function ClientSocketEvent(...);
  public
    constructor Create(AOwner: TComponent);
  
  published
    property OnConnect: TNotifyEvent read FOnConnect write FOnConnect;
  end;


constructor TMyClass.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FClientSocket := TClientSocket.Create(self);
  FClientSocket.OnEvent := ClientSocketEvent;
  ...
end;

function TMyClass.ClientSocketEvent(...);
begin
  ...
  ...
  if xyz ....
    if Assigned(OnConnect) then
      OnConnect(self);
  ...
end;
Ohne Garantie auf sofortige Compilierbarkeit!
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#12

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 19:24
hallo bernhard,

danke für den code und die mühe in zu schreiben, ich würde ihn sogar verstehen wenn ich wüsste was assigned tut (ja ich kapiers noch immer nicht )
wenn das event ausgelöst wird wieso muss dann noch mit assigned geprüft werden?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 20:05
Assigned(OnConnect) entspricht if OnConnect <> nil

Nur wenn dem OnConnect-Event ein Event-Handler zugewiesen wurde, wird dieser Event aufgrufen.

z.B. wenn Du in der IDE eine TButton auf dein Formular legst und darauf doppelklickst, so wird dem Evenhandler OnClick ein Wert zugewiesen. Im Code von TButton (oder einer Basisklasse) steht dann:
Delphi-Quellcode:
  if Assigned(OnClick) then
    OnClick(self);
und dein Code wird dann bei einem Doppelklick während der Laufzeit ausgeführt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#14

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 20:19
Hallo Bernhard,

Zitat:
Nur wenn dem OnConnect-Event ein Event-Handler zugewiesen wurde, wird dieser Event aufgrufen.
Wann wäre dies nicht der fall? ich meine, wann kann assigned mal "false" ausgeben? muss ja dann ein fehler im source sein oder?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#15

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 20:20
Ne, dann wird einfach das Ereigniss nicht ausgeführt.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#16

Re: OnEvent überschreiben?

  Alt 19. Aug 2004, 22:09
mannometer ich kriegs echt nicht gebacken...

ich schreib nochmal genau was ich vor habe...

ich leite eine klasse von TClientSocket ab, von der neuen klasse möchte ich das "OnConnect" ereignis
überschreiben. Das OnConnect Ereignis sollte also wenn es fertig ist so aussehen:

Delphi-Quellcode:
procedure TMyClass.OnConnect;
begin
  self.SendText('data1');
  self.SendText('data2');
  self.SendText('data3');
end;
jetzt weiss ich nichtmal wo ich das ereignis hinpacken müsste, protected oder published? letzteres ist doch für den OI gedacht oder? (was ich nichtmal bräuchte).
Dann weiss ich nicht ob da noch irgendwelche parameter beim onconnect hin müssen (Sender: TObject z.b (wozu auch immer das ist).

Hatte schon so angefangen:

Delphi-Quellcode:
type
  TTSSocketClass = class(TClientSocket)
  private
    FOnConnect: TSocketNotifyEvent;
    procedure OnConnectProc(SocketNotifyEvent: TSocketNotifyEvent);
  public
    constructor Create(AOwner: TComponent); override;
  published
    property OnConnect: TSocketNotifyEvent read FOnConnect write FOnConnect;
  end;

implementation

constructor TTSSocketClass.Create(AOwner: TComponent);
begin
  inherited;
  inherited OnConnect := OnConnectProc;
end;

procedure TTSSocketClass.OnConnectProc(Sender: TObject);
begin
  self.SendText('irgendwas eben);
end;

aber ist sicher wieder falsch oder? ich bekomme immer irgendein fehler, diesmal "liste der parameter ist unterschiedlich..."
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#17

Re: OnEvent überschreiben?

  Alt 20. Aug 2004, 22:07
*hochschieb*

wie "überschreib" ich denn das "OnConnect"? wie überschreibe ich überhaupt irgendein Ereignis? ich muss irgendwie ja wissen WANN ich aus meiner klasse heraus daten senden kann, daher brauch ich das "onconnected" ja
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#18

Re: OnEvent überschreiben?

  Alt 21. Aug 2004, 22:18
*hochschieb*
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#19

Re: OnEvent überschreiben?

  Alt 22. Aug 2004, 21:37
is nich getestet, aber ich hab mich kurz mit der TClientSocket komponente auseinandergesetzt und das dürfte sein, wonach du suchst:
Delphi-Quellcode:
interface
  uses ScktComp;

  type TClientSocketDescendant = class(TClientSocket)
  private
  protected
    procedure Event(Socket: TCustomWinSocket; SocketEvent: TSocketEvent); override;
  public
  published
  end;

implementation

  procedure TClientSocketDescendant.Event(Socket: TCustomWinSocket; SocketEvent: TSocketEvent);
  begin
    if SocketEvent = seConnect then
      DoWhateverYouFeelLike(WithTheParamsYouWantOrNeed);
    inherited;
  end;

end;
hoffe es klappt
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 Uhr.
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