在delphi环境中,移动控件时会出现一个黑框,和控间大小一致,如何实现?

解决方案 »

  1.   

    在Canvas上画出来的。
    给你一段没有头尾的代码,今天有点累,懒的整理。看你也是猩猩,看懂应该没有问题,自己看吧,不难。
        curPoint:TPoint;
        oldPoint:TPoint;
        Canvas:TCanvas;procedure TPosBaseForm.FormMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    var
      p :TPoint;
    begin
         
      if  (ssLeft in Shift) then
      begin
        if WindowState = wsMaximized then
        begin
          CanMove := False;
          exit;
        end
        else  canmove:=true;
        Canvas:=TCanvas.Create;
        with Canvas do
        begin
          pen.Style :=psdot;
          brush.Style :=bsClear;
          pen.Width :=2;
          Pen.Mode :=pmNotXor;
          Handle :=GetDC(0);
          p := ClientToScreen(Point(Left,Top));
          Rectangle(P.x-Left,P.Y-Top,P.X-Left+width,P.Y-Top+height);
          curPoint.X :=X;
          curPoint.Y :=Y;
          oldPoint.X :=P.x-Left;
          oldPoint.Y :=P.Y-Top ;
        end;
      end
    end;