拖TWinControl的代码对TGraphicControl(比如TLabel)无效 因为TGraphicControl无法接收鼠标焦点 无法拖,我需要代码

解决方案 »

  1.   

    它没有句柄,无法用Perform拖动,用下面方法,会有一些闪动:
    var
      ox, oy: Integer;
      df: Boolean = false;
      ...
    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      df := true;
      ox := Mouse.CursorPos.X;
      oy := Mouse.CursorPos.Y;
    end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      if df and (Shift = [ssLeft]) then
      begin
        Image1.Left:= Image1.Left -ox + Mouse.CursorPos.X;
        Image1.Top:= Image1.Top -oy + Mouse.CursorPos.Y;
        ox := Mouse.CursorPos.X;
        oy := Mouse.CursorPos.Y;
      end;
    end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      df := false;
    end;
      

  2.   

    加self.DoubleBuffered := true;在Form的OnCreate中,拖动时就不会闪动了