关于MCGS控件操作。。。 点击:190 | 回复:8



沉沉的哀怜

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 1回
  • 年度积分:107
  • 历史总积分:293
  • 注册:2016年3月07日
发表于:2020-09-13 21:15:44
楼主
求助帖50分-已结帖

我重发下

我用按钮的“按下脚本”或“抬起脚本”或者事件策略去执行比如:用户窗口.曲线界面.控件5.ClearData( )。这样一段程序,在控件所在的界面能执行,但是在其他界面不能执行,我现在想要的是在事件策略能执行。有没有人知道要怎么弄

我用这样的方法去随便改一个界面的控件的TEXT属性都执行不了,临时用.控件4.Text="4",是不是因为没有识别到控件所在的界面啊



正在下载,请等待……
下载附件需0积分!



ozoner

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 786回
  • 年度积分:363
  • 历史总积分:6972
  • 注册:2017年1月12日
发表于:2020-09-14 11:54:32
1楼

临时用.控件4.Text="4" 这样直接给控件属性赋值不对的。

要使用变量来赋值,像这样:

    A=“4”

    临时用.控件4.Text=A

再试试看。

沉沉的哀怜

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 2回
  • 年度积分:107
  • 历史总积分:293
  • 注册:2016年3月07日
发表于:2020-09-16 10:51:12
2楼

"ozoner" 的回复,发表在1楼
        对内容: 【临时用.控件4.Text="4" 这样直接给控件属性赋值不对的。要使用变量来赋值,像这样:    A=“4”    临时用.控件4.Text=A再试试看。...】进行回复:

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

那个只是我的一个举例,我现在是  用户窗口.曲线界面.控件5.ClearData( )  这条执行不下去。

我用的事件策略,用正跳变触发脚本,脚本执行完后把触发信号复位,但是在非控件界面时ClearData的数据清除功能没有执行,信号也没复位


ozoner

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 786回
  • 年度积分:363
  • 历史总积分:6972
  • 注册:2017年1月12日
发表于:2020-09-17 06:11:05
3楼

"沉沉的哀怜" 的回复,发表在2楼
        对内容: 【"ozoner" 的回复,发表在1楼        对内容: 【临时用.控件4.Text="4" 这样直接给控件属性赋值不对的。要使用变量来赋值,像这样:    A=“4”    临时用.控件4.Te...】进行回复:

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

具体要看你的程序,方便的话最好是传上来看一下。


沉沉的哀怜

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 3回
  • 年度积分:109
  • 历史总积分:295
  • 注册:2016年3月07日
发表于:2020-09-17 11:14:56
4楼

"ozoner" 的回复,发表在3楼
        对内容: 【"沉沉的哀怜" 的回复,发表在2楼        对内容: 【"ozoner" 的回复,发表在1楼        对内容: 【临时用.控件4.Text="4" 这样直接给控件属性赋值不对的。要使用变量...】进行回复:

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


我上传了案例你下载看一下,我用动画控件做了个按钮与显示,用事件策略正跳变触发脚本执行 窗口0.控件0.ClearData( )

在开机界面按“触发信号”按钮,按钮是绿色;在窗口0按“触发信号”按钮,按钮就是红色。

并且我做了曲线和曲线清除来验证,生成曲线后在窗口0按“触发信号”按钮,棕色的线清除掉了;生成曲线后切换到开机界面按“触发信号”按钮,曲线不清楚且按钮是绿色

ozoner

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 788回
  • 年度积分:365
  • 历史总积分:6974
  • 注册:2017年1月12日
发表于:2020-09-17 20:37:43
5楼

"沉沉的哀怜" 的回复,发表在4楼
        对内容: 【"ozoner" 的回复,发表在3楼        对内容: 【"沉沉的哀怜" 的回复,发表在2楼        对内容: 【"ozoner" 的回复,发表在1楼        对内容: 【临时用.控...】进行回复:

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

看了下例子。实时曲线控件在窗口打开的时候才有效,事件策略里改成如下就可以了,用脚本来打开窗口0,清除曲线后马上再关闭上。实际上是看不到窗口0打开关闭的过程的,之后你触发清除后再进去看,曲线就被清除了。

事件策略:

    用户窗口.窗口0.Open( )

        窗口0.控件0.ClearData( )

    用户窗口.窗口0.Close( )

    触发信号=0



ozoner

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 791回
  • 年度积分:368
  • 历史总积分:6977
  • 注册:2017年1月12日
发表于:2020-09-18 06:20:01
6楼

"沉沉的哀怜" 的回复,发表在4楼
        对内容: 【"ozoner" 的回复,发表在3楼        对内容: 【"沉沉的哀怜" 的回复,发表在2楼        对内容: 【"ozoner" 的回复,发表在1楼        对内容: 【临时用.控...】进行回复:

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

又试了几次后发现其他小问题,修改如下:

(1)事件策略:

        IF !GetWindowState(窗口0)=0 THEN

            用户窗口.窗口0.Open( )

            窗口0.控件0.ClearData( )

            用户窗口.窗口0.Close( )

        ELSE

            窗口0.控件0.ClearData( )

        ENDIF

(2)触发信号按钮,触发变量改成按0松1,这样更可靠。

  (3)  如果触发信号一定要用置1的操作来做,最好用循环策略来做了。

       循环策略:(触发信号非0时执行,不要选用正跳变执行一次)

        IF !GetWindowState(窗口0)=0 THEN

            用户窗口.窗口0.Open( )

            窗口0.控件0.ClearData( )

            用户窗口.窗口0.Close( )

        ELSE

            窗口0.控件0.ClearData( )

        ENDIF

       触发信号=0


总之,很多不同实现方法,取决于具体你的触发信号的特性。



沉沉的哀怜

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 5回
  • 年度积分:112
  • 历史总积分:298
  • 注册:2016年3月07日
发表于:2020-09-18 09:48:00
7楼

"ozoner" 的回复,发表在6楼
        对内容: 【"沉沉的哀怜" 的回复,发表在4楼        对内容: 【"ozoner" 的回复,发表在3楼        对内容: 【"沉沉的哀怜" 的回复,发表在2楼        对内容: 【"ozone...】进行回复:

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


感谢感谢,原来如此。

因为原先这个触发信号是PLC给的,为是布尔型,程序执行完后操作做一次,所以我直接给的是置1

ozoner

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 791回
  • 年度积分:468
  • 历史总积分:7077
  • 注册:2017年1月12日
发表于:2020-09-18 11:11:46
8楼

"沉沉的哀怜" 的回复,发表在7楼
        对内容: 【"ozoner" 的回复,发表在6楼        对内容: 【"沉沉的哀怜" 的回复,发表在4楼        对内容: 【"ozoner" 的回复,发表在3楼        对内容: 【"沉沉的哀...】进行回复:

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

我猜触发信号也是来自PLC远程操作按钮什么的, 通常触发信号如果不是非常高速的脉冲的话,直接用循环策略来做就行了,更简单直接。 


相关主题

官方公众号

智造工程师