使用 net開(kāi)發(fā)BOS插件_第1頁(yè)
使用 net開(kāi)發(fā)BOS插件_第2頁(yè)
使用 net開(kāi)發(fā)BOS插件_第3頁(yè)
使用 net開(kāi)發(fā)BOS插件_第4頁(yè)
使用 net開(kāi)發(fā)BOS插件_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——使用net開(kāi)發(fā)BOS插件

如何使用VC#.net開(kāi)發(fā)BOS插件

技術(shù)支持看到這個(gè)問(wèn)題/ask/question.php?qid=4086,稍稍研究了一下,然后有這篇總結(jié)。

這里的BOS插件是指?jìng)鹘y(tǒng)的、VB的、GUI版本的BOS,不是指eBOS。VB能否開(kāi)發(fā)eBOS的插件,我不明白;不過(guò)VC#.net確定是可以開(kāi)發(fā)BOS插件的。

以下以BOS單據(jù)插件為例講解。我使用的開(kāi)發(fā)環(huán)境是VS2023SP1英文版,其他版本設(shè)置可能稍有不同,可摹擬得之。步驟如下:

1、新建VC#ClassLibrary工程:

2、添加相關(guān)引用

添加COM組件K3ClassEvents,會(huì)自動(dòng)引用它所依靠的KFO和ADODB。然后再手工添加System.Windows.Forms。在程序開(kāi)頭加上:

usingSystem.Runtime.InteropServices;//forcominteropusingSystem.Windows.Forms;//forMessageBox

3、然后修改類(lèi)屬性:

[ClassInterface(ClassInterfaceType.AutoDual)]publicclassBillPlugin

{}

4、在用VB開(kāi)發(fā)BOS插件時(shí),我們必需在類(lèi)模塊中添加一個(gè)成員變量m_oBillInterface,用于保存插件接口

對(duì)象;必需在類(lèi)模塊中添加一個(gè)公開(kāi)的成員函數(shù)Show,供BOS初始化插件調(diào)用。在C#.net中開(kāi)發(fā)插件時(shí),要做同樣的處理。代碼如下:

[ClassInterface(ClassInterfaceType.AutoDual)]publicclassBillPlugin{

publicvoidShow(objecto){try{m_BillInterface=(K3ClassEvents.BillEvent)o;MessageBox.Show(\);}

catch(Exceptione){MessageBox.Show(\);}}

K3ClassEvents.BillEventm_BillInterface;

}

上述代碼一看就懂,就不解釋了。

5、下一步我們要讓插件響應(yīng)BOS單據(jù)的事件。添加如下代碼:

上面響應(yīng)了菜單點(diǎn)擊事件(MenuBarClick)與單元格值更改事件(Change)。跟.net對(duì)系統(tǒng)事件的處理完全一樣。在_MenuBarClick事件中,假使檢測(cè)到點(diǎn)擊的菜單項(xiàng)是“計(jì)算器〞,就彈出一個(gè)對(duì)話框。在_Change事件中,顯示字段名稱(chēng)、修改的行號(hào)、字段保存值。你可以在這里參與其他事件處理過(guò)程,項(xiàng)目中需要什么就加什么。

VS2023十分智能,當(dāng)我輸入m_BillInterface.MenuBarClick+=newK3ClassEvents.并選中事件之后,按兩次Tab鍵就會(huì)跳出后面的事件處理器名稱(chēng)與參數(shù)列表,并給出相應(yīng)的函數(shù)聲明。這樣連我這個(gè).net菜鳥(niǎo)都能快速寫(xiě)出上面的代碼來(lái)!什么時(shí)候VC也有這樣的功能啊,可憐我總是要一行行手寫(xiě)接口啊。

6、然后修改工程屬性。要修改的地方有兩處:

一是Build下面的RegisterforCOMinterop,要打上勾;

二是Application的AssemblyInformation…中的MakeassemblyCOM-Visible選項(xiàng),要打上勾。

這一步很重要,假使不做這個(gè)設(shè)置的話,VB就無(wú)法調(diào)用.net的類(lèi)庫(kù)。保存設(shè)置以后,就可以編譯生成.dll了。

7、現(xiàn)在大功即將告成,不過(guò)行百里者半九十,我們馬上測(cè)試一下。開(kāi)啟BOSIDE,新建單據(jù),添加字段,

指定插件為NetPluginTest.BillPlugin(我的工程名稱(chēng)為NetPluginTest,類(lèi)名為BillPlugin),保存模板,F(xiàn)5運(yùn)行,點(diǎn)工具欄的“計(jì)算器〞,或修改任何字段的值,應(yīng)當(dāng)就可以看到效果了。

假使不能,嘿嘿嘿嘿嘿,我也不知道為啥,問(wèn)我沒(méi)用,自己研究吧!

8、其他事項(xiàng):首先,上面的插件在我的機(jī)器上運(yùn)行是很慢的,特別是調(diào)試的時(shí)候。其次,.net的程序需要.netframeworkruntime支持,假使目標(biāo)機(jī)器上沒(méi)有裝正確版本的.net運(yùn)行時(shí)的話,插件當(dāng)然是跑不起來(lái)的。而且上面也沒(méi)有研究部署的問(wèn)題,我的意思是,安裝插件到客戶(hù)機(jī)器上的時(shí)候,是否要注冊(cè)到GAC什么的,這個(gè)問(wèn)題需要你自己搞定。另外,這樣生成的代碼對(duì)K3ClassEvents的版本是否有依靠?K3ClassEvents升級(jí)后,本插件是否依舊可用?這個(gè)需要測(cè)試。由于我不懂.net,所以無(wú)法給你答案。上面的例如,目前來(lái)說(shuō)僅供研究,風(fēng)險(xiǎn)自負(fù)。最終,.net實(shí)在是便利、好用、夠強(qiáng)大,連我這個(gè)從來(lái)沒(méi)摸過(guò).net的人,都可以花1.5小時(shí)研究出插件寫(xiě)法、編出代碼并測(cè)試過(guò),聰明的、精通.net的你確定更不在話下啦!

9、致謝草根程序員(Go

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論