YStudio Y++

YSS · 表格(tablewidget)

Y++ / YStudio 开发文档 · 一点滴

选择器: tablewidget · 设计器组件: 表格 · 按名称: tablewidget#名称#名称

通用报表表格:自定义表头、单元格、勾选、排序、键盘导航;支持稀疏 @TABLE 虚拟行;单元格可嵌入子控件。

需要列字母/行号、工作表编辑体验时,请用 数据表格datagrid)的「工作表模式」。表格组件不再提供 Excel/工作表模式。

常用方法

方法 说明
置行数(行数) / 取行数() 逻辑行数(未写入数据的行视为空行)
置列数(列数) / 取列数() 列数
置单元格(行, 列, 文本) / 取单元格(行, 列) 读写单元格(0 起)
取标题(行, 列) / 置标题(行, 列, [文本], [图片字节集]) 单元格文本与图片;可只设文字、只设图片或两者同时
添加列(名称, [列宽=80], [图标], [对齐方式=1]) 末尾追加列并设表头;对齐 1左/2中/3右
添加行(名称, [行高=28], [图标], [对齐方式=1]) 末尾追加行;名称/图标写入首列(无独立行头)
置表头(列, 文本) / 取表头(列) 改已有列头标题
加入控件(行, 列, 组件名, [宽度=0], [高度=0]) 在单元格嵌入子控件;可与左侧文字并存
置勾选(行, 勾选) / 取勾选(行) 行勾选(读写首列;需「显示勾选」)
置单元格勾选(行, 列, 勾选) / 取单元格勾选(行, 列) 任意单元格勾选
取当前行() / 取当前列() 当前单元格行列
取行数据(行, [类型=1]) 指定行各列文本;1=文本数组,2=JSON
取当前行数据([返回值类型=1]) 当前行;同 取行数据 的类型含义
置当前单元格(行, 列) 设置当前格
清空() 清空单元格,保留行列与表头

属性

属性 说明
选中项 当前选中行索引(0 起);读写

事件与 置事件

设计器写法:

函数 表格1.单元格被单击(整数 行, 整数 列, 文本 区域) {
    输出(行, 列, 区域)
}

运行时动态绑定(等同设计器事件名):

表格1.置事件("单元格被单击", &表格单元格单击)

函数 表格单元格单击(整数 行, 整数 列, 文本 区域) {
    文本 行数据[] = 表格1.取当前行数据()
    输出(行数据)
}

嵌入控件须先 加入控件 得到名称,再对返回名 置事件

文本 按钮 = 表格1.加入控件(0, 2, "按钮", 64, 24)
表格1.置标题(0, 2, "操作")
按钮.置事件("单击", &单元格按钮单击)

常用事件:当前单元格改变单元格被单击单元格被双击单元格改变单元格被右键单击

示例

// 推荐:添加列 / 添加行
表格1.置列数(1)
表格1.置行数(0)
表格1.置表头(0, "姓名")      // 首列标题
表格1.添加列("年龄", 80, , 2) // 追加列;对齐 2=居中
表格1.添加行("张三")
表格1.置单元格(0, 1, "25")
表格1.添加行("李四")

文本 行[] = 表格1.取行数据(0)       // 文本数组
文本 json = 表格1.取行数据(0, 2)    // JSON:["张三","25"]
文本 当前[] = 表格1.取当前行数据()

兼容旧写法(先定列再改表头):

表格1.置行数(10)
表格1.置列数(3)
表格1.置表头(0, "姓名")
表格1.置表头(1, "年龄")
表格1.置标题(0, 0, "张三")
表格1.置标题(0, 1, "25")
表格1.置勾选(0, 真)

整数 行 = 表格1.选中项
表格1.选中项 = 2

文本 行[] = 表格1.取当前行数据()
文本 json = 表格1.取当前行数据(2)
逻辑 已选 = 表格1.取勾选(0)