Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Olivka ©   (2002-03-16 19:27:00) 

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


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

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


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

Есть два пути:
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-16 22:47:00) [3]

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо