22 CEdits auf Änderung checken



  • Nabend! Mal sehen ob noch jemand da ist...
    Frage: Ich habe einen Dialog mit 22 Eingabefeldern und möchte wissen, wie man bei Abbruch am einfachsten checkt, ob der User irgendwelche Eingaben gemacht hat.
    Es soll dann eine Meldung kommen "Du hast etwas geändert, willst Du wirklich...?"
    Muss ich tatsächlich 22 mal EN_CHANGE abhorchen oder kann man das irgendwie zusammenfassen?
    Oder gibt's irgendeine andere Idee?

    Danke schonmal! 🙂

    Gruß T.



  • eine Member-Funktion erstellen, z.B. OnChange. In die Message Map für jeden Control ON_EN_CHANGE Handler einfügen, als zweiten Parameter OnChange angeben oder ON_CONTROL_RANGE nehmen.



  • mit dem OnChange handler... müsste man nicht dann fuer editctrl eine machen?

    wie wärs wenn du einfach nen UpdataData(TRUE) ausrufst damit werden deine Variablen die du mit dem Edit Felder verbunden hast geladen, dann lässt du eine compare schleife laufen falss schon daten dirnstandenm bzw. falls alle leer sind prüf auf die länge, dann hast wenigstens keine 22 Methoden im Classenbaum liegen...

    .....

    T1c4L
    hoffe das hilft auch 🙂



  • Hatte es zunächst so versucht:

    BOOL CMyDlg::OnCommand(WPARAM wParam, LPARAM lParam) 
    {
    	WORD msg = HIWORD(wParam);
    	if (msg == EN_CHANGE)
    	{
    		m_bIsNewFlag = TRUE;
    	}
    	return CDialog::OnCommand(wParam, lParam);
    }
    

    Damit erwische ich aber leider wirklich alle EN_CHANGE Msg. Davon scheint es allein schon bei Programstart einige zu geben. Wenn ich jetzt wieder anfange und nach Control-ID's zu checken kann ich auch gleich über die Msg.-Map gehen.
    Genau das habe ich jetzt auch mit ON_CONTROL_RANGE gemacht.
    Danke für Eure Ideen!

    Gruß T. 🙂


Anmelden zum Antworten