Determinar se o cursor do mouse está em determinado controle no Delphi
Inclua na seção uses: Windows
{ Os exemplos abaixo verificam se o cursor do mouse está em Button1: } { Solução 1: } var Pt: TPoint; Rct: TRect; begin GetCursorPos(Pt); GetWindowRect(Button1.Handle, Rct); if PtInRect(Rct, Pt) then { Está no botão } else { NÃO está no botão } end; { Solução 2: } var Pt: TPoint; begin GetCursorPos(Pt); if WindowFromPoint(Pt) = Button1.Handle then { Está no botão } else { Não está no botão } end;
A API GetWindowRect obtém o retângulo (TRect) ocupado por uma janela. Podemos usar GetClientRect para obter o somente da parte cliente da janela. Podemos também usar a propriedade BoundsRect que existe na maioria dos componentes visuais, ou mesmo informar qualquer outro retângulo da tela. Se usarmos a propriedade BoundsRect, precisaremos converter as coordenadas clientes para coordenadas de tela (com a função ClientToScreen). Um lembrete: a solução 2 só poderá ser aplicada a controles ajanelados.