trotz ModalResult = mrOK in der Funktion abbrechen können



  • Ich habe einen Button mit der Eigenschaft ModalResult = mrOK. Aber wenn ich zum beispiel etwas im Dialog falsch eingegeben habe, soll eine Fehlermeldung kommen, was auch geschieht. Doch leider schließt sich der Dialog trotzdem, wahrscheinlich wegen obiger Einstellung. Muss ich an der Stelle, wo er die Funktion quasi fallen lassen soll und einfach im Dialog bleiben soll, nen break; oder so was an die Stelle schreiben?



  • Naja, ModalResult ist ja auch dazu da eine Schaltfläche mit dem Schliessen des Formulares zu verbinden.

    Wenn Du nun auf eine Fehleingabe reagieren willst und den Dialog nicht schliessen willst, dann füge der Klasse des Formulares noch eine boolsche Variable hinzu die Du beim Aufruf auf true setzt.

    Wenn die Eingabe nun falsch ist, setzt Du die Variable auf false.

    Im OnClose-Ereignis des Formulares prüfst Du nun wie die Variable gesetzt ist und verhinderst das Schliessen des Formulares.

    [cpp]
    // CloseAble ist die Variable vom Typ **bool
    **void __fastcall TForm1::FormClose(TObject *Sender)
    {
    Action = CloseAble ? caNone : caHide;
    }[/cpp]



  • Ich würde das anders machen: das ModalResult des Buttons wieder auf mrNone setzen und bei Klick auf den Button abfragen, ob die Eingabe OK war:

    if(EingabeOK)
       ModalResult = mrOK;
    

Anmelden zum Antworten