列表选择框(combobox)

V2.3新增,用于替换原来的 data 的一部分

功能

显示下拉文本框

支持的数据

  • 诊断参数 K/D/T/C/R/S,支持位型/字节型参数(诊断参数的非位型数据可以设置数据类型,共6种,u8/u16/u32/s8/s16/s32,s表示有符号数,u表示无符号数,数字表示数据的位数,默认为u8。形式为xxx[type],如K8[u16],表示K区8号参数,无符号16位)
  • 宏变量 #
  • 系统参数 格式可为P414, P415[1],P1105.1-[1],中括号内可以是一个数字,也可以是一个变量或者表达式。例如P415[D1],则轴号由"D1"决定。
  • 伺服参数 支持伺服参数PA,ZA-ZF/ZP,写法为PA1[3],中括号内可以是一个数字,也可以是一个变量或者表达式。例如PA1[D1],则轴号由"D1"的值决定。
  • KUI自定义变量 自定义变量名称可以为小写字母或小写字母+数字,不支持大写字母,为了区别于系统数据,将自定义变量包含在大括号{}内,形如{v1},非保持型变量,在{}前加两个下划线 "__" ,形如__{v1}
  • 可变变量 格式可为select{D10, (1,D11),(2, D12)},当D10的值不为1或2时此变量的值为0,且不可捕获焦点,应该避免这样的情况发生。

参数

  • 描述的数据,此参数类型为字符串,写作 " #500 "
  • 控件所在位置及所占空间大小,此参数类型为元组,写作 (a, b, c, d) 其中a/b/c/d都应该是正整形值分别表示控件的 起始行/起始列/所占行数/所占列数,其中c/d可以省略,省略时值均为1。
  • 对齐方式:支持左对齐,默认对齐方式为[全局默认设置]({{ref “global-setup#default”}})里设置的对齐方式**(V3.1起支持)**
  • 颜色(不设为默认值)
    • 可以设置文字颜色
    • 可设置边框颜色(默认有边框),写作border_visible=1,border_color=边框颜色,其中border_visible=1可省略**(V3.0起支持)**
  • 字体大小(可以省略,不设为默认值)
  • 线框格式:取值可为 隐藏/不隐藏,此参数可以省略,默认为不隐藏,此参数类型非字符串,写作 隐藏,会隐藏控件四周的线框。
  • enable表达式:当该表达式值不为0时该控件才可以修改,等于0时控件不捕获光标,故不能修改,此参数为字符串类型,写作enable="#100",则只有当#100不等于0时才可以修改。当#100为0时此控件与infolabel相似。(可以省略,不设时可以修改 )
  • id 控件名称,用于标识控件,所有页面中的控件名称不可重复,此参数可以省略,省略时没有id。此参数可以为数字或中英文字符串,写作 id="page1"id=1
  • choices参数 ,有两种语法格式,一种是直接以字典的格式直接写出(仅支持单级文本框),另一种以json格式写成文件(支持多级文本框)。
    • 字典格式:语法为 choices={54: "这是G54",55: "这是G55"},大括号中每一个被逗号分隔的单元都应该是一个"键–值对",冒号前面的为"键",后面的为"值",大括号中可以包含若干个"键–值对"。控件显示一个下拉文本框,文本框包含大括号里面所有的"值",选择某个"值"会将相对应的"键"的值赋给数据,若参数action有效会同时响应相关动作。数据和大括号里面的所有"键"值都不相等时文本框显示"无效"两个字。
    • json文件:语法为 choices="fileName.json",当文件"fileName.json"在当前工作目录下时可以直接写文件名,不在当前工作目录下时需要写绝对路径。文件格式见本页json文件格式说明(V2.3起支持)
  • action为响应动作,可以通过设置此参数实现从控件输入值时执行相应的动作,action取值可以为 运行脚本/运行脚本文件/运行MDI/程序段模板。(可以省略,不设时没有动作 )
    • 运行脚本:语法为:action=运行脚本("xxx"),括号中的字符串为符合KUI脚本语法的若干语句。当操作者手动改变控件数据值时,将执行这些语句。
    • 运行脚本文件:语法为:action=运行脚本文件("xxx.prg"),括号中的字符串为KUI脚本文件名称,文件需放到当前目录下或写入绝对路径。当操作者手动改变控件数据值时,将执行此文件。
    • 运行MDI:语法为:action=运行MDI,在下拉文本框中选择相应"值"时会在MDI模式下执行"值"字符串,如果不符合语法将报错。
    • 程序段模板:语法为:action=程序段模板('''xxx'''),括号中的字符串为一个程序模板段,当操作者手动改变控件数据值时,将以其为模板生成程序段,插入当前光标之后。程序模板段可以包含任意符合KUI脚本语法的语句和一些会生成程序的模板语句,模板语句中的字符在生成程序时不变,变量则用其值来替代。例如 ''' G01 X#500'‘‘在生成程序时(假设#500值为100),会生成程序"G01 X100;"。
  • left 左边控件,right右边控件,prev上一控件,next下一控件(对应数控系统面板上的 “左”/“右”/“上”/“下"按键),当需要设置控件的光标顺序时将对应控件的id赋值给相应参数即可,4个参数可以设置0个或多个。此参数为字符串类型或数字类型,取决于跳转到的控件的id,写作 left="LA"left=1,则按系统面板上的"左"按键时,id为"LA”/1 的控件捕获光标。(可以省略)
  • 文本框弹出方向 取值可为 向上/向下,此参数可以省略,默认为向下,此参数类型非字符串,写作 direction=向上,此时文本框会向上弹出。(V2.7开始支持)
  • 是否显示:不显示visible=0(v3.3新增)

json文件格式说明

  • 文件最外层是一对[ ],表示内部对象为一个数组。
  • [ ]内部含有若干个包含在{ }中的对象,每个对象中的键"text"对应的值为此层文本框显示的字符串。每个{ }中除了键"text"外还可以含有键"choices"或"value",若含有"value"键则表示此对象没有下一级下拉框;若含有键"choices"则表示此对象有下一级下拉框。“value"键对应的值为变量的值,当变量的值与此值相等时显示"text"对应的值;当手动选择此"text"对应的值时将"value"键对应的值赋给变量。“choices"键对应的值为一个[ ]包含的数组,此数组与最外层的数组相似。
  • 下拉文本框最多为三级。
[               
    {
      "text": "吉林省",
      "choices": [
        {
          "text": "长春",
          "choices":[
              {
                "text": "南关区",
                "value": 1
              },
              {
                "text" : "朝阳区",
                "value": 2
              }
            ]
        },
        {
          "text": "吉林",
          "value": 3
        }
      ]
    },
    {
      "text": "辽宁省",
      "choices": [
            {
              "text": "沈阳",
              "value": 4
            },
            {
              "text": "大连",
              "value": 5
            }
      ]
    },
    {
      "text": "北京",
      "value": 10
    }
]

示例

此控件用于显示下拉文本框,可以根据绑定变量的值自动显示对应的字符串,也可以选择字符串将相应的值赋给绑定的变量,action参数可以设定在下拉文本框中选择任意一行文本,并按系统的"输入"按键时执行的KUI脚本。例如,根据宏变量#4005的值来显示此时的工作坐标系。可以用此控件显示一个下拉文本框,选择下拉框中的"值"时会将其对应的"键"值赋给指定的变量。

combobox

with page(510, 792, id="combobox", text=(红色, f24x12), data=(黄色, f24x16)):
    label("绝对坐标", (50, 20, 23, 100), 绿色, f24x12)
    combobox("#4005", (50, 125, 40, 80), 绿色, f24x12, 左对齐, 隐藏, choices={54: "G54", 55: "G55", 56: "G56",57: "G57"})  # 此处可以手动选择坐标系,并将相应的值赋给#4005
    label("X", (90, 78, 20, 20), 居中, f24x12)
    coor("X", (90, 100, 20, 110), 右对齐, 绝对, 青色, f24x12)
    label("Y", (125, 78, 20, 20), 居中, f24x12)
    coor("Y", (125, 100, 20, 110), 右对齐, 绝对, 青色, f24x12)
    label("Z", (160, 78, 20, 20), 居中, f24x12)
    coor("Z", (160, 100, 20, 110), 右对齐, 绝对, 青色, f24x12)
    combobox("#503", (300, 400, 90, 150), 浅灰色, f24x12, choices="Map.json") #此处的Map.json为上面Json格式说明是举的例子
    combobox("D11[u8]", (130, 150, 30,250), choices={1:" 前景色_绿",2:"前景色_蓝", 3:" 查看前景色"}, border_visible=1,border_color=青色)