[Dúvida] Clicar e arrastar

Iniciado por J.spY, 27 de Setembro , 2007, 11:01:29 AM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

J.spY

Pessoal,

Seguinte, to criando um MSN Fake, somente para estudo, em Delphi, entretanto, não estou conseguindo fazer algo que, para os seniors na linguagem, deve ser simples.

Resumindo, o que eu quero fazer é com quando eu clicar e arrastar no form, ele se mova, pois retirei os botões e barra de título e consequentemente não consigo fazer com isso aconteça. Na imagem abaixo deve ficar mais claro o que eu estou dizendo.



[ ] s

"...É melhor ficar calado deixando que todos pensem que você é um idiota, do que abrir a boca e não deixar a menor dúvida®..."

whit3_sh4rk

Ixi... você já tem um concorrente rs... afinal de contas meu projeto Fake MSN Live está parado.. só tenho terminado mesmo o antigo Fake MSN.. mas em breve estarei terminando o mesmo ;)

CitarPara movimentar uma form sem barra de título, deve-se tratar a mensagem WM_NCHITTEST, desta maneira:

type
  TForm1 = class(TForm)
  public
    procedure WMNCHitTest(var M: TWMNCHitTest); message WM_NCHitTest;
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
  inherited;
  if M.Result = htClient then {se o mouse foi clicado na form}
    M.Result := htCaption; {faz o Windows pensar que foi na barra de título}
end;

Fonte: http://www.geocities.com/SiliconValley/ ... .htm#tip22

[]s

J.spY

Opa,

Valeu tubarão, rodei o Google todo e não achei. Funcionou bem, porém há um probleminha; os eventos das imagens pararam de funcionar. Já estou tentando solucionar, se souber o que pode ser, dá uma luz. De qualquer forma, valeu pela ajuda. Se quiser, podemos juntar nossos projetos e formar um melhor ainda. :)

[ ] s

"...É melhor ficar calado deixando que todos pensem que você é um idiota, do que abrir a boca e não deixar a menor dúvida®..."

Anonymous

Olá pessoal minha primeira contribuição, tomara que seja útil...

Já utilizei esse código que o whit3_sh4rk passou, mas ele tem alguns comportamentos
indesejáveis, como esse que o J.spY disse, porntanto eu utilizo o seguinte código:

procedure TForm.(Qualquer evento MouseDown)
const
  sc_DragMove = $f012;
begin
  ReleaseCapture;
  Perform(wm_SysCommand, sc_DragMove, 0);
end;


Utilize em qualquer objeto que tenha o evento MouseDown e seja feliz  ;D

Grande abraço!!

J.spY

Nossa cara, MUITO obrigado meu amigo, funcionou perfeitamente!!!

Havia estacionado meu projeto porque não achava nada que servisse...

Mais uma vez, muito obrigado dooda! Qualquer coisa, estamos aí.  ;D

[]'s

"...É melhor ficar calado deixando que todos pensem que você é um idiota, do que abrir a boca e não deixar a menor dúvida®..."

Anonymous

Valew Spy, fico feliz em poder ajudar, trabalho profissionalmente com Delphi tem uns 3 anos, desenvolvendo sistemas comerciais e sempre gostei da programação Dark! =P

Ate que enfim achei um fórum bacana sobre o assunto...
Também conheço JAVA, PHP, C, etc...

Estou disposto a ajudar no que for possível!!

[]`s