数组/名称组使用说明

什么是名称组,名称组和数组什么关系

名称组功能即创建一系列连续的控件来达到数组的效果

名称组的使用

大多数情况下,我们操作控件属性是这样的(这也是我们推荐的控件操作方式):

1//给t0控件的txt属性赋值"123"
2t0.txt="123"
3
4//给n0控件的val属性赋值15
5n0.val=15
6
7//给z0控件的val属性赋值185
8z0.val=185
../_images/name_array_1.jpg

假如我们不知道控件名字,只知道控件ID怎么操作呢?这就需要名称组来实现

控件名称组格式: p[页面DP号].b[控件ID].属性

注意

这里的p是page(页面)的缩写,b是object(对象)的缩写,而不是指button(按钮),名称组访问控件,只有控件id的概念,没有控件类型的概念

注意

这里的p是page(页面)的缩写,b是object(对象)的缩写,而不是指button(按钮),名称组访问控件,只有控件id的概念,没有控件类型的概念

注意

这里的p是page(页面)的缩写,b是object(对象)的缩写,而不是指button(按钮),名称组访问控件,只有控件id的概念,没有控件类型的概念

注意

这里的p是page(页面)的缩写,b是object(对象)的缩写,而不是指button(按钮),名称组访问控件,只有控件id的概念,没有控件类型的概念

注意

这里的p是page(页面)的缩写,b是object(对象)的缩写,而不是指button(按钮),名称组访问控件,只有控件id的概念,没有控件类型的概念

例如我们知道了n0的id号是1

../_images/name_array_2.jpg

那么我们就可以使用以下两种方式来操作n0

../_images/name_array_3.jpg

页面名称组格式:p[页面DP号].b[控件ID号].属性

1//ID为2的页面中,ID为4的控件的txt属性赋值为"淘晶驰"
2p[2].b[4].txt="淘晶驰"
3//ID为n0.val的页面中,ID为n1.val的控件的txt属性赋值为"哈哈哈"
4p[n0.val].b[n1.val].txt="哈哈哈"
../_images/name_array_4.jpg

注意

必须确保此页面中的此控件具有对应的属性,否则赋值会失败,例如你不能给数值控件赋值txt属性,虽然能编译通过,但是实际赋值时会返回错误信息

怎么使用名称组

例如我们要创建一个长度为20的名称组,于是我们添加了20个数字控件,

有n0-n19共20个控件,如果要把他们全部初始化为0,第一种方法是逐个赋值为0。

../_images/name_array_5.jpg

第二种方法,使用名称组进行操作,代码如下

../_images/name_array_6.jpg

以下展示几种等价的写法:

等价写法一:

../_images/name_array_7.jpg

等价写法二:

../_images/name_array_8.jpg

等价写法三:

../_images/name_array_9.jpg

注意

当前演示的工程中,n0-n19的id号是连续且递增的,n0的id号最小,n19的id号最大

名称组应用-实现数组

示例:创建一个长度为20的数组

在page0页面新建20个数字控件,将所有变量控件设置为全局,这样才能跨页面访问

../_images/name_array_11.jpg

n0的id是1,n1的id是2,以此类推,n19的id是20

此时就可以通过名称组的方式来实现数组

代码示例:配合for语句批量将整个数组赋值为100

1for(sys0=n0.id;sys0<=n19.id;sys0++)
2{
3   page0.b[sys0].val=100
4}

名称组常见操作方式

批量读取掉电存储空间数据

将掉电存储空间地址100开始连续的值加载到数值控件va0~va19,请确保va0~va19的id号是连续的

 1//设置掉电存储空间读取位置
 2sys1=100
 3
 4//for循环读取掉电存储空间并赋值给数值控件
 5for(sys0=n0.id;sys0<=n19.id;sys0++)
 6{
 7   //读取指定位置的掉电存储空间数据
 8   repo b[sys0].val,sys1
 9
10   //掉电存储空间读取地址加4,因为一个数值类型占用4byte空间。
11   sys1+=4
12}

注意

必须确保所操纵的控件都具有对应的属性,否则可能会报错

批量隐藏控件n0~n99

请确保n0~n99的id号是连续的

1//for循环读取掉电存储空间并赋值给数值控件
2for(sys0=n0.id;sys0<=n99.id;sys0++)
3{
4   vis b[sys0],0
5}

批量清空文本控件t0~t5

请确保t0~t5的id号是连续的

1for(sys0=t0.id;sys0<=t5.id;sys0++)
2{
3   b[sys0].txt=""
4}

批量将文本控件t0~t5赋值为“淘晶驰”

请确保t0~t5的id号是连续的

1for(sys0=t0.id;sys0<=t5.id;sys0++)
2{
3   b[sys0].txt="淘晶驰"
4}

批量将数字控件n0~n5赋值为0

请确保n0~n5的id号是连续的

1for(sys0=n0.id;sys0<=n5.id;sys0++)
2{
3   b[sys0].val=0
4}

所有控件的ID号软件自动分配,不可手动设置,用户在编辑UI界面时,按顺序依次放置的控件,软件将连续分配ID。

使用快捷栏的“置顶”、“置底”功能会使控件ID发生变化,因为图层的前后关系是跟控件ID关联的,ID最小的在最底层(所以页面ID是0),ID最大的在最上层,每个控件都有自己的图层,全部是通过ID来区别前后关系的。

../_images/name_array_31.jpg

注意

带有for的逻辑语句只能在上位编辑状态下写入控件的事件中,不支持串口传输逻辑语句。

名称组使用-样例工程下载

演示工程下载链接:

《名称组使用》演示工程下载

《名称组使用2》演示工程下载

《通过按键移动选择控件》演示工程下载