以文本方式查看主题
- 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp)
-- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5)
---- 请问通过VBA调用外部对象时,如何支持事件? (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=48616)
|
-- 作者:sesamepaste
-- 发布时间:2013/2/18 10:55:54
-- 请问通过VBA调用外部对象时,如何支持事件?
有一个外部对象需要通过CreateObject的方式调用,在VBA中可以用withevents来声明新对象,但金字塔中似乎不行。 不知如何调用支持事件的对象?
VBA中的代码形式如下:
Dim WithEvents sampleObject .... ....
Sub Initialize
if isObject(sampleObject)=false then
set sampleObject = CreateObject("Some.Object")
end if End Sub
|
-- 作者:王锋
-- 发布时间: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一样使用了
|
-- 作者:sesamepaste
-- 发布时间:2013/2/18 11:13:40
--
我试试看,谢谢!
|
-- 作者:guotx2010
-- 发布时间:2013/2/18 12:33:53
--
这是好东西
|
-- 作者:duolaijin668
-- 发布时间:2013/2/18 13:50:28
--
我自建了一个框架(JCLB),由4个窗格构成,名称分别为W1,W2,W3,W4。其中W3是动态显示牌。当我点击“动态显示牌”下边“郑州期货”后,W3里边显示好几种商品的信息,我想选择符合以下条件(名称前两个字是“棉花”)的商品,然后显示到窗格W1中,W1中的信息与W3联动。
初看“动态显示牌”时,感觉和EXCEL工作表格式很相似,如果在工作表中,使用循环,把符合条件的记录存到一个二维数组中,再将数组数据显示到指定工作表中,应该比较简单。
具体到“动态显示牌”中,好像只能用窗格坐标函数,想象不出坐标函数怎样和工作表单元格的函数相对应,因此无法下手。
在金字塔帮助中好像提到:金字塔只有一维数组,没有二维数组,这样的话,即使找到符合条件的记录后,又怎样显示到自定义的窗格中呢? 我有点头大啦,希望老师指点,最好能给个代码。
谢谢各位老师,祝愿新年发财
|
-- 作者:梦想
-- 发布时间:2013/2/18 21:12:25
--
这个酂
|
-- 作者:rushtaotao
-- 发布时间:2013/2/19 10:20:45
--
还在调试阶段,但遇到一个问题,请大侠们指点迷津,是否少加载什么东西
此主题相关图片如下:112.png

|
-- 作者:rushtaotao
-- 发布时间:2013/2/19 10:42:24
--
似乎明白是什么原因了

|