fastreport动态打印dbgrid列 
打印显示列,不显示的不打印;或者自己设置哪些列打印,哪些不打印。

解决方案 »

  1.   

    是否可以再DBGRID的数据源中写SQL语句,然后在打印?我是这么想的。
      

  2.   

    将FRPRINTGRID的DBGRID设为你的GRID,根据需要设置  
      PAGEHEADER、PAGEFOOTER等,直接打印:  
      frprintgrid.BuildReport;  
      frPrintGrid.Report.PrepareReport;  
      frprintgrid1.Report.PrintPreparedReport('1',1,TRUE,FRall);
      

  3.   

    然后在frxReport的beforereport里写就好了吧。
      

  4.   


    FRPRINTGRID这个东东,我找了N久,就是delphi里面没有这个控件啊?
      

  5.   

    fastreport里面的组件啊,在fastreport组件页里面
      

  6.   

    我只有FastReport 2.5里面就有这个组件,不知道你用的是哪个版本
      

  7.   

    FastReport 4.2
    我是想让客户可以自己选择打印哪几列!
      

  8.   

    FastReport 4.2 里面有frprintgrid组件没有,有的话满足你的要求么?
      

  9.   

    没有!
    我在网上搜过,用frprintgrid可以实现,但我没有找到,就发贴救助了~~~
      

  10.   

    那我就不给你发了,下面的代码打印时隐藏了col1列
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, DB, DBClient, FR_PTabl, Buttons, Grids, DBGrids;type
      TForm1 = class(TForm)
        Button1: TButton;
        frPrintGrid1: TfrPrintGrid;
        ClientDataSet1: TClientDataSet;
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        BitBtn1: TBitBtn;
        procedure Button1Click(Sender: TObject);
        procedure BitBtn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      self.ClientDataSet1.Close;
      self.ClientDataSet1.FieldDefs.Add('Col1',ftString,10);
      self.ClientDataSet1.FieldDefs.Add('Col2',ftString,10);
      self.ClientDataSet1.FieldDefs.Add('Col3',ftString,10);
      self.ClientDataSet1.CreateDataSet;  self.ClientDataSet1.AppendRecord(['1','1','1']);
      self.ClientDataSet1.AppendRecord(['1','1','1']);
      self.ClientDataSet1.AppendRecord(['1','1','1']);
      self.ClientDataSet1.AppendRecord(['1','1','1']);
      self.ClientDataSet1.AppendRecord(['1','1','1']);
    end;procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      self.DBGrid1.Columns[0].Visible:=false;
      self.frPrintGrid1.DBGrid:= self.DBGrid1;
      self.frPrintGrid1.BuildReport;
      self.frPrintGrid1.Report.PrepareReport;
      self.frPrintGrid1.ShowReport;
      self.DBGrid1.Columns[0].Visible:=true;
    end;end.
      

  11.   

    郁闷!
    我用的dbgridEh!frprintgrid它只能用dbgrid!
    不知还有其它办法没有?
      

  12.   

    楼上的朋友,你可以通过SQL语句来进行啊,你在打印之前,再SELECT一次想要的数据不就行了,想打印哪一列,就SELECT哪一列啊,你DBGRID的东西,还不是一样通过数据库来获取的。
      

  13.   

    fastreport demo里有  利用pascalscript实现,可参考一下