拖动窗体的代码怎么写?

解决方案 »

  1.   

    搞定!
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
        Dragging:Boolean;
        DragStart:TPoint;
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    implementation{$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Dragging:=True;
      DragStart:=TControl(Sender).ClientToScreen(Point(X, Y));
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var
      Diff:TPoint;
    begin
      if Dragging then
      begin
        Diff := TControl(Sender).ClientToScreen(Point(X, Y));
        Diff := Point(Diff.X - DragStart.X, Diff.Y - DragStart.Y );
        SetBounds(Form1.Left + Diff.X, Form1.Top + Diff.Y, Form1.Width, Form1.Height);
        DragStart.X := DragStart.X + Diff.X;
        DragStart.Y := DragStart.Y + Diff.Y;
      end;
    end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Dragging:=False;
    end;end.
      

  2.   

    搞定!
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
      private
       procedure wmnchittest(var msg:twmnchittest);  //获取消息
         message wm_nchittest;    { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.wmnchittest(var msg:twmnchittest);begin
    inherited;
      if (htclient=msg.result) then //如果在客户区域点了鼠标
         msg.result:=htcaption  //可以拖动
      else
      if (htcaption = msg.result) then  //如果在标题览点了鼠标 
         msg.result:=htclient;  //无法拖动
    end;end.
    已经调试成功!!