![]() |
OnEvent überschreiben?
hallöle,
wie kann ich ein OnEvent umschreiben? z.b "OnConnect"? heisst sicher nicht "procedure OnConnect(...); override;" oder? |
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; |
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")? |
Re: OnEvent überschreiben?
Zitat:
|
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:
nur ka wie <g> |
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"? |
Re: OnEvent überschreiben?
Zitat:
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). |
Re: OnEvent überschreiben?
Zitat:
|
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" |
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 12:28 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 by Thomas Breitkreuz