Quando você pressiona o botão do mouse, o Windows identifica a posição da tela onde o cursor estava no momento do clique. Se a posição é igual a área do Caption do Form, o Windows ativa o modo de movimentação do Form permitindo que este seja arrastado. Portanto, a maneira mais fácil de solucionar esta questão é "enganar" o Windows.
Neste exemplo vamos considerar que o usuário poderá arrastar o Form ao cli-car na área cliente deste Form:
a) Crie uma nova aplicação;
b) Adicione a seguinte declaração na seção private do Form:
procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
c) Adicione o código deste procedimento na seção implementation do Form:
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited; { ativa a herança da mensagem }
if M.Result = htClient then { o clique foi na área cliente? }
M.Result := htCaption; { se sim, faz o Windows pensar que foi no Cap-tion. }
end;
Este exemplo tratou o clique na área cliente. Você pode alterar este código para suas necessidades. Eis os possíveis valores para o Result:
VALOR - Local do clique
HTBORDER - Borda da janela que não tem a borda de tamanho
HTBOTTOM - Borda horizontal inferior da janela
HTBOTTOMLEFT - Canto inferior esquerdo da janela
HTBOTTOMRIGHT - Canto inferior direito da janela
HTCAPTION - Barra de Título(Caption)
HTCLIENT - Área cliente
HTERROR - igual ao HTNOWHERE, a diferença é que produz um beep indicando erro
HTGROWBOX - Caixa de tamanho (igual ao HTSIZE)
HTHSCROLL - Barra de rolagem horizontal
HTLEFT - Borda esquerda da janela
HTMENU - Em um menu
HTNOWHERE - Plano de fundo da janela ou linha de divisão entre janelas
HTREDUCE - Botão minimizar
HTRIGHT - Borda direita da janela
HTSIZE - Caixa de tamanho (igual ao HTGROWBOX)
HTSYSMENU - Botão de Sistema/Fechar da janela MDIChild
HTTOP - Borda horizontal superior da janela
HTTOPLEFT - Canto superior esquerdo da janela
HTTOPRIGHT - Canto direito superior da janela
HTTRANSPARENT - Janela em segundo plano
HTVSCROLL - Barra de rolagem vertical
HTZOOM - Botão maximizar
Nenhum comentário:
Postar um comentário