delphi 可移动矩形框

unit   Unit1;
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs;  
   
  type  
      TForm1   =   class(TForm)  
          procedure   FormPaint(Sender:   TObject);  
          procedure   FormMouseMove(Sender:   TObject;   Shift:   TShiftState;   X,  
              Y:   Integer);  
          procedure   FormMouseDown(Sender:   TObject;   Button:   TMouseButton;  
              Shift:   TShiftState;   X,   Y:   Integer);  
          procedure   FormMouseUp(Sender:   TObject;   Button:   TMouseButton;  
              Shift:   TShiftState;   X,   Y:   Integer);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
  var  
      Form1:TForm1;
      currect:TRect;
      Capturing:Bool=false;
      dx,dy:integer;
   
  implementation  
   
  {$R   *.dfm}  
   
procedure   TForm1.FormPaint(Sender:   TObject);
begin
      form1.Canvas.Brush.Style:=bsclear;  // 空心矩形框
      form1.Canvas.Rectangle(currect);
end;

procedure TForm1.FormMouseMove(Sender:TObject;Shift:TShiftState;X,Y:Integer);
  var
      pt:TPoint;
  begin
      pt.X:=X;
      pt.Y:=Y;
      if   PtInRect(currect,pt)   then
      begin  
          screen.Cursor:=crHandPoint;
      end  
      else
      begin
          screen.Cursor:=crDefault;
      end;  
   
      if  (Capturing)   and   PtInRect(currect,   pt)    then
      begin  
          currect:=Rect(x-dx,
                        y-dy,
                        x-dx+(currect.Right-currect.Left),
                        y-dy+(currect.Bottom-currect.Top));
          form1.Refresh;  
      end;  
  end;  
   
  procedure   TForm1.FormMouseDown(Sender:   TObject;   Button:   TMouseButton;
      Shift:   TShiftState;   X,   Y:   Integer);  
  begin  
      Capturing:=true;
      dx:=X-currect.Left;
      dy:=Y-currect.Top;
  end;  
   
  procedure   TForm1.FormMouseUp(Sender:   TObject;   Button:   TMouseButton;
      Shift:   TShiftState;   X,   Y:   Integer);  
  begin  
      Capturing:=false;
  end;
   
  initialization  
      currect:=Rect(0,   0,   100,   100);
   
  end.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值