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文件夹拖放文件事件
附加 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
  • 读写:只读
  • 说明:列表框中当前的选中的行数组。

附加

  • 类型: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
输入框