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

Вниз

Скроллер   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.44 MB
Время: 0.009 c
14-29004
Дмитрий .
2003-01-26 23:06
2003.02.10
Как?


1-28813
Kair
2003-02-01 20:50
2003.02.10
Мне это не нравится.


3-28682
TUZ_SS
2003-01-24 15:04
2003.02.10
Набор дробных чисел на цифровой клавиатуре


1-28733
Warlib
2003-01-31 18:22
2003.02.10
Обработчик событий для OLE объекта!


3-28635
Siv Soft
2003-01-22 17:04
2003.02.10
Рвет кодировку MSSQL -> dbase IV





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский