2011-09-06 73 views
1

我有一个程序,它使用quickreports 5来生成一些报告。该程序一直在一台特定的PC上编译。现在我想在其他机器上开发该程序,我有一个快速报告的大问题。Quickreport属性PreviewLeft不存在

虽然我在新机器上安装了相同版本的quickreports(5.0.2),但是我不能让程序去处理它们。当我打开一个表格在新机器上一个quickreport,我得到的错误:

Error reading FrmMyReport.PreviewLeft: Property PreviewLeft does not exist. ...

我可以编译程序,但只要我使用窗体上有一个quickreport,我得到这个例外:

Project MyProject.exe raised exception class EReadError with message 'Property PreviewLeft does not exist'.

当我在这里做休息时,它停在TCustomQuickRep.Create。调试后,它似乎发生在TCustomQuickRep.SetBandValues在线if assigned(FPage) and assigned(FBandList) and

我也尝试过使用compile-install手动安装软件包,将所有可能的目录添加到库路径中。什么都没有我看不出旧机器和新机器之间的区别。

我希望有人能帮我解决这个问题。能够在新机器上开发这个应用程序是非常重要的。谢谢你的帮助。

回答

1

您是否肯定旧机器和新机器的QuickReport安装版本相同?因为错误消息通常,当你有分量的DFM的描述,不是使用一个新的youre版本创建的,即发生在

组件的
  • x版本引入了新的属性PreviewLeft;
  • 您正在使用版本x进行开发,该属性被保存到DFM中;
  • 您编译/打开组件版本x-1的项目,该项目没有该属性,并且流式处理系统引发异常,因为它无法在旧版本的组件中找到该属性。

新版本可能会丢弃(过时)属性,但在这种情况下,组件供应商通常在流式传输过程中默默忽略该属性,因此不会引发异常。所以我怀疑你实际上是在新机器上安装了旧版本的QuickReport。我自己不使用QuickReport,所以我不知道PreviewLeft属性何时被引入,以及需要什么...如果它是预览窗口的左边坐标,那么我会说忽略它是无害的,从DFM中清理它 - 难度是在IDE中逐个打开报告,并按错误dlg中的“忽略”,简单的方法是使用一些工具,即我认为Jedi可能有这样的工具。

UPDATE 绝地武士工具被称为DFMcleaner,它是在jvcl\devtools\DFMCleaner目录在我的Delphi 5的安装。

0

我遇到过我已经黑客入侵/扩展第三方库以添加/更正某些功能的情况。然后我转移到一台新电脑(或从供应商处下载更新)并丢失我的新属性。在这样的错误之间经常会有好几个月或几年的时间,所以我通常会失去半天的时间来追踪它,然后它就会变成“D'OH!Deja-vu”。我有一个组件,其中我实际上添加了一个名为

property ThisLibraryWontCompileUntilItsBeenHackedByChris : boolean; 

的属性,当编译器停止时,我知道在哪里查找。

Chris

+0

我没有操纵Quickreport或任何第三方库。所以这不应该是原因 – Marks