Джоуи
 Аватар для Joey
1082 / 644 / 240
Регистрация: 05.05.2015
Сообщений: 3,559
Записей в блоге: 2

Как обработать прокрутку мыши при нажатой кнопке Ctrl

18.05.2015, 00:55. Показов 2312. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Если конкретно, я хочу увеличивать/уменьшать изображение в TImage, если пользователь зажал ctrl и прокрутил колесико вверх/вниз

Добавлено через 40 минут
Нашел у формы событие OnMouseWheelUp, но у панелей и TImage такого нет, может можно искуственно создать событие для панели? Или создать обработчик для формы OnMouseWheelUp, а в обработчике проверять, не находится ли мышка в пределах панели/TImage-а и т.п.? Подскажет кто?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2015, 00:55
Ответы с готовыми решениями:

Как поменять указатель мыши при нажатой левой кнопке?
Мне надо, чтобы при нажатии левой кнопки мыши менялся значек указателя. Как это реализовать?

Рисование при нажатой кнопке мыши
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Canvas.MoveTo(X,Y);...

При нажатой кнопке мыши обработать событие "вход курсора" на другой обьект
Задажа в том что нужно сделать такой принцип: опускаем клавишу миши и тягаем её по екрану (за ней следом склонированный обект на котором...

3
 Аватар для Arcor
5708 / 2299 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
18.05.2015, 00:59
я прокрутку мыши вылавливаю вот так, на компонентах на которых нету стандартного обработчика прокрутки

Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.message = WM_MOUSEWHEEL then
    begin
      if ShortInt(HiWord(Msg.wParam)) > 0 then
        // прокрутка колеса в одну сторону
      else
        // прокрутка колеса в другую сторону
    end;
end;
0
пофигист широкого профиля
4761 / 3197 / 861
Регистрация: 15.07.2013
Сообщений: 18,548
18.05.2015, 01:54
Цитата Сообщение от Arcor Посмотреть сообщение
я прокрутку мыши вылавливаю вот так, на компонентах на которых нету стандартного обработчика прокрутки
А как ты определяешь на каком именно компоненте прокрутили колесо мыши, чтобы именно в том компоненте что-то сделать/изменить?
Может стоит раскрыть секрет LParam?
0
 Аватар для Arcor
5708 / 2299 / 466
Регистрация: 20.11.2009
Сообщений: 7,721
Записей в блоге: 1
18.05.2015, 02:25
хм.. можно так наверно )

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
var MP: TPoint;
    Control: TWinControl;
begin
  if Msg.message = WM_MOUSEWHEEL then
    begin
      MP.X := Word(Msg.lParam);
      MP.Y := HiWord(Msg.lParam);
 
      Control := FindVCLWindow(MP);
 
      if Control = nil then
        Handled := True
      else if Control.Handle <> Msg.hwnd then
        begin
 
          if Control = Panel1 then
            begin
              if ShortInt(HiWord(Msg.wParam)) > 0 then
                Caption := 'Panel ++'
              else
                Caption := 'Panel --';
            end;
 
          if Control = Button1 then
            begin
              if ShortInt(HiWord(Msg.wParam)) > 0 then
                Caption := 'Button ++'
              else
                Caption := 'Button --';
            end;
 
          SendMessage(Control.Handle, WM_MOUSEWHEEL, Msg.wParam, Msg.lParam);
          Handled := True;
        end;
    end;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2015, 02:25
Помогаю со студенческими работами здесь

Как отследить клик мыши при нажатой клавише Ctrl?
Всем здравствуйте. Нужно выполнить команду только в том случае, если пользователь кликнул по кнопке мышкой удерживая при этом нажатой...

Cобытие MouseMove при нажатой левой кнопке мыши
Сделал у PictureBox событие MouseMove. Если просто провести мышкой над PictureBox все срабатывает, но если нажать левой(собственно правой...

Прокрутка страницы при нажатой левой кнопке мыши
Есть такой код document.onmousedown = function(e) { e = e || window.event; down = 1; x = e.clientX; // начальное положение...

MouseMove при нажатой правой кнопке мыши и рамки в PictureBox
Как избежать изменения действия события pictureBox1_MouseMove при смене рамки изображения внутри процедуры pictureBox1_MouseDown или в...

Событие мыши Mouse Down и получение координат при нажатой кнопке
день добрый, подскажите пожалуйста, как сделать так, что бы при нажатой кнопке мыши в области окна я мог отслеживать координаты....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Система статов в Unity
GameUnited 20.04.2025
Статы — фундаментальный элемент игрового дизайна, который определяет характеристики персонажей, предметов и других объектов в игровом мире. Будь то показатель силы в RPG, скорость передвижения в. . .
Статические свойства и методы в TypeScript
run.dev 20.04.2025
TypeScript прочно занял своё место в системе современной веб-разработки. Этот строго типизированный язык программирования не просто расширяет возможности JavaScript — он делает разработку более. . .
Batch Transform и Batch Gizmo Drawing API в Unity
GameUnited 20.04.2025
В мире разработки игр и приложений на Unity производительность всегда была критическим фактором успеха. Создатели игр постоянно балансируют между визуальной привлекательностью и плавностью работы. . .
Звук в Unity: Рандомизация с Audio Random Container
GameUnited 20.04.2025
В современных играх звуковое оформление часто становится элементом, который либо полностью погружает игрока в виртуальный мир, либо разрушает атмосферу за считанные минуты. Представьте: вы исследуете. . .
Максимальная производительность C#: Советы, тестирование и заключение
stackOverflow 20.04.2025
Погружение в мир микрооптимизаций C# открывает перед разработчиком целый арсенал мощных техник. Но как определить, где и когда их применять? Ответ начинается с точных измерений и профилирования. . . .
Максимальная производительность C#: Предсказание ветвлений
stackOverflow 20.04.2025
Третий ключевой аспект низкоуровневой оптимизации — предсказание ветвлений. Эта тема менее известна среди разработчиков, но её влияние на производительность может быть колоссальным. Чтобы понять. . .
Максимальная производительность C#: Векторизация (SIMD)
stackOverflow 20.04.2025
Помимо работы с кэшем, другим ключевым аспектом низкоуровневой оптимизации является векторизация вычислений. SIMD (Single Instruction, Multiple Data) позволяет обрабатывать несколько элементов данных. . .
Максимальная производительность C#: Процессорный кэш
stackOverflow 20.04.2025
Знакомство с внутренним устройством процессорного кэша — ключевой шаг в написании по-настоящему быстрого кода на C#. Этот слой архитектуры компьютера часто ускользает от внимания разработчиков, но. . .
Максимальная производительность C#: Введение в микрооптимизации
stackOverflow 20.04.2025
В мире разработки на C# многие привыкли полагаться на . NET Runtime, который "магическим образом" сам оптимизирует код. И часто это работает - современные JIT-компиляторы творят чудеса. Но когда речь. . .
MVC фреймворк в PHP
Jason-Webb 19.04.2025
Архитектурный паттерн Model-View-Controller (MVC) – это не просто модный термин из мира веб-разработки. Для PHP-программистов это фундаментальный подход к организации кода, который радикально меняет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru