| 名称 |
类型 |
必填 |
说明 |
| 类型 | 文本 | true | 固定值: 表示这是一个列表框控件 |
| 名称 | 文本 | true | 窗口中唯一标识 |
| x | 整数 | false | 默认显示坐标x |
| y | 整数 | false | 默认显示坐标y |
| 宽度 | 整数 | false | |
| 高度 | 整数 | false | |
| 图标组 | table {图片资源} | false | { "图标1","图标2",...} |
| 表头 | table {} | false | { {标题,宽度,图标模式,对齐},{标题,宽度,图标模式,对齐},...} |
| 表项 | table {} | false | {数据1,数据2,...},通常与表头一一对应,如果成员数量超出表头数量,不会显示,可以利用此特性作为表项额外标识 |
| 列宽可调 | 逻辑 | false | 鼠标是否可以在表头拖拽改变列宽 |
| 多选模式 | 逻辑 | false | 是否允许多选 |
| 文件拖放 | 逻辑 | false | 是否接收从windows文件夹拖放文件事件 |
| 表头默认背景色 | RGBA | false | |
| 表头默认文本色 | RGBA | false | |
| 表项默认背景色 | RGBA | false | |
| 表项焦点背景色 | RGBA | false | |
| 表项选中背景色 | RGBA | false | |
| 表项默认文本色 | RGBA | false | |
| 表项焦点文本色 | RGBA | false | 列表行获得焦点时的文本颜色;Heimei-EG-lua ver-1 起,A=0 表示不覆盖富文本原色 |
| 表项选中文本色 | RGBA | false | 列表行处于选中状态时的文本颜色;Heimei-EG-lua ver-11 起,A=0 表示不覆盖富文本原色 |
| 边框色 | RGBA | false | |
| 背景色 | RGBA | false | |
| 网格色 | RGBA | false | |
| 边框宽度 | 整数 | false | |
| 圆角半径 | 整数 | false | |
| 圆角边数 | 整数 | false | |
| 表头高度 | 整数 | false | |
| 表项高度 | 整数 | false | |
| 字体 | 文本 | false | |
| 附加 | table | false | 自定义变量 |
| 默认可视 | 逻辑 | false | 默认是否显示 |
| 系统事件 | table | false | |
{
名称 = "列表框1",
类型 = "列表框",
默认可视 = true,
x = 10,
y = 40,
宽度 = 240,
高度 = 240,
列宽可调 = true,
多选模式 = true,
文件拖放 = true,
表头 = {{"名称",80},{"序号",80},{"偏移X",40},{"偏移Y",40}},
表项 = {
{"玩家1",1,0,0,"测试"},
{"玩家2",2,0,0},
{"玩家3",3,0,0},
{"玩家4",4,0,0},
{"玩家5",1,0,0},
},
系统事件 = {
点击 = function(列表框对象,行号,列号,键值,功能键)
调试输出(行号)
end,
选中 = function(列表框对象,行号)
调试输出(列表框对象.表项[行号])
end,
编辑 = function(列表框对象,行号,列号,结果)
if (列号 == 1) then
return true -- 只允许编辑第一列
end
end,
接收文件 = function(列表框对象,文件组)
local 项目组 = {}
for n =1,#文件组 do
table.insert(项目组,{文件组[n],0,0,0})
end
列表框对象.重置(nil,项目组) -- 表头 表项
end,
}
}
设置列表行获得焦点时使用的文本颜色。
Heimei-EG-lua ver-1 起,当该颜色的透明度 A 为 0 时,富文本单元格不再用焦点文本色覆盖标题,而是继续显示各文字段自身的原始颜色。例如标题中的 #R 红色或其他富文本颜色,在焦点触发后保持不变。
表项焦点文本色 = RGBA(255,255,255,0), -- A=0:焦点时保留标题原色
- 只判断 A 是否为
0,RGB 分量可以使用其他值。 - A 为
1 到 255 时,仍按原行为使用焦点文本色覆盖标题。 表项焦点背景色是独立配置,不会触发本规则。- 行同时处于焦点和选中状态时,焦点规则优先;焦点文本色 A=0 时仍保留各文字段原色。
- 使用
修改颜色设置单元格独立颜色时,颜色表第二项是该单元格的焦点文本色;它仍具有原有优先级。第二项 A=0 时保留原色,A>0 时覆盖控件级焦点文本色。 - 本扩展作用于富文本单元格;列表按钮文字、手工插入的旧文本节点及其他控件不在本次改动范围内。
设置列表行处于选中状态且不在焦点行时使用的文本颜色。
Heimei-EG-lua ver-11 起,当该颜色的透明度 A 为 0 时,富文本单元格不再用选中文本色覆盖标题,而是继续显示各文字段自身的原始颜色。行为与表项焦点文本色的 A=0 规则一致。
表项选中文本色 = RGBA(255,255,255,0), -- A=0:选中时保留标题原色
- 只判断 A 是否为
0,RGB 分量不参与是否保留原色的判断。 - A 为
1到255时,仍按原行为使用选中文本色覆盖富文本标题。 表项选中背景色保持独立,文本色 A=0 不会取消或改变选中背景。- 行同时处于焦点和选中状态时仍沿用焦点优先级,最终按
表项焦点文本色规则处理。 - 使用
修改颜色设置单元格独立颜色时,颜色表第三项是该单元格的选中文本色;第三项 A=0 时同样保留原色。 - 本扩展仅作用于富文本单元格,不改变列表按钮文字、手工旧文本节点或其他控件。
设置一个图片资源数组,当表头设置列为图标时,表项数值显示对应的图片。
图标组 = {"icon_box","icon_eye","icon_disable"},
| 成员 | 类型 | 说明 | |
| 标题 | 文本 | 表头显示的内容 | |
| 宽度 | 文本 | 表头的宽度 | |
| 图标模式 | 逻辑 | 可选 |
| 对齐模式 | 整数 | 文本模式下 0:左对齐,1:居中对齐,2:右对齐
图标模式下 0:绘制分隔线 1:隐藏分隔线 |
| 按钮列标记 | 文本 | 可选第五项;值为按钮且图标模式未启用时,该列按按钮单元格绘制 |
表头 = {{"",24,true,1},{"名称",220,1},{"X",50,2},{"Y",50,2}}, -- 第一列是图标模式
表头第五项设为按钮后,对应表项可以传入按钮配置 table。按钮配置的点击间隔格式为{毫秒间隔时间, 遮罩模式};未配置时等价于{0,0},不会启用冷却。
表头 = {
{ '物品', 180 },
{ '操作', 80, false, 1, '按钮' },
}
列表框对象.加入项目({
'钢手镯',
{
标题 = '购买',
宽度 = 64,
高度 = 24,
点击间隔 = { 1000, 2 },
},
})
系统事件 = {
按钮点击 = function(列表框对象, 行号, 列号, 标题)
调试输出('按钮点击', 行号, 列号, 标题)
end,
}
点击间隔[1] > 0时,第一次有效点击会在调用按钮点击前记录截止时间;截止前该单元格的按钮不可再次触发按钮点击。- 第二项为遮罩模式:0 不绘制遮罩,1 是转圈遮罩,2 从左往右消退,3 从右往左消退,4 从上往下消退;table 第二项省略或传入其他值时按模式 0。模式 0 只取消视觉遮罩,不取消第一项设置的点击冷却。
- 每个行列单元格独立保存冷却,不会因按钮皮肤池复用而串到其他行;滚出可视区后仍按引擎运行时间到期。
- 冷却期间按钮显示原生矩形进度遮罩,遮罩按该单元格按钮的当前宽高更新;同一池化按钮绘制下一行时会立即重置显示状态。
点击间隔缺省、table 第一项为 0/负数/非数值时按 0 处理;为兼容 ver-8,旧的单独数值仍按模式 1 读取;禁用 = true仍优先禁止按钮回调。- 冷却只抑制
按钮点击事件。列表框原有的通用点击事件仍按原规则触发,便于保留行选择和列表交互。 - ver-10 将列表冷却截止时间保存在稳定的表项按钮配置 table,而不是可能因刷新/轮回复用暂为空的绘制 cell。焦点行和按钮配置仍有效时,即使绘制 cell 为 nil,
按钮点击也会照常触发;列表通用点击事件保持原规则。
- 类型:
数值 - 读写:
读写 - 说明:动态改变控件的显示层级,值越大越先显示。
- 类型:
table - 读写:
只读 - 说明:列表框中当前的表项数据,只读取,不要直接修改。
- 类型:
table - 读写:
只读 - 说明:列表框中当前的选中的行数组。
- 类型:
整数 - 读写:
读写 - 说明:列表框垂直滚动条的位置。
- 类型:
table - 读写:
读写 - 说明:读写控件的附加信息。
| 加入项目 |
| 说明:往列表框中动态加入表项。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 表项数据 | table | true | 列的位置与表头对应 |
示例
local 位置 = 列表框对象.加入项目({"玩家1","战士",42})
列表框对象.选中项目(位置)
| 返回值 |
值的类型 |
说明描述 |
| 行号 | 整数 | 返回新加入的项目位置 |
|
| 修改项目 |
| 说明:修改指定行列的数据。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 行号 | 整数 | true | |
| 列号 | 整数 | true | |
| 数据 | 文本 | true | |
示例
if (#列表框对象.选中项 > 0) then
local 行号 = 列表框对象.选中项[1]
local 原数据 = 列表框对象.表项[行号]
local 原始值 = 原数据[3]
列表框对象.修改项目(行号,3,原始值+1) -- 修改第3列的数据
end
| 返回值 |
值的类型 |
说明描述 |
| 结果 | 逻辑 | 是否修改成功 |
|
| 修改颜色 |
| 说明:修改指定行列文本的颜色。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 行号 | 整数 | true | |
| 列号 | 整数 | true | |
| 颜色表 | table {} | true | 默认色,焦点色,选中色 |
示例
列表框对象.修改颜色(行号,列号,{0xffffffff,0x00ff00ff,0x888888ff})
| 返回值 |
值的类型 |
说明描述 |
| 结果 | 逻辑 | 是否修改成功 |
|
| 删除项目 |
| 说明:从列表框中删除指定的行。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 行号 | 整数/table | true | 允许传递一个行号数组批量删除 |
示例
列表框对象.删除项目(1)
列表框对象.删除项目({2,3,4})
|
| 选中项目 |
| 说明:选中指定行。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 行号 | 整数/table | true | 允许传递一个行号数组批量选中 |
示例
|
| 重置 |
| 说明:重置列表框的表头和项目。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 表头 | table | false | 填nil时,表头不变,格式同配置项 |
| 表项 | table | false | 格式同配置项 |
示例
列表框对象.重置({{"名称",80},{"职业",80},{"等级",80}},{{"玩家1","战士",10},{"玩家2","法师",10},{"玩家3","牧师",10}}) -- 表头 表项
|
| 加入事件 |
| 说明:往控件中加入一个自定义事件。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 事件名称 | 文本 | true | 触发的事件名称 |
| 附加信息 | table | false | 事件触发时可以取出 |
| 延迟时间 | 数值 | false | 延迟执行 |
| 自动销毁 | 逻辑 | false | 是否只执行一次,默认:true |
示例
系统事件 = {
创建 = function(列表框对象)
列表框对象.加入事件("延迟触发",{},500)
end,
延迟触发 = function (列表框对象,tbl,dt,time)
调试输出("触发了")
end,
}
|
| 删除事件 |
| 说明:删除指定自定义事件。 |
| 参数名称 |
值的类型 |
是否必填 |
说明描述 |
| 事件名称 | 文本 | true | |
示例
系统事件 = {
创建 = function(列表框对象)
列表框对象.加入事件("倒计时",{计次=10},1000,false)
end,
倒计时 = function (列表框对象,tbl,dt,time)
tbl.计次 = tbl.计次 - 1
if (tbl.计次 == 0) then
列表框对象.删除事件("倒计时")
调试输出("起飞!")
return
end
调试输出("倒计时 " .. tbl.计次 .. "秒")
end,
}
|
创建时触发
示例
系统事件 = {
创建 = function(列表框对象)
调试输出(列表框对象.名称)
end
}
| 回调参数 |
类型 |
说明描述 |
| 列表框对象 | 列表框组件 | |
| 行号 | 整数 | |
| 列号 | 整数 | |
| 键值 | 整数 | 0:左键 1:右键 2:中键。 |
| 功能键 | 整数 | 1:Ctrl 2:Shift 3:Alt 是否处于按下状态 |
示例
系统事件 = {
点击 = function(列表框对象,行号,列号,键值,功能键)
if (键值 == 1) then
if (行号 > 0) then
引擎.弹出菜单("列表菜单",{列表框=列表框对象,行号=行号})
end
end
end,
}
| 回调参数 |
类型 |
说明描述 |
| 列表框对象 | 列表框组件 | |
| 行号 | 整数 | |
示例
系统事件 = {
选中 = function(列表框对象,行号)
调试输出(列表框对象.表项[行号])
end,
}
- 鼠标双击表项数据时触发编辑事件。
结果为nil时,表示触发准备编辑事件 返回 true 表示允许编辑。结果为string时,表示获得编辑结果,还可以通过返回值修改。
| 回调参数 |
类型 |
说明描述 |
| 列表框对象 | 列表框组件 | |
| 行号 | 整数 | |
| 列号 | 整数 | |
| 结果 | nil/文本 | nil:准备编辑 文本:已经编辑后的结果 |
示例
系统事件 = {
编辑 = function(列表框对象,行号,列号,结果)
if (结果 == nil) then -- 表示准备编辑
if (列号 == 3 or 列号 == 4) then
return true -- 返回 true 表示允许编辑
end
else -- 表示编辑结束
结果 = tonumber(结果)
if (结果 < 0) then
结果 = 0
end
return 结果
end
end,
}
| 回调参数 |
类型 |
说明描述 |
| 列表框对象 | 列表框组件 | |
| 文件组 | 文本 {} | 接收到的文件数组 |
示例
系统事件 = {
接收文件 = function(列表框对象,文件组)
local 项目组 = {}
for n =1,#文件组 do
table.insert(项目组,{文件组[n],0,0,0})
end
列表框对象.重置(nil,项目组) -- 表头 表项
end,
}
local 道具 = 引擎.窗口.包裹窗口.角色包裹1.取出物品(1, 6)
列表框.加入项目({
引擎.富文本道具(道具.名称, 道具.数量, nil, nil, 道具, 34),
})
第六参数 34 表示 34×34 虚拟格子,参与排版、图标/效果绘制、数量定位和热点判断。ver-7 起,34 是直接传给原生道具格绘制规则的目标尺寸,不再以系统底图的实际纹理宽高换算:小图标保持原尺寸,超限静态素材才等比缩小。列表框保留自身的留白与滚动裁剪,建议行高至少为 38。
富文本道具的动画节点不再与背包、装备栏或其他单元格共用,多个同款道具也独立定位。常规无旋转、正缩放精灵/帧动画裁剪到格子范围;复杂旋转、翻转和非批绘制组件仍使用原生行为。详情见丰富文本 - #item。本版不处理混合显示;机器隔离验证通过,实机待测。
Heimei-EG-lua ver-6 修复固定富文本道具在“加入项目”返回后的首帧绘制退出。列表参数不需要调整,继续使用上面的六参数调用;内部裁剪改为整数纹理像素。真实 App.exe 离线对照通过,完整前端视觉与交互仍需复测。
Heimei-EG-lua ver-7 修复格子效果底图大小不一致及小道具图标看似被放大的问题。格子效果存在时按原生规则由效果列表负责完整图层,不再在末尾重复绘制主图标;列表热点与标准道具气泡仍绑定 34×34 虚拟格子。
| 日期 | 版本 | 简易记录 |
| 2026-09-10 | Heimei-EG-lua ver-1 | 新增列表框富文本单元格的透明焦点色规则:表项焦点文本色的 A=0 时不覆盖标题原色;用户实机验证通过。 |
| 2026-09-10 | Heimei-EG-lua ver-5 | 支持富文本道具第六参数控制虚拟格子大小,统一热点与滚动定位;隔离动画节点,保留透明焦点色规则。 |
| 2026-09-10 | Heimei-EG-lua ver-6 | 修复固定富文本道具首帧裁剪绘制退出;加入项目、透明焦点色及滚动热点逻辑不变。 |
| 2026-09-10 | Heimei-EG-lua ver-7 | 对齐原生道具格尺寸规则,修复系统底图误缩放效果层与主图标重复绘制;热点气泡继续使用虚拟格子。 |
| 2026-09-11 | Heimei-EG-lua ver-8 | 列表按钮单元格支持点击间隔;按单元格隔离截止时间,冷却期间阻止重复按钮点击并显示随按钮尺寸更新的 CD 遮罩。 |
| 2026-09-11 | Heimei-EG-lua ver-9 | 尝试保护空 cell 并支持 4 种遮罩;用户实机确认虽不再报错,但轮回殿按钮列因空 cell 被直接跳过而不触发按钮点击,由 ver-10 修订。 |
| 2026-09-11 | Heimei-EG-lua ver-10 | 冷却状态改存按钮配置 table,修复空绘制 cell 导致列表按钮回调丢失;新增模式 0 无遮罩并设为 table 第二项默认值。 |
| 2026-09-11 | Heimei-EG-lua ver-11 | 表项选中文本色的 A=0 时不再覆盖富文本文字段原色;焦点优先级、选中背景色及 A>0 行为不变,机器矩阵验证通过。 |