Windows - detectar clique em qualquer parte do form |
Top Previous Next |
|
{ 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. Neste exemplo vamos considerar que o usuário poderá arrastar o Form ao clicar na área cliente deste Form:
1.Crie uma nova aplicação. 2.Adicione a seguinte declaração na seção private do Form: }
procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
// 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 Caption. 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:
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 |