Карта сайтаСсылкиКонтакты

Мышь находится над управлением?

PDF Печать
Статьи

Иногда полезно знать, находится ли мышь над управлением. Например, изменять цвет управления, когда мышь находится над ним.


function IsMouseOverControl(Control: TWinControl): Boolean; 
var P: TPoint; 
begin 
  GetCursorPos(P); 
  Result := Assigned(Control) and 
      IsWindow(Control.Handle) and 
      (WindowFromPoint(P) = Control.Handle) 
end; 

Общая функция, чтобы определить, находится ли мышь над управлением


function IsMouseOver (Control: TControl): boolean; 
var p: TPoint; 
begin 
  { получаем абсолютные координаты } 
  if GetCursorPos (p) then begin 
    { преобразуем координаты относительно компонента } 
    p := Control.ScreenToClient (p); 
    { координаты над управлением? } 
    Result := (p.x >= 0) and (p.x <= Control.Width) and 
      (p.y >= 0) and (p.y <= Control.Height); 
  end 
  else 
    { Этого не должно случиться, но кто знает?... } 
    Result := false; 
end; 

По материалам http://delphi3000.com


 

Добавить комментарий


Защитный код
Обновить