我用的是quickreport的detailband读取数据,在detail里放了一个QRDBRichtext,当该字段内容比较多时,QRDBRichtext就自动换到下一行,detailband也随着拉宽,问题就在这里,为什么有两行数据的detailband与下一行的间隔大于只有一行的detailband之间的距离,这样使整个报表有的地方空的宽,有的地方空得窄,请问各位有什么好办法解决吗?

解决方案 »

  1.   

    function TForm1.AutoNextRow (TextStr : String; TextWidth : Integer) : String;
    var
      TextMemo : TMemo;
      I : Integer;
      ResultStr : String;
    begin
      TextMemo := TMemo.Create(nil);
      TextMemo.Parent := Form1;
      TextMemo.Width := TextWidth;
      TextMemo.Text := TextStr;
      For I :=0 to TextMemo.Lines.Count-1 do
      begin
        ResultStr := ResultStr + TextMemo.Lines.Strings[I] + ' ';//此处为一空格
      end;
      //TextMemo.Free;
      Result := ResultStr;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      QRLabel1.Caption := AutoNextRow (ADOQuery1.FieldByName('Memo').AsString, QRLabel1.Width);
    end;
      

  2.   

    注意设置:
      QRLabel1.WordWrap := True;
      QRLabel1.AutoSize := False;
      QRLabel1.Height := 你想要的高度;
      QRLabel1.Width := 你想要的宽度;
      

  3.   

    搞忘了,最后是要 TextMemo.Free;的