TQRMEMO
让它自动换行,我们用了没问题啊好象是该字段
property AutoStretch : Boolean

解决方案 »

  1.   

    我是在一个sub detail band中做的
    用的一个TQRExprMemo Lines= {字段名称}
    属性如下:
            AutoSize = True
            AutoStretch = True
            Lines.Strings = (
              '{ADOTBCIItem.REMARKS}')
            WordWrap = True
    可是得不到换行的效果
    AutoSize = False 也不行
      

  2.   

    可以这样做:
    看看代码,我没有时间说得很详细!sorry!
    Procedure SetStrToLines(const str1:string); // 自定义方法,对字数过多的换行
    var   { 还没有考虑英文字符跟中文的关系,以及全角半角的问题 }
      iLength,iCenter,i,m,n:integer;
    //  strI:array[0..100] of Integer;
    begin
    //  m:=0; n:=0;
      iLength:=Length(str1); // 字符总长度
      iCenter:=iLength div 2; // 总字数长度的一半
    {  FOR i:=1 to iLength do
          begin
          strI[i]:=Length(str1[i]);
          IF strI[i]=1 THEN  // 为英文字符,一个字节
             begin
             m:=m+1;
             end
          ELSE      // 为中文字符,两个字节
             begin
             n:=n+1;
             end;
          end;       }
      IF iLength>20 THEN // 如果10个汉字以上,一个汉字两个字节
         begin
         PrintFrm.QRLabel2.Caption:=Copy(Str1,1,20); // 前10个汉字为一行
         PrintFrm.QRLabel3.Caption:=Copy(str1,21,iLength-10); // 后面的汉字为一行
         end
      ELSE
         begin  // 如果汉字个数少于10个就只在一行上显示
         PrintFrm.QRLabel2.Caption:=str1;
         end;
    end;
    .
    .
    .
    procedure TPrintFrm.DetailBand1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    const FuS='%2f';
    var TempVar:Real48;
    begin  // 如果"单位"字段字数太多就给我换行
       setStrToLines(mainfrm.ADOQuery1.fieldbyname('单位').AsString);
       ...
       QRLabel4.Caption:=Format(Fus,[TempVar]);// 会自动四舍五入
    end;
      

  3.   

    或可以使用QRDBRichtext!!!会自动换!
      

  4.   

    我采用的方法是,首先添加一个dbmemo控件,设定好该控件的长宽,field为需要显示的字段,dataset是quickrep对应的dataset。然后在quickrep上放置一个qrmemo,长宽设定和dbmemo的相同。最后在quickrep对应的dataset的afterscroll事件中加入:qrmemo.text := dbmemo.text; 即可