Delphi知识中心
www.delphi.ee
提供Delphi技术知识
与Delphi程序员共同进步


在线服务QQ:99923144 随时恭候您的光临
首页 基础知识 WIN系统 组件使用 组件开发 数据库 ACTIVEX 多媒体技术 网络技术 关于
文章类别:WIN系统    你尚未登陆,会员功能无法使用,请从 网站首页 登陆。
  用鼠标拖动无标题窗口  
 
用鼠标拖动无标题窗口

编程的时候,有时为了需要,会将窗体的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中测试通过。

 

在线服务QQ:99923144 Delphi程序员QQ群(139442)
Delphi知识中心 www.delphi.ee 最专业的Delphi技术资料网站