Статьи
|
Иногда полезно знать, находится ли мышь над управлением. Например, изменять цвет управления, когда мышь находится над ним.
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
|