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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 函数和Paint()事件之间如何传递参数?

   

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


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

主题:函数和Paint()事件之间如何传递参数?

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


加好友 发短信
等级:论坛游侠 帖子:319 积分:0 威望:0 精华:1 注册:2015/11/1 14:20:16
函数和Paint()事件之间如何传递参数?  发帖心情 Post By:2017/11/14 16:53:02 [只看该作者]

我在VBA一个模块最顶部申明了一个变量 :private n1,我理解N1变量在这个模块中都有效,这个模块中写了一个函数,在这个函数中对N1赋值,然后,我在同一个模块中写了Sub Technic_Paint()事件,在其中使用N1变量,这时就出现问题了,发现Sub Technic_Paint()中的N1和之前那个函数赋值后的N1不一样,MSGBOX 弹出N1看是什么都没有。

 

我的目的是把函数中计算后的N1 变量传递到Sub Technic_Paint()事件中使用,请问如何达到这个目的?


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


加好友 发短信
等级:管理员 帖子:1516 积分:229 威望:0 精华:0 注册:2012/3/30 12:40:56
  发帖心情 Post By:2017/11/14 20:34:11 [只看该作者]

金字塔的模块与vba不同,只是起到帮助管理代码的作用,因此你写的模块的私有变量的声明是没有用的

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


加好友 发短信
等级:管理员 帖子:1516 积分:229 威望:0 精华:0 注册:2012/3/30 12:40:56
  发帖心情 Post By:2017/11/14 20:36:05 [只看该作者]

金字塔用的是vbs语法引擎,您下次遇到一些问题困惑时可以百度搜一下vbs是否支持以及与vba的区别即可。

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


加好友 发短信
等级:论坛游侠 帖子:319 积分:0 威望:0 精华:1 注册:2015/11/1 14:20:16
  发帖心情 Post By:2017/11/15 10:22:31 [只看该作者]

那请问如何达到我说的参数传递的目的呢?


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


加好友 发短信
等级:管理员 帖子:2437 积分:0 威望:0 精华:0 注册:2016/3/5 22:53:41
  发帖心情 Post By:2017/11/15 10:58:02 [只看该作者]

贴一个能呈现出此问题的范例代码我们看一下,以便我们详细了解你遇到的问题


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


加好友 发短信
等级:论坛游侠 帖子:319 积分:0 威望:0 精华:1 注册:2015/11/1 14:20:16
  发帖心情 Post By:2017/11/15 15:10:51 [只看该作者]

'该模块主要用来保存自定义公式函数主函数,不要拿做他用

private x1,y1,x2,y2

Function Main01(Formula)

   x1=10
   y1=10
   x2=100
   y2=100
  

end function

 

Sub Technic_Paint()   
    dim x1,y1,x2,y2 
    msgbox x1
    Set grid = Technic.GetGridByName("Main")        
    Grid.DrawEllipse x1,y1,x2,y2,255

End Sub

 

例如上述代码,Main01函数通过PEL语言调用执行,然后在PAINT事件中画图,要使用Main01函数赋值的X1,Y1,X2,Y2,但通过MSGBOX查看X1,发现弹出的窗口中就是一个空白,就是说X1什么值都没有。


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


加好友 发短信
等级:管理员 帖子:2437 积分:0 威望:0 精华:0 注册:2016/3/5 22:53:41
  发帖心情 Post By:2017/11/15 17:29:37 [只看该作者]

将 Technic_Paint()  函数中的 x1,y1 这句变量定义去掉,因为变量你在外部全局已经定义过了,函数过程中你再定义就等于重新定义了x1为局部变量,当然会是空了

 回到顶部