mbYesNo-MessageBox: Ereignis abfragen



  • @ BigNeal: Die Funktionsweise einer einfachen MessageBox ist mir schon bekannt. Was ich nicht weiß ist zur Verdeutlichung das Reagieren auf die unterschiedlichen Rückgabewerte. Die einzelnen Rückgabewerte kenne ich ebenfalls: Das sind allgemein für Schaltflächen:

    IDOK = 1
    IDCANCEL = 2
    IDABORT = 3
    IDRETRY = 4
    IDIGNORE = 5
    IDYES = 6
    IDNO = 7

    Was kann ich allerdings mit diesen Rückgabewerten in einer if-Abfrage vergleichen? Komme dort nicht wirklich weiter.


  • Mod

    Hallo

    in der Hilfe des BCB ist ein Beispiel
    (MessageBox -> Besipiel)

    Schau dir das mal an
    und wenn du weitere Fragen hast melde dich nochmal

    MfG
    Klaus



  • In der Hilfe des BCB ist nur ein einfaches Beispiel einer MessageBox dargestellt. Dort habe ich natürlich schon direkt am Anfang nachgeschaut.
    Mein Problem ist nicht das Erstellen der MessageBox sondern das Abfragen hinterher welcher Button (bei der MessageBox mbYesNo: Button "Yes" oder Button "No") gedrückt wurde.
    Die MessageBox erstelle ich wie folgt:

    Application->MessageBox("Möchten Sie jetzt das neue Jahr anlegen?","Bestätigung?",MB_YESNO + MB_ICONQUESTION);



  • Du musst doch nur den Rückgabewert auswerten.



  • Welche BCB-Version verwendest Du denn? In meiner Version (BCB6 Enterprise) kann man der Hilfe entnhemen, dass die Methode
    TApplication::MessageBox() einen Rückgabewert vom Typ int hat, den man mit Konstanten (IDOK, IDCANCEL usw.) abprüfen kann.
    Der Rückgabewert entspricht dem jeweils vom Benutzer gedrückten Button. Das stand allerdings auch schon so ähnlich im Beitrag
    von BigNeal.

    Gruß,

    Alexander



  • hilft dir soetwas weiter?

    if(Application->MessageBox("Would you like to play with Earth?", "Hello Earthling", MB_OKCANCEL) == IDOK)
    {...}
    


  • Klar, ich muß "nur" den Rückgabewert auswerten. Damit hapert es allerdings.
    Habe beispielsweise folgendes ausprobiert:

    if (MessageBox != IDYES)
    { ...}

    oder

    if (MessageBox != 6)
    { ...}

    Es ist wahrscheinlich falsch wie ich den Rückgabewert der MessageBox abrufen will, oder?



  • Nun stell dich doch nicht so an!

    int result = MessageBox(...);
    switch (result)
    {
      case ID_OK : mach_dies();
        break;
      case ID_CANCEL : mach_das();
        break;
      ...
    }
    


  • @BigNeal: Richtig, das hilft!
    Hab blöderweise versucht nach Erscheinen der MessageBox noch irgendwas auszuwerten, was logischerweise auch net funktioniert hat!
    Vielen Dank jedenfalls für die prompte Hilfe!!!



  • teste das mal.. und wenn es immer noch nicht klapt, sag mal genau was nicht klapt

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       if(Application->MessageBox("Wähle", "RückgabeTest", MB_YESNO) == IDYES)
          ShowMessage ("Yes");
       else
          ShowMessage ("!Yes");
    }
    

    [edit] wohl zu spät... [/edit]


Anmelden zum Antworten