2

我正在使用 RDC/ActiveX 接口将应用程序从 Crystal Reports 8 移植到 Delphi 5 中的 Crystal Reports XI。

在 Crystal Reports 8 中,我能够为如下报表调出 Crystal 报表默认报表查看器窗口:

RptInvoicing.Destination := 0; // To: window
RptInvoicing.Action := 1; // Execute

但是,这不适用于 CR XI。打印和导出我想像这样工作:

crReport.PrintOut(True);
...
crReport.Export(True);

但是我找不到任何与显示默认预览窗口相关的东西。我已经尝试使用报表查看器组件来实现我自己的组件,但它有很多问题,例如在调整大小、冻结和崩溃时锁定,因此对于生产应用程序来说,它不是一个可行的解决方案。

即使是官方支持论坛也没有帮助,我只得到一个讨厌的答案去看看手册,我已经通过了好几次,只能说是坏的。对于企业产品,您并不是每天都能看到如此糟糕的文档。我在他们的手册中没有发现任何与此相关的内容,因此我认为他们自己的员工也对此一无所知。

所以我希望这里有人能告诉我默认的报表查看器是否仍然存在于 CR XI 中,如果存在,如何调用它?如果不是,那么使用报表设计器组件真的是创建一个的唯一解决方案吗?

4

3 回答 3

2

我最近遇到了同样的问题,并在此处描述了解决方案。我使用的是 Delphi 2007,但由于代码涉及对外部 ActiveX DLL 的调用,它也应该适用于您。

于 2008-12-19T16:17:59.333 回答
1

从他们的文档中:

Craxddrt.dll(Crystal Reports ActiveX Designer 设计和运行时库)是一个统一的对象模型,它将 Craxdrt.dll(Crystal Reports ActiveX Designer 运行时库)的运行时功能与 Craxddt.dll(Crystal Reports ActiveX Designer 设计时库)。Craxddrt.dll 将替换 8.5 及更高版本的 Craxddt.dll。Craxddrt.dll 和 Craxdrt.dll 都包含在运行时创建、打开、导出、保存和打印报表所需的所有对象和关联的方法、属性和事件。此外,Craxddrt.dll 在设计时设计报表时与 RDC ActiveX 设计器一起使用,或在运行时设计报表时与嵌入式设计器一起使用。有关详细信息,请参见第 343 页的“可嵌入 Crystal Reports 设计器控件对象模型”。

注意:RDC ActiveX 设计器仅在 Microsoft Visual Basic中可用。

在 8.5 版之前,Craxdrt.dll 将与应用程序一起分发。现在,开发人员可以选择两个自动化服务器进行分发。Craxdrt.dll 向后兼容以前的版本,并包含此版本中引入的所有功能。将 Craxdrt.dll 用于任何不包含可嵌入设计器的客户端应用程序,或将其用于任何服务器端应用程序。Craxddrt.dll 是单元模型线程,但不是线程安全的,只能在客户端应用程序中使用。尽管 Craxddrt.dll 是 RDC 的全功能自动化服务器,并且可以在任何客户端应用程序中工作,但它会增加安装大小。因此,建议您仅将 Craxddrt.dll 与可嵌入 Crystal Reports 设计器控件一起使用。

于 2008-12-02T15:01:59.530 回答
0

关于 Delphi,我无话可说,但在 VB 中,我们使用的是 CRViewer ActiveX 控件。使用它很简单——您将查看器控件放在表单上并将 RDC 对象分配给它。这在某处的 CR 帮助中有所介绍。(我无法查看代码 ATM 来提供工作示例。)

于 2008-10-31T22:24:01.930 回答