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
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
Mały błąd:
ScrollBy(1,2);
ale to mi przesuwa komponent a nie skollbar
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) ?
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ąć?
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.
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źć :>
Mi coś ten link nie działa :/
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.gifAby 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świerzonyUstawienie 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