Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить активный элемент управления под курсором мышки

Delphi , ОС и Железо , Мышка и Курсор

Получить активный элемент управления под курсором мышки

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ Sie konnen z.B diese Funktion in einer allgemein gultigen 
  Prozedure aufrufen, die Sie dann allen betroffenen Ereignisse 
  zuweisen. }

 { You may call this function in a global event procedure, 
  linking as many components events to it as you need. }

 function FindControlAtPos: TWinControl;
 var
   Pt: TPoint;
 begin
   GetCursorPos(Pt);
   Result := FindControl(WindowFromPoint(Pt));
 end;


 { (Beispiel) Hier die allgemein gultige Procedure fur OnMouseUp. 
  Die Behandlung von OnClick bleibt dabei erhalten: 
  die Funktionalitat aus OnMouseUp kommt dazu. }

 { (example) There's the global proc for the OnMouseUp event. 
  Note: OnClick keeps working, so you can "add" the OnMouseUp 
  facility to no cost. }

 procedure TForm1.GenericMouseUp(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
 var
   TWC: TWinControl;
 begin
   TWC := FindControlAtPos;
   //what for a class ! 
  Showmessage('Here we are: ' + TWC.ClassName);
   //Let it blink... 
  TWC.Visible := False;
   Sleep(150);
   TWC.Visible := True;
 end;

Привет! Вот перевод текста на русский язык:

Это фрагмент кода на Delphi, который предназначен для поиска активного контроля под курсором мыши и выполнения некоторых действий с ним.

Вот разбивка кода:

  1. Функция FindControlAtPos не принимает параметров и возвращает объект TWinControl, представляющий оконный контроль (например, кнопку, текстовое поле и т.д.). Она использует две переменные:
    • Pt: Структура TPoint, которая содержит координаты x и y курсора мыши.
    • Result: Возвращаемое значение функции, которое устанавливается в результате вызова функции FindControl с аргументом WindowFromPoint(Pt). Эта функция находит оконный контроль по указанному точке.
  2. Процедура GenericMouseUp - глобальный обработчик события OnMouseUp. Она принимает четыре параметра:
    • Sender: Объект, который.triggered событие (в этом случае, форма).
    • Button: Кнопка мыши, которая была нажата (левая, правая или средняя).
    • Shift: Сет сдвиговых клавиш, которые были нажаты во время клика.
    • X и Y: Координаты x и y курсора мыши в момент клика.

Внутри этой процедуры:

  1. Она вызывает функцию FindControlAtPos, чтобы найти контроль под курсором мыши.
  2. Она отображает сообщение с классовым именем найденного контроля с помощью ShowMessage.
  3. Она устанавливает видимость контроля в False, затем ожидает 150 миллисекунд с помощью Sleep и finally устанавливает его обратно в True.

Автор предлагает использовать этот код как глобальный обработчик событий, позволяя прикрепить к нему одинаковые действия к множеству контролов без необходимости писать отдельные обработчики для каждого из них.

Некоторые предложения:

  • Вместо использования ShowMessage для отображения классового имени контроля, 考虑 использовать более robust механизм журналирования или отображение информации в более пользовательском интерфейсе.
  • Вы можете добавить некоторые ошибки обработки для случаев, когда под курсором мыши не найден контроль.
  • Рефакторинг кода может помочь сделать его более модульным и повторно используемым. Например, вы можете извлечь логику поиска контроля в отдельную функцию, которая может быть вызвана из нескольких мест в вашем коде.

В целом, этот код демонстрирует хороший уровень понимания модели программирования на основе событий Delphi и предоставляет полезный старт для строительства более сложных приложений с взаимодействием с мыши.

Определение функции FindControlAtPos, которая возвращает активный элемент управления под курсором мышки.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Мышка и Курсор ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-17 20:09:29/0.0037171840667725/0