Einzelnen Beitrag anzeigen

Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#9

Re: Wie wird ein Fenster geschlossen?

  Alt 12. Jul 2005, 15:30
Da kommst Du wohl um eine eigene methode nicht drumrum
close() ist nämlich nicht virtuell und wird imho auch beim Drücken auf das Kreuz gerufen.
eine Lösung wäre:
im Interface deiner Form schreibst du:
Delphi-Quellcode:
  private
   _bExecuteCloseAction: Boolean;
  ...
  public
  ...
  Constructor Create(Owner: TComponent); Override;
  function CloseQuery: Boolean; Override;
  Procedure Close(_bExecuteCloseAction: Boolean); ReIntroduce; Overload;
  ...
der Body der Funltion sieht dann so aus:
Delphi-Quellcode:
Procedure TMyForm.Close(_bExecuteCloseAction: Boolean);
Begin
  bExecuteCloseAction:=_bExecuteCloseAction;
  Close;
End;
Natürlich muss die Boolean variable im Constructor noch initialisiert werden:
Delphi-Quellcode:
Constructor TMyForm.Create(Owner: TComponent);
Begin
  Inherited;
  bExecuteCloseAction:=True;
End;
und im CloseQuery abgeprüft:
Delphi-Quellcode:
function TMyForm.CloseQuery: Boolean; Override;
Begin
  If bExecuteCloseQuery
  Then Begin
    //hier Deine schließfunktionalität
    Result:=?????;
  End Else Result:=True;
End;
Jetzt kannst du irgendwo im code schreiben
Delphi-Quellcode:
MyForm1.Close(false); //wenn nix ausgeführt werden soll
//oder
MyForm.Close;
//bzw
MyForm.Close(true); //wenn die funktionalität ausgeführt werden soll
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat