| Autor |
Beitrag |
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 26.12.08 23:34
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 26.12.08 23:35
Dafür kannst du die Variable CanClose in OnCloseQuery entsprechend setzen.
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 26.12.08 23:45
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 27.12.08 05:22
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Sa 27.12.08 10:23
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if MessageDlg('Möchtest du das Programm wirklich beenden?', mtWarning, [mbYes, mbNo], 0)= mrNo then Showmessage('Tu was vor dem schließen'); end; |
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit, Win 10, Win 11
BDS 2006, RAD Studio 2009+C++, Delphi 13, VS 2010 Prof.
|
Verfasst: Sa 27.12.08 10:51
Hallo,
Das CanClose-Flag entsprechend setzen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm3.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin beep; if MessageDlg('Möchtest du das Programm wirklich beenden?', mtWarning, [mbYes, mbNo], 0)= mrYes then begin CanClose:=TRUE; end else begin CanClose:= FALSE; end; end; |
Bis bald Chemiker
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 27.12.08 10:52
idYes und idNo sind Konstanten und werden als Rückgabewert der Funktion MessageBox ausgewertet, Du hast aber den MessageDlg verwendet, dort sind die Rückgabewerte anders (mrYes und mrNo).
Macht es doch mal kürzer:
Delphi-Quelltext 1:
| CanClose := MessageDlg('Möchtest du das Programm wirklich beenden?', mtWarning, [mbYes, mbNo], 0)= mrYes; |
|
|
Webo
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Sa 27.12.08 12:23
Frühlingsrolle hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var Auswahl: word;
begin If CanClose = true then beep; Auswahl:= MessageDlg('Möchtest du das Programm wirklich beenden?', mtWarning, [mbYes, mbNo], 0); case Antwort of idYes: begin Close; end; idNo: end; end; | |
Da rufst du ja das Event in sich selbst wieder auf, nämlich mit Close; dadurch wiederholt sich das natürlich ewig.
Wie die anderen vor mir schon gesagt haben, du musst (damit geschlossen werden soll) CanClose:=true; setzen und falls auf nein geklickt wurde CanClose:=false;
Grüße
Webo
_________________ Man kann nur das aus dem Ärmel schütteln, was man auch vorher reingesteckt hat.
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 27.12.08 18:24
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 27.12.08 19:29
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 19:31
Dann schließe in deinem Schließenknopf doch direkt mit Close, ohne Abfrage. Denn die kommt ja danach in OnCloseQuery.
Alternative (allerdings nicht besonders sinnvoll, weil an zwei Stellen Abfragen stattfinden, je nach Schließmethode):
Eine globale Variable setzen, die dir in OnCloseQuery sagt, dass dort keine Abfrage mehr nötig ist.
// EDIT:
Das ist keine gute Idee: Frühlingsrolle hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm3.Button3Click(Sender: TObject); var Eing: Integer;
Eing:=MessageBox(0,'Möchten Sie das Pogramm wirklich beenden?','Warnung',(mb_YesNo+mb_iconWarning)); case Eing of 6: Close; end; | |
Denn erstens kann sich eine solche Konstante auch mal ändern, und wenn du da den Zahlenwert nimmst, ändert sich der nicht mit.
Zweitens:
Alleine an der 6 erkennst du später nicht mehr welcher Knopf das ist. An der Konstante schon.
Drittens:
Statt (mb_YesNo+mb_iconWarning) ist richtig mb_YesNo or mb_iconWarning.
|
|
Chemiker
      
Beiträge: 194
Erhaltene Danke: 14
XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit, Win 10, Win 11
BDS 2006, RAD Studio 2009+C++, Delphi 13, VS 2010 Prof.
|
Verfasst: Sa 27.12.08 20:36
Hallo Frfühlingsrolle,
wie jaenicke schon beschrieben hat, würde ich an Deiner Stelle auch die Abfrage zentralisieren. Verwende für die Abfrage nur einen Dialog, der Anwender wird’s Dir danken.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm3.Button1Click(Sender: TObject); begin close; end;
procedure TForm3.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var Antwort: Integer; begin beep; Antwort:= MessageDlg('Möchtest du das Programm wirklich beenden?', mtWarning, [mbYes, mbNo], 0); if Antwort = mrYes then begin CanClose:=TRUE; end else begin CanClose:= FALSE; end; end; |
Bis bald Chemiker
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 20:38
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 27.12.08 20:42
| jaenicke hat folgendes geschrieben: | | Das macht exakt das selbe... |
Richtiiiiiiich 
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 27.12.08 21:03
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Sa 27.12.08 21:20
Man bräuchte sich nicht streiten wenn die Threadsteller nicht immer solch Geheimnisse hätten. 
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 21:27
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Sa 27.12.08 21:35
Mit Geheimniss meine ich das er wohl noch etwas anderes bezweckt als im Anfangspost beschrieben oder er denkt einfach nur zu kompliziert. 
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 27.12.08 21:37
Letzteres, er wollte ja nur einen noch einen Knopf zum Schließen  .
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 28.12.08 00:10
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|