Dream Mod 3.0Dream Mod 3.0
首页
快速开始
资源库
首页
快速开始
资源库
  • 进度

    • 更新日志
  • 指南

    • 快速上手
    • App.lua
    • Server.lua
    • 地图
    • 角色
    • 道具
    • 技能
    • 状态
    • 窗口
    • 成长
    • DmTcpClient
    • WebSocketClient
    • SqliteDB
    • 皮肤
    • 自定义组件
  • Api

    • 引擎
    • 地图
    • 角色
    • 道具
    • 技能
    • 状态
    • 窗口
    • 自定义组件
    • 音乐
    • 缓动
    • 全局
  • 控件

    • 标签
    • 按钮
    • 图片框
    • 动画框
    • 文本框
    • 进度条
    • 技能格子
    • 快捷格子
    • 包裹格子
    • 道具格子
    • 角色框
    • 选择框
    • 选择夹
    • 容器
    • 地图框
    • 滑块条
    • 滚动条
    • 组合框
    • 输入框
    • 列表框
  • 组件

    • 文本
    • 艺术字
    • 精灵
    • 矩形
    • 圆形
    • 动画
  • 其他

    • 丰富文本
    • 模板变量
    • 游戏盒子

列表框

配置项

名称类型必填说明
类型 文本true固定值:列表框 表示这是一个列表框控件
名称 文本true窗口中唯一标识
x 整数false默认显示坐标x
y 整数false默认显示坐标y
宽度 整数false
高度 整数false
图标组 table {图片资源}false{ "图标1","图标2",...}
表头 table {}false{ {标题,宽度,图标模式,对齐},{标题,宽度,图标模式,对齐},...}
表项 table {}false{数据1,数据2,...},通常与表头一一对应,如果成员数量超出表头数量,不会显示,可以利用此特性作为表项额外标识
列宽可调 逻辑false鼠标是否可以在表头拖拽改变列宽
多选模式 逻辑false是否允许多选
文件拖放 逻辑false是否接收从windows文件夹拖放文件事件
表头默认背景色 RGBAfalse
表头默认文本色 RGBAfalse
表项默认背景色 RGBAfalse
表项焦点背景色 RGBAfalse
表项选中背景色 RGBAfalse
表项默认文本色 RGBAfalse
表项焦点文本色 RGBAfalse
表项选中文本色 RGBAfalse
边框色 RGBAfalse
背景色 RGBAfalse
网格色 RGBAfalse
边框宽度 整数false
圆角半径 整数false
圆角边数 整数false
表头高度 整数false
表项高度 整数false
字体 文本false
附加 tablefalse自定义变量
默认可视 逻辑false默认是否显示
系统事件 tablefalse
{
    名称 = "列表框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
  • 读写:只读
  • 说明:列表框中当前的选中的行数组。

位置

  • 类型:整数
  • 读写:读写
  • 说明:列表框垂直滚动条的位置。
列表框对象.位置 = 0 -- 显示到第一行

附加

  • 类型:table
  • 读写:读写
  • 说明:读写控件的附加信息。

方法

加入项目

加入项目
说明:往列表框中动态加入表项。
参数名称值的类型是否必填说明描述
表项数据 tabletrue列的位置与表头对应

示例

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})
返回值值的类型说明描述
结果 逻辑是否修改成功

删除项目

删除项目
说明:从列表框中删除指定的行。
参数名称值的类型是否必填说明描述
行号 整数/tabletrue允许传递一个行号数组批量删除

示例

列表框对象.删除项目(1)
列表框对象.删除项目({2,3,4})

选中项目

选中项目
说明:选中指定行。
参数名称值的类型是否必填说明描述
行号 整数/tabletrue允许传递一个行号数组批量选中

示例

列表框对象.选中项目({1,3,6,10})

重置

重置
说明:重置列表框的表头和项目。
参数名称值的类型是否必填说明描述
表头 tablefalse填nil时,表头不变,格式同配置项
表项 tablefalse格式同配置项

示例

列表框对象.重置({{"名称",80},{"职业",80},{"等级",80}},{{"玩家1","战士",10},{"玩家2","法师",10},{"玩家3","牧师",10}}) -- 表头  表项

加入事件

加入事件
说明:往控件中加入一个自定义事件。
参数名称值的类型是否必填说明描述
事件名称 文本true触发的事件名称
附加信息 tablefalse事件触发时可以取出
延迟时间 数值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,
}
Prev
输入框