![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как заставить приложение реагировать на Колесико мышки... ) [D6, D7, 2000, XP]
Алексей С. © (2007-01-30 21:47:00)Весь вопрос в теме.
Заранее спасибо!
Olivetti (2007-01-30 23:10:00) [1]Пусть я до конца не разобрался...
type
TForm1 = class(TForm)
private
procedure MouseWheel(var Msg: TWMMouseWheel); message WM_MOUSEWHEEL; // 1
end;
procedure TForm1.MouseWheel(var Msg: TWMMouseWheel);
begin
Caption := IntToStr(Msg.WheelDelta);
end;
Пояснения:
Сообщения ОС передаются в оконную функцию окна, которое же - форма. Строка 1 декларирует метод-обрабочик сообщения от колесика мыши. WM_MOUSEWHHEL - константа, определяющая номер сообщения (все сообщения пронумерованы), и, при поступлении сообщения с этим номером, будет вызван этот метод-обработчик. В качестве параметра все методы-обработчики принимают типовую запись с параметрами сообщения (TWMMouseWheel - по размеру и некоторым полям полностью соответствует TMessage, а кое-где, типа, отличается). В этой записи хранится сопутствующая информация. Расположение данных в записи, ясное дело, зависит от номера сообщения. В обработчике (в примере) из записи извлекаются необходимые данные и выводятся в заголовок формы. Потом еще вызывается унаследованный обработчик. А, еще в записи можно вернуть результат обработки сообщения. Типа как-то так...
Olivetti (2007-01-30 23:00:00) [2]Ну дык зная предыдущее значение.
YPos - это положение курсора мыши относительно окна.
Казалось бы, при чем тут колесико?
Алексей С. (2007-01-30 22:59:00) [3]Спасибо, вопрос снят. Задача решена. Пусть я до конца не разобрался... но вопросов пока нет. Всем Спасибо!
Efir (2007-01-30 22:58:00) [4]
> Только вот один момент: данная процедура выдает результат
> текущее положени У на момент прокрутки колеса, а вот КАК
> узнать куда было прокручено колесо вперед или назад ???
Ну дык зная предыдущее значение.
Olivetti (2007-01-30 22:56:00) [5]И, эта... inherited
Olivetti (2007-01-30 22:55:00) [6]TWMMouseWheel(Message).WheelDelta
Алексей С. (2007-01-30 22:50:00) [7]Только вот один момент: данная процедура выдает результат текущее положени У на момент прокрутки колеса, а вот КАК узнать куда было прокручено колесо вперед или назад ???
Алексей С. (2007-01-30 22:43:00) [8]Спасибо!
unknown (2007-01-30 22:00:00) [9]
type
TForm1 = class (TForm)
procedure Wheel(var Message : TMessage); message WM_MOUSEWHEEL;
end;
var
Form1 : TForm1;
implementation
{$R *.dfm}
procedure TForm1.WHEEL(var Message : TMessage);
begin
Caption := IntToStr(TWMMouseWheel(Message).YPos);
end;
Olivetti (2007-01-30 21:59:00) [10]Оно реагирует.