金字塔通過(guò)VBA調(diào)用外部對(duì)象時(shí),如何支持事件? [金字塔]
- 咨詢內(nèi)容: 有一個(gè)外部對(duì)象需要通過(guò)CreateObject的方式調(diào)用,在VBA中可以用withevents來(lái)聲明新對(duì)象,但金字塔中似乎不行。 不知如何調(diào)用支持事件的對(duì)象?
VBA中的代碼形式如下:
Dim WithEvents sampleObject ........
Sub Initialize if isObject(sampleObject)=false then set sampleObject = CreateObject("Some.Object") end ifEnd Sub
- 金字塔客服: VBS是一種功能強(qiáng)大的語(yǔ)言,這個(gè)從各種宏病毒的泛濫可以看得出,VBS功能強(qiáng)大不是語(yǔ)言
本身,而是它具有調(diào)用自動(dòng)化COM組件的能力,而且,在VBS中還可以使用事件
VBS提供了一個(gè)GetRef函數(shù),VBS手冊(cè)上說(shuō)是返回一個(gè)函數(shù)指針,我調(diào)試的結(jié)果,是返回一個(gè)
IDispatch接口指針,該指針只有一個(gè)DISP成員,就是DISPID為 0的方法
在COM組件中添加IDispatch*類型的屬性,就可以接收該指針,并在需要的時(shí)候調(diào)用,也就是
激發(fā)事件
例子
一個(gè)WinFormCOM對(duì)象的驅(qū)動(dòng)腳本:
Dim frmMain
Set frmMain = CreateObject("WinForm.Form")
frmMain.OnLoad = GetRef("Form_Load")
frmMain.OnClose = GetRef("Form_Close")
frmMain.OnMouseMove=GetRef("Form_MouseMove")
frmMain.ShowModal
Sub Form_Load()
frmMain.Caption="Hello,world!"
MsgBox frmMain.Caption
End Sub
Sub Form_Close(ByRef Cancel)
Cancel=true
End Sub
Sub Form_MouseMove(Button,x,y)
frmMain.DrawText 0,0,"x= " & x & vbCrLf & "y=" & y
End Sub
神奇吧?現(xiàn)在VBS可以象VB一樣使用了 - 用戶回復(fù): 我試試看,謝謝!
- 網(wǎng)友回復(fù): 這是好東西
- 網(wǎng)友回復(fù): 我自建了一個(gè)框架(JCLB),由4個(gè)窗格構(gòu)成,名稱分別為W1,W2,W3,W4。其中W3是動(dòng)態(tài)顯示牌。當(dāng)我點(diǎn)擊“動(dòng)態(tài)顯示牌”下邊“鄭州期貨”后,W3里邊顯示好幾種商品的信息,我想選擇符合以下條件(名稱前兩個(gè)字是“棉花”)的商品,然后顯示到窗格W1中,W1中的信息與W3聯(lián)動(dòng)。
初看“動(dòng)態(tài)顯示牌”時(shí),感覺和EXCEL工作表格式很相似,如果在工作表中,使用循環(huán),把符合條件的記錄存到一個(gè)二維數(shù)組中,再將數(shù)組數(shù)據(jù)顯示到指定工作表中,應(yīng)該比較簡(jiǎn)單。
具體到“動(dòng)態(tài)顯示牌”中,好像只能用窗格坐標(biāo)函數(shù),想象不出坐標(biāo)函數(shù)怎樣和工作表單元格的函數(shù)相對(duì)應(yīng),因此無(wú)法下手。在金字塔幫助中好像提到:金字塔只有一維數(shù)組,沒(méi)有二維數(shù)組,這樣的話,即使找到符合條件的記錄后,又怎樣顯示到自定義的窗格中呢?
我有點(diǎn)頭大啦,希望老師指點(diǎn),最好能給個(gè)代碼。謝謝各位老師,祝愿新年發(fā)財(cái)
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 262069696 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容