![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прокрутка в TListBox
CodeMaster © (2008-12-18 10:23:00)Здраствуйте Мастера, опять у меня возникает вопрос со скроллингом компонента TListBox, проблема заключается в том что Лист не прокручивается хотя всё верно, помогите мне найти ошибку, буду благодарен. Заранее Спасибо!
var
ScrollInfo: TScrollInfo;
begin
with Scrollinfo do
begin
cbsize := SizeOf(ScrollInfo);
fmask := SIF_ALL;
GetScrollInfo(Plist.Handle, SB_VERT, ScrollInfo);
fmask := SIF_ALL;
ScrollInfo.nPos:= <Позиция скроллинга>;
SetScrollInfo(Plist.Handle, SB_VERT, ScrollInfo,True);
end;
Почему не происходит скроллинга? Хотя данные говорят другое, вот пример:
var
ScrollInfo: TScrollInfo;
i1,i2: Integer;
begin
with Scrollinfo do
begin
cbsize := SizeOf(ScrollInfo);
fmask := SIF_ALL;
GetScrollInfo(Plist.Handle, SB_VERT, ScrollInfo);
fmask := SIF_ALL;
ScrollInfo.nPos:= <Позиция скроллинга>;
i1:= ScrollInfo.nPos;
SetScrollInfo(Plist.Handle, SB_VERT, ScrollInfo,True);
i2:= ScrollInfo.nPos;
Application.Title:= IntToStr(i1) + ':' + IntToStr(i2);
//Переменные i1,i2 Всегда идентичны.. Но почему Лист не прокручивается?
end;
Leonid Troyanovsky (2008-12-18 23:26:00) [1]
> CodeMaster © (18.12.08 11:33) [4]
> Всё я нашёл лучший выход в этой ситуации,
О, ё.
--
Regards, LVT.
CodeMaster (2008-12-18 11:33:00) [2]Всё я нашёл лучший выход в этой ситуации, всем кто пытался помочь спасибо!
if ScrollInfo.nPos >= 0 then
if ScrollInfo.nPos <= ScrollInfo.nMax then
if oldScrollPos <> ScrollInfo.nPos then
if OldScrollPos > ScrollInfo.nPos then
for i:= 1 To OldScrollPos - ScrollInfo.nPos do
Sendmessage(POGiPlayList.Plist.Handle, wm_vscroll, sb_lineup, 0)
else
for i:= 1 To ScrollInfo.nPos - OldScrollPos do
Sendmessage(POGiPlayList.Plist.Handle, wm_vscroll, SB_LINEDOWN, 0);
CodeMaster (2008-12-18 11:00:00) [3]
> CodeMaster © (18.12.08 10:59) [2]
>
> Да но ведь SB_LINEDOWN Опустит в самый конец, или SB_LINEUP
> подымет в самый верх списка. Есть ли способ чтобы можно
> было задать позицию?
Это только в циклическом случае, У МЕНЯ как раз такой
CodeMaster (2008-12-18 10:59:00) [4]Да но ведь SB_LINEDOWN Опустит в самый конец, или SB_LINEUP подымет в самый верх списка. Есть ли способ чтобы можно было задать позицию?
KilkennyCat (2008-12-18 10:45:00) [5]А разве SetScrollInfo должна прокручивать? Я думаю, это лишь задание параметров скроллбара, а крутить надо мессаджем (листбокс.нandle, wm_vscroll, sb_linedown (up), 0)