如何移动Form上的一个Label,马上结贴

解决方案 »

  1.   

    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      label1.Left := x;
      label1.Top := y;
    end;
      

  2.   

    var
      Form1: TForm1;
      MoveEn:Boolean;
      XY:TPoint;
    implementation{$R *.DFM}procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if Button =mbLeft then
        begin
          MoveEn:=True;
          XY.x :=x;
          XY.y :=y;
        end;
    end;procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
          MoveEn:=False;end;procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if MoveEn then
        begin
          Label1.Left  :=Label1.Left +(x-XY.x);
          Label1.Top :=Label1.Top +(y-XY.y);
        end;end;
      

  3.   

    你是指怎样的移动?
    1在某种情况下直接修改Label的座标:
    procedure TFrom1.Button1Click(Sender: TObject);
    begin
      Label1.Left:=200;
      Label1.Top:=100;
    end;
    2修改Label的父,比如将Label1从Panel1上移到Panel2上:
    Label1.Parent:=Panel2;
    3用鼠标拖动:
    var 
      ox,oy:integer;
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      ox:=X;
      oy:=Y;
    end; TForm1.FormMouseMove(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if Shift=[ssLeft] then
      begin
        Label1.Left := Label1.Left+X-ox;
        Label1.Top := Label1.Top+Y-oy;
      end;
    end;
      

  4.   

    直接修改label 的left和top属性就可以了
      

  5.   

    或者,将label的drogmode属性设置为auto
    procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
      if ( source is TLabel ) then 
      accept := true;
    end;procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
      if ( Source is TLabel) then
      begin
        (Source as TLabel).Left := x;
        (Source as TLabel).Top  := y;
      end;
    end;
      

  6.   

    如果想直接移动,修改 left 和 top 的属性即可如果想用鼠标拖动的话,在 Label 的 mousedown 和 mousemove,mouseup 事件中写入如代码即可xzhifei(飞) 大虾已经贴出拉
      

  7.   

    在Form上用鼠标拖动,不用更改Left和Top的值,
    (Sender as TWinControl).Perform(WM_SysCommand,$F012,0);
    用类似于上面的语句,
    只不过,它只对TWinControl有效,而对TLabel无效