小弟的程序是这样的:
   一个窗体, 窗体上就有一个TLabel控件Label1,窗体的名字是Form1,有一个全局布尔型变量move 在Label1的OnMouseDown事件里添加  move:=true;  在Label1的OnMouseUp事件里添加  move:=false;
在Form1的OnMouseMove事件里添加 if move then begin Label1.Left:=X;  Label1.Top:=Y; end;
可在运行的时候为什么我在Label1上按住右键并在窗体上拖动,那个Label1控件就跟着移动,而在Label1上按住左键在窗体上拖动,那个Label1控件却不跟着动,这是为什么呀   要是我想实现左键和右键一样的效果,我该怎么做呢,都出现刚才按住右键时的效果,需要设置什么属性么

解决方案 »

  1.   

    MouseDown的事件参数中有一个Button参数,表示那一个鼠标那个键被按下
    可以从这里入手
      

  2.   

    不过你的if move then begin Label1.Left:=X; 会有一点不自然哦,你按住Label中间时,Label的左上角突然变到你的鼠标位置了。应该再改改
      

  3.   

    ?? 是我没说明白么  我是要用左键拖动Label1的时候和右键拖动的一样效果呀  我要的是效果  就是不管我是否按住左键或右键   Label1控件都跟着鼠标移动    就是这个效果
      

  4.   

    不如将你的TLabel控件换成一个TWinControl的子控件如TStaticText等, 然后用以下方法实现:
    procedure TForm1.StaticText1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
      ReleaseCapture;
      StaticText1. Perform(WM_SYSCOMMAND, $F012, 0);
    end;