movimentando form no modo none

22/03/2003

0

eu tenho um form e quero arrasta-lo com o mouse...... porem ele esta no modo none(sem barra de titulo... e tambem esta coberto por componentes
entao naum consigo usar uma dica que encontrei.....
que eh esta....

[b:4cbb46dabb]private
procedure WMNCHitTest(var Msg: TMessage);
message WM_NCHitTest;
public
{ Public declarations }
end;
- Vá na seção implementation e escreva a procedure abaixo:

implementation
{$R *.DFM}
procedure TForm1.WMNCHitTest(var Msg: TMessage);
begin
if GetAsyncKeyState(VK_LBUTTON) < 0 then
Msg.Result := HTCAPTION
else
Msg.Result := HTCLIENT;
end;[/b:4cbb46dabb]

porem naum funciona pois eu nao consigo selecionar o form apenas os componentes.....
como faco isso???????[/b]


Anonymous

Anonymous

Responder

Posts

23/03/2003

Carlos Filho

É disso que eu gosto! Uma pergunta que não é sobre banco de dados!!!

Pelo visto vc deve estar fazendo algo sofisticado!

aqui vai a correção (suponha que seja Form1):

(...)
private
procedure HitOnCaption(var Msg: TWmNcHitTest); message wm_NcHitTest;

(...)

implementation

procedure TForm1.HitOnCaption(var Msg: TWmNcHitTest);
begin
inherited; //executa o manipulador de mensagens original
if (Msg.Result = htClient) and (Msg.YPos < 16 + Top + GetSystemMetrics (sm_cyFrame)) then
Msg.Result := htCaption;
end;

(...) 


A parte após o ´and´ dentro da condição serve para limitar a ´área de arrasto´, que no meu exemplo é um tipo de cópia da barra de título do formulário. No seu caso, vc deve tirar a segunda condição, assim o seu formulário será arrastado se vc clicar em qualquer parte da dele...

Mas lembre-se: certos componentes que você põe no seu formulário tem sua própria janela, isso significa que eles não irão gerar a mensagem wm_NcHitTest, um exemplo é o TPanel. Em geral componentes que você pode por outros componentes dentro ou aqueles onde vc pode escrever como TListBox ou TEdit não geram mensagens wm_NcHitTest e portanto esse código não funcionará! Contudo se vc usar esse código e clicar no formulário ou num Label nesse formulario, ele será arrastado!

Espero que eu tenha ajudado


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar