问题是这样的:我在做报表,当然也要实现打印功能了,这涉及到排版的问题。限制条件:要用QReprot做报表。对方的要求是:能自己排版,比如有一个QRLable的控件,用户可以把这个控件移动到QuickRep中任何一个位置。但QRLable又不像TLable那样有MouseDown、MouseUP、MouseMove等鼠标事件。那么请问这样的代码应该如何写呢?

解决方案 »

  1.   

    楼上说得很深奥啊,不知道有何深意。我比较浮浅,只想到了思路:是否可以的话把TLabel的Mouse三个属性原代码改一下复制到TQRLabel中。不知道行不行,纯粹过来凑热闹。但是如果真的可以的话请各位豪侠们不要吝啬才华,出来详细地展示一下咯。
      

  2.   

    TLable也是不能移动的,它没Handle,用TStaticText吧把StaticText覆盖到QRLable上面,当StaticText移动的是同步修改QRLabel的位置
      

  3.   

    procedure TForm1.StaticText1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
      if Button = mbLeft then//按下鼠标左按钮
      begin
        QRLabel1.Hide;
        PostMessage((Sender as TWinControl).Handle, WM_SYSCOMMAND, SC_MOVE or 2, 0);
        ReleaseCapture;
      end;
    end;procedure TForm1.StaticText1MouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    begin
      QRLabel1.Left := (Sender as TWinControl).Left;
      QRLabel1.Top := (Sender as TWinControl).Top;
      QRLabel1.show;
      (Sender as TWinControl).BringToFront;
    end;