uniGUI用Grid++Report报表插件设计保存报表(For unigui ver:0.95.0.1045)

2023-10-27

uniGUI的0.95.0.1045版本提供了CallbackUrl, 我们也可以用这个提供的回调网址来实现优秀的国产报表插件在IE\Chorme\FireFox中在线设计并保存报表到服务端的功能。

界面效果如下:


代码如下:

unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, uniGUITypes, uniGUIAbstractClasses,
  uniGUIClasses, uniGUIRegClasses, uniGUIForm, uniGUIBaseClasses, uniPanel,
  uniHTMLFrame,
  uniURLFrame, uniButton, uniLabel;

type
  TMainForm = class(TUniForm)
    UniHTMLFrame1: TUniHTMLFrame;
    Panle1: TUniPanel;
    btn1: TUniButton;
    lbl1: TUniLabel;
    procedure btn1Click(Sender: TObject);
    procedure UniFormAjaxEvent(Sender: TComponent; EventName: string; Params: TStrings);
  private
    procedure SetDeignReportHTML();
    { Private declarations }
  public
    { Public declarations }
  end;

function MainForm: TMainForm;

implementation

{$R *.dfm}

uses
  uniGUIVars, MainModule, uniGUIApplication, ServerModule;

function MainForm: TMainForm;
begin
  Result := TMainForm(UniMainModule.GetFormInstance(TMainForm));
end;

procedure TMainForm.btn1Click(Sender: TObject);
begin
self.SetDeignReportHTML;
end;

procedure TMainForm.SetDeignReportHTML;
var
  stringList: TStringList;
  LoadReportURL,DataURL, saveReportURL,BrowSertype: string;
  c: TUniClientInfoRec;

begin
  UniHTMLFrame1.HTML.Clear;
  LoadReportURL := 'POST::files/grf/1a.grf';
  DataURL :='files/data/xmlCustomer.xml';
  saveReportURL := UniSession.CallbackUrl('ReportSave', Self, []);
  stringList := TStringList.Create;

  try

    c := UniApplication.ClientInfoRec;
    BrowSertype :=   c.BrowserType;
    if (c.BrowserType = 'chrome') or (c.BrowserType = 'gecko') then
    begin
      stringList.Text :=
        ' <object id="ReportDesigner" type="application/x-grplugin-designer" '
         +'width="100%" height="100%">'
         +' <param name="LoadReportURL" value="' +LoadReportURL + '">'
         + '<param name="SaveReportURL"  value="' + saveReportURL +'">'
         +' <param name="DataURL" value="'+DataURL+'">'
         +' <param name="SerialNo" value="4DFB949E066NYS7W11L8KAT53SA177391Q9LZQ094WUT9C9J3813SX8PTQC4ALPB9UAQN6">'
         + '<param name="UserName" value="锐浪报表插件本机开发测试注册">'

         +' <param name="ViewStyle" value="15"></object>';

    end
    else if c.BrowserType = 'ie' then
    begin
      stringList.Text :=
        '<object width="100%" height="100%" id="ReportDesigner" '
         +'classid="clsid:3C19F439-B64D-4dfb-A96A-661FE70EA04D" '
         +'codeBase="grinstall/grbsctl5.cab#Version=5,8,13,715">'
         +'<param name="LoadReportURL" value="' + LoadReportURL + '">'
         +'<param name="DataURL" value="'+DataURL+'">'
         +'<param name="SaveReportURL"  value="' + saveReportURL +'">'
         +' <param name="SerialNo" value="4DFB949E066NYS7W11L8KAT53SA177391Q9LZQ094WUT9C9J3813SX8PTQC4ALPB9UAQN6">'
         + '<param name="UserName" value="锐浪报表插件本机开发测试注册">'
         +'<param name="ViewStyle" value="15"></object>';
    end;
    UniHTMLFrame1.HTML.Text := stringList.Text;
  finally
    stringList.Free;
  end;
end;

procedure TMainForm.UniFormAjaxEvent(Sender: TComponent; EventName: string; Params: TStrings);
var
  stringlist:TStringList;
  stringStream:TStringStream;
  FileName:string;
begin
  if EventName='ReportSave' then
  begin
    stringlist := TStringList.Create;
    stringStream := TStringStream.Create;
    try
      TMemoryStream(UniSession.ARequest.PostStream).SaveToStream(stringStream);
      stringlist.Add(stringStream.DataString);
      FileName := UniServerModule.StartPath+'/files/grf/1a.grf';
      //可以保存为文件,也可以根据需要保存到数据库中
      stringlist.SaveToFile(fileName);

    finally

      stringlist.Free;
      stringStream.Free;

    end;



  end;
end;

initialization

RegisterAppFormClass(TMainForm);

end.

Form文件的代码如下:

object MainForm: TMainForm
  Left = 0
  Top = 0
  ClientHeight = 369
  ClientWidth = 598
  Caption = 'uniGUI'#20013'Grid++Report'#35774#35745#24182#20445#23384#25253#34920#27169#26495
  Color = clBtnFace
  WindowState = wsMaximized
  OldCreateOrder = False
  MonitoredKeys.Keys = <>
  ClientEvents.UniEvents.Strings = (
    
      'window.beforeInit=function window.beforeInit(sender)'#13#10'{'#13#10'  Ext.u' +
      'seShims =true;'#13#10'}')
  OnAjaxEvent = UniFormAjaxEvent
  PixelsPerInch = 96
  TextHeight = 13
  object UniHTMLFrame1: TUniHTMLFrame
    Left = 0
    Top = 48
    Width = 598
    Height = 321
    Hint = ''
    AutoScroll = False
    Align = alClient
    Anchors = [akLeft, akTop, akRight, akBottom]
  end
  object Panle1: TUniPanel
    Left = 0
    Top = 0
    Width = 598
    Height = 48
    Hint = ''
    Caption = ''
    Align = alTop
    Anchors = [akLeft, akTop, akRight]
    TabOrder = 1
    object btn1: TUniButton
      Left = 3
      Top = 3
      Width = 102
      Height = 39
      Hint = ''
      Caption = #35774#35745#25253#34920
      TabOrder = 1
      OnClick = btn1Click
    end
    object lbl1: TUniLabel
      Left = 144
      Top = 14
      Width = 377
      Height = 28
      Hint = ''
      AutoSize = False
      Caption = #20445#23384#21518#65292#21487#20197#20877#27425#28857#35774#35745#25253#34920#65292#30475#26159#21542#25104#21151#20445#23384#20462#25913#30340#32467#26524
      TabOrder = 2
    end
  end
end

完整代码下载: 点击打开链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uniGUI用Grid++Report报表插件设计保存报表(For unigui ver:0.95.0.1045) 的相关文章

  • VS开发Qt程序,无法打印QDebug调试信息,VS进行Qt开发时Qt Designer无法使用“转到槽”选项

    VS开发Qt程序 无法打印QDebug调试信息 VS进行Qt开发时Qt Designer无法使用 转到槽 选项 VS开发Qt程序 无法打印QDebug调试信息 VS进行Qt开发时Qt Designer无法使用 转到槽 选项 VS开发Qt程序
  • EXTJS-textfield等组件宽度自适应

    外部组件属性 layout column 内部组件属性 layout form 并且加入defaults anchor 90 属性 var north new Ext FormPanel region north margins 0 0 2
  • Linux -TCP网络编程基础

    Linux TCP网络编程基础 一 套接字编程基础知识 1 套接字地址结构 2 用户层和内核层交互过程 二 TCP网络编程流程 1 TCP网络编程架构 2 创建网络插口函数socket 3 绑定一个地址端口对bind 4 监听本地端口lis
  • JAVA提高ZXING对图片中的二维码的识别率(第一弹)

    第二弹链接 https blog csdn net StrangeSir article details 93143177 背景 java开发 公司最近需要在对凭证识别的过程中加入二维码识别 在网上搜索后 选定了两款开源工具 分别是谷歌的Z
  • OpenMVS :用 colmap制作自己的数据集 重建(用colmap计算位姿,将位姿转为MVS需要的格式)

    1 采集图片 2 安装colmap 3 位姿计算 3 1 创建工程 3 2 特征提取与匹配 3 3 重建 3 4 保存位姿和稀疏点 4 将colmap位姿和稀疏点 转成MVS读取的格式 5 输入到OpenMVS稠密重建 6 OpenMVS
  • 过渡与变形(2)

    css3中制作动画的几个属性 css3中的变形 transform 过渡 transition 动画 animation 一 CSS3变形 transform 语法 transform none
  • 微信小程序 rich-text 富文本的解析显示

    背景 最近在开发学习 Uniapp 的过程中遇到了富文本的显示 对比了 微信小程序 中生成的代码 才发现原来微信官方早就开发了
  • jinfo 命令

    NAME jinfo Generates configuration information SYNOPSIS jinfo option pid 示例 jinfo 3245 转载于 https www cnblogs com imcati
  • 【AntDB数据库】AntDB数据库性能调优(一)

    操作系统 处理器 动态节能技术 cpufreq 是一个动态调整 CPU 频率的模块 可支持五种模式 为保证服务性能应选用 performance 模式 将 CPU 频率固定工作在其支持的最高运行频率上 不进行动态调节 操作命令为 cpupo
  • Node.js基础与进阶

    文章目录 Node js基础 1 Node js前言 1 Node出现的背景 2 V8引擎 2 Node js简介 1 什么是Node js 2 Node js的特点 3 Node js的应用方向 客户端与服务器 1 CS与BS 2 Web
  • ASP.NET实用技巧(一)

    作者 http www cnblogs com Kenny Jiang 来源 博客园 时间 2008 09 25 阅读 364 次 原文链接 收藏 本文主要介绍ASP NET编程中的一些常用方法 内容涉及代码技巧 性能优化等方面 1 跟踪页
  • map相关基础知识点

    1 count 判断键值元素是否存在
  • HyperLPR中文车牌识别

    转自 https blog csdn net djstavaV article details 86883931 原文出处 https xugaoxiang com 2019 12 16 hyperlpr 软硬件环境 Intel Xeon
  • String判断非空最全解析

    在校验一个String类型的变量是否为空时 通常存在3中情况 是否为 null 是否为 是否为空字符串 引号中间有空格 如 trim 方法会从一个字符串的两端删除空白字符 常用非空判断方法 String为空的三种状态 null 和new S
  • 找不到msvcp140.dll无法继续执行代码,怎么解决?

    MSVCP140 dll是一个Windows操作系统中的动态链接库文件 它是Microsoft Visual C Redistributable for Visual Studio 2015的一部分 这些库提供了一些C 程序所需的基本功能
  • altium dxp 选定区域铺铜或者填充

    altium dxp 选定区域快速铺铜或者填充 步骤如图 生成完后可以调整到你需要的层即可
  • 【python爬虫】4.爬虫实操(菜品爬取)

    文章目录 前言 项目 解密吴氏私厨 分析过程 代码实现 一 获取与解析 提取最小父级标签 一组菜名 URL 食材 写循环 存列表 代码实现 二 复习总结 前言 上一关 我们学习了用BeautifulSoup库解析数据和提取数据 解析数据的方

随机推荐

  • C++成员函数与非成员函数实现运算符重载

    目录 1 成员函数运算符重载 2 非成员函数 友元函数 运算符重载 3 运算符重载的禁区与规则 成员函数与非成员函数重载区别 区别 两种方式选择 特殊情况 4 运算符重载的禁区和规则 1 成员函数运算符重载 需求 规则 一斤牛肉 2斤猪肉
  • 03 - 大学生如何使用GPT

    大学生如何使用GPT提高学习效率 一 引言 在当今的高速发展的信息时代 大学生面临着越来越多的学习挑战 作为一种先进的人工智能技术 GPT为大学生提供了一种强大的学习工具 本文将介绍大学生在不同场景中如何使用GPT来提高学习效率 并给出一些
  • C++环形缓冲区的简单实现

    分享一个在工作中用到的简单的环形缓冲区 构造简单 可以改造到Qt中使用 也可以直接在VS下使用 所谓环形缓冲区 其实就是带有标识缓冲区中数据头 尾位置的缓冲区 这个缓冲区根据业务的不同 要设置的稍微大一点 不能一有数据过来就填满了 这样就失
  • SpringBoot整合常用Json框架-基础篇

    1 本篇概要 本文主要介绍如何在Spring Boot中整合3种常用的Json框架 包含Spring Boot本身提供的Jackson和Gson 以及国内常用的阿里巴巴开源Fastjson的整合 2 Json框架整合 2 1 整合 Jack
  • 一阶RC滤波器的算法实现(低通和高通)

    目前 项目需要处理信号 目标信号是特定频率范围内的信号 高频视为干扰 而一阶RC滤波器容易实现 但是网上资料往往没有详细的推导 因此在这里把笔记记下 本文的优势是比较详细 参数配置都有公式依据 目录 1 一阶RC低通滤波器的算法实现 1 1
  • 漏洞扫描器 XRAY

    文章目录 XRAY简介 XRAY安装 XRAY使用 爬虫模式 被动扫描 生成 ca 证书 开启监听 浏览器设置代理 访问网站自动探测漏洞 BurpSuite联动XRAY xray 开启端口监听 burpsuite 设置 通过burp sui
  • js 实现汉字简体和繁体之间的互相转换

    简体字 简体字 Simplified Chinese 简体中文 是中国大陆地区目前在用的字体 由官方公布的简体字 主要由传承字以及1950年代以后中华人民共和国政府开始在中国大陆地区推行的简化字所组成 目前 简体字的使用地区包括中国大陆 联
  • C++ 保存txt文本文件

    第一步 包含头文件 include
  • ExtJS 容器布局方式

    ExtJS是构建浏览器应用界面的框架 为开发人员提供了丰富UI组件 这些组件在页面中是以特定方式排列的 即布局方式 一个ExtJS构建的页面 无论看起来多么复杂 最终都能根据其布局拆分成许多小的区域 最近工作中的项目比较老旧 使用的是3 0
  • vue子组件向父组件传值的方法

    子组件向父组件 使用 emit方法 demo 子组件的代码
  • 【手把手 带你准备电赛】解答小课堂——串口通信和串行通信

    目录 串口通信和串行通信的定义 串口通信和串行通信的区别 串口通信和串行通信的联系 串口 串行 你分清楚这两个概念了吗 是不是还是串什么通信 串行通信 什么串口 不要担心 这篇文章 小蛋糕带你深入浅出分清串口通信和串行通信 串口通信和串行通
  • k线图中趋势线的画法精讲

    曾经有技术分析师大师把技术分析概括为一句话 那就是 一把直尺走天下 这是画线分析方法的直观和有效的高度概括 在众多的画线方法中 趋势线用以衡量贵金属的价格趋势 通过趋势线的方向可以明确地看出价格变动的方向 一 上升趋势线的画法 在上升趋势中
  • Ubuntu下pycharm的安装和卸载

    pycahrm安装 首先要去pycharm的官方网站下载Linux版本的pycharm安装包 如果想要下载以前版本的pycharm可以登录下方的网站去下载 https www jetbrains com pycharm download o
  • 按摩软件仿东郊到家系统开发,上门预约系统;

    按摩软件仿东郊到家系统开发 上门预约系统 用户端 技师端 商家端 以及管理后台 上门预约的操作 1 技师管理 技师满意度进行统一跟踪评估 进行分级管理 分级评估 2 订单管理 按订单状态分类筛选 安装进度一目了然 3 智能派单 根据客户位置
  • 64位机器源码安装遇到的问题,解决,一锅端

    1 如果是centos5会出现如下问题 checking host system type Invalid configuration x86 64 unknown linux gnu machine x86 64 unknown not
  • Hexo-零基础搭建个人博客(详解)

    Hexo零基础搭建个人博客 Hexo是一个基于 node js的快速生成静态博客的开源框架 支持 Markdown和大多数 Octopress 插件 一个命令即可部署到 Github页面 Giteee Heroku等 强大的APl 可无限扩
  • 数据库关闭四种方式

    数据库关闭四种方式 shutdown 参数 默认normal abort 模拟突然掉电 内存被清空 内存中的数据没有写入数据文件 事务被立即中断 没有提交也没有回滚 immediate 强制中断当前正在运行的所有事务 回滚这些事务 回滚完毕
  • c语言编写简易的自动售货机程序

    今天本来想做一个弹窗的可以输入有按钮点确定的自动售货机程序的 但是因为学校没教我是自学的找了一下午 不是教我如何创建的 就是代码各种报错的 我试了一下午都不行 只能放弃了 今天这串代码是根据我的c语言笔试 我们有上机考试的 的其中一道编程的
  • 二、量化选股

    文章目录 总体介绍 一 基本面选股 1 因子选股 判断方法 五个步骤 2 风格轮动 3 行业轮动 二 市场行为选股 1 资金流 2 动量反转 基本概念 1 行为金融学 2 阿尔法动量模型 3 一致预期 4 趋势追踪 基本概念 5 筹码选股
  • uniGUI用Grid++Report报表插件设计保存报表(For unigui ver:0.95.0.1045)

    uniGUI的0 95 0 1045版本提供了CallbackUrl 我们也可以用这个提供的回调网址来实现优秀的国产报表插件在IE Chorme FireFox中在线设计并保存报表到服务端的功能 界面效果如下 代码如下 unit Main