Button freigeben, aber wie und wo?



  • Gruß @ALL

    Ich habe ziemlich viele Eingabefelder auf meinem Dialog. In die Felder kann der Benutzer später eingeben.
    Unten habe ich den Button "Datensatz hinzufügen" der dann die Dinge aus den Eingabefeldern in die Datenbank zurückschreibt.

    Den Button habe ich im InitDialog gesperrt:

    GetDlgItem(ID_RECORD_ADD)->EnableWindow(FALSE);
    

    Ich versuche gerade eine Funktion zu basteln, die mir den Button solange gesperrt hält bis die Felder ( bis auf wenige Ausnahmen ) alle korrekt ausgefüllt sind.

    Es treibt mich in den Wahnsinn, denn den Button kann ich ja nicht erst in der Funktion OnRecordAdd() wieder freigeben. Das muss ja vorher schon passieren, weil ich ja nicht erst Button klicke kann um ihn dann freizugeben.

    ( Das ist wie ein Brillenträger der seine Brille verloren hat und sie erst suchen kann wenn er sie gefunden hat weil er vorher nichts sieht, falls ihr versteht was ich meine! )

    Der Button soll also in dem Moment freigegeben werden wenn alle Felder ausgefüllt sind. Wie mache ich das?? Ich blicks einfach nich...

    Vielen Dank für Codebeispiele
    MfG
    RunSeb



  • RunSeb schrieb:

    Gruß @ALL

    Ich versuche gerade eine Funktion zu basteln, die mir den Button solange gesperrt hält bis die Felder ( bis auf wenige Ausnahmen ) alle korrekt ausgefüllt sind.

    RunSeb

    ok ich glaube die frage kam schonmal in den latzen 1-2 wochen

    also -> suchen

    das was du machen willst ist schwer denn du sagst ja selbst KORREKT ausgefuelt sind!

    d.h. du musst einen timer generieren der schaut ( nach ablauf zeit x ) ob sich in den felder was veraendert hat ( sprich feld nicht leer ) und dann einen algorithmus ausfuellt der ueberprueft ob korrekt ausgefuelt ist. wenn alle ausgefuelt sind dann wird button wiederfreigegeben

    ungefaher so in der richtung

    du kannst aber auch ( wenn nicht korrekt sein soll ) das so machen das du ein event ausloesen tust wenn feld reingeschrieben wird. wenn alle events erfuellt sind dann wird button freigegeben. dann kann er draufklicken und du tust ( vor der verarbeitung ) die funktion

    check_ob_korrekt_die_felder()

    ausfuehren, wenn ja dann wird weitergemacht, wenn nein werden die felder geloescht 😉 😉 😉 viel spass damit hehe



  • na na na

    das heisst JA DU gefragt das letzte mal! 💡 😮 💡 ➡ ⚠

    http://www.c-plusplus.net/forum/viewtopic.php?t=72604&highlight=button

    warum postet da nicht deine frage nochma rein??? sondern machst neuen thread auf fuer das gleiche prob?

    warum gehtst du auf die vorschleage von mir nicht ein? und versuchst es wenigstens oder hinterfragst nochmal?

    fragen ueber fragen



  • Guck dir mal EN_CHANGE (Editfelder) oder auch WM_KILLFOCUS an. Für jedes Control gibt es eine andere Nachricht, wenn sich was ändert. Bei der Combobox ist es was mit SelChange. Diese Nachrichten kannst du mit der Lösung meines Vorposters kombinieren.



  • Jo klar, ich hab den schon gefunden. Aber die erste Lösung von damals funzt zwar super...:

    void CKundenInfo::OnRecordAdd() 
    {	
       	UpdateData(TRUE);
    
         if ( m_Kdnr.IsEmpty() || m_Unternehmen.IsEmpty() || m_Kontaktperson.IsEmpty() 
             || KdNrCheck() || ZahlenCheckKdnr() || ZahlenCheckPLZ() 
             || ZahlenCheckTelefon() )
         {
    	AfxMessageBox("Bla Bla blab");
         }
    	 else
         {
    	 m_gw_kunde.Sheet(0).AddRow(1,1);
    	 m_gw_kunde.Sheet(0).Cell(k+1,1).SetCellText(m_Kdnr);
    	 m_gw_kunde.Sheet(0).Cell(k+1,2).SetCellText(m_Unternehmen);
    	 m_gw_kunde.Sheet(0).Cell(k+1,3).SetCellText(m_Kontaktperson);
    	 m_gw_kunde.Sheet(0).Cell(k+1,4).SetCellText(m_Strasse);
    	 m_gw_kunde.Sheet(0).Cell(k+1,5).SetCellText(m_Plz);
    	 m_gw_kunde.Sheet(0).Cell(k+1,6).SetCellText(m_Ort);
    	 m_gw_kunde.Sheet(0).Cell(k+1,7).SetCellText(m_Telefon);
    	 m_gw_kunde.Sheet(0).Cell(k+1,8).SetCellText(m_Bemerkung);
    	 k++;
    	 SetModified(TRUE);
         }
    }
    

    ...aber mein Chef will das halt so das der Button erst frei ist wenn alles korrekt ist!! ( Scheinbar kein Freund von AfxMessageBox ... )

    Mit welcher Methode kann ich denn checken ob ins Feld geschrieben wurde bzw. irgendwas geändert wurde?

    MfG



  • estartu_de schrieb:

    Guck dir mal EN_CHANGE [...] an


Anmelden zum Antworten