Lazarus 中使用Grid++Report报表控件 的简单例子

时间:2022-04-06 20:50:31

Grid++Report安装到Lazarus后,Grid++Report的查询显示器,打印预览器,报表主对象和报表设计器的的相关命令要通过OleServer来具体调用。除此之外,使用方法与在Delphi中没有区别。



如:

 AxcGridppReport1.OleServer.LoadFromFile('d:\1.grf'); //读入一个报表模板 ,中间加了OleServer


Form1的lfm文件:

object Form1: TForm1
  Left = 234
  Height = 421
  Top = 134
  Width = 633
  Caption = 'Form1'
  ClientHeight = 421
  ClientWidth = 633
  OnShow = FormShow
  LCLVersion = '1.0.10.0'
  WindowState = wsMaximized
  object AxcGRDisplayViewer1: TAxcGRDisplayViewer
    Left = 0
    Height = 365
    Top = 56
    Width = 633
    Align = alClient
    AutoSize = True
    TabOrder = 0
    UseDockManager = False
    Active = False
    OnContentCellDblClick = AxcGRDisplayViewer1ContentCellDblClick
  end
  object AxcGridppReport1: TAxcGridppReport
    Left = 200
    Height = 24
    Top = 8
    Width = 24
    TabOrder = 1
    UseDockManager = False
    Active = False
    OnExportEnd = AxcGridppReport1ExportEnd
  end
  object Panel1: TPanel
    Left = 0
    Height = 56
    Top = 0
    Width = 633
    Align = alTop
    ClientHeight = 56
    ClientWidth = 633
    TabOrder = 2
    object Button1: TButton
      Left = 24
      Height = 25
      Top = 8
      Width = 115
      Caption = '展示报表'
      OnClick = Button1Click
      TabOrder = 0
    end
    object Button2: TButton
      Left = 160
      Height = 25
      Top = 8
      Width = 107
      Caption = '设计报表'
      TabOrder = 1
      Visible = False
    end
  end
end

Unit单元文件:

unit Unit1;


{$mode objfpc}{$H+}


interface


uses
  Classes, SysUtils, FileUtil, grproLib_5_0_TLB, RTTICtrls, RTTIGrids, Forms,
  Controls, Graphics, Dialogs, StdCtrls, ExtCtrls;


type


  { TForm1 }


  TForm1 = class(TForm)
    AxcGRDisplayViewer1: TAxcGRDisplayViewer;
    AxcGridppReport1: TAxcGridppReport;
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    procedure AxcGRDisplayViewer1ContentCellDblClick(Sender: TObject;
      pSender: IGRColumnContentCell);
    procedure AxcGridppReport1ExportEnd(Sender: TObject;
      pOptionObject: IGRExportOption);
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;


var
  Form1: TForm1;


implementation


{$R *.lfm}


{ TForm1 }
procedure TForm1.FormShow(Sender: TObject);
begin
  AxcGRDisplayViewer1.Active:=true;
  //激活报表COM组件,带有界面的Com组件要执行本命令才会显示在Form中
end;






procedure TForm1.AxcGridppReport1ExportEnd(Sender: TObject;
  pOptionObject: IGRExportOption);
begin
  self.Caption:='导出数据成功';   //测试主报表事件是否生效
end;


procedure TForm1.AxcGRDisplayViewer1ContentCellDblClick(Sender: TObject;
  pSender: IGRColumnContentCell);
begin
  ShowMessage(pSender.DataField);
  //报表查询显示器内容格双击事件中取出内容格关联的字段名称
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if AxcGRDisplayViewer1.OleServer.Running then  AxcGRDisplayViewer1.OleServer.Stop;
   AxcGRDisplayViewer1.OleServer.ShowToolbar:=true;  //显示报表工具条
   AxcGridppReport1.OleServer.LoadFromFile('d:\1.grf'); //读入一个报表模板
   AxcGRDisplayViewer1.OleServer.Report := AxcGridppReport1.OleServer;//报表关联到AxcGRDisplayViewe(查询显示器控件)
   AxcGRDisplayViewer1.OleServer.Start; //启动报表
end;


end.


附一个运行效果图片:


Lazarus 中使用Grid++Report报表控件 的简单例子