Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обработать события колесика мыши если, события OnMouseWheel у компонента нет 
:(
    Опции темы
ДЫМ
Дата 20.12.2004, 04:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

Репутация: 8
Всего: 8



Есть компонент PaintBox, но у него нет событий , OnMouseWheelUp и OnMouseWh, как его заставить реагировать на вращение колесика мыши?
PM MAIL WWW   Вверх
Vladimir13
Дата 20.12.2004, 05:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 1



я в свое время делал все на форме, где есть колесико. чуть заморочистее... но если так нужно колесико
могу посоветовать еще как нибудь отловить колесико у Windows... хотя не знаю как , да и зачем, если есть форма.
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Vit
Дата 20.12.2004, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Ловить сообщения от колёсика...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Snowy
Дата 20.12.2004, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Засунуть PaintBox в ScrollBox.
Если нужно ловить колесико, то посмотри тут:
http://forum.vingrad.ru/index.php?showtopic=31739
PM MAIL   Вверх
ДЫМ
Дата 21.12.2004, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

Репутация: 8
Всего: 8



Цитата
Ловить сообщения от колёсика...


Но как?
PM MAIL WWW   Вверх
Snowy
Дата 21.12.2004, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Что как? Линк для чего дан? Там все написано.
Кидаешь на форму TApplicationEvents. Создаешь событие OnMessage.
Запихиваешь туда приведенный код и получаешь:
Код

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
begin
 if Msg.Message=WM_MOUSEWHEEL then
   if Msg.lParam<0 then вверх
   else вниз;
end;

Вместо "вверх" и "вниз" подставляешь нужный тебе код.
Только чем тебя скроллбокс не устроил? С ним гемороя меньше.
PM MAIL   Вверх
ДЫМ
Дата 22.12.2004, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

Репутация: 8
Всего: 8



Snowy
Спасибо за разъяснения

PM MAIL WWW   Вверх
dm9
Дата 22.12.2004, 03:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Если делаешь компонент, всё гораздо проще.
protected
{ Protected declarations }
procedure Wheel (var Msg : TMessage); message WM_MOUSEWHEEL;

А уж что и где в этом Msg - см. Help -> Windows SDK (см. WM_MOUSEWHEEL)

Кстати, можно проще. Для этого события придумали класс... То есть тебе не понадобится вручную вытаскивать данные из Msg, за тебя это уже сделали...

procedure Wheel (var Msg : TWMMouseWheel); message WM_MOUSEWHEEL;

Код
TWMMouseWheel = packed record
   Msg: Cardinal;
   Keys: SmallInt;
   WheelDelta: SmallInt;
   case Integer of
     0: (
       XPos: Smallint;
       YPos: Smallint);
     1: (
       Pos: TSmallPoint;
       Result: Longint);
 end;

Добавлено @ 03:52
PS А подумавши, добавлю... smile

Так было бы, если бы PaintBox был полноценным окном. Я посмотрел, он таковым не является smile Так что клади его на TScrollBox и не парь мозги... А у ScrollBox есть мессаги onMouseWheel.

Это сообщение отредактировал(а) dm9 - 22.12.2004, 03:55
PM MAIL ICQ   Вверх
badaninslava
Дата 3.6.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 18.2.2005

Репутация: нет
Всего: нет



А как сделать наследнику TCustomPanel событие onMouseWheel?
Добавлено @ 20:08
В справке написано, что наслудники TWinControl могут реагировать на это событие. Но я никак не могу допереть как без формы отловить кручение колёсика. Сообщением wm_MouseWheel что-то не выходит...
PM MAIL   Вверх
Dynamic
Дата 4.6.2005, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 12
Всего: 15



нафиг наследника:
Код

  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    procedure Wheel (var Msg : TWMMouseWheel); message WM_MOUSEWHEEL;
  end;

procedure TForm1.Wheel(var Msg: TWMMouseWheel);
begin
     showmessage(inttostr(Msg.XPos));
end;



--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
badaninslava
Дата 4.6.2005, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 18.2.2005

Репутация: нет
Всего: нет



Нет, я типа пишу новый компонент(для личного пользования) и хочу что-бы в нем было событие onMOUSEWHEEL. А как это сделать не знаю.
PM MAIL   Вверх
Quadr0
Дата 4.6.2005, 21:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 14.7.2011, 21:07
  Вверх
badaninslava
Дата 5.6.2005, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 18.2.2005

Репутация: нет
Всего: нет



Всё, я разобрался. Спасибо.
PM MAIL   Вверх
gesper
Дата 11.12.2013, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


"Shарфик"
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 23.2.2005

Репутация: 1
Всего: 2



А я вот не могу понять, какого фига у TControl есть OnMouseWheelUp , он виден при создании компонента на основе TPaintBox, но реакции на событие нет.
что за чушь?
--------------------
...И приколется обломившийся и oбломится приколовшийся...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.