Frage zur MessageBox
-
Morgen ich hab mal ne Frage nur MessageBox.
Hier wird ja abgefragt ob man eine bestimmte verändernung übernehmen will oder nicht.
Wie kann ich das jetzt machen das wenn man bei der MessageBox auf nein klickt das die veränderung nicht übernommen wird ?
void __fastcall TForm1::Button4Click(TObject *Sender) { MessageBox ( NULL, "Veränderungen wirklich übernehmen ?", "Warnung !",4); Edit1->Text = "änderung"; }
-
Hallo,
int ID = MessageBox ( NULL, "Veränderungen wirklich übernehmen ?", "Warnung !",4); if (ID == 6) /* Ja geklickt */ else /* Nein geklickt */
BCB Hilfe schrieb:
IDOK --> 1
IDCANCEL --> 2
IDABORT --> 3
IDRETRY --> 4
IDIGNORE --> 5
IDYES --> 6
IDNO --> 7mfg, Micha
-
Hallo
Statt der festen Zahlen als Parameter und Rückgabevergleich würde ich doch lieber die definierten Kontanten verwenden. Das erhöht einerseits die Lesbarkeit und andererseits die Kompatibilität zu potentiellen Veränderungen in der WinAPI.
/Edit : nagut Micha hat das auch noch angefügt.
bis bald
akari
-
Mahlzeit,
außerdem brauchst du nicht unbedingt eine Variable, um den Rückgabewert der MessageBox zu prüfen, das kannst du auch direkt machen:
if(MessageBox ( NULL, "Veränderungen wirklich übernehmen ?", "Warnung !",4) == IDYES) /* Ja geklickt */ else /* Nein geklickt */
MfG
-
Hallo,
@akari:
sorry ^^@kolumbus
Des ja noch unübersichtlicher als die Zahlen! Zumal es nicht sinnvoll ist wenn du später noch einmal darauf zurückgreifen musst!mfg, Micha
-
Danke hat alles funktioniert.
-
RandomAccess85 schrieb:
@kolumbus
Des ja noch unübersichtlicher als die Zahlen! Zumal es nicht sinnvoll ist wenn du später noch einmal darauf zurückgreifen musst!Ich habe hier lediglich eine weitere Möglichkeit der Umsetzung angeboten. Was jeder Einzelne übersichtlich findet und was nicht, entscheidest nicht du. Ich persönlich finde ein Programm übersichtlicher, wenn unnötige Variablen weggelassen werden. Und ob der Threadsteller nochmal auf die Information zugreifen muss oder nicht, stand niemals zur Debatte. Natürlich kann er es auch mit Variable machen, das habe ich nirgendwo bestritten. Also mach' mich nicht an!
-
RandomAccess85 schrieb:
@kolumbus
Des ja noch unübersichtlicher als die Zahlen! Zumal es nicht sinnvoll ist wenn du später noch einmal darauf zurückgreifen musst!Öh?!? Natürlich ist es weitaus ineffizienter Zahlen zu verwenden, statt der Konstanten...
if (Application->MessageBoxA(...) == IDYES)
hier sieht man direkt, welche Bedinung erfüllt sein muss...
if (Application->MessageBoxA(...) == 6)
hier sieht man eben nicht, welche Bedingung erfüllt sein muss...
Und natürlich kann man auch den Rückgabewert der MessageBox in einer Variable speichern und diesen dann mit den Konstanten vergleichen.
int iMsgResult = Applicaton->MessageBoxA(...); if (iMsgResult == IDYES) // irgendwas machen
-
Hallo,
@Joe_M.
if(MessageBox ( NULL, "Veränderungen wirklich übernehmen ?", "Warnung !",4) == IDYES)
/* Ja geklickt */
else
/* Nein geklickt */Darauf war es bezogen...
Und ich meinte lediglich, dass wenn die Bedingung (z.B. "Ja") im späteren Programmablauf noch benötigt wird, es vermutlich sinnvoller ist das Ergebnis der Abfrage in der Variablen zu speichern als die Messagebox nochmal "aufpoppen" zu lassen!
Was im Übrigen auch nur eine Feststellung war Kolumbus
mfg, Micha
-
Dann hab ich Deinen Beitrag mißverstanden... Ich hatte es so verstanden, dass Du tatsächlich lieber Magic Numbers verwendest, statt der Konstanten.
-
RandomAccess85 schrieb:
Und ich meinte lediglich, dass wenn die Bedingung (z.B. "Ja") im späteren Programmablauf noch benötigt wird, es vermutlich sinnvoller ist das Ergebnis der Abfrage in der Variablen zu speichern als die Messagebox nochmal "aufpoppen" zu lassen!
Was ja, wie gesagt, niemand in Abrede gestellt hat.
RandomAccess85 schrieb:
Was im Übrigen auch nur eine Feststellung war Kolumbus
Kam aber ganz schön Oberlehrer-mäßig rüber, daher mein Blutdruckanstieg
Schwamm drüber! msg weiß Bescheid was geht und was nicht und damit ist's gut.
MfG