Einzelnen Beitrag anzeigen

Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#1

Wie onCloseQuery überschreiben?

  Alt 5. Apr 2006, 13:21
Hallo zusammen,

ich versuche gerade onCloseQuery einer von TForm abgeleiteten Klasse zu überschreiben, aber irgendwie klappt das nicht so richtig:

Delphi-Quellcode:
function CloseQuery(Sender: TObject; var CanClose: Boolean):boolean; override;

=> "Deklaration von CloseQuery" unterscheidet sich von vorheriger Deklaration"
Das nimmt mir der Compiler zwar ab, funktioniert aber auch nicht, da dieses onCloseQuery nie angesprungen wird:

Delphi-Quellcode:
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;
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.

Bisher hatte ich in meiner abgeleiteten Klasse folgendes:

Delphi-Quellcode:
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;
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.

Viele Grüße
Igotcha
  Mit Zitat antworten Zitat