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

Вниз

Timer vs ListBox   Найти похожие ветки 

 
Sha ©   (2013-01-21 16:34) [40]

> aka   (21.01.13 16:29) [38]

Во-первых, сделать.
Во-вторых, есть другое окно.
В третьих, фокус внимания пользователя не может быть одновременно на всем: и на ползунке, и на спектре, и на списке. Решите, с чем он работает, все остальное не важно.


 
aka   (2013-01-21 16:35) [41]


> QAZ10   (21.01.13 11:58) [9]
>
>
> >  Как можно обойти этот не желательный эффект?
>
> отключить в винде "плавную прокрутку списков"
> либо не использовать соотв. компоненты


Ну читали, и что?

1) Отключить программно или вручную.
и то и другое это большие в сто раз ивращение чем моя замена на ScrollBox & PaintBox.

2) Ну и чем же заменить?


 
aka   (2013-01-21 16:37) [42]


>  Sha ©   (21.01.13 16:34) [40]

Это переливание из пустого в порожнее, давайте больше не развивать эту тему.


 
QAZ10   (2013-01-21 16:56) [43]


> Ну и чем же заменить?

listview


 
Наталья   (2013-01-21 18:43) [44]


> listview

Вообще не подходит,


 
QAZ10   (2013-01-21 19:31) [45]

странно :)
99% плейлистов на нем и сделаны


 
aka   (2013-01-21 19:33) [46]


> AZ10   (21.01.13 19:31) [45]
>
> странно :)
> 99% плейлистов на нем и сделаны


Это кто вам такую информацию слил?
а 1% на чем?


 
знайка   (2013-01-21 20:15) [47]


> а 1% на чем?
ScrollBox & PaintBox


 
NoUser   (2013-01-22 04:12) [48]

procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
ListBox1.ItemIndex:= ListBox1.ItemIndex+1;
Handled:=True;
end;

procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
if ListBox1.ItemIndex>0 then
 ListBox1.ItemIndex:=ListBox1.ItemIndex-1;
Handled:=True;
end;



> QAZ10   (21.01.13 11:58) [9]
>

+1


 
brother ©   (2013-01-22 06:17) [49]

[48] не получится так...


 
sniknik ©   (2013-01-22 10:12) [50]

> проблемму подтверждаю, но мне кажется пока идет такой скролл вешается все окно...
сравните с автором установленные в дельфю доп.компоненты... у меня пример (Наталья   (21.01.13 14:49) [19])  ничего не вешает. дельфя (D7) "чистая".


 
sniknik ©   (2013-01-22 10:13) [51]

+
может еще от операционки зависит... все таки события из нее - XP, без схем(классика).


 
sniknik ©   (2013-01-22 10:22) [52]

и кстати проверь, если еще не проверил, вот такой глупый вариант -
type
 TListBox = class(StdCtrls.TListBox)
 protected
   procedure WMMouseWheel(var Msg: TWMMouseWheel); message WM_MOUSEWHEEL;
 end;

 TForm1 = class(TForm)
 ....
 ....

procedure TListBox.WMMouseWheel(var Msg: TWMMouseWheel);
begin
 inherited;
 Application.ProcessMessages;
end;


 
sniknik ©   (2013-01-22 10:33) [53]

хотя нет, все не то (все что выше написал фигня)
ответ тут (словил ситуацию включением, события "кончились")
QAZ10   (21.01.13 11:58) [9]

+ таймер можно заменить на поток.


 
brother ©   (2013-01-22 10:39) [54]

> + таймер можно заменить на поток.

можно конечно, но имхо, при синхронизации с основным потоком приложения (для рефреша например лэйблов), будем также висеть тк, имхо, основной поток в этот момент жестко висит...


 
clickmaker ©   (2013-01-22 10:50) [55]

поток + SendMessage + RedrawWindow(PaintBox.Handle,nil,0,RDW_INVALIDATE or RDW_UPDATENOW)


 
brother ©   (2013-01-22 10:53) [56]

[54] ща проверил, так и получается - висит...


 
brother ©   (2013-01-22 11:07) [57]

[55] проверил - висит...


 
brother ©   (2013-01-22 11:11) [58]

все, я умываю руки, Натальи удачи и прислушайтесь к [9]


 
O'ShinW ©   (2013-01-22 12:39) [59]

блин, ну нет у меня такой проблемы :)
не воспроизводится.

w7, оформление классика, спецэффекты / аеро ( / гидро / космо:) ) - все в 0 / выключено.


 
sniknik ©   (2013-01-22 12:46) [60]

> все в 0 / выключено.
> ответ тут (словил ситуацию включением, события "кончились")


 
QAZ10   (2013-01-22 12:57) [61]


> O"ShinW ©   (22.01.13 12:39) [59]

дело не в том, что у тебя выключено, а в том, что у всех по умолчанию включено


 
O'ShinW ©   (2013-01-22 13:29) [62]


> словил ситуацию включением


> у всех по умолчанию включено

да понял-понял
написал почему не воспроизвелось тогда


 
aka   (2013-01-22 14:34) [63]

Дело в том, что ListView или другие аналогичные компоненты, которые не вещают вывод все используют
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;

А вот как крутит скролл ListBox нужно смотреть, но точно не так.


 
QAZ10   (2013-01-22 17:46) [64]


> aka   (22.01.13 14:34) [63]

все проще на самом деле, под списком (в руском переводе) в винде подразумеваются 2 элемента - листбокс и комбобокс
и опция плавности их прокрутки это чисто мультик, когда создается битмап и попиксельно сдвигается


 
NoUser   (2013-01-22 19:45) [65]


> brother ©   (22.01.13 06:17) [49]
> [48] не получится так...

Спецом проверил (даж гадкую прокрутку включил) - проблема была, после такого "решения" - не проявлялась.
W7, XE2.


 
brother ©   (2013-01-22 20:13) [66]

w7x64 d7 проблемма остается...


 
aka   (2013-01-23 12:53) [67]

Ну а если таймер в отдельном потоке запустить или так не получится?


 
brother ©   (2013-01-23 13:06) [68]

ты не читатель? уже более худшие варианты испробовали...


 
aka   (2013-01-23 13:34) [69]


> aka   (23.01.13 12:53) [67]
>
> Ну а если таймер в отдельном потоке запустить или так не
> получится?


Нет - не работает. Попробовал создать таймер в отдельном потоке, а эффект остался прежний.



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

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

Наверх




Память: 0.6 MB
Время: 0.011 c
15-1367675679
картман
2013-05-04 17:54
2013.10.13
SetWindowText


15-1367570888
Антоха
2013-05-03 12:48
2013.10.13
Запуск java-приложения Нокиа на андроид


15-1367652485
Дмитрий С
2013-05-04 11:28
2013.10.13
Запуск от имени администратора моей программы.


11-1248262717
tcler
2009-07-22 15:38
2013.10.13
tinifile и windows 7


15-1365767063
sniknik
2013-04-12 15:44
2013.10.13
Версия borlndmm.dll ...