如何在客户区拖动窗体昨天看见了,但忘记保存?(10分)

  • 主题发起人 主题发起人 小蔡一碟
  • 开始时间 开始时间
在类中定义<br>private<br>procedure wmNCHITTEST(var msg:twmnchittest);message WM_NCHITTEST;<br>....<br>end;<br><br>procedure tform1.wmNCHITTEST(var msg:twmnchittest);<br>begin<br>inherited;<br>if (htclient=msg.result) then msg.result:=htcaption;<br>end;<br><br>
 
但这样做的会,form1的事件全部被htcaption接收了,Onclick,Ondbclick之类就没有了。<br>有没有其他方法?
 
用记录坐标的方法<br>先定义两个全局变量: ox, oy: integer;<br>然后,添加 Form 的鼠标点击和移动的事件:<br><br>procedure TForm1.Form1MouseDown(Sender: TObject; Button: TMouseButton;<br>&nbsp; Shift: TShiftState; X, Y: Integer);<br>begin<br>&nbsp; X1 := X;<br>&nbsp; Y1 := Y;<br>end;<br><br>procedure TForm1.Form1MouseMove(Sender: TObject; Shift: TShiftState; X,<br>&nbsp; Y: Integer);<br>begin<br>&nbsp; if ssLeft in Shift then<br>&nbsp; begin<br>&nbsp; &nbsp;Left := Left + X - X1;<br>&nbsp; &nbsp;Top &nbsp;:= Top + Y - Y1;<br>&nbsp; end;<br>end;<br><br>同样的方法,可以很容易的实现点击一个 Label 等控件来拖动窗口
 
多人接受答案了。
 
后退
顶部