我把QRBand设定为rbDetail了后,为何只能根据重新数据库的记录数来打印行数,我想人工换行固定为5行,人工给dbtext赋值行不行?dbtext只能从数据库中读数啊?

解决方案 »

  1.   

    当然可以,它有个事件,
    你只要修改value的值就可以了
      

  2.   


    procedure Tfrm_jjzbk_print.DetailBand1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    begin
      if xmxh<>exe.fieldbyname('xmxh').AsString then
      begin
      xmxh:=exe.fieldbyname('xmxh').AsString;
      main_rep.NewPage; //强制换页
      end
    end;
      

  3.   

    ////换行的过程
    Procedure Tprint_f.autochangerow(wide: integer;var value: string);
    var
       temparr:array of string;
       widelen,i,j:integer;
       s:widestring;
    begin
       j:=1;
       s:=value;
       widelen:=length(s);
       setlength(temparr,j);
       temparr[0]:='';
       for i:=1 to widelen do
          begin
             if length(temparr[j-1])+length(s[i])>wide then
                begin
                   j:=j+1;
                   setlength(temparr,j);
                   temparr[j-1]:=s[i];
                end
             else
                begin
                    temparr[j-1]:=temparr[j-1]+s[i];
                end;
          end;
       s:='';
       for i:=0 to length(temparr)-2 do
           s:=s+temparr[i]+chr(13);
       value:=s+temparr[length(temparr)-1];
       temparr:=nil;
    end;
    ///要换行的quickreport中的lable或text
    procedure Tprint_f.QRDB_opinionPrint(sender: TObject; var Value: String);
    begin
      self.autochangerow(200,value);
    end;