列表框
配置项
| 名称 | 类型 | 必填 | 说明 |
| 类型 | 文本 | true | 固定值:列表框 表示这是一个列表框控件 |
| 名称 | 文本 | true | 窗口中唯一标识 |
| x | 整数 | false | 默认显示坐标x |
| y | 整数 | false | 默认显示坐标y |
| 宽度 | 整数 | false | |
| 高度 | 整数 | false | |
| 图标组 | table {图片资源} | false | { "图标1","图标2",...} |
| 表头 | table {} | false | { {标题,宽度,图标模式,对齐},{标题,宽度,图标模式,对齐},...} |
| 表项 | table {} | false | {数据1,数据2,...},通常与表头一一对应,如果成员数量超出表头数量,不会显示,可以利用此特性作为表项额外标识 |
| 列宽可调 | 逻辑 | false | 鼠标是否可以在表头拖拽改变列宽 |
| 多选模式 | 逻辑 | false | 是否允许多选 |
| 文件拖放 | 逻辑 | false | 是否接收从windows文件夹拖放文件事件 |
| 附加 | 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,
}
}
图标组
设置一个图片资源数组,当表头设置列为图标时,表项数值显示对应的图片。
图标组 = {"icon_box","icon_eye","icon_disable"},
表头
| 成员 | 类型 | 说明 |
|---|---|---|
| 标题 | 文本 | 表头显示的内容 |
| 宽度 | 文本 | 表头的宽度 |
| 图标模式 | 逻辑 | 可选 |
| 对齐模式 | 整数 | 文本模式下 0:左对齐,1:居中对齐,2:右对齐 图标模式下 0:绘制分隔线 1:隐藏分隔线 |
表头 = {{"",24,true,1},{"名称",220,1},{"X",50,2},{"Y",50,2}}, -- 第一列是图标模式
属性
可视
- 类型:
逻辑 - 读写:
读写 - 说明:是否显示控件
父窗口
- 类型:
窗口对象 - 读写:
只读 - 说明:控件的父窗口对象
名称
- 类型:
文本 - 读写:
只读 - 说明:控件的名称。
x
- 类型:
数值 - 读写:
读写 - 说明:坐标x。
y
- 类型:
数值 - 读写:
读写 - 说明:坐标y。
次序
- 类型:
数值 - 读写:
读写 - 说明:动态改变控件的显示层级,值越大越先显示。
宽度
- 类型:
数值 - 读写:
读写 - 说明:读写列表框宽度。
高度
- 类型:
数值 - 读写:
读写 - 说明:读写列表框高度。
表项
- 类型:
table - 读写:
只读 - 说明:列表框中当前的表项数据,只读取,不要直接修改。
选中项
- 类型:
table - 读写:
只读 - 说明:列表框中当前的选中的行数组。
附加
- 类型:
table - 读写:
读写 - 说明:读写控件的附加信息。
方法
| 加入项目 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 说明:往列表框中动态加入表项。 | ||||||||||||||
示例
|
| 修改项目 | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 说明:修改指定行列的数据。 | ||||||||||||||||||||||
示例
|
| 修改颜色 | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 说明:修改指定行列文本的颜色。 | ||||||||||||||||||||||
示例
|
| 删除项目 | ||||||||
|---|---|---|---|---|---|---|---|---|
| 说明:从列表框中删除指定的行。 | ||||||||
示例 |
| 选中项目 | ||||||||
|---|---|---|---|---|---|---|---|---|
| 说明:选中指定行。 | ||||||||
示例 |
| 重置 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 说明:重置列表框的表头和项目。 | ||||||||||||
示例 |
| 加入事件 | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 说明:往控件中加入一个自定义事件。 | ||||||||||||||||||||
示例 |
| 删除事件 | ||||||||
|---|---|---|---|---|---|---|---|---|
| 说明:删除指定自定义事件。 | ||||||||
示例 |
系统事件
🔹 创建
创建时触发
| 回调参数 | 类型 | 说明描述 |
| 列表框对象 | 列表框组件 |
示例
系统事件 = {
创建 = 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,
}
