procedure TPrintLbl.Button1Click(Sender: TObject);
begin
    frUserDataset1.RangeEnd := reCount;
    frUserDataset1.RangeEndCount := QueryGrid.RowCount ;
    frReport1.ShowReport;
end;procedure TPrintLbl.frReport1GetValue(const ParName: String;var ParValue: Variant);
var i : integer;
begin
    if trim(ParName) = 'cell4' then ParValue := QueryGrid.Cells[1,frUserDataset1.RecNo];
end;因为QueryGrid有一个fixed row,所以在frUserDataset1.RangeBegin里面是默认的rbFirst,也就是fixed row的内容了,如何才能让他从第二行开始打印呢???

解决方案 »

  1.   

    把frUserDataset1.RangeBegin 设为 rbCurrent打印时设置
    frUserDataset1.DataSet.RecNo := 2;
      

  2.   

    procedure TPrintLbl.Button1Click(Sender: TObject);
    begin
      frUserDataset1.RangeBegin := rbCurrent;
      frUserDataset1.RangeEnd := reCount;
      frUserDataset1.RangeEndCount := QueryGrid.RowCount - 1 ;
      //把数据定位到第二条记录
      frReport1.ShowReport;
    end;
      

  3.   

    没有frUserDataset1.DataSet.RecNo 
    只有frUserDataset1.RecNo
    且frUserDataset1.RecNo是只读属性
      

  4.   

    不好意思,我用的是frDBDataSet控件!
    不过方法应该是一样,你把frUserDataset换成frDBDataSet应该可以!我的系统中都有这样用!
    然后再用上面的方法,一定可以!
    procedure TPrintLbl.Button1Click(Sender: TObject);
    begin
      frDBDataSet.RangeBegin := rbCurrent;
      frDBDataSet.RangeEnd := reCount;
      frDBDataSet.RangeEndCount := QueryGrid.RowCount - 1 ;
      //把数据定位到第二条记录
      frReport1.ShowReport;
    end;
      

  5.   

    可是我用的是stringgrid啊?我没有和数据集绑定!,你所说的用frDBDataSet + stringgrid试过,不可以。
      

  6.   

    楼主这样试试:
    procedure TPrintLbl.Button1Click(Sender: TObject);
    begin
      frDBDataSet.RangeBegin := rbCurrent;
      frDBDataSet.RangeEnd := reCount;
      frDBDataSet.RangeEndCount := QueryGrid.RowCount - 1 ;
      QueryGrid.Col := 1;
      QueryGrid.Row := 2;
      frReport1.ShowReport;
    end;