请教怎么把一个grid中的数据都打印出来,谁有源码最好。

解决方案 »

  1.   

    是什么grid呀﹐是dbgrid嗎﹖
    我這樣做過﹐把dbgrid對應得adoquery查詢出的數據傳送給fastreport﹐然后打印出來﹐
    打印出來的數據就是dbgrid上顯示的數據﹐其實dbgrid只是一個顯示的外殼而已。不知道你需要的是不是這樣的效果﹐幫你頂先
      

  2.   

    没有明白你的意思,猜想了一下 给出以下几点建议:
    1.要是单独做报表的话,可以用FastReport等报表控件, 连接Grid(你说的)的dataset 打印输出即可.
    2.直接打印表格的内容,可以用表格控件,如ehlib ,DevExpressd]等倥件,建议使用后者,报表的速度不可想象的快! 
    ...
      

  3.   

    如果是dbgrid 请用 fastreport中的TfrPrintGrid控件 其他的你也就参照这个控件的源码自己改吧
      

  4.   

    http://www.2ccc.com/article.asp?articleid=2528
    倒出到excel
      

  5.   

    不好意思,没有说清楚,我是想把一个stringgrid中的数据都打印出来。各位高人,还有什么高招吗。
      

  6.   

    转帖:设置fruserDataSet1.RangeEnd := ReBegin;
    设置fruserDataSet1.RangeEnd := ReCount;
    打印按钮事件
    fruserDataSet1.RangeEndCount := Grid1.RowCount - 1; 
      try
        frReport1.Title := showTitle;
        frReport1.ShowReport ;
      except
        MyShowErrMessage('打印时发生错误! ');
      end;procedure TFormYearPlan.frReport1GetValue(const ParName: String;
      var ParValue: Variant);
    var
      i : integer;
    begin
      for i := 0 to Grid1.VisibleColCount - 1 do    
        if ParName = 'Cell' + intToStr(i)  then
        begin
          try
            ParValue := Grid1.Cells[i, fruserDataSet1.RecNo + 1];
            break;
          except
            ParValue := '';
            break;
          end;
        end;  if ParName = 'Pages' then
      begin
        ParValue := PagesTitle;
      end;
      if ParName = 'Title' then
      begin
        ParValue := showTitle;
      end;
      if ParName = 'Company' then
      begin
        ParValue := g_sPlantName;
      end;
    end;