AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Problem mit caNone, caMinimize bei Form.OnClose
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit caNone, caMinimize bei Form.OnClose

Ein Thema von PeterPanino · begonnen am 28. Sep 2012 · letzter Beitrag vom 28. Sep 2012
Antwort Antwort
Seite 1 von 2  1 2      
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#1

Problem mit caNone, caMinimize bei Form.OnClose

  Alt 28. Sep 2012, 19:36
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:
procedure TformMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caMinimize;
end;
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?

Dann habe ich es mal caNone versucht:
Delphi-Quellcode:
procedure TformMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caNone;
end;
Theoretisch sollte da eigentlich gar nichts passieren. Es kommt aber ein Compilerfehler: "[DCC Fehler] HVMain.pas(5138): E2010 Inkompatible Typen: 'TCloseAction' und 'TCheckBoxAction'"

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?
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Problem mit caNone, caMinimize bei Form.OnClose

  Alt 28. Sep 2012, 19:52
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);

Geändert von PeterPanino (28. Sep 2012 um 19:54 Uhr) Grund: Typo
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.300 Beiträge
 
Delphi 12 Athens
 
#3

AW: Problem mit caNone, caMinimize bei Form.OnClose

  Alt 28. Sep 2012, 19:53
Hallo...

normalerweise ist das was du gemacht hast richtig. Habe extra nochmal in einem Projekt gespickt . Leider kann ich dir nur soweit helfen... der Knackpunkt liegt wo anders.

  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Problem mit caNone, caMinimize bei Form.OnClose

  Alt 28. Sep 2012, 20:55
Versuche es mal mit TCloseAction.caMinimize
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Problem mit caNone, caMinimize bei Form.OnClose

  Alt 28. Sep 2012, 21:02
Versuche es mal mit TCloseAction.caMinimize

Bringt nichts, das Programm wird beendet statt minimiert:
Delphi-Quellcode:
procedure TformMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := TCloseAction.caMinimize;
end;
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Problem mit caNone, caMinimize bei Form.OnClose

  Alt 28. Sep 2012, 21:16
Übrigens, auch caHide BEENDET das Programm ...
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Problem mit caNone, caMinimize bei Form.OnClose

  Alt 28. Sep 2012, 21:29
Der Rückgabewert Action wird im OnClose-Ereignis des Hauptformulares ignoriert.

Nutze anstatt OnCloseQuery schreibe
Delphi-Quellcode:
  CanClose := False;
  WindowState := wsMinimized;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Problem mit caNone, caMinimize bei Form.OnClose

  Alt 28. Sep 2012, 21:31
... und selbst bei docs.embarcadero stehen zwei Beispiele, die deshalb nicht funktionieren:

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;
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.451 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Problem mit caNone, caMinimize bei Form.OnClose

  Alt 28. Sep 2012, 21:34
Der Rückgabewert Action wird im OnClose-Ereignis des Hauptformulares ignoriert.
Komisch, aber wenn ich schreibe:

Action := System.UITypes.TCloseAction(caNone);

dann wird er nicht ignoriert und das Schließen wird verhindert.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Problem mit caNone, caMinimize bei Form.OnClose

  Alt 28. Sep 2012, 21:59
Stimmt, caNone wird akzeptiert. Mein Fehler, die anderen werden trotzdem im Hauptformular ignoriert. Aber Du kannst ja
Delphi-Quellcode:
  Action := TCloseAction.caNone;
  WindowState := wsMinimized;
schreiben.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz