欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 请问通过VBA调用外部对象时,如何支持事件?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有8127人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
sesamepaste
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:10 积分:75 威望:0 精华:0 注册:2013/2/7 12:09:49
请问通过VBA调用外部对象时,如何支持事件?  发帖心情 Post By: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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By: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一样使用了


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
sesamepaste
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:10 积分:75 威望:0 精华:0 注册:2013/2/7 12:09:49
  发帖心情 Post By:2013/2/18 11:13:40 [只看该作者]

我试试看,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2013/2/18 12:33:53 [只看该作者]

这是好东西

 回到顶部
帅哥哟,离线,有人找我吗?
duolaijin668
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:28 积分:200 威望:0 精华:0 注册:2013/2/5 22:55:28
  发帖心情 Post By:2013/2/18 13:50:28 [只看该作者]

 我自建了一个框架(JCLB),由4个窗格构成,名称分别为W1,W2,W3,W4。其中W3是动态显示牌。当我点击“动态显示牌”下边“郑州期货”后,W3里边显示好几种商品的信息,我想选择符合以下条件(名称前两个字是“棉花”)的商品,然后显示到窗格W1中,W1中的信息与W3联动。

 

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


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

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
梦想
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:92 积分:395 威望:0 精华:0 注册:2012/1/8 12:56:27
  发帖心情 Post By:2013/2/18 21:12:25 [只看该作者]

这个酂

 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2013/2/19 10:20:45 [只看该作者]

还在调试阶段,但遇到一个问题,请大侠们指点迷津,是否少加载什么东西
图片点击可在新窗口打开查看此主题相关图片如下:112.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2013/2/19 10:42:24 [只看该作者]

似乎明白是什么原因了

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


 回到顶部