Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.01;
Скачать: CL | DM;

Вниз

Прокрутка в TListBox   Найти похожие ветки 

 
CodeMaster ©   (2008-12-18 10:23) [0]

Здраствуйте Мастера, опять у меня возникает вопрос со скроллингом компонента 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;


 
KilkennyCat ©   (2008-12-18 10:45) [1]

А разве SetScrollInfo должна прокручивать? Я думаю, это лишь задание параметров скроллбара, а крутить надо  мессаджем (листбокс.нandle, wm_vscroll, sb_linedown (up), 0)


 
CodeMaster ©   (2008-12-18 10:59) [2]

Да но ведь SB_LINEDOWN Опустит в самый конец, или SB_LINEUP подымет в самый верх списка. Есть ли способ чтобы можно было задать позицию?


 
CodeMaster ©   (2008-12-18 11:00) [3]


> CodeMaster ©   (18.12.08 10:59) [2]
>
> Да но ведь SB_LINEDOWN Опустит в самый конец, или SB_LINEUP
> подымет в самый верх списка. Есть ли способ чтобы можно
> было задать позицию?

Это только в циклическом случае, У МЕНЯ как раз такой


 
CodeMaster ©   (2008-12-18 11:33) [4]

Всё я нашёл лучший выход в этой ситуации, всем кто пытался помочь спасибо!
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);


 
Leonid Troyanovsky ©   (2008-12-18 23:26) [5]


> CodeMaster ©   (18.12.08 11:33) [4]

> Всё я нашёл лучший выход в этой ситуации,

О, ё.

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2009.02.01;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
15-1228503636
Lamer6666
2008-12-05 22:00
2009.02.01
Delphi + Oracle


2-1229500831
Дмитрий
2008-12-17 11:00
2009.02.01
Hide Form Icon


9-1168524677
Samarik
2007-01-11 17:11
2009.02.01
Skin ы для 3D моделей


6-1197880578
brother
2007-12-17 11:36
2009.02.01
TIdPOP3 просмотр содержимого в разных кодировках...


2-1229789252
self
2008-12-20 19:07
2009.02.01
ticqclient в dll