Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.017 c
1-90894
s
2002-03-13 18:16
2002.03.28
Окна приложения


1-90926
kronos
2002-03-13 13:50
2002.03.28
Можно ли так сравнивать?


4-91116
five
2002-01-28 15:39
2002.03.28
как программно узнать - включен или выключен сейчас ActiveDesktop ?


1-90932
lightix
2002-03-13 15:11
2002.03.28
Подскажите, как запустить Excel и передать в него данные?


14-91051
Королев
2002-02-12 18:51
2002.03.28
считаете ли вы, что возможно появление некого второго поколения людей...