Текущий архив: 2002.03.28;
Скачать: CL | DM;
Внизмышь и прокрутка 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]Ух, спасибо большое!
Страницы: 1 вся ветка
Текущий архив: 2002.03.28;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c