特殊说明 ================ 全局控件属性跨页面读写 ----------------------------- **全局控件:** 基础属性的全局属性设置为全局。全局控件的属性会加载到运行内存,修改了属性后,切换页面也不会丢失。 写法:[页面].[控件].[属性] :: // 当前运行页面为page0 page1.b1.x = 100; // b1为全局控件,跨页面给page1.b1.x赋值。 page1.page1.bg.color = 0x1234; // page1为全局页面控件,跨页面给page1.page1.bg.color赋值。 // 当前运行页面为page1 b1.x = 100; // b1为全局控件,且在当前运行页面,写法和普通私有控件一样 .. hint:: - 全局控件会占用运行内存,非必要不建议设为全局 - 定时器控件设为全局,切换页面会释放,并不能实时计时。 .. _控件组写法使用: 控件组写法使用 ----------------------------- 通常读写当前页面的控件属性的写法是 b1.x,如果想多个控件x坐标按规律排布只能这样写:b0.x=10 \ b1.x=20 \ b2.x=30, 代码非常多。然而使用控件组写法实现就相对简单很多。 **控件组写法:** wid[ ``控件id`` ]. ``属性`` , * **控件id:** 控件的id,数值型变量或常量。 * **属性:** 用户输入控件属性,如wid[1].x 、wid[1].bg.color。 **用法举例** :: // 将以下代码写在页面初始化前事件,页面加载后则可以看到控件有规律的排布 int i; for (i = 1; i < 10; i++) // 页面控件id为0,且页面控件的x坐标是只读的,所以i要从1开始 { wid[i].x = i * 40; // 给控件id为1-9的控件的x坐标赋值,赋的值为:0 40 80... wid[i].y = 100; } .. warning:: 上位机编译时不会检查用户输入的属性是否存在,如:wid[1].abcd 是不会报错的。 但在脚本执行时,会检查属性是否存在,是否可写,并报错。运行过程,一旦报错后, 后面的代码不会被执行,请自行确保输入的属性是存在的! 脚本执行中途出错 ----------------------------- 举例 :: b1.x = 100; b1.y = 100; page(1); // 执行这步后,直接退出了,后面的代码不会执行。 b1.txt.str = "123"; b1.x = 200; b1.y = 150; .. warning:: - 脚本执行过程,如遇到报错或者调用了page(页面切换)指令,后面的代码不会被执行! - 报错后,串口输出报错信息,详细信息请参考 :ref:`script_res` 串口发送脚本 ----------------------------- .. warning:: 串口发送脚本只支持执行,赋值表达式、调用指令。发送 if else while for等语句,会报错!