procedure DragControl(aControl:TWincontrol);
const sc_dragmove=$f012;
begin
 releasecapture;
 acontrol.Perform(wm_syscommand,sc_dragmove,0);
end;

解决方案 »

  1.   

    拦截OnMouseDown,OnMouseMove,OnMouseUp事件。
      

  2.   

    用ListView不就可以了吗?为什么要做成按扭呢,
      

  3.   


    procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if SSCtrl in Shift then begin
         SetCapture(Button1.handle);
         Capturing:=true;
         MouseDownSpot.x:=x;
         MouseDownSpot.y:=y;
         end;
    end;procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
       if Capturing then begin
          Button1.left:=Button1.left-(mousedownspot.x-x);
          button1.top:=button1.top-(mousedownspot.y-y);
          end;
    end;procedure TForm1.Button1Mouseup(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
       if capturing then begin
          releasecapture;
          capturing:=false;
          button1.left:=Button1.left-(mousedownspot.x-x);
          button1.top:=button1.top-(mousedownspot.y-y);
          end;
    end;
    按住ctrl键就可移动button1.
      

  4.   

    请教Kingron(WinAPI)如何在自编组件中实现