控件有自己的拖动事件,在其中输入改变控件的width及height属性的代码即可,要改变其位置则修改top及left属性。

解决方案 »

  1.   

    to xp2001:能不能说具体点?
      

  2.   

    自己派生一个TCustomButton的Button类,处理WM_NCHITTEST消息
      

  3.   

      TMyButton = class (TButton)
      public
         ....
         procedure WMNcHitTest(var Msg: TWMNcHitTest); message WM_NcHitTest;......
    ......
    procedure TMyButton.WMNcHitTest(var Msg: TWMNcHitTest); 
    var
      Pt: TPoint;
    begin
      Pt := Point(Msg.XPos, Msg.YPos);
      Pt := ScreenToClient(Pt);
      if (Pt.x < 5 ) and (Pt.y < 5) then
        Msg.Result := htTopLeft
      else if (Pt.x > Width - 5) and (Pt.y < 5) and
        Msg.Result ;= htTopRight
      else if (Pt.x > Width - 5) and (Pt.y > Height - 5) then
        Msg.Result := htBottomRight
      else if (Pt.x <5) and (Pt.y > height - 5) then
        Msg.Result := htBottomLeft
      else if (Pt.x < 5) then
        Msg.Result := htLeft
      else if (Pt.y < 5) then
        Msg.Result := htTop
      else if (Pt.x > Width - 5) then
        Msg.Result := htRight
      else if (Pt.y > Height - 5) then
        Msg.Result := htBottom
      else
        inherited;
    end;