![]() |
Problem mit caHide im OnClose der Form
Hi,
nun versteh ich die Welt nicht mehr. Das ist doch eigentlich ganz simpel. Ich will nur unter einer ganz bestimmten Bedingung die Anwendung schließen. Daz uhabe ich folgendes getan: ein Property FUserClose : Boolean; definiert, welches ich wie folgt im OnClose berücksichtige
Delphi-Quellcode:
Ich habe überprüft, dass FUserClose zu diesem Zeitpunkt False ist und für Action caHide zugewiesen wird. Trotzdem wird meine Anwendung geschlossen.
procedure TServerSocketForm.FormClose(Sender: TObject;
var Action: TCloseAction); begin If FUserClose then Action := cafree else Action := caHide; end; wo ist mein Denkfehler? Gruß oki |
Re: Problem mit caHide im OnClose der Form
Hallo,
FormCloseQuery ist die richtige Stelle. Heiko |
Re: Problem mit caHide im OnClose der Form
Hi Hoika,
ok, das ist sicher auch eine gute Stelle. Ich möchte aber ein Hide haben. Wenn man mir das im OnClose Ereignis auch noch so aufdrängelt, dann will ich auch dass es geht. Zitat:
Gruß oki |
Re: Problem mit caHide im OnClose der Form
Hi,
OnCloseAction IST die richtige Stelle:
Delphi-Quellcode:
Und du bekommst auch dein Hide :-)
procedure TForm1.OnCloseQuery(Sender:TObject; CanClose:boolean);
begin CanClose := FUserClose; if NOT CanClose then Hide; end; Gruss |
Re: Problem mit caHide im OnClose der Form
Hi Jungs!
Ich will wirklich nicht streiten. Ich gebe euch auch recht mit euren Bemerkungen zur Nutzung des Ereignisses OnCloseQuery. Aber warum gibt es den var-Parameter Action wenn man ihn nicht nutzen soll? Das versteh ich nicht. Gruß oki |
Re: Problem mit caHide im OnClose der Form
Hallo,
in MDI-Client-Fenster kannst du damit steuern, ob das Client-Fenster geschlossen oder nur versteckt wird. Heiko |
Re: Problem mit caHide im OnClose der Form
Hi hoika,
also kann ich OnClose nutzen, muß jedoch nur beachten, dass caHide zum schließen des anwendung führt. gruß oki PS: Sieht bei mir jetzt ein bischen nach Rechthaberei aus. Ist aber nicht so gemeint. |
Re: Problem mit caHide im OnClose der Form
Ich bin wie oki der Meinung das man das auch im OnClose machen kann denn dafür ist es ja da (und bietet mehr möglichkeiten als das onCloseQuery).
Wenn man mit dem Debugger mal dort ansetzt ist Action per Default "caHide" beim schließen der Form per X in der rechten oberen Ecke. Beim Mainform entspricht caHide dem schließen des gesamten, bei anderen Forms nicht. Es ist also nicht wie man annimmt das beim Standardform per Default die Action caFree ist sondern sie ist caHide und somit hat das ganze keinen Sinn was im Ausgangspost steht weil dadurch keine Änderung eintritt. Beim Mainform ist die einzige Möglichkeit im OnClose, Action auf caNone zu setzen und manuell das Hide des Forms aufzurufen. |
Re: Problem mit caHide im OnClose der Form
Joop, das ist auch meine Erkenntnis. Ich hatte mich nur vom caHide verwirren lassen, da ich nicht wußte, dass bei MainForms so die Anwendung geschlossen wird.
Der Ansatz war eigentlich, dass ich das versehentliche Schließen der Anwendung über den Close-Button rechts oben im Systemmenü verhindern will. Die Anwendung soll dann nur noch über ein TrayIcon in der Taskbar aktiv bleiben. Das hab ich jetzt auch im OnClose belassen, nur nicht mit caHide sondern caFree und eine Zeile mehr :) . Ich hab das sicher auch nicht als ein großes Problem gesehen, sondern mich nur gewundert. Es scheint aber auch so zu sein, dass die Masse lieber mit OnCloseQuery arbeitet. Herzlichen Dank noch mal für die Antworten Gruß oki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 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