![]() |
Programm beenden: Ja oder Nein?
Ich habe ja schon in einem anderen Thread gefragt, doch ich sollte dafür ein neues Thema aufmachen.
Folgenden Vorschlag habe ich bekommen:
Delphi-Quellcode:
So, das funktioniert nun wunderbar. Könnte mir nun vielleicht jemand erklären warum das so funktioniert? Was bedeutet zum Beispiel 'Tital' etc. Ich hab echt keine Ahnung.
if Application.MessageBox('Programm Beenden?', 'Tital', 36) = 6 then
begin Application.Terminate; end; Noch was: Ich hab versucht mal einfach einzugeben: MessageBox('Hallo') - kann sowas überhaupt funktionieren? Oder wozu ist die MessageBox gut? |
Re: Programm beenden: Ja oder Nein?
Kuck dir mal das Ereignis OnCloseQuery von TForm an. Und nimm besser Close anstatt Application.Terminate.
|
Re: Programm beenden: Ja oder Nein?
Zitat:
tital sollte wohl titel heißen ^^ Zitat:
Zitat:
Ich könnte jetzt auch nur das entsprechende Thema copy&pasten. |
Re: Programm beenden: Ja oder Nein?
Zitat:
Zitat:
Zitat:
Greetz alcaeus [edit]Zu langsam :oops:[/edit] |
Re: Programm beenden: Ja oder Nein?
Du kannst Dir (neben MessageBox quasi) evtl. auch ma MessageDlg anschau'n.. Und wie gesagt OnCloseQuery (-> für Nachfrage vor Schließen des Fensters), damit haste eigentlich alles
Dass Dir MessageBox(...) = 6 wenig sagt, kann ich verstehen, lies in dem anderen Thread, wo Du das her hast, mal weiter, da stehen auch Konstanten, die das bissl vereinfachen :zwinker: Gruß Stephan |
Re: Programm beenden: Ja oder Nein?
Zitat:
Greetz alcaeus |
Re: Programm beenden: Ja oder Nein?
Delphi-Quellcode:
Also 'Programm Beenden?' ist die Frage und 'Tital' ist ja die Überschrifft von diesem ganzen Kasten. Aber was bedeutet das 36 und das =6?
Application.MessageBox('Programm Beenden?', 'Tital', 36) = 6
Muss bei MessageBox eigentlich immer Application. vorstehen? |
Re: Programm beenden: Ja oder Nein?
Hallo Frankie, außerdem würde ich statt der numerischen Werte (hier 6 und 36) immer die Konstanten nehmen, mit den Zahlen kann man ja so nichts anfangen. In der OH steht z.B. folgendes:
Zitat:
Viele Grüße, Sebastian //EDIT Zitat:
Die 6 ist der Rückgabewert der Funktion wenn der Benutzer auf "Ja" geklickt hat. Dafür gibt es die Konstante IDYES, wie in der Hilfe beschrieben. Man sollte also schreiben:
Delphi-Quellcode:
Viele Grüße, Sebastian
Application.MessageBox('Programm Beenden?', 'Tital', MB_YESNO) = IDYES
|
Re: Programm beenden: Ja oder Nein?
Die Ideallösung für dein Problem sähe folgendermaßen aus:
Schreib ins OnCloseQuery Ereignis deiner Mainform folgendes:
Delphi-Quellcode:
CanClose := MessageDlg('Wirklich beenden?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes; Mfg, Interceptor |
Re: Programm beenden: Ja oder Nein?
Das sind Werte für Konstanten. Und nicht um sonst gibt es seöbige, damit nach später noch weiß, was die Zahlen bedeuten. Und in der Delphi Hilfe, wie schon von meinem Vorposter gesagt, findest du alle konstenten, die du mit or verknüpfen kannst.
Das TApplication musst du voranstellen, wenn du die VCl Kapsleung von der API Funktion ![]() |
Re: Programm beenden: Ja oder Nein?
Hi!
Leserlich sieht das ganze so aus:
Delphi-Quellcode:
Dann versteht man es eigentlich auch, oder?
if Application.MessageBox('Programm Beenden?', 'Tital', MB_ICONQUSTION + MB_YESNO) = IDYES then
begin Application.Terminate; end; Ciao fkerber |
Re: Programm beenden: Ja oder Nein?
Da es sich um eine bitweise or-Verknüpfung handelt nicht mit + verknüpfen, sondern mit or.
Und im richtigen Ereignis sieht es so korrekt aus:
Delphi-Quellcode:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin if Application.MessageBox('Anwendung schließen?', 'Projekt1', MB_ICONQUESTION or MB_YESNO) = ID_YES then CanClose := True else CanClose := False; end; |
Re: Programm beenden: Ja oder Nein?
Hi!
Warum geht es auch mit + und warum sollte man dann or benutzen? Eben war noch ein Schreibfehler drin, also hier mal korrekt:
Delphi-Quellcode:
Ciao fkerber
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin if Application.MessageBox('Programm Beenden?', 'Titel', MB_ICONQUESTION + MB_YESNO) = IDYES then CanClose:=true else CanClose:=false; end; |
Re: Programm beenden: Ja oder Nein?
Danke. Hab den entsprechenden Eintrag in der Delphi Hilfe gefunden. THX. :thuimb:
|
Re: Programm beenden: Ja oder Nein?
Zitat:
z.B.:
Code:
Wenn Du das addierst kommt 0011 raus. Du kannst also noch immer prüfen welcher der Beiden werte gesetzt wurde weil jeder aus einem eindeutigen bit besteht.
MB_YESNO = 0001 = Dezimal 1
MB_ICONQUESTION = 0010 = Dezimal 2 Aber was machst Du jetzt:
Code:
Bei der Addition bekommst Du 1010 = Dezimal 8 Jetzt wird es schwer zu prüfen ob die Bits für Button MB_YESNO gesetzt wurden. Genauer gesagt es ist unmöglich ;-)
MB_YESNO = 0101 = Dezimal 5
MB_ICONQUESTION = 0011 = Dezimal 3 Bei einer Binären OR-Operation bekommst Du aber:
Code:
Und somit könntest Du es wieder mit einer AND Operation ausmaskieren.
0101
OR 0011 ---- 0111 |
Re: Programm beenden: Ja oder Nein?
Hi!
Danke für die Info, Sharky. Hatte den Quellcode so von Sakura aus dem anderen Thread übernommen. Ciao fkerber |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 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