超级列表框数据读入和保存

易语言 2020-07-23 15:30:22

超级列表框数据读入和保存

.支持库 iext
.支持库 shell
.支持库 dp1

.子程序 超级列表框_读入_防崩溃, 逻辑型, 公开, 防止因密码错误而使数组成员引用下标超出自定义范围后程序崩溃,遇到上述情况时会返回逻辑值假,并复原原超级列表框;成功返回逻辑值真。
.参数 超级列表框, 超级列表框
.参数 保存位置, 文本型
.参数 密码, 文本型, 可空, 保存文件的密码,无密码则留空
.局部变量 分割文本, 文本型, , "19", 1.表项数 2.列数 6.边框 7.文本颜色 8.文本背景色 9.背景颜色 10.字体加粗 11.字体倾斜 12.字体加粗 13.字体倾斜 14.字体大小 15.字体名称 16.表头可单击 17.整行选择 18.显示表格线 19.表列可拖动| (数组 → ) 3.标题 4.列标题
.局部变量 表项索引, 整数型
.局部变量 列索引, 整数型
.局部变量 标题, 文本型, , "0"
.局部变量 标题计次, 整数型
.局部变量 列标题, 文本型, , "0"
.局部变量 列宽, 文本型, , "0"
.局部变量 随机密码, 文本型
.局部变量 字体, 字体

置随机数种子 ()
随机密码 = 到文本 (求余弦 (取随机数 (1, 180)))
超级列表框_保存 (超级列表框, 取特定目录 (10) + “\备份数据.txt”, 随机密码)
' 备份超级列表框数据,用以崩溃时复原
.如果 (是否为空 (密码))
分割文本 = 分割文本 (到文本 (读入文件 (保存位置)), #分隔符_版块, )
.否则
分割文本 = 分割文本 (到文本 (解密数据 (读入文件 (保存位置), 密码, 2)), #分隔符_版块, )
.如果结束
.如果真 (取数组成员数 (分割文本) ≠ 19) ' 【防止崩溃】
超级列表框_读入 (超级列表框, 取特定目录 (10) + “\备份数据.txt”, 随机密码)
删除文件 (取特定目录 (10) + “\备份数据.txt”)
输出调试文本 (“出错,原因可能是:1.密码错误 2.保存文件不存在 3 保存文件被更改 [出错位置:1]”)
返回 (假)
.如果真结束
标题 = 分割文本 (分割文本 [3], #分隔符_项目, )
列标题 = 分割文本 (分割文本 [4], #分隔符_项目, )
列宽 = 分割文本 (分割文本 [5], #分隔符_项目, )
' ↑ 分割数据
超级列表框.表头可单击 = 到逻辑 (分割文本 [16])
超级列表框.整行选择 = 到逻辑 (分割文本 [17])
超级列表框.显示表格线 = 到逻辑 (分割文本 [18])
超级列表框.表列可拖动 = 到逻辑 (分割文本 [19])
超级列表框.边框 = 到数值 (分割文本 [6])
超级列表框.文本颜色 = 到数值 (分割文本 [7])
超级列表框.文本背景色 = 到数值 (分割文本 [8])
超级列表框.背景颜色 = 到数值 (分割文本 [9])
字体.加粗 = 到逻辑 (分割文本 [10])
字体.倾斜 = 到逻辑 (分割文本 [11])
字体.删除线 = 到逻辑 (分割文本 [12])
字体.下划线 = 到逻辑 (分割文本 [13])
字体.字体大小 = 到数值 (分割文本 [14])
字体.字体名称 = 分割文本 [15]
超级列表框.字体 = 字体
' ↑ 赋值[属性]中的数据
超级列表框.全部删除 ()
.计次循环首 (超级列表框.取列数 (), )
超级列表框.删除列 (0)
.计次循环尾 ()
列索引 = 0
' ↑ 完全清除该超级列表框
.计次循环首 (到数值 (分割文本 [2]), 列索引) ' 这里只把列索引作为一个整数变量使用,用以数组成员号每次加1
.如果真 (取数组成员数 (列标题) < 列索引 或 取数组成员数 (列宽) < 列索引) ' 【防止崩溃】
超级列表框_读入 (超级列表框, 取特定目录 (10) + “\备份数据.txt”, 随机密码)
删除文件 (取特定目录 (10) + “\备份数据.txt”)
输出调试文本 (“出错,原因可能是:1.密码错误 2.保存文件不存在 3 保存文件被更改 [出错位置:2]”)
返回 (假)
.如果真结束
超级列表框.插入列 (, 列标题 [列索引], 到数值 (列宽 [列索引]), , , )
.计次循环尾 ()
列索引 = 0
' ↑ 置列标题和列宽
.计次循环首 (到数值 (分割文本 [1]), ) ' 表项数
表项索引 = 超级列表框.插入表项 (, , , , , )
.计次循环首 (到数值 (分割文本 [2]), ) ' 列数
标题计次 = 标题计次 + 1
.如果真 (取数组成员数 (标题) < 标题计次) ' 【防止崩溃】
超级列表框_读入 (超级列表框, 取特定目录 (10) + “\备份数据.txt”, 随机密码)
删除文件 (取特定目录 (10) + “\备份数据.txt”)
输出调试文本 (“出错,原因可能是:1.密码错误 2.保存文件不存在 3 保存文件被更改[出错位置:3]”)
返回 (假)
.如果真结束
超级列表框.置标题 (表项索引, 列索引, 标题 [标题计次])
列索引 = 列索引 + 1
.计次循环尾 ()
列索引 = 0
.计次循环尾 ()