一个动态生成QRDBText的例子
procedure CreateQRText(ParentBand: TQRBand);
var
  i:integer;
begin
  SetLength(QRText,ParamNumber);
  for i:=0 to ParamNumber-1 do
  begin
    QRText[i]:=TQRDBText.Create(self);
    QRText[i].Parent:=ParentBand; //关键
    QRText[i].ParentFont :=true;
    QRText[i].Alignment :=taCenter;
    QRText[i].DataSet :=ClientDataSet1; //关键    QRText[i].Top :=2+i;
    QRText[i].Left :=DetailShape[i+1].Left+ iPerwidth div 2- QRText[i].Width div 2;
  end;
  其中注释关键的地方是一定要设的

解决方案 »

  1.   

    其实用QRExprMemo就可以解决你的问题。
    例如:
    需要竖着显示三个字段A,B,C
    A
    B
    C
    你可以QRExprMemo.lines在中写
    {A}
    {B}
    {C}
    这样就不用放上3个QREditText了。
    当A没数据的时候,不会留下空当的。
      

  2.   

    1, 我觉得你的思路好像不是很对,隐藏的列不显示出来? 你设计的时候是否已经控制好了其是否隐藏,如果是在运行期动态进行调整,它们的位置信息你必须通过手动进行设置,形如 NightCloud() 的代码;
    2。进行自动换行一般来讲也不是完全自动的,因为中文字和英文字不同,一般的报表进行自动换行是根据中间的‘空格’进行的,所以,要么你自己给字段值加一个空格,或者加一个回车;
       一般如下,设autosize为false, 高度要拖成两倍高,或者动态设置,在onprint里对字段长度进行分解;
    3。现在国人喜欢用的报表中用得最多的我看应该是fastreport,reportbuild也很好,但生成文件特大,这些以前在gxg.3322.net见过,你去看看吧