![]() |
Wie onCloseQuery überschreiben?
Hallo zusammen,
ich versuche gerade onCloseQuery einer von TForm abgeleiteten Klasse zu überschreiben, aber irgendwie klappt das nicht so richtig:
Delphi-Quellcode:
Das nimmt mir der Compiler zwar ab, funktioniert aber auch nicht, da dieses onCloseQuery nie angesprungen wird:
function CloseQuery(Sender: TObject; var CanClose: Boolean):boolean; override;
=> "Deklaration von CloseQuery" unterscheidet sich von vorheriger Deklaration"
Delphi-Quellcode:
In der Anwendung werden mittels TModularForm MDI-Children erstellt. Ich möchte in diesem Ereignis abprüfen, ob ich eine Leiste mit den TModularForm-MDI-Children ein-oder ausblende. Gibt es kein MDI-Child von TModularForm mehr, soll die Leiste weg.
function CloseQuery(Sender: TObject; var CanClose: Boolean):boolean; reintroduce;
function TModularForm.CloseQuery(Sender: TObject; var CanClose: Boolean): boolean; begin If Sender is TModularForm then begin SHowMessage('OK'); end; end; Bisher hatte ich in meiner abgeleiteten Klasse folgendes:
Delphi-Quellcode:
Das Problem hierbei ist, dass dieses Ereignis auch Dialogen angesprochen wird, die ebenfalls von der Klasse TModularForm sind. Ich brauche also den Sender um zu überprüfen, ob "Sender = MDIChild", damit dieses Event nur angesprochen wird, wenn ein MDI-Child geschlossen wird.
function CloseQuery: Boolean; Override;
function TModularForm.CloseQuery: Boolean; begin if xForm.MDIChildCount = 1 then begin xForm.TBXDock3.Visible:=false; xForm.TBXItem18.Visible:=false; end else begin xForm.TBXDock3.Visible:=true; xForm.TBXItem18.Visible:=true; end; result:=true; end; Viele Grüße Igotcha |
Re: Wie onCloseQuery überschreiben?
1, Wenn Du eine Methode überschreibst mußt du die gleiche Methodensignatur verwenden:
2, Wenn der Code der eigentlich von der Methode ausgeführt wurde immer noch ausgeführt werden soll muß du mittels inherited den Basiscode ausführen:
Delphi-Quellcode:
function TModularForm.CloseQuery: Boolean;
begin if xForm.MDIChildCount = 1 then begin xForm.TBXDock3.Visible:=false; xForm.TBXItem18.Visible:=false; end else begin xForm.TBXDock3.Visible:=true; xForm.TBXItem18.Visible:=true; end; inherited CloseQuery; end; |
Re: Wie onCloseQuery überschreiben?
Delphi-Quellcode:
läuft auf das Gleiche hinaus wie ;)
with (xForm) do
begin TBXDock3.Visible := not (MDIChildCount = 1); TBXItem18.Visible := TBXDock3.Visible; end;
Delphi-Quellcode:
MfG
if xForm.MDIChildCount = 1 then
begin xForm.TBXDock3.Visible:=false; xForm.TBXItem18.Visible:=false; end else begin xForm.TBXDock3.Visible:=true; xForm.TBXItem18.Visible:=true; end; freak |
Re: Wie onCloseQuery überschreiben?
Zitat:
|
Re: Wie onCloseQuery überschreiben?
Zitat:
Ja klar :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 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