Apllication->MessageBox



  • Hallo,
    Wieso schliesst sich die MessageBox nicht??? - Wenn ich auch Nein drücke passiert nix! - Wenn ich JA drücke schliesst sich das Programm problemlos
    nur wenn ich es nicht schliessen will dann net warum ???

    void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
    {
    int Knopf;
    
    Knopf = Application->MessageBox ("Möchten Sie das Programm wirklich beenden ?", "", 4 + 32);
    
    if (Knopf != IDYES)
    Close();
    
    }
    

    Ich weiss nicht wie ich den Code sonst schreiben soll....

    MFG
    TM



  • Hi

    ich habe das so gemacht bei nein passiert nix bei ja schliesst sich das Programm hoffe dir damit geholfen zu haben 🙂

    {
    int wert;
    wert = Application->MessageBoxA("Möchten Sie das Programm wirklich beenden?","Achtung",4+64);
    if (wert ==6)
    Close();
    }

    bye malcolm199



  • Hallo,
    danke für die schnelle Antwort, aber das Problem besteht weiterhin wenn ich auf "nein" drücke passiert überhaupt nichts... - Ich kann noch nicht einmal ins programm zurück kehren!

    Wie könnte ich den Code schreiben, dass bei "Nein" die MessageBox sich schliesst und man ins Programm zurück kommt...

    MFG



  • Hallo TM,
    es ist nicht so, daß sich deine MessageBox nicht schließen läßt.
    Dein Code sieht so aus, daß du die MessageBox in der OnClose Funktion deiner Funktion entstehen läßt.
    Wird irgendetwas anderes gedrückt als was IDYES liefert, so gibst du den Befehl Close(), was wiederum dein OnClose Ereignis auslöst, so daß die MessageBox ein weiteres mal erscheint. So eine Art Endlosschleife.
    Nutze einfach das OnCloseQuery Ereignis und CanClose, dann hast du den gewünschten Effekt.

    void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
    {
    int Knopf;
    
    Knopf = Application->MessageBox ("Möchten Sie das Programm wirklich beenden ?", "", 4 + 32);
    
    if (Knopf != IDYES)
    CanClose = false;
    }
    


  • Hallo,
    danke für die schnelle Hilfe! Wenn ich jetzt mein Programm (Name: Aggressator)
    compilieren will kommt folgende Meldung:

    [Linker Fehler] Unresolved external '__fastcall TForm1::FormClose(System::TObject *, Forms::TCloseAction&)' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\TIM MACK\DESKTOP\DEVELOPMENTS\PRIVAT\AGGRESSATOR.OBJ

    MFG
    TM



  • Was soll eigentlich die ganze Zeit das 4 + 32 oder 4 + 64? Es gibt doch wunderbare Konstanten in der Art:
    MB_YESNO oder MB_ICONQUESTION usw.



  • Unresolved external '__fastcall TForm1::FormClose(System::TObject *, Forms::TCloseAction&)' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\TIM MACK\DESKTOP\DEVELOPMENTS\PRIVAT\AGGRESSATOR.OBJ

    Kann es sein, daß Du die Methode con Hand gelöscht hast, nicht jedoch in der .h?



  • Hallo,

    danke für die Hilfe hat alles geklappt...
    Ja, ich hab vergessen die Methode aus der .h zu löschen (FormClose).

    MFG



  • Das mit dem Löschen einer Methode geht im Builder eigentlich ziemlich elegant: Einfach den gesamten Code innerhalb der Methode löschen und nur das Gerüst stehenlassen. Beim nächsten Kompilieren ist die Methode dann verschwunden.


Anmelden zum Antworten