翻譯|使用教程|編輯:鮑佳佳|2021-07-16 11:23:42.570|閱讀 726 次
概述:該套包提供了Windows開(kāi)發(fā)人員所需要的11種最受歡迎的控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和 Task Panel。本文主要講解ActiveX組件的配置和以及如何注冊(cè)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
Xtreme Suite Pro是為Windows開(kāi)發(fā)人員提供的用于ActiveX COM的用戶(hù)界面套包,創(chuàng)建包含完整的高度可自定義的用戶(hù)界面組件(包括Visual Studio樣式對(duì)接窗格和Office樣式功能區(qū),工具欄和菜單),以使您的應(yīng)用程序具有現(xiàn)代外觀。該套包提供了Windows開(kāi)發(fā)人員所需要的11種最受歡迎的控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和 Task Panel。
點(diǎn)擊下載Xtreme Suite Pro最新試用版
Codejock ActiveX 組件是獨(dú)立的 .OCX 文件,必須在將使用它們的目標(biāo)計(jì)算機(jī)上復(fù)制和注冊(cè)。一個(gè)組件 (.OCX) 文件公開(kāi)了一組使用它提供的控件所必需的類(lèi)和接口。這些控件可以在任何開(kāi)發(fā)環(huán)境和任何支持 ActiveX 技術(shù)的編程語(yǔ)言中使用。
使用 ActiveX 組件和相關(guān)語(yǔ)言相關(guān)問(wèn)題的方法超出了本文的范圍,因?yàn)樗鼘?duì)于每種編程語(yǔ)言都是獨(dú)一無(wú)二的。假定開(kāi)發(fā)人員熟悉與他選擇的編程語(yǔ)言相關(guān)的 ActiveX 概念和最佳實(shí)踐。
本文解釋了以下相關(guān)問(wèn)題:
每個(gè) Codejock ActiveX 組件都有 3 種配置:
組件文件名反映其配置,例如:
選擇與您的主機(jī)應(yīng)用程序兼容的正確配置很重要,因?yàn)?Windows 不允許在一個(gè)地址空間中混合模塊的位數(shù),舊的編程語(yǔ)言不支持 Unicode 字符集。
可能的安裝選項(xiàng)是:
組件可以安裝到至少對(duì)安裝組件的所有潛在用戶(hù)都是只讀訪(fǎng)問(wèn)的任何位置。
僅將組件文件復(fù)制到目標(biāo)位置才能使用它是不夠的,它們必須注冊(cè)并包含許可證(在下一節(jié)中描述)。即使在開(kāi)發(fā)機(jī)器上安裝 SuitePro 或獨(dú)立的 ActiveX 組件后,也必須在使用組件之前注冊(cè)必要的配置。
可以使用安裝包中包含的Registrator工具在開(kāi)發(fā)機(jī)器上注冊(cè)組件。通常可以在以下位置找到它:%ProgramFiles(x86)%\Codejock Software\ActiveX\Xtreme SuitePro ActiveX v18.0.1\Bin\Registrator.exe
如果組件與應(yīng)用程序一起分發(fā),則必須在應(yīng)用程序安裝期間注冊(cè)每個(gè) .OCX 模塊。通常,這可以通過(guò)使用以管理員身份執(zhí)行的%SystemRoot%\System32\regsvr32.exe工具來(lái)實(shí)現(xiàn),例如使用此命令行進(jìn)行靜默日歷注冊(cè):
regsvr32.exe /s Codejock.Calendar.v18.0.1.OCX
或此命令行用于靜默注銷(xiāo)日歷組件:
regsvr32.exe /s /u Codejock.Calendar.v18.0.1.OCX
重要的是要了解應(yīng)該注冊(cè)組件的目標(biāo)機(jī)器可能已經(jīng)注冊(cè)了相同版本的 Codejock 組件。雖然重新注冊(cè)相同版本的組件沒(méi)有壞處,但如果使用 Codejock 組件的應(yīng)用程序被卸載,取消注冊(cè)組件可能會(huì)破壞依賴(lài)于這些組件的其他應(yīng)用程序。有兩種方法可以解決此問(wèn)題:
如果需要手動(dòng)檢查 Codejock 組件注冊(cè),可以使用來(lái)自 Windows SDK 的標(biāo)準(zhǔn) OLE 查看工具:
每個(gè) ActiveX 組件都有一組唯一的類(lèi)、接口和類(lèi)型庫(kù) ID,與它注冊(cè)到系統(tǒng)相關(guān)。為了避免版本沖突,所有 Codejock 組件都會(huì)在每個(gè)新版本中重新生成它們的 ID。
雖然這確保了相同組件但不同版本的 2 個(gè)或多個(gè)安裝可以獨(dú)立地共存于同一系統(tǒng)中,但它使開(kāi)發(fā)機(jī)器上的組件升級(jí)過(guò)程比僅安裝較新版本要復(fù)雜一些。根據(jù)開(kāi)發(fā)環(huán)境和編程語(yǔ)言,這種情況可以通過(guò)不同的方式和不同的副作用來(lái)解決。
例如,項(xiàng)目加載期間的 Visual Basic 6 IDE 可以確定引用的組件有可用的更新版本,并提示自動(dòng)升級(jí)現(xiàn)有組件。不幸的是,Microsoft Office 在 ActiveX 組件升級(jí)方面不如 Visual Basic 6 IDE 靈活,它不會(huì)提示自動(dòng)升級(jí),而是僅使用當(dāng)前組件版本,或者如果控件不存在則根本不實(shí)例化控件,即使有更新的版本可用。在這種情況下,升級(jí)控件的唯一方法是刪除舊控件并插入新控件并重新存儲(chǔ)以前的屬性。
所有 Codejock ActiveX 組件都需要有有效的許可證才能運(yùn)行。ActiveX 許可證不應(yīng)與付費(fèi)訂閱混淆,它只是一個(gè)小的文本文件 .LIC,每個(gè) .OCX 文件必須與 .OCX 文件一起分發(fā),這并不意味著任何額外費(fèi)用。
當(dāng)您將 Codejock 組件與您的應(yīng)用程序一起分發(fā)時(shí),有兩種方式可以包含許可證:
這是分發(fā)許可證的一種更可取且最簡(jiǎn)單的方法。所需要做的只是將每個(gè) .OCX 組件的 .LIC 文件復(fù)制到同一位置。使用此方法可確保組件獲取許可證(如果存在)。與將許可證嵌入應(yīng)用程序不同,不會(huì)出現(xiàn)跨模塊問(wèn)題。
例如,您將適用于 32 位和 64 位平臺(tái)的 Codejock Calendar ActiveX 組件作為應(yīng)用程序的一部分安裝到%ProgramFiles(x86)%\<YourCompanyName>\<YourApplicationName>\bin目錄,則 bin 目錄應(yīng)包含以下文件:
如果要包含 CommandBars 組件,還需要將Codejock.CommandBars.v18.0.1.LIC復(fù)制到同一位置。
在某些情況下,分發(fā)單獨(dú)的 .LIC 文件是不可能的,例如,當(dāng)您為 Web 瀏覽器或任何其他類(lèi)型的遠(yuǎn)程客戶(hù)端開(kāi)發(fā) ActiveX 組件時(shí)。在這種情況下,唯一的選擇是將許可證文本嵌入到應(yīng)用程序中。
在跨模塊場(chǎng)景中,這種方法應(yīng)該非常謹(jǐn)慎地使用,并且容易出現(xiàn)意外行為,因?yàn)椴煌?環(huán)境以不同的方式管理此類(lèi)場(chǎng)景。例如,如果您開(kāi)發(fā)的 Visual Basic 應(yīng)用程序不使用報(bào)表控件,而是使用另一個(gè)使用報(bào)表控件的自定義控件,則報(bào)表控件的許可證必須從宿主應(yīng)用程序設(shè)置,而不是從自定義控制。在這種情況下,建議將許可證作為單獨(dú)的 .LIC 文件分發(fā)。
它的工作方式是,每個(gè)組件都公開(kāi)自己的GlobalSettings具有 stringLicense屬性的類(lèi)。此屬性必須設(shè)置為對(duì)應(yīng) .LIC 文件的前 3 個(gè)字符串的逐字值,直到第一個(gè)空行,包括所有空格和新行。使用 CRLF 作為新行分隔符(0Dh、0Ah字節(jié)序列或"\r\n"轉(zhuǎn)義序列)很重要,因?yàn)樗?.LIC 文件中使用。
必須在應(yīng)用程序初始化流程中盡早分配該屬性。對(duì)于 Visual Basic,它可以是 的開(kāi)頭Form_Initialize,對(duì)于 .NET 應(yīng)用程序,它可以是主窗口構(gòu)造函數(shù)的開(kāi)頭。在對(duì)組件進(jìn)行任何其他顯式或隱式調(diào)用之前分配此屬性很重要。
以下是如何執(zhí)行此操作的示例:
Private Sub Form_Initialize() CommandBarsGlobalSettings.License = _ "CommandBars Control Copyright (c) 1998-2017 Codejock Software" & vbCrLf & _ "PRODUCT-ID: Codejock.CommandBars.ActiveX.v18.0" & vbCrLf & _ "VALIDATE-CODE: XXX-XXX-XXX-XXX" End Sub
在某些情況下,當(dāng)引用 Codejock ActiveX 組件的項(xiàng)目在其創(chuàng)建位置以外的計(jì)算機(jī)上打開(kāi)時(shí),或者項(xiàng)目是使用舊版本的 Visual Studio 創(chuàng)建的,或者如果只有較新版本的組件可用,則形成初始化流程最后可能會(huì)因 COM 異常而失敗。可能有多種原因,最常見(jiàn)的一個(gè)是由另一個(gè) Visual Studio 實(shí)例為 Codejock ActiveX 組件創(chuàng)建的互操作程序集與可用組件不匹配。以下步驟可能有助于解決此問(wèn)題:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn
文章轉(zhuǎn)載自: