Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прокрутка в 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)


Наверх

Титульная страница Поиск, карта сайта Написать письмо