Форум: "Основная";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
ВнизСкроллер Найти похожие ветки
← →
REA (2003-01-30 14:23) [0]У моего компонента есть скроллер и когда за него тянешь он движется рывками (ну так слегка), поскольку отрисовка съедает время. Нельзя ли придумать механизм, который бы пропускал часть действий при быстром движении мыши и рисовал все при остановке? Никто подобного не делал? Наверно можно таймер прицепить или еще что-то попроще.
← →
Cancel (2003-01-30 14:50) [1]var
t: Integer
При событии WM_MouseMove
- запоминать в переменной t:= GetTickCount;
При событии WM_MouseLast и при инициализации;
- t:= 0;
При прорисовке -
if (GetTickCount - t > 500) then
begin
Рисовать;
end;
По моему что-то такое должно быть
← →
REA (2003-01-30 15:18) [2]Нет там MouseMove - есть сообщения от скроллера. И поступают они не так как WM_MouseMove. А что если в приведенном коде (GetTickCount - t > 500) не наступит? Надо тогда еще последнее событие отслеживать. И при остановке сообщения не поступают. Вобщем другой нужен алгоритм.
← →
Максимилиано (2003-01-30 15:48) [3]Можно попробовать на событие MouseMove (а может и на событие от скроллера) вешать запуск таймера. Этот вариант я использовал для вывода сообщений в статусбар.
Работает.
код примерно такой:
обработчик MouseMove
ScrollTimer.Enable := true;
обработчик Таймера
рисуем
ScrollTimer.Enable := false;
← →
REA (2003-01-30 16:49) [4]Понятно. Я думал может есть более легальный способ. Спасибо.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.02.10;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c