2013-02-20 75 views
0

前段時間(實際上差不多5年前)這裏發佈了一個例子,展示了一個在Delphi 2007中使用ActiveX報表查看器顯示Crystal Reports的方法。我發現它也適用於Delphi XE3。該片段我有一個問題關於如下:德爾福XE3和水晶報表

for i := 1 to oRpt.Database.Tables.Count do begin 
oRpt.Database.Tables[i].ConnectionProperties.Item['User ID'] := 'username'; 
oRpt.Database.Tables[i].ConnectionProperties.Item['Password'] := 'password'; 
end; 

我的問題:因爲oRpt是一個變體,而不是類型的,我怎麼找到報表瀏覽器的屬性,並設置顯示或proc中有自己的價值觀打印報告?

回答

3

閱讀文檔。 :-)

有兩種連接ActiveX服務器的方法:在編譯時(早期綁定)或運行時(後期綁定)。 [有一篇文章在MSDN中有更詳細的解釋。

早期綁定是當您使用鍵入的變量時使用的(例如使用組件面板中的TWordApplicationTExcelApplication)。類型庫用於確定支持哪些類型和接口,並且可以使用v表中的DispInterface查找方法;編譯器可以驗證該函數是否存在並檢查拼寫錯誤等,並找出Code Completion和Code Insight的可用內容)。

通過變體訪問ActiveX服務器(如代碼片段演示的)是late binding。在代碼實際執行之前,編譯器不會知道什麼,此時嘗試通過接口調用方法,並且該方法在該點處成功或失敗。由於編譯器對你的變體可能包含的內容一無所知,因此無法在設計或編譯時知道可用的方法和類型。

因爲你的代碼使用的是後期綁定,所以除了閱讀文檔(或者試驗和錯誤,當然這不是真正的選項)之外,沒有辦法知道可用的屬性。 (另一種方法是使用早期綁定,如果ActiveX服務器有可用的類型庫,則停止使用變體並切換到編譯器可用來確定可用的界面的接口。)

+0

謝謝,肯。如果我能找到它,我會RTFM! – bcorll 2013-02-21 14:31:47