如何让quickrep中的QRDBtext自动换行,我设了wordwrap属性为TRUE,但为什么还是不行?

解决方案 »

  1.   

    在delphi的qreport员没有dbmemo这个控件啊,如果用data controls中的dbmemo控件,该怎么用啊
      

  2.   

    认为地控制换行,在字符窜中间加会撤换行符,如:leftstr(str,30)+chr(13)+chr(10)+rightstr(str...
      

  3.   

    认为地控制换行,在字符窜中间加回车换行符,如:leftstr(str,30)+chr(13)+chr(10)+rightstr(str...
      

  4.   

    *以下内容,我在C++ Builder 5中测试通过,你只要将它改为Delphi代码即可。将 -> 改为 . (访问属性/方法)
    将 = 改为 := (赋值)
    将 int h,cH,d; 改为  h,ch,d:Integer;QuickReport中有些显示的数据过长,会出现被后面显示的数据覆盖或覆盖后面的数据的情况。对于这种情况,只有使该字符串自动换行,才能彻底解决问题。控件TQRText, TQRMemo, TQRExpr, TQRDBText等都有 WorWrap 属性,可以通过该属性,改变控件的高度,达到换行目的。[步骤]
    1.在Report创建的时候,记录下需要 调整高度的孔件 原始高度。[Create]
    oldHQR=DetailBand->Height;2.在控件的 OnPrint事件中,利用报表本身的Canvas计算字符串所占的宽度像素(代码中,默认为报表的字体与本身控件的字体完全一样)。[OnPrint]
    int h,cH,d;
    cH=oldHQR; h=this->Canvas->TextWidth(Value); //计算字符串所占的宽度
     if(h>QRExpr1->ClientWidth)
        {
         d=h/QRExpr1->ClientWidth+((h%QRExpr1->ClientWidth >0)? 1:0);
         //cH;
         QRExpr1->Height=cH*d;
         QRGroup1->Height=oldHGroup+cH*(d-1);
        }
     else
        {
         QRExpr1->Height=oldHQR;       //恢复原高度,否则,它会一致沿用上一条数据的高度
         QRGroup1->Height=oldHGroup;
        }
     QRShape1->Top=QRGroup1->Height-2-QRShape1->Height; 
      

  5.   

    加一句,我用的 TQRExpr 测试的.
      

  6.   

    如果我用qrdbtext该怎么换行啊哎。
      

  7.   

    autowidth不能为true, 
    另外,QR的东东不能支持中文自动换行,只对E文起作用
    --也就是说,自动换行只发生在有空格的位置。这是我在用Delphi 3时的情况,现在已经不用QR了,不知道有没有改进。
      

  8.   

    换控件吧!delphi自带的这套不能实现!很麻烦!用fastreport的memo很容易办到!
      

  9.   

    TQRExpr 可以替代 TQRDBText 功能:比较两者的用法:[TQRExpr:]TMyReport.DataSet:=<MyReportDataSet>;
    TQRExpr.Expression:=<字段名称>;[TQRDBText:]TQRDBText.DataSet:=<MyReportDataSet>;
    TQRDBText.FieldName:=<字段名称>;你只要将TQRExpr.AutoSize:=false; 并将它的宽度在设计时调好即可。我用中文简单测试过 TQRExpr 它的自动换行没有问题。如果你一定需要使用 TQRDBText,你可以用类似办法测试一下,看它是否可行1.Autosize:=false;
    2.设计阶段调整好 宽度
    3.WordWrap:=true;
    4.使用前面的代码,调整 TQRDBText 的高度。*原理:字符串长度,可以用 TCanvas.TextWidth(xxx) 得到相同字体,字符集条件下所占用的像素 L
     原来的 TQRDBText的宽度为  oldW
     n:=L % oldW 可以得到字符串应该有多少行.
    如果 L mod oldW 大于 0 
     n:=n+1;
    将DetailBand.Heigth=(old DetailBand.Height)+oldH*n 即可。
      

  10.   

    参看解答。
    http://expert.csdn.net/Expert/topic/1302/1302834.xml?temp=.5754206
      

  11.   

    请在我网站下载:
    支持文本框的自动换行功能,著名的QR3.06版报表控件。
    http://sanjianxia.myrice.com/delphi/index2.htm
    我多次使用没有发现问题.