segunda-feira, 27 de julho de 2015

COMO ARRASTAR UM FORM SEM CLICAR NO CAPTION?

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