Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programm beenden: Ja oder Nein? (https://www.delphipraxis.net/24908-programm-beenden-ja-oder-nein.html)

Frankie 28. Jun 2004 15:17


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:
if Application.MessageBox('Programm Beenden?', 'Tital', 36) = 6 then
begin
  Application.Terminate;
end;
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.

Noch was: Ich hab versucht mal einfach einzugeben:
MessageBox('Hallo') - kann sowas überhaupt funktionieren? Oder wozu ist die MessageBox gut?

Luckie 28. Jun 2004 15:23

Re: Programm beenden: Ja oder Nein?
 
Kuck dir mal das Ereignis OnCloseQuery von TForm an. Und nimm besser Close anstatt Application.Terminate.

Tubos 28. Jun 2004 15:23

Re: Programm beenden: Ja oder Nein?
 
Zitat:

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.
Probiere es mal aus, dann siehst du es ;)
tital sollte wohl titel heißen ^^

Zitat:

Noch was: Ich hab versucht mal einfach einzugeben:
MessageBox('Hallo') - kann sowas überhaupt funktionieren?
nein.

Zitat:

Oder wozu ist die MessageBox gut?
Am besten schaust du in der Delphi-Hilfe nach.
Ich könnte jetzt auch nur das entsprechende Thema copy&pasten.

alcaeus 28. Jun 2004 15:26

Re: Programm beenden: Ja oder Nein?
 
Zitat:

Zitat von Frankie
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.

Ich schätze mal das sollte 'Titel' heißen und ist nur ein Schreibfehler.

Zitat:

Zitat von Frankie
Noch was: Ich hab versucht mal einfach einzugeben:
MessageBox('Hallo') - kann sowas überhaupt funktionieren?

Nein, geht nicht. Die Funktion in TApplication wurde nicht überladen, die drei Parameter sind also Pflich. Um ganz einfach ein Meldungsfenster anzeigen zu können solltest du ShowMessage verwenden.

Zitat:

Zitat von Frankie
Oder wozu ist die MessageBox gut?

Was meinst du jetzt mit der Frage? Die ist dazu da, eine ganz einfache Schnittstelle mit dem Benutzer herzustellen, wobei der Computer auf eine Frage/Meldung verschiedene Antworten geben kann (mit versch. Buttons)

Greetz
alcaeus

[edit]Zu langsam :oops:[/edit]

Steve 28. Jun 2004 15:27

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

alcaeus 28. Jun 2004 15:28

Re: Programm beenden: Ja oder Nein?
 
Zitat:

Zitat von Steve
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:

Oder wir können auch sehr einfach auf die Delphi OH verweisen. Da steht alles ja noch besser drin.

Greetz
alcaeus

Frankie 28. Jun 2004 15:28

Re: Programm beenden: Ja oder Nein?
 
Delphi-Quellcode:
Application.MessageBox('Programm Beenden?', 'Tital', 36) = 6
Also 'Programm Beenden?' ist die Frage und 'Tital' ist ja die Überschrifft von diesem ganzen Kasten. Aber was bedeutet das 36 und das =6?

Muss bei MessageBox eigentlich immer Application. vorstehen?

Sebastian Nintemann 28. Jun 2004 15:30

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:

IDYES 6 Der Benutzer hat auf Ja geklickt.
Du kannst die 6 also durch IDYES ersetzen und kriegst auch gleich beim Lesen des Codes eine Ahnung was er bedeutet.

Viele Grüße, Sebastian

//EDIT

Zitat:

Aber was bedeutet das 36 und das =6?
Das meinte ich ;)
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:
Application.MessageBox('Programm Beenden?', 'Tital', MB_YESNO) = IDYES
Viele Grüße, Sebastian

Interceptor 28. Jun 2004 15:30

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

Luckie 28. Jun 2004 15:32

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 MSDN-Library durchsuchenMessagebox benutzen willst, ansonsten benutzt Delphi eben die entsprechende API-Funktion.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 Uhr.
Seite 1 von 2  1 2      

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