Что касается компонента TMemo, я не могу найти способ обнаружить, когда пользователь выпустил кнопку WHEEL на своей мыши. Стандартное событие OnMouseUp не реагирует на кнопку колеса мыши.Delphi: Обнаружение кнопки колеса мыши нажмите
ответ
Этот маленький круг вверх-вниз стрелки является панорамирование окно из VCL, который обеспечивает функциональные возможности прокрутки при нажатии средней кнопки.
Окно панорамирования по умолчанию, TPanningWindow
, фиксирует мышь в своем методе StartPanning
, чтобы иметь возможность следить за движением мыши и не отпускать ее до тех пор, пока панорамирование не остановится - это вызвано другим щелчком. Вот почему в записке никогда не появляется сообщение средней кнопки, поэтому событие OnMouseUp
не запускается.
Вы можете обнаружить сообщение кнопки до того, как оно будет отправлено в окно панорамирования, в обработчике OnMessage
«Приложения». Ниже пример кода находится в обработчике событий OnMessage
компонента TApplicationEvents
, проверяет, извлекается ли сообщение, когда окно панорамирования панорамируется для «Memo1».
uses
imouse;
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.message = WM_MBUTTONUP) and Assigned(Mouse.PanningWindow) and
(Mouse.PanningWindow.HandleAllocated) and
(Msg.hwnd = Mouse.PanningWindow.Handle) and
(Mouse.PanningWindow is TPanningWindow) and
(TPanningWindow(Mouse.PanningWindow).PanControl = Memo1) then
// perform what's required
end;
В качестве альтернативы, вы можете зарегистрировать свой собственный класс окна панорамирования с
Mouse.PanningWindowClass
, которые могли бы предупредить, что это пан управления для некоторых сообщений. Вот пример:
uses
imouse;
type
TMyPanningWindow = class(TPanningWindow)
protected
procedure WndProc(var Msg: TMessage); override;
end;
{ TMyPanningWindow }
procedure TMyPanningWindow.WndProc(var Msg: TMessage);
begin
inherited;
if (Msg.Msg = WM_MBUTTONUP) and (Assigned(PanControl)) then
PanControl.Perform(Msg.Msg, Msg.WParam, Msg.LParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Mouse.PanningWindowClass := TMyPanningWindow;
end;
Спасибо, однако, модуль imouse.pas недоступен с Delphi 7. – user1527613
@user - Добро пожаловать! Перед тем, как они были очищены, были всевозможные теги Delphi. Я тестировал вышеуказанный код с D2007, D7 настолько стар, что существует много отличий от текущего продукта. Вы должны пометить вопрос определенной версией, если вам нужно запустить код этой версии. Если вам нужно запустить код во многих версиях, укажите это требование в самом вопросе (в этом случае я, вероятно, не стал бы вникать в него). –
- 1. Событие колеса мыши Delphi в компоненте
- 2. Плавная прокрутка колеса мыши
- 3. Колеса мыши JQuery события
- 4. Удалить прокрутку колеса мыши
- 5. Откажитесь от колеса мыши
- 6. SetKeyDelay для колеса мыши
- 7. Как обнаружить кнопки мыши и кнопки мыши в Delphi?
- 8. D3: Обнаружение события колеса мыши через наложенный SVG
- 9. Поиск положения мыши из события колеса мыши
- 10. Обнаружение кнопки громкости iPhone вверх Нажмите?
- 11. магистральные маршруты - обнаружение кнопки назад браузера нажмите
- 12. Обнаружение магнитной кнопки Google Cardboard Нажмите
- 13. Delphi: Как я могу проверить, нажаты ли какие-либо кнопки мыши - ВНЕШНЕЕ событие мыши?
- 14. Как получить состояние колеса мыши?
- 15. Масштабирование с использованием колеса мыши
- 16. Событие колеса мыши пускового устройства
- 17. Горизонтальное событие колеса мыши? (WinAPI)
- 18. колеса мыши обнаруживая в полотне
- 19. Событие колеса мыши не срабатывает
- 20. ScrollViewer Горизонтальная прокрутка колеса мыши
- 21. jquery nicescroll: ошибка колеса мыши
- 22. Событие Irrlicht для колеса мыши
- 23. Ncurses колеса мыши прокрутка вверх
- 24. UIPickerView, обнаружение запуска и остановки «катящегося колеса»?
- 25. Настройка JavaFX Стиль кнопки на мыши Нажмите
- 26. нажмите событие нг кнопки мыши не работает
- 27. Python [Canvas]: обнаружение кнопки мыши не нажата
- 28. Обнаружение первого или второго выпуска кнопки мыши?
- 29. Обнаружение кнопки мыши для FireFox в Javascript
- 30. Обнаружение наведите указатель мыши и нажмите прозрачный div
Обычно (я думаю) настроен как * средняя кнопка *, и в этом случае не должно быть никаких проблем. Возможно, ваша мышь делает что-то еще. –
Что-то еще, или вообще ничего. Работает ли кнопка в других приложениях? Если да, то что он делает? – GolezTrol
Либо пометьте конкретную версию delphi, либо вообще ничего. Не просто пометить много из них по уважительной причине. –