1、rbPageHeader表头信息第一页不能显示?,每页如何显示:当前页/总页数?
2、rbPageFooter页脚信息最后一页不能显示?
3、rbDetail数据信息QRDBText固定了显示宽度与高度,随QRDBText信息的多少自动换行或缩小字体?
4、最后一页怎么合计rbDetail数据信息几列的数值?

解决方案 »

  1.   

    1、rbPageHeader表头信息第一页不能显示?每页如何显示:当前页/总页数? 
    rbPageHeader属性设置为True,每页可以用QRSysData统计当前页/总页数
    2、rbPageFooter页脚信息最后一页不能显示? 在属性设置为True
    3、rbDetail数据信息QRDBText固定了显示宽度与高度,随QRDBText信息的多少自动换行或缩小字体?
     换行好像不行,受格子大小限制,字体大小可以自己设置.4、最后一页怎么合计rbDetail数据信息几列的数值? 把HasSummary属性设置为True,再加QRExpr统计.
      

  2.   


    我用的是Delphi7.0企业版
    请问一下:
    1与2是哪个属性?(我用的是:QRBand,并在它的BandType属性设置为rbPageHeader与rbPageFooter,你说的属性是指哪一个设置为True?)
    QRSysData好像只能设置当前页,不知道总页数怎么设置?
    当QRDBText信息里如"CG125-8磁电机"等信息,为什么只显示"CG125-",减号之后的内容就显示不出来了?
      

  3.   

    问题4:由于数据集Adoquery1在Form3窗体中,而打印窗体是Form7,所以打印窗体QRExpr组件找不到需要计算的字段,怎么办?
      

  4.   

    3、rbDetail数据信息QRDBText固定了显示宽度与高度,随QRDBText信息的多少自动换行或缩小字体? 
    ---用QRRichText,自己調整QRRichText.Height 和rbDetail.HeightrbDetailBeforePrint:
    QRRichText.Lines.Text := Adoquery1.FieldByName('xxx').AsString;
    QRRichText.Height := QRRichText.Lines.Count*18; //18每一行的高度
    rbDetail.Height   := QRRichText.Height;
      

  5.   

    以自动换行,要缩小字体可以试加上: QRRichText.Font.Size := 10;
      

  6.   

    解决了:   
      1、首先,做一个函数控制字符串换行;   
      Function   MitiLine   (Str:String;N:Integer):String;   
      var   L,I:Integer;   
              Strs:String;   
      Begin   
              L:=Length(Str);   
              L:=Round(L/N+0.5);   
              If   L=0   Then   
              begin   
                          Result:=Str;   
                          Exit;   
              End;   
              For   I:=1   To   L   Do   Strs:=Strs+Copy(Str,N*(I-1)+1,N)+#13;   
              Result:=Strs;   
      End;   
        
      其中:Str是要控制的字符串,N是一行显示的字符数(注意汉字为双字符)。   
        
      2、然后,在报表打印前调用该函数。   
      如:   
          QRDBText1.Caption:=MitiLine(QRDBText1.Caption,24);   
          Preview;   
      这样就可以了。   
      

  7.   

    关于自动换行,采用下面的代码更完美一些:
     procedure   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;   
        
      在QRDBText的ONPRINT事件中写如下代码   
      procedure   Tshaminputrptform.qrdbtxt_namePrint(sender:   TObject;   
          var   Value:   String);   
      begin   
            autochangerow(39,value);   
      end;   
      函数中WIDE参数为一行长度,汉字不会乱码