我想实现鼠标移动,窗体跟着移动,鼠标不准按下,可我试了好几次,未能成功!procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
button:TMouseButton;
begin
if (button=mbleft)or (button=mbright) then
releasecapture;
perform(wm_syscommand,$f012,0);
end;

解决方案 »

  1.   

    你在if (button=mbleft)or (button=mbright) then
    设置断点 看能不能进入  
      

  2.   

    你应该加个标志,
    当鼠标Dow的时候,否则就不用移动了。
      

  3.   

    //有 bug, 当按下鼠标右键,移动鼠标到窗体外,再松开它,并不会触发 OnMouseUp 事件;但左键可以。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormShow(Sender: TObject);
        procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        { Private declarations }
        procedure MoveForm();
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.MoveForm();
    begin
      Left := Mouse.CursorPos.X - 100;
      Top := Mouse.CursorPos.Y - 100;
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if Tag = 0 then MoveForm();
    end;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Tag := 1;
    end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Tag := 0;
      MoveForm();
    end;procedure TForm1.FormShow(Sender: TObject);
    begin
      MoveForm();
    end;end.