Edit reagiert komisch, brauche Ansatz zur Fehlersuche



  • Moin!

    Ich habe einen richtig doofen Fehler: Ich habe in einem Formview ein Edit wo eine Adresse drin steht die aus der Datenbank kommt. Und eine Combobox wo ich zwischen Kunde und Krankenkasse wählen kann.

    Wähle ich Krankenkasse, kann ich im Edit Text eingeben und löschen. Also ganz normal, so wie ich das von einem Edit erwarte.
    Wähle ich Kunde, kann ich nur löschen. Text, Zahlen, Sonderzeichen... nix taucht auf. Wenn ich im Wutanfall auf die Tasten einhämmere flimmert es ein wenig. 😕
    Pfeiltasten funktionieren, Enter nicht, Leertaste auch nicht...

    PreTranslateMessage habe ich schon als Fehlerquelle ausgeschlossen, da der Fehler auch auftritt, wenn ich die komplett auskommentiert habe.

    Breakpoints sind an JEDER Stelle im Code wo "Adresse" steht gesetzt - keiner reagiert. 😕

    Wie kann ich nun suchen? Ich hoffe auf ein paar Ideen.

    PS: Da das Edit eine eigene Klasse von mir ist, habe ich eben nochmal ein normales CEdit daraus gemacht... hat auch nichts verändert. 😞


  • Mod

    Wird ein extra Subclass auf das Edit Control ausgeführt?



  • Martin Richter schrieb:

    Wird ein extra Subclass auf das Edit Control ausgeführt?

    Also, ich habe eine eigene Controlklasse, aber subclass mache ich nicht. Durch das OnChange habe ich mich auch schon durchgebugged.

    BOOL CAdEdit::OnChange() 
    {
    	if (!m_strErlaubt.IsEmpty())
    	{
    		// Tu was, wo er in dem Fall eh nicht lang kommt...
    		return TRUE;
    	}
    
    	return FALSE;
    }
    

    Die anderen Edits der gleichen Klasse in dem View zeigen die Macke nicht - da wäre es viel früher aufgefallen.


  • Mod

    Kommen im Spy++ Alle Nachrichten für dieses Control an?



  • Ui, jetzt hast du mich aber auf dem falschen Fuß erwischt... mit Spy++ habe ich noch extrem wenig Erfahrung.

    Also, wenn ich eine Taste drücke kommen zig Nachrichten durch, u.a. eine WM_KEYDOWN und eine WM_CHAR. Ich hab das mal als Bild hochgeladen, da ich leider nichts aus dem Fenster rauskopieren konnte: http://i40.tinypic.com/1zuv8.jpg

    Was muss ich da nun sehen oder was sehe ich da nicht? 😕


  • Mod

    Da kommt ein 'i' in dem Fenster per WM_CHAR an.

    Was passiert da in Deinem Code?



  • Genau, i hatte ich gedrückt - es wird aber nicht angezeigt.

    Ich suche ja nun, was da im Code passiert. Die PreTranslateMessage war mein erster Verdächtiger, ist aber unschuldig da der Fehler auch auftritt, wenn es auskommentiert ist.

    Mittlerweile wird das alles verwirrender. Ich habe mit mehreren Leuten telefoniert und bei dem einen ist es so wie ich oben geschrieben hatte und bei einer anderen kann die bei Kunde und bei Krankenkasse was eingeben. Es sind aber exakt gleiche Versionen, ich habe die alle mit der selben Setup.exe installieren lassen. 😕



  • Bei solch komischen Fehler verdächtige ich immer als erstes die automatische ID-Vergabe... Ist die ID evtl. mehrfach vorhanden?



  • isabeau schrieb:

    Bei solch komischen Fehler verdächtige ich immer als erstes die automatische ID-Vergabe... Ist die ID evtl. mehrfach vorhanden?

    Ja, ist sie. Aber nicht innerhalb des View.
    Da sind zig IDs mehrfach vergeben. Muss ich die jetzt alle anpassen oder geht das automatisch oder ist das gar nicht schlimm solange die nie gleichzeitig auf dem Bildschirm sind? 😕



  • Das war nur ein Beitrag zum Thema "Ich hoffe auf ein paar Ideen." 😃

    Ich habe öfters Probleme, wenn Dialog-IDs im Projekt (vor allem in den ganzen verschiedenen DLLs) doppelt vorkommen, trotz Einbau von AFX_MANAGE_STATE oder CExtDllState...

    Mit doppelten Edit-IDs hatte ich so auch noch keine Probleme, wäre nur eine Idee gewesen, dass er eben in bestimmten Fällen vielleicht ein falsches Edit mit gleicher ID benutzt und dass daher so ein komisches Verhalten auftritt...

    Oder dass die Steuerelemente irgendwo (vielleicht durch ein Kopierfehler) in der MessageMap irgendwie durcheinandergewürfelt verknüpft sind. In der Richtung würde ich zuerst suchen, wie da der eine irgendeinen anderen beeinflusst.


Anmelden zum Antworten