Текущий архив: 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