przesuwanie poziomego scrollbara w ListBox

0

Witam jak przesunąć programowo w komponęcie ListBox ScrollBar poziomy bo jak item się nie mieści to nie idzie go przesunąć, a w OI nie widze takiej opcji do wlaczenia

0

procedure ScrollBy(DeltaX, DeltaY: Integer); override;

gdzie DeltaX - ilość pikseli poziomo,

DeltaY - ilość pikseli pionowo,

ScroolBy(-1,0) - przesunie o piksel w prawo,
ScroolBy(1,0) - w lewo

0

Mały błąd:

ScrollBy(1,2);

ale to mi przesuwa komponent a nie skollbar

0

Np. ListBox1.ScrollBy(10,20);

jak dasz samo ScrollBy to Ci przesunie scrOLLa na formatce a przecież chodzi o liste... U mnie wszystko działa. A czemu ScrollBy(1,2) ?

0
voodoo46 napisał(a)

A czemu ScrollBy(1,2) ?

Bo tym wcześniej napisałeś: ScroolBy.

A dało by się tak zrobić, że jak już item dojdzie do końca to już się nie da więcej przesunąć?

0

Spróbuj tak:

var
max:integer;

max:=ListBox.Canvas.TextWidth(ListBox.Items[MaxL])-ListBox.Width;
ListBox.scrollby(-max,0);

gdzie: MaxL to najdłuższy Item.
U mnie się lista czasem zamazuje i niestety nie wiem czego to przyczyna.

0

yyy, zapoznaj się z http://forum.ks-ekspert.pl/index.php?showtopic=31209&st=60&p=373260&#entry373260

To mój post - wydaje mi się, że na 4p też powinien być, ale jakoś nie mogę znaleźć :>

0

Mi coś ten link nie działa :/

0
PcSA napisał(a)

Jak sprawdzić pozycję scrollbar'ow np. w RichEdit i jak ją ustawić

Odczyt:
Aby odczytaj musimy posłużyć się funkcją GetScrollPos, w której musimy podać uchwyt, a także suwak, o który nam chodzi smile.gif

Aby odczytać pozycję z paska poziomego musimy:
KOD
GetScrollPos(RichEdit1.Handle, SB_HORZ)

Natomiast aby odczytać pozycję z paska pionowego musimy:
KOD
GetScrollPos(RichEdit1.Handle, SB_VERT)

Wartości zwracane przez funkcje to Integer wink2.gif

Ustawienie pozycji:
Do ustawienia użyjemy bardzo podobnej z nazwy procedurey, która się zwie SetScrollPos. W tej procedurze musimy podać uchwyt kontrolki, w której chcemy zmienić pozycję, musiszmy podać, o który pasek przewijania nam chodzi, a także wartość przesunięcia na daną pozycję oraz to czy scroll ma zostać odświerzony

Ustawienie pozycji w pasku poziomym
KOD
SetScrollPos(RichEdit1.Handle, SB_HORZ, 10, True);

Ustawienie pozycji w pasku pionowym jest prawie identyczny jak dla paska poziomego. Różni się tylko wartością drugiego parametru, czyli SB_HORZ zamieniamy na SB_VERT smile.gif

1 użytkowników online, w tym zalogowanych: 0, gości: 1