如何在程序运行时,用鼠标移动窗体中控件的位置(80分)

  • 主题发起人 主题发起人 刘永学
  • 开始时间 开始时间

刘永学

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在程序运行时,用鼠标移动窗体中控件的位置,选中控件,再将之移动到不同的位置
 
在onMousedown事件中,触发控件的重绘事件,根据鼠标移动的位置计算控件的坐标。
 
to littlefish, &nbsp;foolish~!<br>not a good idea.<br><br>to 刘永学, search the DFW as mainkey : TformDesigner ,maybe see it.<br>
 
参考http://www.delphibbs.com/delphibbs/dispq.asp?lid=760646
 
有一个TResizer控件~~~~~~~~~就是你要的。
 
不好意思,确实是个笨方法:D
 
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;<br>&nbsp; Shift: TShiftState; X, Y: Integer);<br>{$IFNDEF WIN32}<br>var<br>&nbsp; pt : TPoint;<br>{$ENDIF}<br>begin<br>&nbsp; if ssCtrl in Shift then begin<br>&nbsp; &nbsp; ReleaseCapture;<br>&nbsp; &nbsp; SendMessage(Button1.Handle, WM_SYSCOMMAND, 61458, 0);<br>&nbsp; &nbsp;{$IFNDEF WIN32}<br>&nbsp; &nbsp; GetCursorPos(pt);<br>&nbsp; &nbsp; SendMessage(Button1.Handle,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; WM_LBUTTONUP,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MK_CONTROL,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Longint(pt));<br>&nbsp; &nbsp;{$ENDIF}<br>&nbsp; end;<br>end;
 
上面的方法好象不行。我试过了......
 
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,<br>&nbsp; Y: Integer);<br>begin<br>releasecapture;<br>button1.Perform(wm_syscommand,$F012,0);<br>end;<br>
 
我昨天忘了说明,我要拖动的控件不是twincontrol类的,而是继承自tgraphcontrol类,<br>xiao_min的法子对twincontrol类的控件来说,是可行的;但对tgraphcontrol类的控件来说<br>就不行了。<br>小鱼的法子苯是奔了点,但还是可行的,我期待更聪明的法子!!
 
来晚了:<br>procedure TForm1.Button1MouseDown(Sender: TObject; Shift: TShiftState; X,<br>&nbsp; Y: Integer);<br>begin<br>releasecapture;<br>button1.Perform(wm_syscommand,$F012,0);<br>end;<br><br>
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=760646<br>一样的问题<br>大富翁以前还有很多同样的问题,去找找<br>
 
都不是我想要的,我已经自己找到答案了。算了,每人平均分配。
 
tgraphcontrol类的要自己算的吧
 
后退
顶部