2011-09-06 72 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