Seite 1 von 1

Problem mit Listbox SetItem

Verfasst: Mittwoch 1. Dezember 2004, 12:05
von Montecore
Hallo allerseits,

mein Tab-Order Problem habe ich erstmal hintenangestellt, aber ich bin mittlerweile auf das nächste Problem gestoßen das mir kummer macht, vielleicht hat hier jemand eine Lösung?

Ich habe eine Listbox mit diversen Namen. Sagen wir mal 200 Namen. Die Listbox zeigt 25 davon auf einmal an. So weit so gut. Nun möchte ich per SetItem(x) die Markierung der Listbox auf einen ganz bestimmten Namen setzen der zum Index X paßt. Auch das funktioniert. Allerdings habe ich nun das Problem, das ich es gerne so hätte, dass die Zeilen der Listbox so gescrollt werden, dass die markierte Zeile in die Mitte der Listbox, sprich in Zeile 12 oder 13 erscheint. Leider ist es nämlich so, das die markierte Zeile die letzte Spalte der Listbox ist und ich die Nachfolgenden nicht mehr sehen kann.

Es wöre echt klasse, wenn mir einer von Euch hierbei ein wenig die Richtung weisen könnte?

Danke schon mal und Gruß,
Montecore

Re: Problem mit Listbox SetItem

Verfasst: Mittwoch 1. Dezember 2004, 16:18
von Gast
Montecore hat geschrieben:Hallo allerseits,

mein Tab-Order Problem habe ich erstmal hintenangestellt, aber ich bin mittlerweile auf das nächste Problem gestoßen das mir kummer macht, vielleicht hat hier jemand eine Lösung?

Ich habe eine Listbox mit diversen Namen. Sagen wir mal 200 Namen. Die Listbox zeigt 25 davon auf einmal an. So weit so gut. Nun möchte ich per SetItem(x) die Markierung der Listbox auf einen ganz bestimmten Namen setzen der zum Index X paßt. Auch das funktioniert. Allerdings habe ich nun das Problem, das ich es gerne so hätte, dass die Zeilen der Listbox so gescrollt werden, dass die markierte Zeile in die Mitte der Listbox, sprich in Zeile 12 oder 13 erscheint. Leider ist es nämlich so, das die markierte Zeile die letzte Spalte der Listbox ist und ich die Nachfolgenden nicht mehr sehen kann.

Es wöre echt klasse, wenn mir einer von Euch hierbei ein wenig die Richtung weisen könnte?

Danke schon mal und Gruß,
Montecore
Also eingebaute Funktion gibt es dazu nicht.
Es gibt aber in der ListBox die Funktion SetFirstItem(x).
ist x 10, dann ist der erste sichtbare Eintrag der 10. in der Liste.

Du könntest dann diesen Wert berechnen.
Mit GetClientSize kannst du die Höhe der Listsbox durch GetCharHeight()
dividieren, so kommst du (ungefähr) auf die Anzahl der Elemente,
die im sichbaren Bereich liegen,
Nun kannst du auch x berechnen, und SetFirstItem entsprechend aufrufen,
dann noch die Funktion SetSelection().

BTW: SetItem gibt es aber nur für ListCtrl, aber nicht für ListBox.

Verfasst: Donnerstag 2. Dezember 2004, 09:39
von Montecore
Achje ich bin doof da habe ich in die falsche Zeile geschaut ich meinte natürlich ein SetSelection(x) sorry für die Verwirrung die ich gestifttet habe.
Aber das mit dem SetFirstItem ist eine gute Idee vielen Dank für den Hinweis, werde ich nachher gleich mal ausprobieren. Habe schon geguckt das gibt es zum Glück auch für die ListBox. :)

Danke und Gruß,
Montecore...