没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:杨鹏连|2020-12-22 13:11:29.063|阅读 469 次
概述:今天,我们很高兴地宣布在Beta测试中发布了Lazarus的客户端-服务器组件。它们可以用于创建和自定义用于远程报告生成和导出的服务器,而程序和Web浏览器可以充当客户端。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
FastReport VCL是用于Delphi,C ++ Builder,RAD Studio和Lazarus的报告和文档创建VCL库。它提供了可视化模板设计器,可以访问最受欢迎的数据源,报告引擎,预览,将过滤器导出为30多种格式,并可以部署到云,Web,电子邮件和打印中。
近日,FastReport VCL更新至v6.9,在新版本中,在PDF导出中增加了对以下对象的交互式表单支持:文本,复选框和图片。能够通过InteractiveFormsFontSubset属性将所需的字形仅包含在交互式形式中。同时修复了多个Bug问题。欢迎下载体验。(点击下方按钮下载)
直到最近,可以说用Lazarus编写的应用程序通过Web生成报告的任务还是很有创造力的。今天,我们很高兴地宣布在Beta测试中发布了Lazarus的客户端-服务器组件。它们可以用于创建和自定义用于远程报告生成和导出的服务器,而程序和Web浏览器可以充当客户端。
VCL FastReport中的客户端-服务器组件在很早以前就已实现,但是在此之前,它们尚未适应Lazarus,仅在Rad Studio Delphi和C ++ Builder中运行。
这篇文章不仅对从未使用过它们的人有用,而且对于想要将其FR服务器迁移到Linux的人也很有用,因为它诚实地描述了所有优点和缺点。我们还发现了Lazarus本身的问题,并找到了解决之道。
现在,让我们继续讨论该问题的技术方面。
用于在Lazarus中进行报告的客户端服务器组件
Lazarus中的客户端服务器组件可在以下两种操作系统下使用:Windows和Linux(仅GTK2)。它们在“ fr6CS_lazarus.lpk ”程序包中实现,其依赖项指定了导出程序包,因此必须在安装之前安装“ Source / ExportPack ”文件夹中的导出程序包。
安装客户端/服务器组件包之后,将有一个名为“ FastReport 6.0 Client / Server”的新选项卡,您将在其中找到4个组件:
您可以在此文件中指定许多设置,这些只是其中最重要的:
您可以在此处详细了解所有设置。
2. TfrxServerConnection是一个客户端组件,其中包含用于远程连接到TfrxReportServer的信息,例如:主机,端口,错误尝试次数,超时等。
3. TfrxReportClient,一个客户端组件,类似于TfrxReport,执行服务器,并显示在客户机上的报告请求。它使用此TfrxServerConnection组件来获取有关服务器的信息。它可以从服务器接收构建的报告,并在内部(在客户端计算机上)显示或导出该报告。
4. TfrxHTTPClient是一个客户端组件,旨在通过HTTP协议接收任意文件。例如,它可以请求已经从服务器导出的报告。
我们还提供3个演示应用程序:
1台服务器-立即与报告和数据库一起使用;
2个客户-简单且“高级”。
作为“高级”客户端,您可以通过按“开始”按钮来执行承载多线程测试:
我们还想提醒您,客户端可以是普通的浏览器,并且可以为Web客户端配置自己的喜好,而演示服务器已经为Web客户端配置了。
“瓶颈” GTK2
Lazarus是跨平台的开源IDE。但是不幸的是,这桶“蜂蜜”中也有“一勺焦油”。我们将从最不愉快的地方开始,即Linux服务器。
GTK2具有一个非常不愉快的属性:单线程。
这意味着即使2个程序将在一个无穷循环中在其BitMap上绘制图形,GTK2也会将所有内容缩小到1个流。因此,总的来说,这两个程序所绘制的数字少于一个程序所绘制的数字,因为部分时间将花费在同步上。
但是在这种情况下,同步是在没有我们参与的情况下进行的。
现在以一个程序在多个流中绘制图形的情况为例(每个流都有其自己的本地BitMap)。在这种情况下,您将必须在代码中创建一个锁定系统,因为我们记得该库的单个线程。但是这些不应该是普通的关键部分,而应该是GTK2级别的全局关键部分。当其中一个线程进入此关键功能时,即使基本形式也将挂起,直到它退出。
带图片的多线程只能通过找到一个独立于GTK2的相似绘图组件(例如,带有图片的示例)来组织,在我们的情况下,另一个组件不合适。
因此,某些服务器操作被限制为1个流。
尤其是由于此功能,最好不要使用对话,因为只要一位客户回答对话,其他客户的报告构建就会暂停。
可能会出现问题:“为什么您甚至需要单线程服务器?” 并且您会部分正确,因为这类似于道路上的“瓶颈”问题,在该道路上,总道路通行能力等于最狭窄地方的道路通行能力。
但是您只会部分地正确。仅将3个大型操作缩小为一种流程:上载报告,构建和导出。接收和传输是并行进行的,并且由于已构建报告的缓存系统,在某些情况下,您无需再次构建它们。
而且,再加上功能强大的服务器,将使此问题不那么明显。这仅对于Linux(GTK2)也是一个问题,因为Windows中不存在此问题,并且随着Lazarus中GTK3的发布(该版本已经支持多线程),它将完全消失。
其余的问题比这个问题小很多倍,甚至很小。
还剩下什么
一小部分功能是在移植过程中删除的,即CGI和授权系统。我们能否尽快实施它们取决于客户对它们的实际要求。
导出到Lazarus的HTML仍然很不完善,可以并且应该使用Web客户端,因为它很方便,但是报表不能完美显示。
但是,您可以设置系统,以使Web客户端接收的报告不是以HTML格式导出,而是以PDF格式导出。毕竟,大多数现代浏览器都可以完美显示PDF文件。我们已经很好地实现了这种导出格式,您可以自己查看。
更正了Lazarus消息队列2.0.10中的错误
对于那些想要在Linux中使用我们的新组件的人来说,值得一提的是:在阻止消息队列时,我们遇到了一个错误,无法绕过它。我们能够联系Lazarus的程序员,他们已经解决了这个问题,在下一版的Lazarus中,所有功能都可以稳定运行。目前,在2.0.10及更高版本中,此错误必须在本地修复。不需要花费很多精力或时间,您要做的就是将3行添加到Lazarus文件之一并重建它:
1.打开拉扎勒斯所在的文件夹(在Ubuntu,例如 “/usr/share/lazarus/2.0.10”)
2.打开文件 〜/ LCL /接口/ GTK2 / gtk2msgqueue.pp 在它。
3.查找过程: 过程TGtkMessageQueue.Lock;
4.在此过程中,找到以下行: g_main_context_acquire(FMainContext);
此代码无视g_main_context_acquire函数可能失败的事实。
因此,将其替换为:
repeat until g_main_context_acquire(FMainContext);也就是说,我们将循环调用g_main_context_acquire直到它返回True(成功完成)。
我们邀请您试用我们用于Lazarus的新组件,但我们想提醒您,这是一个beta版本,它将根据您的需要进行改进。如有任何错误,请务必写信给我们以寻求支持。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn
文章转载自:产线级 MES 通过与检测设备的深度集成,实现数据的自动采集和智能分析,为企业提供更加精准、高效的质量管理方案。
HOOPS Communicator作为一款强大的工业设计工具,其碰撞检测和运动模拟功能为工程师和设计师提供了invaluable的支持。通过不断的技术创新和功能优化,HOOPS Communicator将助力企业在数字化转型的浪潮中,实现更加高效、智能和精准的工业设计与制造,引领工业设计走向新的高度。
总之,HOOPS Communicator的轻量化格式SC文件,与STEP文件在工业设计与协作中各有其重要地位和作用。理解它们之间的转换关系以及所需的工具和授权,对于有效利用HOOPS Communicator进行3D模型的轻量化展示和协作具有重要意义。
界面控件DevExpress WinForms v25.1将于今年年中更新,新版本将进一步提升AI方面的功能等,欢迎关注我们及时获取最新消息~
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@wqylolg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢