【虚表的应用】
本帖最后由 书香 于 2024-2-10 04:51 编辑本节难度较大,不要求掌握,只有在处理几w几十w数据加载的时候才需要被使用到
源码下载:
效果图如下,我们本节将演示如何将1.txt里面的数据加载到虚表中
我们先看启动窗口创建完毕后执行的代码
.版本 2
.支持库 shell
.程序集 窗口程序集_启动窗口
.程序集变量 xb, 彗星虚表操作类
.程序集变量 数据, 文本型
.程序集变量 数据_元素, 文本型, , "0"
.程序集变量 当前选中项, 整数型, , , 虚表的当前选中行数
.子程序 __启动窗口_创建完毕
xb.创建 (取窗口句柄 (), 8, 8, 352, 344)' 设置表格的位置和大小,虚表不像超级列表框可以直接在开发时拖动设计组件,需要使用函数进行api创建,这便是创建代码
插入项目列 ()' 设置列的标题与宽度
xb.显示表格线 (真)
xb.整行选择 (真)
xb.事件_鼠标右键单击 (&事件_鼠标右键单击)
数据 = 到文本 (读入文件 (取特定目录 (3) + “1.txt”))
数据_元素 = 分割文本 (数据, #换行符, )
加载数据 ()
插入项目列 ()相当于超级列表框的设置标题头的宽度和文字
.版本 2
.子程序 插入项目列
.局部变量 标题组, 文本型, , "0"
.局部变量 标题宽度, 整数型, , "0"
.局部变量 i, 整数型
标题组 = { “序号”, “账号”, “密码” }
标题宽度 = { 60, 130, 130 }
.计次循环首 (取数组成员数 (标题组), i)
虚表.插入列 (-1, 标题组 , 标题宽度 , 1)
.计次循环尾 ()
分割数组操作是全文的重点,看上去不难,我们就是将数据存储在了数据_元素这个数组里面,难在后面的置标题,大家先留意下这里
.版本 2
.支持库 shell
数据 = 到文本 (读入文件 (取特定目录 (3) + “1.txt”))
数据_元素 = 分割文本 (数据, #换行符, )
接下来是加载数据()
.版本 2
.子程序 加载数据
虚表.全部删除 ()
虚表.置表项数 (取数组成员数 (数据_元素))
虚表.事件_填充表项 (&事件_填充表项)
虚表.置表项数就是要添加的虚表行数,这里不能写错了
虚表.事件_填充表项对应的是虚表的渲染过程,我们前面讲过了,虚表只是实时渲染出眼睛能够看到的部分,也就是当虚表需要开始渲染的时候,会触发响应子程序事件_填充表项(),&事件_填充表项称为子程序指针,类似的写法还有启动线程(&子程序1),那我们来看看事件_填充表项()是如何写的
.版本 2
.子程序 事件_填充表项
.参数 项目指针, 整数型
.参数 标题指针, 整数型
.局部变量 超级列表框项目, 超级列表框项目
.局部变量 账号密码, 文本型, , "0"
超级列表框项目 = 指针到列表框项目 (项目指针)
账号密码 = 分割文本 (数据_元素 [超级列表框项目.表项索引 + 1], “==”, )
.如果真 (超级列表框项目.子项索引 = 0)
写到内存 (到文本 (超级列表框项目.表项索引 + 1), 标题指针, )
.如果真结束
.如果真 (超级列表框项目.子项索引 = 1)
写到内存 (账号密码 , 标题指针, )
.如果真结束
.如果真 (超级列表框项目.子项索引 = 2)
写到内存 (账号密码 , 标题指针, )
代码看上去很复杂,这实际上是内存转换的写法,主要目的就是告诉大家当前正在插入哪一行哪一列
超级列表框项目.表项索引的结果是当前操作的行
超级列表框项目.子项索引的结果是当前操作的列
重点:这里不像超级列表框在置标题的时候需要填写第几行,只需要填写列就可以了,置标题也就是写到内存()函数,这句代码很重要
账号密码 = 分割文本 (数据_元素 [超级列表框项目.表项索引 + 1], “==”, )
超级列表框项目.表项索引就是当前操作的行,但是在虚表和超级列表框中都有一个特点,就是从0开始,也就是0表示第一行或第一列
但是数组是从1开始的,也就是最小是数组
我们在设计的时候就是第一个成员user1要插入第1行,第2个成员user2需要插入第2行
比如我们正在插入第7行,那么超级列表框项目.表项索引=6(从0开始),数据_元素 [超级列表框项目.表项索引 + 1]也就是数据_元素 ,取出的就是user7==jiasias
所以数据_元素 [超级列表框项目.表项索引 + 1]取出的就是当前行对应的账号==密码
接下来就是一个再次分割,得到一个新的数组账号密码,然后通过写入内存去置表格数据
我们还绑定了一个菜单事件
虚表.事件_鼠标右键单击 (&事件_鼠标右键单击)
.版本 2
.子程序 事件_鼠标右键单击
当前选中项 = 虚表.取鼠标指针所在的索引 ()
弹出菜单 (功能, , )
这里还是没啥难度
接下来演示的是菜单操作,这个前面学过了,但是我们的目的是教会大家如何取虚表的表项的值
.版本 2
.子程序 _取出账号_被选择
.局部变量 账号, 文本型
账号 = 虚表.取标题 (当前选中项)
信息框 (账号, 0, , )
但是修改虚表内表项的值则显得比较难了,还记得前面让大家注意的数组数据_元素吗,由于虚表不支持修改,因此我们只能去修改数组,然后重新加载,我们这里对选中行的密码改成了66666
.版本 2
.子程序 _修改表项密码为123_被选择
数据_元素 [当前选中项 + 1] = 虚表.取标题 (当前选中项, 1) + “==” + “66666”
加载数据 () '重新加载,相当于刷新
(点击返回课程目录:https://www.52hb.com/thread-58658-1-1.html)
学习不断 已学习。。。。。。。。。
页:
[1]