技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 71645
|
在 VB 的標(biāo)準(zhǔn)工程的標(biāo)準(zhǔn)模塊中:- Public Type EventRecord
- TriTime As Date
- TriType As String
- CallMobile As String
- End Type
- Sub testVariant()
- Dim er As EventRecord
- Dim p As Variant
- er.TriTime = Now()
- er.TriType = “CallIn”
- er.CallMobile = “13907309999”
- p = er
- End Sub
復(fù)制代碼
這樣是有問題的。會(huì)出現(xiàn)“編譯錯(cuò)誤:只在定義在公共對象模塊中用戶定義類型能和變體類型相互轉(zhuǎn)換或傳遞給后期綁定功能。”的錯(cuò)誤。
而如果將這些代碼放在窗體模塊中:
程序編譯通不過,出現(xiàn)“編譯錯(cuò)誤:在私有對象模塊中不能定義Public的用戶定義類型。”
將用戶定義類型改為:運(yùn)行程序,同樣報(bào)第一種情況的編譯錯(cuò)誤。
新建一個(gè)類模塊,將用戶定義類型移到類模塊中,并將聲明成Public,運(yùn)行程序,同樣報(bào)錯(cuò)。與第二種情況相同。
這說明一點(diǎn),為了實(shí)現(xiàn)變體類型變量與用戶定義類型變量的相互轉(zhuǎn)換,在一個(gè)VB標(biāo)準(zhǔn)工程中,用戶類型定義放在模塊中是不行的,放在窗體或類模塊中也是不行的,窗體或類模塊都是私有的,無法找到公共對象模塊。那么,怎么做才能做到后期綁定呢?
好了,我們來添加一個(gè)ActiveX DLL工程,將:- Public Type EventRecord
- TriTime As Date
- TriType As String
- CallMobile As String
- End Type
復(fù)制代碼 移到這個(gè)工程的類模塊中,設(shè)置該類的Instancing屬性,該屬性確定在工程之外是否能創(chuàng)建公共類的實(shí)例,它有6種選擇,在這里我們選擇 5 – MultiUse,允許其它應(yīng)用程序創(chuàng)建該類的實(shí)例。
再回到原來的工程,設(shè)置工程的引用,添加“工程2”(就是上面的ActiveX DLL工程)。刪除工程的模塊和類模塊,只剩下窗體模塊:
運(yùn)行程序,程序能夠正常通過。
結(jié)論:當(dāng)我們要開發(fā)一個(gè)應(yīng)用程序時(shí),我們應(yīng)該將我們用到自定義類型都放到一個(gè)ActiveX DLL工程,形成公共的類型庫(TypeLibrary),供程序調(diào)用。來自群組: ACC應(yīng)用開發(fā)心得交流 |
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號?注冊
x
|