existe algum jeito de mover um componente com o mouse?
30/11/2005
0
se for panel melhor ... pra poder colocar coisas nele ex botoes dentro de uma panel e pode arrastar o panel pro lugar q eu quiser no form...
num sei se expliquei direito masss....
se alguem souber de algum componente ou alguma funçao q faça esse eskema de movimentar um componente pelo form clickando com um mouse e arrastando.. eu agradeceria... valeu :p
Salsa
Posts
30/11/2005
Emerson Nascimento
crie os três procedimentos abaixo e aponte os eventos OnMouseDown, OnMouseMove e OnMouseUp de todos os componentes que precisam ser movidos em run-time para a respectiva procedure.
// Evento OnMouseDown procedure TForm1.ComponenteMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssCtrl in Shift then try SetCapture(TWinControl(Sender).Handle); Capturing := true; MouseDownSpot.X := x; MouseDownSpot.Y := Y; except end; end; // Evento OnMouseMove procedure TForm1.ComponenteMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Capturing then try TWinControl(Sender).Left:= TWinControl(Sender).Left - (MouseDownSpot.x-x); TWinControl(Sender).Top:= TWinControl(Sender).Top - (MouseDownSpot.y-y); except end; end; // Evento OnMouseUp procedure TForm1.ComponenteMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Capturing then begin ReleaseCapture; Capturing := false; try TWinControl(Sender).Left := TWinControl(Sender).Left - (MouseDownSpot.x -x); TWinControl(Sender).Top := TWinControl(Sender).Top - (MouseDownSpot.y - y); except end; end; end;
30/11/2005
Emerson Nascimento
é preciso segurar o CTRL e clicar no componente para poder movimentá-lo.
30/11/2005
Salsa
eu declaro como?
01/12/2005
Dedi
01/12/2005
Emerson Nascimento
MouseDownSpot : TPoint;
Capturing : bool;
02/12/2005
Salsa
03/12/2005
Weber
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; TWinControl(Sender).perform(WM_SYSCOMMAND, $f012, 0); end;
03/12/2005
Marco Salles
Talves voce deva ter esquecido de fazer isto:
mas sem dúvida que o codigo que o weber sugeriu é mais enxuto
04/12/2005
Salsa
eu to movimentando o panel com o mouse como weber explicou ... blz....
agora coloquei um botao do lado do panel.. pra qndo eu arrastar o botao ir junto... como se tivesse grudado sabe... mas nao to conseguindo fazer direito...
aqui eu arrasto e soh qndo solto o meu panel q o botao vai pra posiçao...
queria q ele arrastasse junto tb :)
o jeito q nao tah dando certo eh esse:
ReleaseCapture; TWinControl(Sender).perform(WM_SYSCOMMAND, $f012, 0); Botao.Left := TWinControl(Sender).Left + TWinControl(Sender).Width; Botao.Top := TWinControl(Sender).Top;
alguem ae pode me dar um help pra fazer isso? :)
valeu!!!!
:p
05/12/2005
Salsa
ninguem ae sabe como posso mover o panel e o botao como se eles tivessem grudados?
valeu :P
Clique aqui para fazer login e interagir na Comunidade :)