ich melde mich noch einmal mit dem Problem, daß ich meine, daß bei einer Combobox, wenn der Anwender in das Textfeld einen neuen Wert einträgt anstatt einen vorhandenen auszuwählen, beim tippen jedes einzelnen Buchstabens 1x das Change-Ereignis ausgelöst wird.
War damit letzte Woche schon einmal zu Gange und bin dann mit Hilfe eines netten Ratschlages
hier so verblieben, das Problem zu umgehen:
Im Enter-Ereignis: alten Wert merken
Im Exit-Ereinis: prüfen ob Wert geändert wurde
hat den Vorteil, daß die Prüfung erst nach Abschluß der Feldeingabe erfolgt.
So ganz sauber programmiert erscheint mir das allerdings nicht.
Mein Verfahren der Umgehung hat außerdem einen gravierenden Nachteil:
Ich habe mehrere Comboboxen, deren Auswahlmöglichkeiten von einander abhängig sind.
Mit Change gab es den Vorteil, daß sowohl beim 1. Füllen im Init-Ereignis ein change ausgelöst wurde, als auch durch Änderung der auswahl durch den Anwender. So habe ich dann in cboBox1_Change das Füllen der abhängigen cboBox2 vorgenommen, wodurch dann auch ein Change für cboBox2 ausgelöst wurde, in welchem ich dann cboBox3 initialisiert habe.
Die Füllwerte der Komboboxen entstammen aus einer Datentabelle - wenn nun der Anwender nicht
auswählt, sondern einen ganz neuen Wert in das Textfeld eingibt, wird außer der Verarbeitung der Werte,
auch aus den Werten ein neuer Datensatz in die Tabelle geschrieben.
Danach muß ich dann die ganzen abhängigen Comboboxen wieder neu mit Auswahlwerten füllen, damit die Werte des neu hinzugekommene Datensatz auch sicher mit zur Verfügung stehen.
Durch die mehrstufige Abhängigkeit der Werte, die zur Auswahl stehen von Auswahlen in anderen Comboboxen, ist die Programmierung mit Exit-Ereignis aufwändiger - also es nicht nur mit einem
Unterprogramm "FuelleAbhaengigeFelder" getan ist. Das Problem liegt darin, daß ein Change-Ereignis
auch ausgelöst wird, wenn per Programm ein Feldinhalt geändert wird (durch neufüllen einer
Combobox z.B.) - Exit wird halt nur beim Verlassen des jeweiligen Feldes ausgelöst z.B.cbo1, dann kann ich zwar feststellen, ob dieses Feld speziell geändert wurde und ev. direkt abhängige Felder cbo2 mit ändern, aber was mache ich mit cbo3 welche von cbo2 abhängt?
was mache ich mit den Feldern, die wiederum von
Professioneller erschiene mir die Verwendung des Change Ereignisses. Allerding wie oft will ich das aufrufen, und darin dann Abfangen, z.B. mit .ListIndex = -1 dass kein Wert ausgewählt wurde.
M e i n e F r a g e:
Kennt ihr diesen Effekt, daß Change nach jedem Buchstaben ausgelöst wird?
Kann man ihn vermeiden? - Habe ich vielleicht irgendeinen Schalter übersehen, der festlegt daß change erst ausgelöst wird, wenn die eingabe in das Feld endgültig abgeschlossen ist?
Danke
Monika