Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   SC_CLOSE Message gibt anderes Resultat als Close; (https://www.delphipraxis.net/180585-sc_close-message-gibt-anderes-resultat-als-close%3B.html)

SC.CLOSE 31. Mai 2014 16:03

SC_CLOSE Message gibt anderes Resultat als Close;
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Leute! Weiß einer von euch mir zu helfen? Ich habe leider herausfinden müssen, dass ein Klick auf "X", um ein Formular zu schließen, ein anderes Resultat erzeugt als ein Klick auf einen Button, der Close; aufruft. Um das zu verdeutlichen, hier eine kleine Erklärung:

Die Formulare (Testprogramm):
Form1 hat einen Button und ruft Form2, egal ob modal oder nicht, das Resultat bleibt das Gleiche, auf.
Form2 hat einen Button und zwei RadioButtons, welches nicht checked sind. Klicken auf den Button ruft Close;.
In FormShow und FormClose des Form2-Formulars steht:
Delphi-Quellcode:
RadioButton1.Checked := False; RadioButton2.Checked := False;


Die unterschiedlichen Resultate:
1) Form2 wird über Form1 geöffnet. Ich klicke auf einen der RadioButtons. Klicke ich in Form2 auf den Button zum Schließen, so werden beide RadioButtons ent-checked und das Formular wird geschlossen. Ein erneutes Öffnen des Formulars zeigt mir zwei nicht-checked RadioButtons.
2) Form2 wird über Form1 geöffnet. Ich klicke auf einen der RadioButtons. Klicke ich auf das X in der Titelleiste um das Formular zu schließen, so werden, solange das Formular noch sichtbar ist, beide RadioButtons ent-checked. Ein erneutes Öffnen des Formulars zeigt mir nun aber den zuletzt angeklickten RadioButton CHECKED!

Warum das? Im Anhang befindet sich eine kleine Demo.

mkinzler 31. Mai 2014 16:16

AW: SC_CLOSE Message gibt anderes Resultat als Close;
 
Close ist was anderes als deine Eventmethode Form1Close

SC.CLOSE 31. Mai 2014 16:20

AW: SC_CLOSE Message gibt anderes Resultat als Close;
 
Hi, das kann sein, ja. Aber in meinem Test-Code befindet sich eine -showmessage- im FormClose-Event.
Diese showmessage wird beim Klick auf den Schließen-Button als auch beim Klick auf das X angezeigt.
Ebenfalls ist in dem FormClose-Event das unchecken der beiden RadioButtons vorhanden.

Demnach wird das Event ja bei beiden Klicks angesprungen. Aber weshalb re-checked der meinen RadioButton wieder, wenn ich das Formular per X schließe und dann erneut öffne?

Delphi-Quellcode:
// Unit1
procedure TForm1.Button1Click(Sender: TObject);
begin
 Form2.ShowModal;
end;

// Unit2:
procedure TForm2.Button1Click(Sender: TObject);
begin
 Close;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 RadioButton1.Checked := False;
 RadioButton2.Checked := False;

 showmessage('FormClose touched!');
end;

procedure TForm2.FormShow(Sender: TObject);
begin
 RadioButton1.Checked := False;
 RadioButton2.Checked := False;
end;
Beim erneuten Öffnen des Form2-Formulars MÜSSTEN ja eigentlich die beiden RadioButtons Checked = False sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 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