Re: "überscrollen" von Listbox verhindern
24.09.2002 05:41:51
Axel
Hallo Stephan,mit diesem Problem habe ich mich in einem meiner letzten Projekte auch schon einige Zeit beschäftigt. Eine entsprechende Eigenschaft, mit der das Verhalten beeinflusst werden kann, gibt es offensichtlich nicht.
Auch im Internet habe ich keinerlei Infos hierzu gefunden.
Es gibt aber trotzdem Möglichkeiten, das implizite Wechseln des Steuerelementes zu vermeiden. Es betrifft übrigens nicht nur die Combobox sondern auch das Textfeld.
Auffällig ist, dass die Positionierung der Elemente eine entscheidende Rolle spielt. Eine Combobox wird z.B. beim letzten Eintrag und Betätigen der KeyDown-Taste nur dann verlassen, wenn ein weiteres fokussierbares Steuerelement unterhalb angelegt ist, d.h. dessen Top-Position größer oder gleich der Summe von Top + Height der Combobox ist. Gleiches gilt natürlich für das Verlassen der Box nach oben.
Um den Fokus in der Combobox zu belassen, kannst Du folgenden Code im Klassenmodul der Userform verwenden:
Hier werden einfach die KeyUp-Taste am Anfang und die KeyDown-Taste am Ende der Liste abgefangen.
Alternativ kann ein weiteres Dummy-Steuerelement einfach oberhalb bzw. unterhalb der entsprechenden Listbox/Textfeld platziert werden. Bei diesem Element müssen dann zwingend die Eigenschaften Visible auf True und TabStop auf False eingestellt sein. Über die notwendige Positionierung habe ich mich bereits weiter oben geäußert.
Damit dieses Dummy-Element nicht sichtbar ist, können Width + Height auf 0 gestellt werden, das Caption-Feld ist natürlich unnötig und sollte leer bleiben. Prinzipiell kann ein beliebiges Steuerelement als Dummy herhalten, es bietet sich aber die Verwendung einer Textbox an.
Das Dummy-Element ist auf der Userform in der Entwicklungsumgebung schlecht zu lokalisieren. Es kann aber einfach über das Auswahlfenster im oberen Bereich des eingeblendeten Eigenschaft-Fensters selektiert werden.
Gruß
Axel