个人中心

联系我们

搜索
搜索 登录 免费注册
界面美化
业务优化
开发工具
图像管理
文档管理
Parasoft

新闻资讯

关注工具软件产品最新动态,了解软件开发行业新趋势。

如何在 FastReport VCL 中使用产品构成制作价格标签

原创
软件开发
来源:FastReport
标签格式
VCL
数据可视化
报表
图表
条形码
2023-11-08
标签格式
VCL
数据可视化
报表
图表
条形码

在打印标签、价格标签和其他尺寸有限的格式时,会遇到一个难题,即这类报表的设计方法受到限制。在这种情况下,文本对象只能增长到一定的尺寸,无法将文本分割或迁移到其他页面。怎样才能在不削减信息的情况下将产品构成和其他数据放在一个标签上呢?答案很简单--减少内容!


从 2023.3 版开始,我们在报表引擎 FastReport VCL 中添加了另一个强大的工具--通过缩放内容来减少 "文本 "对象中的文本。


让我们来看一个简单的例子:带有产品成分的价格标签。这种价格标签是使用标签打印机打印在准备好的纸张上的,因此对打印文本的数量有物理限制。但其内容可以从 3 个字到几十个字不等。


要创建这样的报告,我们将使用创建多栏报告的功能。您可以在用户手册中找到如何创建此类报告。让我们以创建两列简单报告为例,如下图所示。我们将不再深入探讨如何创建报表,而是集中讨论必要的功能。可联系我们获取现成的报告示例。



让我们运行报告。



结果,预览结果显示,表格中包含的产品由几十个字组成,以当前的字体大小根本无法显示在价格标签上。解决这种情况的办法显然是缩小字体大小。


让我们返回报表设计器,选择对象和不适合边框的文本,然后打开对象检查器。



我们需要的功能由 ContentScaleOptions 属性集控制。让我们来详细了解一下。


AutoScale - 默认已禁用,该属性设置了自动文本缩放模式。


casStatic 模式可使文本按比例缩放,直至适合容器或达到约束的极限边界(Constraints.MaxStepValue 和 Constraints.MinStepValue 属性)。


casStatic 模式非常适合在带有价格标签的报告中使用,让我们打开它并运行报告进行构建。



根据生成的报告,您可以看到文本不仅按比例缩小,还按比例增大。这样就可以填满一个大容器。这对某些报表可能有用,但在本例中却没有必要。让我们返回报表设计器,禁用 ContentScaleOptions.ScaleType 属性的 cstGrow 标志。让我们运行报告。



现在,FastReport VCL 打印价格标签时,如果文本不适合对象,就会缩小字体大小。我们只需切换两个属性就能达到预期效果。


带标签的示例是最常见的,但有时需要在页面上不间断地放置一个带增长对象的条带。如果在这样的带状区域中有多个带文本的对象,我们可以牺牲其中一些对象的字体大小,然后压缩整个容器。让我们用一个随机数据的简单示例来看看它是如何工作的(你可以联系我们获取模板)。



在本例中,每个文本对象都输出了大段文字,从而拉伸和移动了底层对象。使用演示数据运行报告后,报告的外观将如截图所示。



正如您所看到的,如果有大量文本,带状内容将被分为两页(在我们的例子中,对象中会有一个分隔符)。如果我们需要将数据放在一页上,该怎么办呢?设置为 casStatic 的自动缩放模式并不适合这种情况,因为对象的高度是动态的,是在生成报告时计算出来的。此外,拉伸后的对象会取代底层对象。针对这种情况,FastReport VCL 有另一种对象缩放模式,通过将 AutoScale 设置为 casDynamic 属性即可启用。


让我们将 MainText 对象的 AutoScale 属性设置为 casDynamic,然后看看报表的渲染结果。



MainText对象的大小缩小了,整个带子可以放在一页纸上。但如果需要按比例压缩多个对象中的文本怎么办?


让我们将 BottomText 对象的 AutoScale 属性设置为 casDynamic,看看报告生成的结果。



因此,这两个对象都缩小了字体大小,直到带子完全贴合页面。


FastReport VCL 允许您控制对象压缩。每经过一个对象循环,对象中的字体就会缩小一个给定的步长,该步长在 ContentScaleOptions.StepValue 属性中为对象设置。这一过程将一直持续,直到带宽适合页面或达到极限限制(Constraints.MaxStepValue 和 Constraints.MinStepValue 属性)。


此外,每个对象只能在通过对象的特定迭代时进行处理。如果希望前两次缩放迭代只处理 BottomText 对象,只需设置 ContentScaleOptions 属性即可。对于 Constraints.MinIterationValue 方法,为 MainText 对象指定一个值 3(它将跳过前两次迭代)。报告渲染完成后,将呈现如下外观。



可以看到,在前两次迭代中,我们的报告引擎只压缩了 BottomText 对象,因此其内容的比例较小。从视觉上看,迭代可以表示如下。



这种缩放内容(或文本)的迭代方法可让报告引擎优先压缩哪些对象,并按照什么顺序压缩,以达到最佳效果。


这种方法会对大量对象的报告生成速度产生负面影响。因此,可以通过设置 TfrxReport.EngineOptions.ContentScaleMaxIterations 属性(默认为 10),在报表引擎级别限制迭代次数。


联系我们

周一至周日 8:00-23:00

免费热线

023-62585653

张经理:13082556879

罗经理:17558866126

许经理:13057566525

开发外包

ERP-一体化

小程序

企业微信客服

版权所有:重庆庚乾信息科技有限公司 ©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508

版权所有:重庆庚乾信息科技有限公司

©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508