Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:请问通过VBA调用外部对象时,如何支持事件?

1楼
sesamepaste 发表于:2013/2/18 10:55:54
有一个外部对象需要通过CreateObject的方式调用,在VBA中可以用withevents来声明新对象,但金字塔中似乎不行。 不知如何调用支持事件的对象?

VBA中的代码形式如下:

Dim WithEvents sampleObject 
....
....

Sub Initialize
if isObject(sampleObject)=false then 
set sampleObject = CreateObject("Some.Object")
end if
End Sub

2楼
王锋 发表于:2013/2/18 11:02:23
VBS是一种功能强大的语言,这个从各种宏病毒的泛滥可以看得出,VBS功能强大不是语言
本身,而是它具有调用自动化COM组件的能力,而且,在VBS中还可以使用事件
VBS提供了一个GetRef函数,VBS手册上说是返回一个函数指针,我调试的结果,是返回一个
IDispatch接口指针,该指针只有一个DISP成员,就是DISPID为 0的方法
在COM组件中添加IDispatch*类型的属性,就可以接收该指针,并在需要的时候调用,也就是
激发事件
 
例子
一个WinFormCOM对象的驱动脚本:
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
 
神奇吧?现在VBS可以象VB一样使用了
3楼
sesamepaste 发表于:2013/2/18 11:13:40
我试试看,谢谢!
4楼
guotx2010 发表于:2013/2/18 12:33:53
这是好东西
5楼
duolaijin668 发表于:2013/2/18 13:50:28
 我自建了一个框架(JCLB),由4个窗格构成,名称分别为W1,W2,W3,W4。其中W3是动态显示牌。当我点击“动态显示牌”下边“郑州期货”后,W3里边显示好几种商品的信息,我想选择符合以下条件(名称前两个字是“棉花”)的商品,然后显示到窗格W1中,W1中的信息与W3联动。

 

     初看“动态显示牌”时,感觉和EXCEL工作表格式很相似,如果在工作表中,使用循环,把符合条件的记录存到一个二维数组中,再将数组数据显示到指定工作表中,应该比较简单。


      具体到“动态显示牌”中,好像只能用窗格坐标函数,想象不出坐标函数怎样和工作表单元格的函数相对应,因此无法下手。

      在金字塔帮助中好像提到:金字塔只有一维数组,没有二维数组,这样的话,即使找到符合条件的记录后,又怎样显示到自定义的窗格中呢?
      我有点头大啦,希望老师指点,最好能给个代码。

 

      谢谢各位老师,祝愿新年发财

6楼
梦想 发表于:2013/2/18 21:12:25
这个酂
7楼
rushtaotao 发表于:2013/2/19 10:20:45
还在调试阶段,但遇到一个问题,请大侠们指点迷津,是否少加载什么东西
图片点击可在新窗口打开查看此主题相关图片如下:112.png
图片点击可在新窗口打开查看
8楼
rushtaotao 发表于:2013/2/19 10:42:24

似乎明白是什么原因了

图片点击可在新窗口打开查看

共8 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.03125 s, 2 queries.