News:博客小程序已成功发布,各位可以自行搜索使用,方便随时查找知识。

易语言超级列表框操作,导入,导出,全选,反选,排序,例子

忧郁之子 1839 0 条

设计视图

20200405171302.png

主要代码:

.版本 2
.支持库 edroptarget
.支持库 shell
.支持库 iext

.程序集 窗口程序集_窗口1

.子程序 _窗口1_创建完毕

拖放对象1.注册拖放控件 (窗口1.取窗口句柄 ())

.子程序 _按钮1_被单击
.局部变量 文本, 文本型

置随机数种子 ()
.计次循环首 (888, )
    文本 = 文本 + 到文本 (取随机数 (1, 10000)) + 到文本 (取随机数 (10000, 99999)) + “----” + 文本_取随机字母 (取随机数 (6, 16)) + #换行符
.计次循环尾 ()
写到文件 (取特定目录 (3) + “临时随机生成的账号.txt”, 到字节集 (文本))
信息框 (“账号文本生成完毕!” + #换行符 + “在桌面可以看到!”, #信息图标 + 0, , )

.子程序 _按钮2_被单击
.局部变量 文本, 文本型
.局部变量 第一次分割, 文本型, , "0"
.局部变量 第二次分割, 文本型, , "2"
.局部变量 N, 整数型
.局部变量 索引, 整数型

通用对话框1.初始目录 = 取特定目录 (3)
通用对话框1.过滤器 = “文本文件(*.txt)|*.txt”
通用对话框1.标题 = “请选择欲导入的文本”
.如果真 (通用对话框1.打开 () = 真)
    文本 = 到文本 (读入文件 (通用对话框1.文件名))
.如果真结束
.如果真 (文本 = “”)
    信息框 (“请选择txt文本!”, #错误图标 + 0, , )
    返回 ()
.如果真结束
.如果真 (寻找文本 (文本, “----”, , 假) = -1)
    信息框 (“仅支持用----分割”, #错误图标 + 0, , )
    返回 ()
.如果真结束
第一次分割 = 分割文本 (文本, #换行符, )
.计次循环首 (取数组成员数 (第一次分割), N)
    第二次分割 = 分割文本 (第一次分割 [N], “----”, )
    索引 = 超级列表框1.插入表项 (, 到文本 (N), , , , )
    超级列表框1.置标题 (索引, 1, 第二次分割 [1])
    超级列表框1.置标题 (索引, 2, 第二次分割 [2])
.计次循环尾 ()
信息框 (“账号文本导入完毕!”, #信息图标 + 0, , )

.子程序 _按钮3_被单击
.局部变量 文本, 文本型
.局部变量 N, 整数型

.计次循环首 (超级列表框1.取表项数 (), N)
    文本 = 文本 + 超级列表框1.取标题 (N - 1, 1) + “----” + 超级列表框1.取标题 (N - 1, 2) + #换行符
.计次循环尾 ()
通用对话框1.初始目录 = 取特定目录 (3)
通用对话框1.过滤器 = “文本文件(*.txt)|*.txt”
通用对话框1.标题 = “请输入欲导出的文本文件名”
通用对话框1.类型 = 1
.如果 (通用对话框1.打开 () = 真)
    写到文件 (通用对话框1.文件名, 到字节集 (文本))
    信息框 (“账号导出成功!”, 0, , )
.否则
    信息框 (“账号导出失败”, 0, , )
.如果结束

.子程序 _按钮4_被单击
.局部变量 N, 整数型

.计次循环首 (超级列表框1.取表项数 (), N)
    超级列表框1.置状态图片 (N - 1, 1)
.计次循环尾 ()

.子程序 _按钮5_被单击
.局部变量 N, 整数型

.计次循环首 (超级列表框1.取表项数 (), N)
    .如果 (超级列表框1.取当前状态图片 (N - 1) = 0)
        超级列表框1.置状态图片 (N - 1, 1)
    .否则
        超级列表框1.置状态图片 (N - 1, 0)
    .如果结束

.计次循环尾 ()

.子程序 _按钮6_被单击

超级列表框排序 (超级列表框1, 1, , 0, , 假)

.子程序 _按钮7_被单击

超级列表框排序 (超级列表框1, 1, , 0, , 真)

.子程序 _超级列表框1_表头被单击
.参数 被单击列索引, 整数型

.如果真 (被单击列索引 = 0)
    .如果 (寻找文本 (超级列表框1.取列标题 (0), “↓”, , 假) ≠ -1)
        超级列表框排序 (超级列表框1, 0, , 0, , 假)
        超级列表框1.置列标题 (0, “序号↑”)
    .否则
        超级列表框排序 (超级列表框1, 0, , 0, , 真)
        超级列表框1.置列标题 (0, “序号↓”)
    .如果结束

.如果真结束
.如果真 (被单击列索引 = 1)
    .如果 (寻找文本 (超级列表框1.取列标题 (1), “↓”, , 假) ≠ -1)
        超级列表框排序 (超级列表框1, 1, , 0, , 假)
        超级列表框1.置列标题 (1, “账号↑”)
    .否则
        超级列表框排序 (超级列表框1, 1, , 0, , 真)
        超级列表框1.置列标题 (1, “账号↓”)
    .如果结束

.如果真结束
.如果真 (被单击列索引 = 2)
    .如果 (寻找文本 (超级列表框1.取列标题 (2), “↓”, , 假) ≠ -1)
        超级列表框排序 (超级列表框1, 2, , 1, , 假)
        超级列表框1.置列标题 (2, “密码↑”)
    .否则
        超级列表框排序 (超级列表框1, 2, , 1, , 真)
        超级列表框1.置列标题 (2, “密码↓”)
    .如果结束

.如果真结束

.子程序 _拖放对象1_得到文件
.参数 接收到的文件路径, 文本型
.局部变量 文本, 文本型
.局部变量 第一次分割, 文本型, , "0"
.局部变量 第二次分割, 文本型, , "2"
.局部变量 N, 整数型
.局部变量 索引, 整数型

文本 = 到文本 (读入文件 (接收到的文件路径))
.如果真 (文本 = “”)
    信息框 (“请拖拽txt文本!”, #错误图标 + 0, , )
    返回 ()
.如果真结束
.如果真 (寻找文本 (文本, “----”, , 假) = -1)
    信息框 (“仅支持用----分割”, #错误图标 + 0, , )
    返回 ()
.如果真结束
第一次分割 = 分割文本 (文本, #换行符, )
.计次循环首 (取数组成员数 (第一次分割), N)
    第二次分割 = 分割文本 (第一次分割 [N], “----”, )
    索引 = 超级列表框1.插入表项 (, 到文本 (N), , , , )
    超级列表框1.置标题 (索引, 1, 第二次分割 [1])
    超级列表框1.置标题 (索引, 2, 第二次分割 [2])
.计次循环尾 ()
信息框 (“账号文本导入完毕!”, #信息图标 + 0, , )

.子程序 文本_取随机字母, 文本型, 公开, 取随机26个字母!
.参数 要取的字符数, 整数型, , 要取字符个数;
.参数 字母类型, 整数型, 可空, 可空:默认为小写字母;0=小写字母;1=大写字母;2=大小写字母混合;
.局部变量 临时文本, 文本型
.局部变量 大小写, 整数型

.判断开始 (字母类型 = 0)
    .计次循环首 (要取的字符数, )
        临时文本 = 临时文本 + 字符 (汇编_取随机数 (97, 122))
    .计次循环尾 ()
.判断 (字母类型 = 1)
    .计次循环首 (要取的字符数, )
        临时文本 = 临时文本 + 字符 (汇编_取随机数 (65, 90))
    .计次循环尾 ()
.默认
    .计次循环首 (要取的字符数, )
        大小写 = 汇编_取随机数 (1, 2)
        .如果 (大小写 = 1)
            临时文本 = 临时文本 + 字符 (汇编_取随机数 (97, 122))
        .否则
            临时文本 = 临时文本 + 字符 (汇编_取随机数 (65, 90))
        .如果结束

    .计次循环尾 ()
.判断结束
返回 (临时文本)

.子程序 汇编_取随机数, 整数型, 公开, 汇编方式取随机数,最小数不能大于最大数,否则获取为0
.参数 最小数, 整数型
.参数 最大数, 整数型

.如果真 (最大数 < 最小数)
    返回 (0)
.如果真结束
置入代码 ({ 81, 82, 15, 49, 185, 23, 0, 0, 0, 247, 225, 131, 192, 7, 139, 77, 12, 43, 77, 8, 65, 51, 210, 247, 241, 3, 85, 8, 139, 194, 90, 89, 201, 194, 8, 0 })
返回 (0)

.子程序 二分查找, 整数型, 公开
.参数 数组, 文本型, 数组
.参数 待查, 文本型
.参数 类型, 整数型
.参数 区分大小写, 逻辑型
.局部变量 K, 整数型
.局部变量 M, 整数型
.局部变量 J, 整数型
.局部变量 数值A, 双精度小数型
.局部变量 数值B, 双精度小数型
.局部变量 文本, 文本型

K = 1
M = 取数组成员数 (数组)
.如果真 (M = 0)
    返回 (1)
.如果真结束
.判断开始 (类型 = 0)
    数值A = 到数值 (待查)
    .如果真 (数值A ≥ 到数值 (数组 [M]))
        返回 (M + 1)
    .如果真结束
    .如果真 (数值A ≤ 到数值 (数组 [1]))
        返回 (1)
    .如果真结束
    .判断循环首 (K < M - 1)
        J = (K + M) \ 2
        数值B = 到数值 (数组 [J])
        .如果真 (数值A = 数值B)
            K = J
            跳出循环 ()
        .如果真结束
        .如果 (数值A < 数值B)
            M = J
        .否则
            K = J
        .如果结束

    .判断循环尾 ()
.判断 (类型 = 1)
    .如果真 (文本比较 (待查, 数组 [M], 区分大小写) ≥ 0)
        返回 (M + 1)
    .如果真结束
    .如果真 (文本比较 (待查, 数组 [1], 区分大小写) ≤ 0)
        返回 (1)
    .如果真结束
    .判断循环首 (K < M - 1)
        J = (K + M) \ 2
        .如果真 (文本比较 (待查, 数组 [J], 区分大小写) = 0)
            K = J
            跳出循环 ()
        .如果真结束
        .如果 (文本比较 (待查, 数组 [J], 区分大小写) < 0)
            M = J
        .否则
            K = J
        .如果结束

    .判断循环尾 ()

.判断 (类型 = 2)
    数值A = 取字节集数据 (到字节集 (到时间 (待查)), #双精度小数型)
    .如果真 (数值A ≥ 取字节集数据 (到字节集 (到时间 (数组 [M])), #双精度小数型))
        返回 (M + 1)
    .如果真结束
    .如果真 (数值A ≤ 取字节集数据 (到字节集 (到时间 (数组 [1])), #双精度小数型))
        返回 (1)
    .如果真结束
    .判断循环首 (K < M - 1)
        J = (K + M) \ 2
        数值B = 取字节集数据 (到字节集 (到时间 (数组 [J])), #双精度小数型)
        .如果真 (数值A = 数值B)
            K = J
            跳出循环 ()
        .如果真结束
        .如果 (数值A < 数值B)
            M = J
        .否则
            K = J
        .如果结束

    .判断循环尾 ()
.默认

.判断结束
返回 (K + 1)

.子程序 超级列表框排序, 整数型, 公开, 返回排序时间,选中后排序还选中,必须项目数值不为0 没有默认为1
.参数 对象, 超级列表框
.参数 列索引, 整数型, , 索引值从 0 开始。
.参数 实际数据, 文本型, 可空 数组, 格式 {“今天:0”,“明天:1”}    # iiiou添加该参数
.参数 类型, 整数型, 可空, 0=数值;1=文本;2=日期时间;3=逻辑;4=图片索引   # iiiou添加类型4
.参数 区分大小写, 逻辑型, 可空, 真为区分,默认为真
.参数 排序方式, 逻辑型, 可空, 真为小到大,默认为真
.局部变量 排序时间, 整数型
.局部变量 排序变量, 文本型, , "0"
.局部变量 序号数组, 整数型, , "0"
.局部变量 表项数值, 整数型, , "0"
.局部变量 图片数组, 整数型, , "0", # iiiou添加
.局部变量 状态图片, 整数型, , "0", # iiiou添加
.局部变量 变量, 整数型
.局部变量 数据, 文本型
.局部变量 列数, 整数型
.局部变量 行数, 整数型
.局部变量 单元数, 整数型
.局部变量 选中项, 整数型
.局部变量 i, , , , # iiiou添加

排序时间 = 取启动时间 ()
类型 = 选择 (类型 ≥ 0 且 类型 ≤ 4, 类型, 1)
区分大小写 = 选择 (是否为空 (区分大小写), 真, 区分大小写)
排序方式 = 选择 (是否为空 (排序方式), 真, 排序方式)
.如果真 (对象.现行选中项 ≠ -1)
    .如果真 (对象.取表项数值 (对象.现行选中项) = 0)
        对象.置表项数值 (对象.现行选中项, 1)
    .如果真结束
    选中项 = 对象.取表项数值 (对象.现行选中项)
.如果真结束
.计次循环首 (对象.取表项数 (), 变量)
    .如果 (类型 = 4)
        数据 = 到文本 (对象.取图片 (变量 - 1, 列索引))
    .否则
        数据 = 删首尾空 (对象.取标题 (变量 - 1, 列索引))
    .如果结束
    .计次循环首 (取数组成员数 (实际数据), i)
        .如果真 (取文本左边 (实际数据 [i], 取文本长度 (数据) + 1) = 数据 + “:”)
            数据 = 子文本替换 (实际数据 [i], 数据 + “:”, “”, , , 真)
            跳出循环 ()
        .如果真结束

    .计次循环尾 ()
    .如果 (类型 ≠ 3)
        .如果 (类型 = 4)
            单元数 = 二分查找 (排序变量, 数据, 0, 区分大小写)
        .否则
            单元数 = 二分查找 (排序变量, 数据, 类型, 区分大小写)
        .如果结束
        插入成员 (排序变量, 单元数, 数据)
        插入成员 (序号数组, 单元数, 变量 - 1)
        插入成员 (表项数值, 单元数, 对象.取表项数值 (变量 - 1))
        插入成员 (状态图片, 单元数, 对象.取当前状态图片 (变量 - 1))
    .否则
        插入成员 (序号数组, 选择 (数据 = “假”, 变量, 1), 变量 - 1)
        插入成员 (表项数值, 选择 (数据 = “假”, 变量, 1), 对象.取表项数值 (变量 - 1))
        插入成员 (状态图片, 选择 (数据 = “假”, 变量, 1), 对象.取当前状态图片 (变量 - 1))
    .如果结束

.计次循环尾 ()
列数 = 对象.取列数 ()
行数 = 取数组成员数 (序号数组)
单元数 = 行数 × 列数
重定义数组 (排序变量, 假, 单元数)
重定义数组 (图片数组, 假, 单元数)
.计次循环首 (单元数, 变量)
    排序变量 [变量] = 对象.取标题 (序号数组 [取绝对值 (选择 (排序方式, -1, 行数) - (变量 - 1) \ 列数)], (变量 - 1) % 列数)
    图片数组 [变量] = 对象.取图片 (序号数组 [取绝对值 (选择 (排序方式, -1, 行数) - (变量 - 1) \ 列数)], (变量 - 1) % 列数)
.计次循环尾 ()
.计次循环首 (单元数, 变量)
    对象.置标题 ((变量 - 1) \ 列数, (变量 - 1) % 列数, 排序变量 [变量])
    对象.置表项数值 ((变量 - 1) \ 列数, 表项数值 [取绝对值 (选择 (排序方式, -1, 行数) - (变量 - 1) \ 列数)])  ' 本来加个判断的,算啦,为了提高速度,多重复置表项数值几次吧:)
    .如果真 (图片数组 [变量] ≠ -1)
        对象.置图片 ((变量 - 1) \ 列数, (变量 - 1) % 列数, 图片数组 [变量])
    .如果真结束
    .如果真 (状态图片 [取绝对值 (选择 (排序方式, -1, 行数) - (变量 - 1) \ 列数)] ≠ -1)
        对象.置状态图片 ((变量 - 1) \ 列数, 状态图片 [取绝对值 (选择 (排序方式, -1, 行数) - (变量 - 1) \ 列数)])
    .如果真结束

.计次循环尾 ()
.如果真 (选中项 ≠ 0)
    .计次循环首 (对象.取表项数 (), 变量)
        .如果真 (对象.取表项数值 (变量 - 1) = 选中项)
            对象.现行选中项 = 变量 - 1
            对象.保证显示 (变量 - 1)
            跳出循环 ()
        .如果真结束

    .计次循环尾 ()

.如果真结束
返回 (取启动时间 () - 排序时间)

.子程序 _按钮8_被单击

超级列表框1.全部删除 ()

运行视图

20200405171037.png

引用模块

更新及修正记录

1.修正通用对话框过滤器

2.为方便测试,加入超级列表框重置功能

源码下载:

!!!

!!!

引用支持库

源码文件名支持库文件名支持库标识
超级列表框操作,导入,导出,全选,反选,排序,例子.e系统核心支持库 5.3d09f2340818511d396f6aaf844c7e325
扩展界面支持库一 2.027bb20fdd3e145e4bee3db39ddd6e64c
操作系统界面功能支持库 3.052F260023059454187AF826A3C07AF2A
拖放支持库 2.0{9DA96BF9CEBD45c5BFCF94CBE61671F5}
发表我的评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
欢迎光临轩宇网工作室