可以用程序动态添加qrlabel,不过有点麻烦。待会我给你发点思路说明。
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
             毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
  I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
I.Desire := '加不加分随你';
—————————————————————————————————
       

解决方案 »

  1.   

    你做一个临时用来打印的dataset
    让他固定五个记录,用quickreport最简单的rbDetail方法
    就可以了
      

  2.   

    假设每行显示Col个qrlabel,那么定义一个2维动态数组:
    qrlabels: Array of Array[1..Col] of TQRLabel;根据记录数和你的报表版面设置,可以计算出你的5行qrlabel的位置(可以用一个公式表示)。
    那么在QReport的beforPrint事件中,把数组qrlabels放到报表页面上即可了:
    SetLength(qrlabels,空白行数);
    for I:= 0 to 空白行数 do
      for J:= 0 to Col do
      //动态创建qrlabels的每个元素,并设置它的Parent、Left、Top、Caption即可!
    —————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
    I.Desire := '加不加分随你';
    —————————————————————————————————
           
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    a:tcomponent;
    i,j,k:integer;
    begin
        k:=0;
        for i:=0 to 4 do
        begin
            if query1.eof then
            begin
                for j:=0 to 3 do
                begin
                    a:=findcomponent('qrlabel'+inttostr(k*4+j+1));
                    tqrlabel(a).caption:=query1.fields[j].asstring;
                end;
            end
            else begin
                for j:=0 to 3 do
                begin
                    a:=findcomponent('qrlabel'+inttostr(k*4+j+1));
                    tqrlabel(a).caption:=query1.fields[j].asstring;
                end;
            end;
            k:=k+1;
            query1.next;
        end;
    end;没试过