编程的时候,有时为了需要,会将窗体的BorderStyle设置为bsNone,即无标题窗体。但是这样一来,因为没有了标题栏,就无法拖动窗体了。其实,我们只需要用以下的方法,就可以实现平滑拖动窗体了。 在OnMouseDown事件中加入 OldX:=x; OldY:=u; 在OnMouseMove事件中加入 Form1.Left:=Form1.Left+x-Oldx; Form1.Top:=Form1.Top+y-Oldy; ##1源代码如下: unit Unit1; interface uses Windows, Messages,SysUtils, Classes,Graphics,Controls,Forms, Dialogs; type TForm1 = class(TForm) procedure FormMouseDown(Sender:TObject;Button:TMouseButton; Shift:TShiftState;X,Y,Integer); procedure FormMouseMove(Sender:TObject;Button:TMouseButton; Shift:TShiftState;X,Y,Integer); private {Private declarations} public {Private declarations} end; var Form1:TForm1; OldX,OldY:integer; //定义全局变量 implementation {$R *.DFM} procedure TForm1.FormMouseDown(Sender:TObject;Button:TMouseButton; Shift:TShiftState;X,Y:Integer); begin OldX:=x; OldY:=y; end; procedure TForm1.FormMouseMove(Sender:TObject;Button:TMouseButton Shift:TShiftState;X, Y:Integer); begin if ssleft in shift then //按下鼠标左键 begin Form1.Left:=Form1.Left+x-Oldx; Form1.Top:=Form1.Top+y-Oldy; end; end; end. 注:以上代码在Delphi5.0、Win98 SE中测试通过。
 【责编:Lili】 |