(text 属性txt_maxl 800)
 ①变量loadpageid.val:调用页的页面ID。
 ②变量loadcmpid.val:调用页的控件ID。
 ③定时器tm0:让输入框有个光标不断闪烁,如果不需要,控件属性en=0即可。
 ④变量inputlenth:获取正在使用系统键盘控件字符最大长度。
 ⑤变量input:输入的数据。(属性txt_maxl改200)
 ⑥文本show:键盘显示的数据,主要目的是为了让输入框有个闪烁的效果。
 其他跳转到键盘页面的方法
 注意
 正常情况下是不需要配这三条代码的
 是为了让其他原本不支持键盘的控件控件也能调用键盘
 或者是从其他工程中导入的键盘,因为不是用正常方法添加的键盘,没法通过key属性进行配置,需要使用这个方法
 page到键盘页之前,先对键盘页的loadgageid.val和loadcmpid.val赋值就可以了
 一般在文本控件或数字控件的按下事件中进行赋值,键盘名.loadpageid.val=dp,键盘名.loadcmpid.val=当前控
 件的id
 其他的逻辑会自动实现,loadpageid.val表示调用页的页面ID,loadcmpid.val表示调用页的控件ID,然后调用page
 指令跳转到键盘页面即可
 这样就可以在键盘页面判断跳转过来的控件类型(type属性),然后根据不同类型调用不同代码转换到键盘上进行
 显示
 keybdAP.loadpageid.val=dp
 keybdAP.loadcmpid.val='&id&'
 page keybdAP
 下面的代码为键盘页面的前初始化事件
 //调用此页之前,先对此页的loadpageid.val和loadcmpid.val赋值就可以了,
 其他的逻辑本页会自动实现
 //loadpageid.val表示调用页的页面ID,loadcmpid.val表示调用页的控件ID
 if(p[loadpageid.val].b[loadcmpid.val].type==54)//整数
 {
 covx p[loadpageid.val].b[loadcmpid.val].val,input.txt,0,0
 //
 inputlenth.val=24
 }else if(p[loadpageid.val].b[loadcmpid.val].type==59)//虚拟浮点数
 // 页面ID 控件ID
 {
 inputlenth.val=p[loadpageid.val].b[loadcmpid.val].val
 // 页面ID 控件ID
 if(inputlenth.val<0)
 {
 inputlenth.val*=-1
 input.txt="-"
 }else
 {
 input.txt=""
 }
 temp.val=1
 for(temp2.val=0;temp2.val<p[loadpageid.val].b[loadcmpid.val].vvs1;temp2.val++)
 {
 temp.val*=10
 }
 temp2.val=inputlenth.val/temp.val//得到整数位
 cov temp2.val,tempstr.txt,0
 input.txt+=tempstr.txt+"."
 temp2.val=temp2.val*temp.val-inputlenth.val//得到小数位
 if(temp2.val<0)
 {
 temp2.val*=-1
 }
 covx temp2.val,tempstr.txt,p[loadpageid.val].b[loadcmpid.val].vvs1,0
 input.txt+=tempstr.txt
 inputlenth.val=24
 }else
 {
 input.txt=p[loadpageid.val].b[loadcmpid.val].txt
 inputlenth.val=p[loadpageid.val].b[loadcmpid.val].txt_maxl
 if(p[loadpageid.val].b[loadcmpid.val].type==116)
 {
 show.pw=p[loadpageid.val].b[loadcmpid.val].pw
 }
 }
 show.txt=input.txt
 下面的代码为键盘页面的OK按键的弹起事件
 //调用此页之前,先对此页的loadpageid.val和loadcmpid.val赋值就可以了,其他的逻辑本页会自动实现
 //loadpageid.val表示调用页的页面ID,loadcmpid.val表示调用页的控件ID
 if(p[loadpageid.val].b[loadcmpid.val].type==54)
 {
 covx input.txt,p[loadpageid.val].b[loadcmpid.val].val,0,0
 }else if(p[loadpageid.val].b[loadcmpid.val].type==59)
 {
 covx input.txt,temp.val,0,0
 if(temp.val<0)
 {
 temp.val*=-1
 }
 for(temp2.val=0;temp2.val<p[loadpageid.val].b[loadcmpid.val].vvs1;temp2.val++)
 {
 temp.val*=10
 }
 p[loadpageid.val].b[loadcmpid.val].val=temp.val
 strlen input.txt,temp.val
 temp.val--
 while(temp.val>=0)
 {
 substr input.txt,tempstr.txt,temp.val,1
 if(tempstr.txt==".")
 {
 substr input.txt,tempstr.txt,temp.val+1,p[loadpageid.val].b[loadcmpid.val].vvs1
 covx tempstr.txt,temp2.val,0,0
 strlen tempstr.txt,temp.val
 while(temp.val<p[loadpageid.val].b[loadcmpid.val].vvs1)
 {
 temp2.val*=10
 temp.val++
 }
 p[loadpageid.val].b[loadcmpid.val].val+=temp2.val
 temp.val=-1
 }
 temp.val--
 }
 substr input.txt,tempstr.txt,0,1
 if(tempstr.txt=="-")
 {
 p[loadpageid.val].b[loadcmpid.val].val*=-1
 }
 }else
 {
 p[loadpageid.val].b[loadcmpid.val].txt=input.txt
 }
 page loadpageid.val
 可以看到输入完成后赋值给原始控件分为3个步骤
 通过p[loadpageid.val].b[loadcmpid.val].type判断触发控件的类型是数字控件、虚拟浮点数或者其他,
 loadpageid.val和loadcmpid.val是如何传进来可以参考 其他跳转到键盘页面的方法
 根据不同的控件类型,将input.txt赋值给原始控件
 返回 loadpageid.val所记录的页面id
文本控件-属性详解
 控件属性解析
 提示
 绿色属性可以通过上位机或者串口屏指令进行修改,黑色属性只能在上位机中修改或者不可修改,可通过上位机进行修改指“选中控件后通过属性栏修改控件的属性”
 type属性 -控件类型,固定值,不同类型的控件type值不同,相同类型的控件type值相同,可读,不可通过上位机修改,不可通过指令修改。参考: 控件属性-控件id对照表
 id属性 -控件ID,可通过上位机左上角的上下箭头置顶或置底,可读,可通过上位机修改左上角的箭头置顶或置地间接修改,不可通过指令修改。参考: 如何更改控件的前后图层关系
 objname属性 -控件名称。不可读,可通过上位机进行修改,不可通过指令更改。
 vscope属性 -内存占用(私有占用只能在当前页面被访问,全局占用可以在所有页面被访问),当设置为私有时,跳转页面后,该控件占用的内存会被释放,重新返回该页面后该控件会恢复到最初的设置。可读,可通过上位机进行修改,不可通过指令更改。参考:跨页面赋值,全局变量操作
 drag属性 -是否支持拖动:0-否;1-是。仅x系列支持。可读,可通过上位机修改,可通过指令修改。
 aph属性 -不透明度(0-127),0为完全透明,127为完全不透明。仅x系列支持。可读,可通过上位机修改,可通过指令修改。
 effect属性 -加载特效:0-立即加载;1-上边飞入;2-下边飞入;3-左边飞入;4-右边飞入;5-左上角飞入;6-右上角飞入;7-左下角飞入;8-右下角飞入。仅x系列支持,在上位机中设置为立即加载时,无法通过指令变为其他特效,当在上位机中设置为非立即加载的特效时,可以变为立即加载,也可以再改为其他特效
 sta属性 -背景填充方式:0-切图;1-单色;2-图片;3-透明(仅x系列支持透明)。可读,可通过上位机修改,不可通过指令修改。
 picc属性 -切图背景(必须是全屏图片),sta为切图时才有这个属性。可读,可通过上位机修改,可通过指令修改。
 bco属性 -背景色,sta为单色时才有这个属性。可读,可通过上位机修改,可通过指令修改。
 style属性 -显示风格:0-平面;1-边框;2-3D_Down;3-3D_Up;4-3D_Auto,sta为单色时才有这个属性。可读,可通过上位机修改,不可通过指令修改。
 borderc属性 -边框颜色。当style设置为边框时可用。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。
 borderw属性 边框粗细。当style设置为边框时可用。最大值:255。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。
 pic属性 -背景图片,sta为图片时才有这个属性。可读,可通过上位机修改,可通过指令修改。
 pco属性 -字体色。可读,可通过上位机修改,可通过指令修改。
 key属性 -绑定键盘。可读,可通过上位机修改,不可通过指令修改。
 font属性 -控件调用的字库id,调用不同的字库会显示不同的字体或字号。可读,可通过上位机修改,可通过指令修改。参考:1、 创建字库和导入字库 2、 指定字库
 xcen属性 -水平对齐:0-靠左;1-居中;2-靠右。可读,可通过上位机修改,可通过指令修改。
 ycen属性 -垂直对齐:0-靠上;1-居中;2-靠下。可读,可通过上位机修改,可通过指令修改。
 pw属性 -是否显示为密码(内容仍为实际内容,仅仅显示出来为*):0-否;1-是。可读,可通过上位机修改,可通过指令修改。
 txt属性 -字符内容。可读,可通过上位机修改,可通过指令修改。
 txt_maxl属性 -字符最大长度(即分配内存空间)。可读,可通过上位机修改,不可通过指令修改。
 isbr属性 -是否自动换行:0-否;1-是。可读,可通过上位机修改,可通过指令修改。
 spax属性 -字符横向间距(最小0,最大255)。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。
 spay属性 -字符纵向间距(最小0,最大255)。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。
 x属性 -控件的X坐标。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。
 y属性 -控件的Y坐标。可读,可通过上位机修改,x系列可通过指令修改,其他系列不可通过指令修改。
 w属性 -控件的宽度。可读,可通过上位机修改,不可通过指令修改。
 h属性 -控件的高度。可读,可通过上位机修改,不可通过指令修改。
//调用此页之前,先对此页的loadpageid.val和loadcmpid.val赋值就可以了,其他的逻辑本页会自动实现
 //loadpageid.val表示调用页的页面ID,loadcmpid.val表示调用页的控件ID
 if(p[loadpageid.val].b[loadcmpid.val].type==54)//数字控件类型
 {
 covx input.txt,p[loadpageid.val].b[loadcmpid.val].val,0,0
 }else if(p[loadpageid.val].b[loadcmpid.val].type==59)//浮点数类型控件
 {
 covx input.txt,temp.val,0,0//input.txt转换成字符串复制给temp.val
 if(temp.val<0)
 {
 temp.val*=-1
 }
 for(temp2.val=0;temp2.val<p[loadpageid.val].b[loadcmpid.val].vvs1;temp2.val++)
 {
 temp.val*=10
 }
 p[loadpageid.val].b[loadcmpid.val].val=temp.val//
 strlen input.txt,temp.val// //把字符串变量input.txt的实际字符长度赋值给temp.val
 temp.val--
 while(temp.val>=0)
 {//从input.txt中的temp.val位置开始截取l个字符赋值给tempstr.txt
 substr input.txt,tempstr.txt,temp.val,1//
 if(tempstr.txt==".")//
 {
 substr input.txt,tempstr.txt,temp.val+1,p[loadpageid.val].b[loadcmpid.val].vvs1
 covx tempstr.txt,temp2.val,0,0//
 strlen tempstr.txt,temp.val//
 while(temp.val<p[loadpageid.val].b[loadcmpid.val].vvs1)
 {
 temp2.val*=10
 temp.val++
 }
 p[loadpageid.val].b[loadcmpid.val].val+=temp2.val
 temp.val=-1
 }
 temp.val--
 }
 substr input.txt,tempstr.txt,0,1//
 if(tempstr.txt=="-")
 {
 p[loadpageid.val].b[loadcmpid.val].val*=-1
 }
 }else
 {//调用页控件=input.txt
 p[loadpageid.val].b[loadcmpid.val].txt=input.txt
 }
 page loadpageid.val
/********************************/
 bp1
 if(b241.txt=="英")
 {
 btlen input.txt,temp.val
 temp.val++ //以保证比最大字符限制小2个字节
 if(temp.val<inputlenth.val)
 {
 input.txt+='&txt&'
 show.txt=input.txt
 }
 pastr0.txt=""
 }
 /********************************/
 bp2
 if(b241.txt=="英")
 {
 btlen input.txt,temp.val
 temp.val++ //以保证比最大字符限制小2个字节
 if(temp.val<inputlenth.val)
 {
 input.txt+='&txt&'
 show.txt=input.txt
 }
 pastr0.txt=""
 }
 /********************************/
 bp3
 if(b241.txt=="英")
 {
 btlen input.txt,temp.val
 temp.val++ //以保证比最大字符限制小2个字节
 if(temp.val<inputlenth.val)
 {
 input.txt+='&txt&'
 show.txt=input.txt
 }
 pastr0.txt=""
 }
if(b241.txt=="英") //拼音上翻
 {
 pa_d.val-=18
 if(pa_d.val<0)
 {
 pa_d.val=0
 }
 for(temp.val=bp1.id;temp.val<=bp18.id;temp.val++)
 {
 pa_txt pastr1.txt,b[temp.val].txt,pa_d.val+temp.val-bp1.id,1
 }
 }
 if(b241.txt=="英") //拼音下翻
 {
 pa_d.val+=18
 if(pa_d.val>=pa_z.val)
 {
 pa_d.val=pa_z.val-1
 }
 if(pa_d.val>-1)
 {
 for(temp.val=bp1.id;temp.val<=bp18.id;temp.val++)
 {
 pa_txt pastr1.txt,b[temp.val].txt,pa_d.val+temp.val-bp1.id,1
 }
 }
 }
获取控件自身的属性»串口屏高级应用详解 »获取控件自身的属性
 在其他语言,例如java中,this是自身的一个对象,代表对象本身。
 可以使用this来获取到对象自身的属性。
 例如
 public Date(int year, int month, int day){ this.year = year; this.month = month; this.day = day; }
 某些情况下需要在当前的控件中获取到当前控件的属性
 例如获取b0的txt属性进行判断
 if(b0.txt=="开始"){ b0.txt="停止"}else{ b0.txt="开始"}
 如果有多个类似的按钮进行判断,修改起来就相对麻烦,那么就可以用下面这种方法来获取到自身的属性进行判断。
 if('&txt&'=="开始"){ '&txt&'="停止"}else{ '&txt&'="开始"}
 也可以通过’&val&’来获取自身的val属性或者其他属性‘
if(t0.txt!="")
 {
 wepo t0.txt,0 //写入密码到eeprom
 t1.txt="密码已修改化为"+t0.txt
 }else
 {
 t1.txt="请输入密码"
 }
 repo va0.txt,0 //读出密码
 if(va0.txt==t0.txt) //判断密码
 {
 t1.txt="密码正确"
 }else
 {
 t1.txt="密码错误,请重新输入"
 }
f(Flag==1)
 {
 Flag=0 //复位文本更新标志
 strlen t0.txt,n0.val //检测字符串长度
 intput.txt=t0.txt //复制拷贝到缓存
 t0.txt="" //清除文本内容
 n0.val+=n1.val //字符长度加首行长度
 va1.val=n0.val/n1.val //行数
 for(Number=0;Number<va1.val;Number++)//行数循环
 {
 substr intput.txt,tempstr.txt,va0.val,n1.val//截取缓存文本 位置 长度
 t0.txt+=tempstr.txt //当前行内容
 t0.txt+="\r" //换行
 delay=1000 //延时观察
 va0.val+=n1.val//已经截取地址值加一//截取位置累加
 }
 }