我想在程序中用鼠标移动控件的位置,怎么实现?

解决方案 »

  1.   

    我写的一个方法,用来在运行时拖动控件:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
      private
        procedure MoveControl(WinControl: TWinControl; Shift: TShiftState; X, Y: integer);
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.MoveControl(WinControl: TWinControl; Shift: TShiftState; X, Y: integer);
    var  SC_JMOVE: Word;
    begin
      if (X > 5) and (Y > 5) and (X < WinControl.Width - 5) and (Y < WinControl.Height - 5)then
      begin
        SC_JMOVE := $F009;
        WinControl.Cursor := crSizeAll;
      end
      else
      begin
        SC_JMOVE := $F000;
        WinControl.Cursor := crDefault;
      end;  if Shift = [ssLeft] then
      begin
        ReleaseCapture;
        WinControl.Perform(WM_SYSCOMMAND, SC_JMOVE, 0);
      end;
    end;procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      MoveControl((Sender as TWinControl), Shift, X, Y);
    end;end.
      

  2.   

    procedure TFormMain.Button1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      ReleaseCapture;
      Button1.Perform(wm_syscommand,$F012,0);
    end;