技术论坛

vbs如何自定义函数使用系统item、x、y参数

作者 主题
侠客

经验值: 758
发帖数: 148
精华帖: 0
主题:【探讨】vbs如何自定义函数使用系统item、x、y参数


只看楼主 楼主 2020-08-28 22:01:10

wincc及博图中事件左键Sub OnPressLeft(ByVal item, ByVal flags, ByVal x, ByVal y)


如上,sub子函数形式参数分别代表什么意思,我只知道X和Y的意义


假如我想在全局脚本中自定义无参数返回的函数,但需要用到X,Y及item,怎么办?


QQ群:336416617
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1639738&b_id=5

至圣

经验值: 20134
发帖数: 2780
精华帖: 23
回复:vbs如何自定义函数使用系统item、x、y参数


只看楼主 1楼 2020-08-28 22:27:26

找函数手册看看详细说明


Less is more……
以下网友喜欢您的帖子:

  
版主

经验值: 69053
发帖数: 12266
精华帖: 59
回复:vbs如何自定义函数使用系统item、x、y参数


只看楼主 2楼 2020-08-29 00:26:30

sub就是不带返回的函数

在括号里面定义上那个变量就行啊


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
侠客

经验值: 758
发帖数: 148
精华帖: 0
回复:vbs如何自定义函数使用系统item、x、y参数


只看楼主 楼主 3楼 2020-08-29 05:14:45
以下是引用RENHQ在2020-08-29 00:26:30的发言 >2楼

sub就是不带返回的函数

在括号里面定义上那个变量就行啊

我的意思是,我想在博图中自定义一个含有鼠标焦点的函数(无返回值),而wincc可以添加过程声明(添加byval item)且调用时不需要重新赋值形参,但博图添加byval item、byval x、byval y,调用时会需要重新给定参数,相当于item、x、y就是个形参,而实际上item、x,y是win系统引用对象,这个引用是怎么引用的啊?


自定义全局函数:


调用自定义函数:

调用函数vb脚本显示:




QQ群:336416617
以下网友喜欢您的帖子:

  
版主

经验值: 69053
发帖数: 12266
精华帖: 59
回复:vbs如何自定义函数使用系统item、x、y参数


只看楼主 4楼 2020-08-29 22:08:07
以下是引用sunwicle在2020-08-29 05:14:45的发言 >

我的意思是,我想在博图中自定义一个含有鼠标焦点的函数(无返回值),而wincc可以添加过程声明(添加byval item)且调用时不需要重新赋值形参,但博图添加byval item、byval x、byval y,调用时会需要重新给定参数,相当于item、x、y就是个形参,而实际上item、x,y是win系统引用对象,这个引用是怎么引用的啊?


自定义全局函数:


调用自定义函数:

调用函数vb脚本显示:



哦,这个没办法实现

你可以用C脚本获取鼠标坐标的


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
侠客

经验值: 758
发帖数: 148
精华帖: 0
回复:vbs如何自定义函数使用系统item、x、y参数


只看楼主 楼主 5楼 2020-08-30 00:14:47

做个函数方便,要不就一个一个复制粘贴   太麻烦了    同样,C也是这样的啊  


QQ群:336416617
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:vbs如何自定义函数使用系统item、x、y参数


只看楼主 6楼 2020-08-30 09:58:26

擦,这个是对象事件函数,并不是方法函数。不能像你这样用的吧?

三个返回值,item、x、y

item是指当前对象,你可以用item.xxx访问当前对象的开放属性,x、y 是当前鼠标x、y坐标。

比如当前是个IO域,你想实现每点击一次当前值+1?那就直接item.outputvalue = item.outputvalue + 1,而不需要IO域绑定到一个内存变量,然后用screnmitem来操作。

至于x、y值,你调用的话随便输入一个值就可以了,因为不会造成什么问题。


你想调用事件函数?这样搞涉及到多线程层面极其容易导致程序逻辑错误死机的(这种事件函数一般都是软件底层回调函数),所以为了安全很多程序员都不会开放事件函数给用户执行的。你只能自己写一个全局函数,然后在对象的事件函数里面调用函数不就实现了你想要的?


编程一开始就很麻烦的啊,要一个一个轮子的造,不厌其烦的造不同的轮子。造好轮子的,以后就不用经常造轮子而是用轮子造大楼了。所以,一开始不能怕麻烦啊。

最后,C语言编程也是从函数开始的啊。不同功能用不同函数,不同函数嵌套组合成一个健壮的程序。

难道你的C程序就只有一个main函数?那你这就不叫程序而是开玩笑了。



 
以下网友喜欢您的帖子:

  
侠客

经验值: 758
发帖数: 148
精华帖: 0
回复:vbs如何自定义函数使用系统item、x、y参数


只看楼主 楼主 7楼 2020-08-30 15:52:40
以下是引用Zaxife在2020-08-30 09:58:26的发言 >6楼

擦,这个是对象事件函数,并不是方法函数。不能像你这样用的吧?

三个返回值,item、x、y

item是指当前对象,你可以用item.xxx访问当前对象的开放属性,x、y 是当前鼠标x、y坐标。

比如当前是个IO域,你想实现每点击一次当前值+1?那就直接item.outputvalue = item.outputvalue + 1,而不需要IO域绑定到一个内存变量,然后用screnmitem来操作。

至于x、y值,你调用的话随便输入一个值就可以了,因为不会造成什么问题。


你想调用事件函数?这样搞涉及到多线程层面极其容易导致程序逻辑错误死机的(这种事件函数一般都是软件底层回调函数),所以为了安全很多程序员都不会开放事件函数给用户执行的。你只能自己写一个全局函数,然后在对象的事件函数里面调用函数不就实现了你想要的?


编程一开始就很麻烦的啊,要一个一个轮子的造,不厌其烦的造不同的轮子。造好轮子的,以后就不用经常造轮子而是用轮子造大楼了。所以,一开始不能怕麻烦啊。

最后,C语言编程也是从函数开始的啊。不同功能用不同函数,不同函数嵌套组合成一个健壮的程序。

难道你的C程序就只有一个main函数?那你这就不叫程序而是开玩笑了。


如果使用事件里自带的sub函数,可以方便利用X,y自定义鼠标热点问题,但是一个项目有N个按钮需要用到,我不能一个一个去复制粘贴吧,修改也麻烦,所以我打算做个全局自定义脚本,方便调用,但是全局自定义脚本不支持sub事件函数x,y的返回,所以怎么才能实现全局里使用x,y?还有C语言在事件里也是预设好的x,y,所以同样在全局里不能使用,而在对象事件里可以使用。


函数不能嵌套,但能调用,调用函数怎么能使用父级函数的返回值,比如使用父级的item,x,y?本身item、x、y应该是private吧?这也不是属性啊?

测试了下C语言,我想用C做自定义一个鼠标热点问题,wincc7.4可以使用API的鼠标函数,但TIA wincc怎么不行?TIA支持API函数吗?


QQ群:336416617
以下网友喜欢您的帖子:

  
版主

经验值: 17322
发帖数: 8474
精华帖: 18
回复:vbs如何自定义函数使用系统item、x、y参数


只看楼主 8楼 2020-08-30 18:08:07

x,y 必须在按钮事件中给出(按钮按下事件中自带),所以,你可以写一个全局脚本,这个脚本(Sub或Function)带有形参,比如:Sub abc(item,x,y);

然后,在每个按钮中,直接调用这个全局过程或函数。


无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:vbs如何自定义函数使用系统item、x、y参数


只看楼主 9楼 2020-08-30 18:21:38
以下是引用sunwicle在2020-08-30 15:52:40的发言 >7楼

如果使用事件里自带的sub函数,可以方便利用X,y自定义鼠标热点问题,但是一个项目有N个按钮需要用到,我不能一个一个去复制粘贴吧,修改也麻烦,所以我打算做个全局自定义脚本,方便调用,但是全局自定义脚本不支持sub事件函数x,y的返回,所以怎么才能实现全局里使用x,y?还有C语言在事件里也是预设好的x,y,所以同样在全局里不能使用,而在对象事件里可以使用。


函数不能嵌套,但能调用,调用函数怎么能使用父级函数的返回值,比如使用父级的item,x,y?本身item、x、y应该是private吧?这也不是属性啊?

测试了下C语言,我想用C做自定义一个鼠标热点问题,wincc7.4可以使用API的鼠标函数,但TIA wincc怎么不行?TIA支持API函数吗?

以下是引用Zaxife在2020-08-30 09:58:26的发言 >6楼:擦,这个是对象事件...

引用6楼详细内容:

擦,这个是对象事件函数,并不是方法函数。不能像你这样用的吧?

三个返回值,item、x、y

item是指当前对象,你可以用item.xxx访问当前对象的开放属性,x、y 是当前鼠标x、y坐标。

比如当前是个IO域,你想实现每点击一次当前值+1?那就直接item.outputvalue = item.outputvalue + 1,而不需要IO域绑定到一个内存变量,然后用screnmitem来操作。

至于x、y值,你调用的话随便输入一个值就可以了,因为不会造成什么问题。


你想调用事件函数?这样搞涉及到多线程层面极其容易导致程序逻辑错误死机的(这种事件函数一般都是软件底层回调函数),所以为了安全很多程序员都不会开放事件函数给用户执行的。你只能自己写一个全局函数,然后在对象的事件函数里面调用函数不就实现了你想要的?


编程一开始就很麻烦的啊,要一个一个轮子的造,不厌其烦的造不同的轮子。造好轮子的,以后就不用经常造轮子而是用轮子造大楼了。所以,一开始不能怕麻烦啊。

最后,C语言编程也是从函数开始的啊。不同功能用不同函数,不同函数嵌套组合成一个健壮的程序。

难道你的C程序就只有一个main函数?那你这就不叫程序而是开玩笑了。


呃,我都说了Sub OnPressLeft(ByVal item, ByVal flags, ByVal x, ByVal y)是事件函数,类似回调函数。

item、x、y是软件底层返回给用户使用的。回调函数是用给用户执行一些事件相关操作的,不是给用户调用的。你全局函数里面用鼠标坐标干啥?全局函数是独立的线程原则上是不允许访问UI线程的item的。软件底层的返回鼠标x、y是为了方便用户点击item时,在鼠标位置弹出msgbox或者把其他item移到鼠标位置...如果想知道更多的信息,就去找软件工程师问工程师要函数原型。至于item、x、y这三个变量,回调函数的肯定是private的,写软件的人怎么可能随随便便就允许你乱修改item里面的内部变量。

也许,你理解错全局函数的全局的意思了。全局函数你可以理解为一个线程,而不要理解为全局变量的全局字面意思。

还有,线程有返回函数?有参数这种说法?就像中断,你怎么给中断加返回值?怎么给中断加参数?人家软件函数已经定死了,你想摆脱这种做法你只能自己开发软件咯。

还有,触摸屏的是win ce嵌入式系统、wincc v7是windows 7桌面系统。触摸屏对很多win7桌面系统的API是不支持的。具体的你可以去学习windows ce嵌入式编程。


最后,真不知道你想干啥。


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
vbs如何自定义函数使用系统item、x、y参数
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。