Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OnEvent überschreiben? (https://www.delphipraxis.net/28111-onevent-ueberschreiben.html)

Pseudemys Nelsoni 19. Aug 2004 18:47


OnEvent überschreiben?
 
hallöle,

wie kann ich ein OnEvent umschreiben? z.b "OnConnect"?

heisst sicher nicht "procedure OnConnect(...); override;" oder?

SirThornberry 19. Aug 2004 18:54

Re: OnEvent überschreiben?
 
definier das Event einfach neu. Mal nen Beispiel mit OnClick
Delphi-Quellcode:
  TNewButton = class(TButton)
  private
    FNewOnClick: TNotifyEvent;
    procedure FOnClickProc(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
  published
    property OnClick: TNotifyEvent read FNewOnClick write FNewOnClick;
  end;

constructor TNewButton.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  inherited OnClick := FOnClickProc;
end;

procedure TNewButton.FOnClickProc(Sender: TObject);
begin
  if Assigned(FNewOnClick) then FNewOnClick(Sender);
  //do something other on Click too
end;

Bernhard Geyer 19. Aug 2004 18:55

Re: OnEvent überschreiben?
 
Was meinst Du mit "Umschreiben"?
Der Event-Property OnEvent wird immer OnEvent heißen. Du kannst aber neue Events definieren.

Was willst Du eigentlich machen (bzw. welche Komponenen willst Du "umschreiben")?

Bernhard Geyer 19. Aug 2004 18:57

Re: OnEvent überschreiben?
 
Zitat:

Zitat von SirThornberry
definier das Event einfach neu. Mal nen Beispiel mit OnClick

Für diese Art des "Umschreibens" haben die Entwickler der Komponente aber i.d.R. eine DoOnClick/DoClick-Methode spendiert, die man einfach überladen kann.

Pseudemys Nelsoni 19. Aug 2004 19:00

Re: OnEvent überschreiben?
 
Danke SirThornberry,

auch wenn ich noch nicht alle so verstehe <g>

Was wird da mit assigned() geprüft? ich weiss das die funktion prüft ob der inhalt nil ist aber mehr nicht.

Zitat:

Was meinst Du mit "Umschreiben"?
Also ich habe eine klasse von TClientSocket abgeleitet, ich möchte das "onconnect" ereignis so modifizieren, das es einige sachen "sendet", also "sendtext",

nur ka wie <g>

SirThornberry 19. Aug 2004 19:03

Re: OnEvent überschreiben?
 
mit dem Assigned wird einfach geprüft ob das neue Ereignis zugewiesen ist

@Bernhard Geyer: Leider aber nicht immer und wenn man die Sourcen nicht hat ist es schwer heraus zu finden (wenn man nur die DCU's hat). Somit hab ich mir das so angewöhnt. Du meinst bestimmt auch "überschreiben" oder meinst du wirklich "überladen"?

Bernhard Geyer 19. Aug 2004 19:06

Re: OnEvent überschreiben?
 
Zitat:

Zitat von Pseudemys Nelsoni
Also ich habe eine klasse von TClientSocket abgeleitet, ich möchte das "onconnect" ereignis so modifizieren, das es einige sachen "sendet", also "sendtext",

Ich würde keine Ableitung von TClientSocket machen sondern entweder:

1, Ein Komponente, welche sich mit einer TClientSocket-Komponente verbindet (wie es Delphi mit TDatabase/TTable/TDataSource/...) auch macht.

2, Eine TClientSocket-Komponente als Member deiner Klasse erzeugst und deine Komponente z.B. nur von TComponent ableitest. Damit hast Du keine Probleme mehr irgendwelche unnötigen Properties/Events/Methoden.

Beide Lösungen sind auch viel eher an das gebräuchliche ISO-Schichtenmodell angelehnt, wie es z.B. auch im Internet verwendet wird (FTP -> TCP -> IP -> "Ethernet-Protokol" -> HW-Sicherungsschicht).

Bernhard Geyer 19. Aug 2004 19:07

Re: OnEvent überschreiben?
 
Zitat:

Zitat von SirThornberry
Leider aber nicht immer und wenn man die Sourcen nicht hat ist es schwer heraus zu finden (wenn man nur die DCU's hat). Somit hab ich mir das so angewöhnt. Du meinst bestimmt auch "überschreiben" oder meinst du wirklich "überladen"?

Überschreiben ist es. Aber hab auch schon 2 andere Lösungsmöglichkeiten aufgezeigt.

Pseudemys Nelsoni 19. Aug 2004 19:10

Re: OnEvent überschreiben?
 
oh man, ich glaub ich bin zu blöd dazu, sirthornberry :?

ist "FNewOnClick" denn nicht immer "assigned" ? was passiert wenn assigned false ist? funzt der button click dann nicht oder wie ist das <g>

Bernhard, ich glaub das ist mir auch "zu schwer"

Die Muhkuh 19. Aug 2004 19:11

Re: OnEvent überschreiben?
 
Hi,

du kannst dir das so vorstellen wie wenn du einen doppelklick auf ne kompo machst und der damit z.B. das OnClick event zuweißt. Wenn es nicht "assinged" ist dann passiert nichts und wenn es "assinged" ist, dann wird dein Code ausgeführt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.
Seite 1 von 2  1 2      

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