combit开发博客

最后-水晶球中的一览

发布于: 2020年10月19日 星期一 | 0条评论
 
对于 "不能这样做 "类型的问题,一个经常需要的功能是展望未来。诸如 "如果这个组不包含记录xy就不要打印 "或 "打印一个参考页码的项目,这个项目将在以后打印"。在List & Label 26之前,对此没有简单的解决方案,如果有可能的话,必须在应用程序中完成这些魔法。从List & Label 26开始,我们将引入一个新的功能,旨在解决这样的挑战。

该解决方案是一个自动化的多通道打印。我们确保使其尽可能的灵活。你可以决定在结果中显示这些通道,这可以实现类似于问题打印的事情。然而,这一次提供了充分的灵活性,并不限于只显示或隐藏对象。你也可以隐藏通证,例如除了最后一个通证之外的所有通证,并使用SetVar()和GetVar()来与你未来的自己对话。听起来很疯狂?让我们深入了解一下吧。
 

示例: 页面参考

作为一个例子,让我们来看看一份销售报告,我们将为其添加一个管理摘要。这个(假想的)报告包括一个带有管理摘要的封面和两页图表。挑战在于如何在摘要中引用图表的页码。基本的布局看起来像这样:

Object Structure

现在的解决方案很简单。只要在各自图表的标题上添加一个SetVar,例如像这样:
"Sales by customers"+SetVar("Reference.Chart1", Page$(), false)

SetVar是一个强大的函数,它允许存储任意的值供将来参考。第一个参数可以任意命名。将第三个参数设置为 "false "可以确保实际上没有任何东西被打印出来。在 "摘要 "对象中,我们就可以像这样引用这个变量。
Multi-pass reference

这将导致SetVar()在第二遍实际可见的GetVar()之前被调用,尽管GetVar()被首先打印出来。这样一来,我们就能得到所需的页面引用:

Multi pass chart reference
 

示例: 灵活复制

List & Label已经支持一种类似的功能--打印多个问题。如果你把问题数设置为两个,你会得到一个原始打印的副本,但可以给一个对象添加一个 "问题打印的显示条件"。最酷的是,这只需要一次通过,并且仍然允许在副本中显示或隐藏某些对象。然而,这是你唯一能做的事情--副本在其他方面都是一样的。问题打印的一个典型用法是,例如在发票上打印一个 "副本 "水印。

如果你需要更多的灵活性,通行证就在这里为你提供帮助。这个功能的起源来自Idea Place,我们的用户创新门户。作为一个例子,我们有一个合并的发票和送货单打印。虽然它们很相似,但你需要在单据上提供一些不同的信息。

让我们把第二遍的标题从 "发票 "改为 "交货单"。这很简单:

Cond(PrintPassIndex()==1, "Invoice", "Delivery Note")

这句话的意思是 "如果我们在第一遍,就打印 "发票",否则就打印 "交货单"。至于项目表本身,在报告容器中添加一个完整的新表并调整外观条件会更容易。

Invoice Item List

在这个例子中,我只是复制了发票表,但删除了送货单的所有价格。下面是并列的结果:

Multi Pass Side-By-Side-Result

在内部,该功能利用了List & Label 26中的组合打印功能,这也是新的功能。因此,它有同样的要求--一个可用于.NET、VCL和C++的DataProvider实现。

我非常期待看到这个功能还能被用来做什么--它是对我们过去收到的许多请求的一个万能的回答。

List & Label 26中的更多新功能:
.NET的新功能?
为您的报告提供强大的、可重复使用的子报告
表格的新拖放功能




作者: Jochen Bartlau
List & Label开发主管

Jochen Bartlau 作为总经理领导combit的开发工作。他是一个微软.NET的爱好者,推动创新和敏捷项目管理。这位移动设备的极客在他的第一人生中曾是一位物理学家,他喜欢和他的家人一起度过他的业余时间。