Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Вниз

мышь и прокрутка StringGrid-a 


Olivka   (2002-03-16 19:27) [0]

Еще один вопрос есть - событие (на StringGrid-e) OnMouseWheelDown (up) для всех мышей одинаковы? Вот у меня, например, мышь Genius c кнопкой вместо колеса, так при прокрутке этой кнопкой у меня не срабатывают эти события, а какое тогда срабатывает? Я так поняла, что при этом у меня сдвигается область просмотра таблицы, при этом перерисовываются только верхние, или нижние ячейки соответственно (я думала, что должны все перерисовываться).
и еще - можно ли вообще запретить прокрутку с помощью колеса(кнопки).
С уважением.



Song   (2002-03-16 22:15) [1]

Есть одно предположение, но не ручаюсь, что попаду в точку.
Для большинства мышей, с доп. кнопками особенно, устанавливается доп. ПО, например для вашей - это ПО Genius Mouse Mate, Вы можете определить его наличие по значку с глазами в трее. Дык вот, есть предположение, что нажатие доп. кнопок и движение колеса скрола управляет не Windows (не её встроенным драйвером), а драйвером от Mouse Mate, поэтому программа, написанная в Дельфи, не может получать сообщений от этого драйвера, может быть даже потому, что это в ней это не предусмотрено. В принципе колесо уже давно стало стандартным в ОС и его поддержка реализована в винде, начиная с Win 98 SE, а хук на колесо в Mouse Mate, я думаю, оставили для того, чтобы регулировать скорость прокрутки (сколько строчек будет прокручиваться за один щелчок колеса). В Win XP это реализовано уже внутренне.
Не ручаюсь за правильность идеи, но похоже на истину.



Olivka   (2002-03-16 22:47) [2]

Абсолютно верно, без этой программы в трее кнопка не работает. ПОлучается, что я даже не смогу запретить прокрутку с помощью мыши в программе?



Song   (2002-03-17 09:40) [3]

Есть два пути:
1. Ловить и нулить все сообщения от колеса. Но т.к. их не возникает значит этот вариант обломился.
2. Отключить программно. Может где в реестре. Это извините не знаю.
3. Попробовать отлавливать и нулить системные сообщения WM_MOUSEWHEEL и CM_MOUSEWHEEL
4. Я посмотрел исходники по работе с колесом (модуль control) и вот чего нарыл.
Можно отключить очень просто, но написано что работает по NT, но с виндой сохраняется такая тенденция, что некоторые процедуры работают в других ОС:

SystemParametersInfo(SPI_SETWHEELSCROLLLINES, 0,0,0);

В данном случае мы говорим системе, что при прокрутке прокручивать 0 строк т.е. ничего. Но не забудьте перед изменением получить число, которое было до Вашего изменения через SPI_GETWHELL.. и восстановить его на выходе.

Также посмотрите три интересных функции в модуле, не буду сюда их постить, они объемные. Они как раз касаются определения наличия колеса и действий, если оно найдено/не найдено:

GetRegisteredData
GetNativeData
SettingsChanged



Olivka   (2002-03-17 21:41) [4]

Ух, спасибо большое!




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.025 c
1-90846           olookin               2002-03-16 14:01  2002.03.28  
Stay on top


1-90928           Michael C             2002-03-11 17:13  2002.03.28  
Массивы и IP


4-91106           MrAngel               2002-01-21 12:06  2002.03.28  
Использование функции GetDesktopWnd


7-91087           vlv                   2001-12-27 20:49  2002.03.28  
Реестр


7-91085           AlexS                 2001-12-28 07:50  2002.03.28  
Модем?