以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  请教版主类的私有成员的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=2777)

--  作者:volersky
--  发布时间:2010/9/9 22:17:30
--  请教版主类的私有成员的问题

新建框架QS,在其paint事件中加入

 

 
    dim bbcca,mGrid
    Set mGrid=QS.ActiveGrid()
    Set bbcca=New testClass
     bbcca.Create(mGrid)

 

自定义类testClass:
Private myGrid

Sub Create(Grid)
   myGrid=Grid
   myGrid.DrawText 100,100,Cstr(222222222),rgb(255,255,0)
End Sub

当我把框架里的Grid对象传过来时,为什么这里的编译通不过,谢谢
 
myGrid.DrawText 100,100,Cstr(222222222),rgb(255,255,0)
 说是不支持这个方法

 

当改为以下时:

Private myGrid

Sub Create(Grid)
   Grid.DrawText 100,100,Cstr(222222222),rgb(255,255,0)
End Sub

 

可以通过!

 

请版主大大指教

 


[此贴子已经被作者于2010-9-9 22:31:38编辑过]

--  作者:admin
--  发布时间:2010/9/9 22:21:27
--  
请给出一个我们可以编译运行的版本,这样方便我们直接帮你改进
--  作者:wattwei
--  发布时间:2010/9/9 22:36:46
--  
 代码乱乱的。vbs的类遵循面向对象规范,没有什么特殊的。
--  作者:admin
--  发布时间:2010/9/9 22:37:13
--  

那你就使用 Grid.DrawText 100,100,Cstr(222222222),rgb(255,255,0)这样不就可以了嘛?

在类内部变量中保存使用一个Grid是有风险的,因为框架可能随时被关掉。


--  作者:volersky
--  发布时间:2010/9/9 22:38:31
--  自行解决了

原来对象的赋值要采用Set 来赋值

上面的myGrid=Grid,用Set myGrid=Grid就全部ok了!

 

谢谢两位管理员


--  作者:wattwei
--  发布时间:2010/9/9 22:42:15
--  
函数传递参数是对象实例时,使用引用方式ByRef
--  作者:wattwei
--  发布时间:2010/9/9 22:46:05
--  
如果不使用引用方式,这样试试
Set myGrid=Grid,没有Set好像是不行滴