![]() |
Nachfolger-Komponente soll Ereignis vervollständigen
Moin,
mal angenommen ich habe folgendes:
Delphi-Quellcode:
und möchte davon eine Komponente ableiten, wie könnte ich dann in der nachfolgerkompo nach den 3x "// hier was tun" den code erweitern?
TEventX = procedure(Sender: TObject; var DoDef: Boolean) of object;
TComp1 = class(TComponent) private FOnIrgendwas: TEventX; procedure SomeProc; published property OnIrgendwas: TEventX read FOnIrgendwas read FOnIrgendwas; end; ... procedure TComp1.SomeProc; var DoDef: Boolean; begin DoDef := True; if Assigned(FOnIrgendwas) then FOnIrgendwas(Self, DoDef); if DoDef then begin // hier was tun // hier was tun // hier was tun end; end; Meine einzige Idee wäre bei "if DoDef then" eine virtuelle Methode aufzurufen und dort die "// hier was tun" hineinpacke und in der nachfolgerkompo überschreibe. Die berühmte Frage: Ist es richtig so oder macht man das anders? |
Re: Nachfolger-Komponente soll Ereignis vervollständigen
Delphi-Quellcode:
TEventX = procedure(Sender: TObject; var DoDef: Boolean) of object;
TComp1 = class(TComponent) private FOnIrgendwas: TEventX; protected procedure SomeProc; virtual; published property OnIrgendwas: TEventX read FOnIrgendwas read FOnIrgendwas; end; TComp2 = class(TComp1) protected procedure SomeProc; override; end; ... procedure TComp1.SomeProc; var DoDef: Boolean; begin DoDef := True; if Assigned(FOnIrgendwas) then FOnIrgendwas(Self, DoDef); end; procedure TComp2.SomeProc; var DoDef: Boolean; begin DoDef := True; if Assigned(FOnIrgendwas) then FOnIrgendwas(Self, DoDef); if DoDef then begin // Neuer Code end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 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