![]() |
Problem mit caNone, caMinimize bei Form.OnClose
Hallo! Ich möchte, dass mein Programm beim Klick auf den X-Schließknopf des Formulars - evtl. auf Nachfrage - minimiert statt beendet wird.
Nun habe ich in den OnClose-Eventhandler des Hauptformulars folgenden Code geschrieben, um das mal zu testen:
Delphi-Quellcode:
Nach der Beschreibung in der Hilfe müsste damit beim Klick auf den Schließknopf (oder Systemmenü->Schließen) das Programm minimiert statt beendet werden. Es wird aber beendet statt minimiert. Wieso das?
procedure TformMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin Action := caMinimize; end; Dann habe ich es mal caNone versucht:
Delphi-Quellcode:
Theoretisch sollte da eigentlich gar nichts passieren. Es kommt aber ein Compilerfehler: "[DCC Fehler] HVMain.pas(5138): E2010 Inkompatible Typen: 'TCloseAction' und 'TCheckBoxAction'"
procedure TformMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin Action := caNone; end; Wie das?? caNone wird doch ausdrücklich in der Hilfe als möglicher Wert für Action mit Typ TCloseAction genannt! Wieso findet hier eine Typverwechslung statt? |
AW: Problem mit caNone, caMinimize bei Form.OnClose
Komisch, wenn ich schreibe:
Action := System.UITypes.TCloseAction(caNone); entsteht kein Compilerfehler und das Beenden des Programms wird erwartungsgemäß verhindert. Nur bei caMinimize wird das Programm immer noch beendet statt minimiert, auch wenn ich schreibe: Action := System.UITypes.TCloseAction(caMinimize); |
AW: Problem mit caNone, caMinimize bei Form.OnClose
Hallo...
normalerweise ist das was du gemacht hast richtig. Habe extra nochmal in einem Projekt gespickt 8-). Leider kann ich dir nur soweit helfen... der Knackpunkt liegt wo anders. :hi: |
AW: Problem mit caNone, caMinimize bei Form.OnClose
Versuche es mal mit
Delphi-Quellcode:
;)
TCloseAction.caMinimize
|
AW: Problem mit caNone, caMinimize bei Form.OnClose
Zitat:
Bringt nichts, das Programm wird beendet statt minimiert:
Delphi-Quellcode:
procedure TformMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin Action := TCloseAction.caMinimize; end; |
AW: Problem mit caNone, caMinimize bei Form.OnClose
Übrigens, auch caHide BEENDET das Programm ...
|
AW: Problem mit caNone, caMinimize bei Form.OnClose
Der Rückgabewert Action wird im OnClose-Ereignis des Hauptformulares ignoriert.
Nutze anstatt OnCloseQuery schreibe
Delphi-Quellcode:
...:cat:...
CanClose := False;
WindowState := wsMinimized; |
AW: Problem mit caNone, caMinimize bei Form.OnClose
... und selbst bei
![]() procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin if MessageDlg('Close application ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then Action := caFree else Action := caMinimize; end; |
AW: Problem mit caNone, caMinimize bei Form.OnClose
Zitat:
Action := System.UITypes.TCloseAction(caNone); dann wird er nicht ignoriert und das Schließen wird verhindert. |
AW: Problem mit caNone, caMinimize bei Form.OnClose
Stimmt, caNone wird akzeptiert. Mein Fehler, die anderen werden trotzdem im Hauptformular ignoriert. Aber Du kannst ja
Delphi-Quellcode:
schreiben.
Action := TCloseAction.caNone;
WindowState := wsMinimized; ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12: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