开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 198|回复: 2
收起左侧

[完成] 使用 超列_模拟虚表.ec 问题

 关闭 [复制链接]
结帖率:100% (3/3)
发表于 2025-3-16 11:22:44 | 显示全部楼层 |阅读模式   福建省三明市
14精币
各位易友如何使列表框导入数据后保证显示,也就是垂直滚动条拉到下面显示最后一条数据,里面有模块的原码。注:此模块下载于论坛。


补充内容 (2025-3-16 11:28):
.版本 2
.支持库 iext
.支持库 spec

.程序集 超列_模拟虚表, , 公开
.程序集变量 集_地址_旧函数, 整数型
.程序集变量 集_地址_新函数, 字节集
.程序集变量 集_地址_滚动条处理, 字节集
.程序集变量 集_地址_填充数据, 字节集
.程序集变量 集_地址_自动列宽处理, 字节集
.程序集变量 集_控件_超级列表框, 超级列表框
.程序集变量 集_控件_时钟, CLOCK类
.程序集变量 集_控件_滚动条, 滚动条类
.程序集变量 集_变量_记录数, 整数型
.程序集变量 集_判断_绑定成功, 逻辑型
.程序集变量 集_判断_自动列宽, 逻辑型
.程序集变量 集_指针_填充数据, 子程序指针
.程序集变量 集_指针_删除数据, 子程序指针

.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用

集_地址_新函数 = 辅_生成_类回调_易 (3, 4)
集_地址_滚动条处理 = 辅_生成_类回调_易 (4, 1)
集_地址_填充数据 = 辅_生成_类回调_易 (5, 1)
集_地址_自动列宽处理 = 辅_生成_类回调_易 (6, 0)

.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用

集_控件_时钟.销毁 ()

.子程序 NewProc, 整数型
.参数 hWnd, 整数型
.参数 Msg, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.局部变量 局_变量_横向滚动条, 逻辑型, 静态
.局部变量 局_变量_滚动条位置, 整数型
.局部变量 局_变量_计次, 整数型, 静态

.判断开始 (Msg = #WM_PAINT)
    局_变量_计次 = 局_变量_计次 + 1

    .如果 (集_控件_超级列表框.高度 - 集_控件_超级列表框.取用户区高度 () > 8)

        .如果真 (局_变量_横向滚动条 = 假)
            集_控件_超级列表框.高度 = 集_控件_超级列表框.高度  ' 2025.03.09 删除了  + 集_控件_滚动条.取滚动条大小 ()

            局_变量_横向滚动条 = 真
        .如果真结束

    .否则

        .如果真 (局_变量_横向滚动条 = 真)
            集_控件_超级列表框.高度 = 集_控件_超级列表框.高度  ' 2025.03.09 删除了  - 集_控件_滚动条.取滚动条大小 ()

            局_变量_横向滚动条 = 假
        .如果真结束

    .如果结束

    .如果真 (集_控件_超级列表框.宽度 - 集_控件_超级列表框.取用户区宽度 () < 8)
        集_控件_滚动条.重置滚动条 (, , , 集_变量_记录数)
    .如果真结束

.判断 (Msg = #WM_VSCROLL)
    集_控件_滚动条.置滚动条位置 (wParam)
    返回 (0)
.判断 (Msg = #WM_KEYDOWN)
    局_变量_滚动条位置 = 集_控件_滚动条.取滚动条位置 ()
    .判断开始 (集_控件_超级列表框.现行选中项 = SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0) - 1)
        .判断开始 (wParam = #下光标键)
            局_变量_滚动条位置 = 局_变量_滚动条位置 + 1
        .默认

        .判断结束

    .判断 (集_控件_超级列表框.现行选中项 = 0)
        .判断开始 (wParam = #上光标键)
            局_变量_滚动条位置 = 局_变量_滚动条位置 - 1
        .默认

        .判断结束

    .默认

    .判断结束

    .如果真 (局_变量_滚动条位置 > 集_变量_记录数 - SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0) + 1)
        局_变量_滚动条位置 = 集_变量_记录数 - SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0) + 1
    .如果真结束
    .如果真 (局_变量_滚动条位置 < 1)
        局_变量_滚动条位置 = 1
    .如果真结束
    集_控件_滚动条.重置滚动条 (, 局_变量_滚动条位置, , )
.判断 (Msg = #WM_MOUSEWHEEL)
    集_控件_滚动条.滚动滚动条 (辅_取高16位 (wParam) ÷ 120)
    返回 (0)
.默认

.判断结束

返回 (CallWindowProc (集_地址_旧函数, hWnd, Msg, wParam, lParam))

.子程序 _滚动条_位置改变
.参数 参数_位置, 整数型

.如果真 (集_判断_绑定成功 = 假)
    返回 ()
.如果真结束
调用子程序 (辅_字节集到子程序地址 (集_地址_填充数据), , , 参数_位置)

.子程序 _超列_填充
.参数 参数_启始位置, 整数型
.局部变量 局_变量_计次, 整数型
.局部变量 局_变量_计次_2, 整数型
.局部变量 局_变量_显示表项数, 整数型
.局部变量 局_变量_列数, 整数型
.局部变量 局_变量_滚动条位置, 整数型
.局部变量 局_变量_返回值, 文本型
.局部变量 局_变量_表项索引, 整数型
.局部变量 局_变量_列索引, 整数型

.如果真 (集_判断_绑定成功 = 假)
    返回 ()
.如果真结束
局_变量_显示表项数 = SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0)
局_变量_滚动条位置 = 集_控件_滚动条.取滚动条位置 ()
局_变量_列数 = 集_控件_超级列表框.取列数 ()
.如果真 (集_控件_超级列表框.取表项数 () < 集_变量_记录数 且 集_控件_超级列表框.取表项数 () < 局_变量_显示表项数)  ' 添加
    集_控件_超级列表框.插入表项 (, , , , , )
.如果真结束

.如果真 (局_变量_显示表项数 > 集_变量_记录数)
    局_变量_显示表项数 = 集_变量_记录数
.如果真结束

.计次循环首 (局_变量_显示表项数, 局_变量_计次)
    局_变量_表项索引 = 局_变量_滚动条位置 + 局_变量_计次 - 1
    .计次循环首 (局_变量_列数, 局_变量_计次_2)
        局_变量_列索引 = 局_变量_计次_2 - 1
        调用子程序 (集_指针_填充数据, , 局_变量_返回值, 局_变量_表项索引, 局_变量_列索引)
        集_控件_超级列表框.置标题 (局_变量_计次 - 1, 局_变量_列索引, 局_变量_返回值)
    .计次循环尾 ()
    参数_启始位置 = 参数_启始位置 + 1
.计次循环尾 ()
.如果真 (集_控件_超级列表框.取表项数 () > 局_变量_显示表项数)  ' 删除
    .计次循环首 (集_控件_超级列表框.取表项数 () - 局_变量_显示表项数, )
        集_控件_超级列表框.删除表项 (集_控件_超级列表框.取表项数 () - 1)
    .计次循环尾 ()
.如果真结束



.子程序 _超列_自动列宽
.局部变量 局_变量_列数, 整数型
.局部变量 局_变量_计次, 整数型

.如果真 (集_判断_自动列宽 = 真 且 集_判断_绑定成功 = 真)
    辅_自动列宽 (集_控件_超级列表框.取窗口句柄 (), 集_控件_超级列表框.取列数 ())
.如果真结束


.子程序 绑定, , 公开
.参数 参数_超级列表框, 超级列表框
.参数 参数_自动列宽刷新时间, 整数型, 可空, 单位:MS,参数条件:需大于或等于0,为0或空时不执行自动列宽

.如果真 (集_判断_绑定成功 = 真)
    返回 ()
.如果真结束
集_控件_超级列表框 = 参数_超级列表框
集_控件_滚动条.滚动条初始化 (集_控件_超级列表框.取窗口句柄 (), 1, 1, 1, 1, 1)
.判断开始 (参数_自动列宽刷新时间 > 0)
    集_判断_自动列宽 = 真
.判断 (参数_自动列宽刷新时间 = 0 或 参数_自动列宽刷新时间 < 0)
    参数_自动列宽刷新时间 = 9999999
    集_判断_自动列宽 = 假
.默认

.判断结束
集_控件_时钟.创建 (参数_自动列宽刷新时间, 辅_字节集到子程序地址 (集_地址_自动列宽处理))
集_地址_旧函数 = SetWindowLong (集_控件_超级列表框.取窗口句柄 (), -4, 到数值_从子程序指针 (辅_字节集到子程序地址 (集_地址_新函数)))
集_控件_滚动条.挂接事件_滚动事件 (辅_字节集到子程序地址 (集_地址_滚动条处理))
集_判断_绑定成功 = 真

.子程序 取消绑定, , 公开

.如果真 (集_判断_绑定成功 = 假)
    返回 ()
.如果真结束
集_控件_滚动条.滚动条初始化 (0, 1, 1, 1, 1, 1)
SetWindowLong (集_控件_超级列表框.取窗口句柄 (), -4, 集_地址_旧函数)
集_判断_自动列宽 = 假
集_控件_时钟.置时钟周期 (9999999)
集_判断_绑定成功 = 假

.子程序 尺寸被改变, , 公开
.局部变量 局_变量_滚动条位置, 整数型
.局部变量 局_变量_显示表项数, 整数型

.如果真 (集_判断_绑定成功 = 假)
    返回 ()
.如果真结束
集_控件_超级列表框.全部删除 ()
局_变量_显示表项数 = SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0)
.如果真 (局_变量_显示表项数 > 集_变量_记录数)
    局_变量_显示表项数 = 集_变量_记录数
.如果真结束

.计次循环首 (局_变量_显示表项数, )
    集_控件_超级列表框.插入表项 (, , , , , )
.计次循环尾 ()
局_变量_滚动条位置 = 集_控件_滚动条.取滚动条位置 ()
.如果真 (局_变量_滚动条位置 > 集_变量_记录数 - SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0) + 1)
    局_变量_滚动条位置 = 集_变量_记录数 - SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0) + 1
.如果真结束
.如果真 (局_变量_滚动条位置 < 1)
    局_变量_滚动条位置 = 1
.如果真结束
集_控件_滚动条.重置滚动条 (, 局_变量_滚动条位置, SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0), 集_变量_记录数)
局_变量_滚动条位置 = 集_控件_滚动条.取滚动条位置 ()
调用子程序 (辅_字节集到子程序地址 (集_地址_填充数据), , , 局_变量_滚动条位置)


.子程序 填充列表, , 公开
.参数 参数_记录数, 整数型
.参数 参数_填充数据, 子程序指针, , 参数1:表项索引为整数型,参数2:列索引为整数型,返回:填充数据为文本型
.局部变量 局_变量_表项数, 整数型

.如果真 (集_判断_绑定成功 = 假)
    信息框 (“请先进行绑定.”, 0, “提示:”)
    返回 ()
.如果真结束
集_指针_填充数据 = 参数_填充数据
集_变量_记录数 = 参数_记录数
集_控件_滚动条.重置滚动条 (1, 1, SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0), 集_变量_记录数)
集_控件_超级列表框.全部删除 ()
局_变量_表项数 = SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0)
.如果真 (局_变量_表项数 > 集_变量_记录数)
    局_变量_表项数 = 集_变量_记录数
.如果真结束

.计次循环首 (局_变量_表项数, )
    集_控件_超级列表框.插入表项 (, , , , , )
.计次循环尾 ()
调用子程序 (辅_字节集到子程序地址 (集_地址_填充数据), , , 1)

.子程序 添加表项, , 公开
.参数 参数_添加数据, 子程序指针
.局部变量 局_变量_滚动条位置, 整数型

.如果真 (集_判断_绑定成功 = 假)
    信息框 (“请先进行绑定.”, 0, “提示:”)
    返回 ()
.如果真结束
调用子程序 (参数_添加数据, , , )
集_变量_记录数 = 集_变量_记录数 + 1
局_变量_滚动条位置 = 集_变量_记录数 - SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0) + 1
.如果真 (局_变量_滚动条位置 < 1)
    局_变量_滚动条位置 = 1
.如果真结束
集_控件_滚动条.重置滚动条 (, 局_变量_滚动条位置, SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0), 集_变量_记录数)
局_变量_滚动条位置 = 集_控件_滚动条.取滚动条位置 ()
调用子程序 (辅_字节集到子程序地址 (集_地址_填充数据), , , 局_变量_滚动条位置)
集_控件_超级列表框.现行选中项 = 集_控件_超级列表框.取表项数 () - 1


.子程序 修改表项, , 公开
.参数 参数_修改数据, 子程序指针, , 在此子程序下进行数据的删除。参数1:表项索引为整数型
.局部变量 局_变量_滚动条位置, 整数型
.局部变量 局_变量_表项索引, 整数型

.如果真 (集_判断_绑定成功 = 假)
    信息框 (“请先进行绑定.”, 0, “提示:”)
    返回 ()
.如果真结束
.如果真 (集_控件_超级列表框.现行选中项 = -1)
    返回 ()
.如果真结束
局_变量_表项索引 = 集_控件_超级列表框.现行选中项 + 集_控件_滚动条.取滚动条位置 ()
调用子程序 (参数_修改数据, , , 局_变量_表项索引)
局_变量_滚动条位置 = 集_控件_滚动条.取滚动条位置 ()
调用子程序 (辅_字节集到子程序地址 (集_地址_填充数据), , , 局_变量_滚动条位置)


.子程序 删除表项, , 公开
.参数 参数_删除数据, 子程序指针, , 在此子程序下进行数据的删除。参数1:表项索引为整数型
.局部变量 局_变量_滚动条位置, 整数型
.局部变量 局_变量_表项索引, 整数型

.如果真 (集_判断_绑定成功 = 假)
    信息框 (“请先进行绑定.”, 0, “提示:”)
    返回 ()
.如果真结束
.如果真 (集_控件_超级列表框.现行选中项 = -1)
    返回 ()
.如果真结束
.如果真 (集_变量_记录数 < 1)
    返回 ()
.如果真结束
集_变量_记录数 = 集_变量_记录数 - 1
局_变量_表项索引 = 集_控件_超级列表框.现行选中项 + 集_控件_滚动条.取滚动条位置 ()
调用子程序 (参数_删除数据, , , 局_变量_表项索引)
局_变量_滚动条位置 = 集_控件_滚动条.取滚动条位置 ()
.如果真 (局_变量_滚动条位置 > 集_变量_记录数 - SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0) + 1)
    局_变量_滚动条位置 = 集_变量_记录数 - SendMessage (集_控件_超级列表框.取窗口句柄 (), 4136, 0, 0) + 1
.如果真结束
.如果真 (局_变量_滚动条位置 < 1)
    局_变量_滚动条位置 = 1
.如果真结束
集_控件_滚动条.重置滚动条 (, 局_变量_滚动条位置, , 集_变量_记录数)
局_变量_滚动条位置 = 集_控件_滚动条.取滚动条位置 ()
调用子程序 (辅_字节集到子程序地址 (集_地址_填充数据), , , 局_变量_滚动条位置)


.子程序 调整列宽, , 公开, 会按内容进行列宽的调整
.参数 参数_刷新时间, 整数型, 可空, 单位:MS,大于0会按设定时间执行自动调整,为0停止自动调整,为空或小于0时停止自动调整执行手动调整

.如果真 (集_判断_绑定成功 = 假)
    信息框 (“请先进行绑定.”, 0, “提示:”)
    返回 ()
.如果真结束
.判断开始 (参数_刷新时间 > 0)
    集_控件_时钟.置时钟周期 (参数_刷新时间)
    集_判断_自动列宽 = 真
.判断 (参数_刷新时间 < 0 或 是否为空 (参数_刷新时间))
    集_控件_时钟.置时钟周期 (9999999)
    集_判断_自动列宽 = 假
    辅_自动列宽 (集_控件_超级列表框.取窗口句柄 (), 集_控件_超级列表框.取列数 ())
.默认
    集_控件_时钟.置时钟周期 (9999999)
    集_判断_自动列宽 = 假

测试.zip

1.89 MB, 下载次数: 3, 下载积分: 精币 -1 枚

最佳答案

查看完整内容

[e=1].版本 2 .支持库 eDB 记录集1.到尾记录 () .计次循环首 (记录数量, i) 进度显示 (进度条1, 记录集1.记录数量, i) 记录集1.读文本 (1, 单号6) 记录集1.读文本 (2, 日期6) 记录集1.读文本 (4, 名称6) 记录集1.读文本 (5, 型号6) 记录集1.读文本 (6, 描述6) 记录集1.读文本 (8, 数量6) 记录集1.读文本 (7, 单价6) 记录集1.读文本 (9, 应收金额6) 记录集1.读文本 (10, 实收金额6) ...
结帖率:89% (8/9)

签到天数: 31 天

发表于 2025-3-16 11:22:45 | 显示全部楼层   江苏省无锡市
  
记录集1.到尾记录 ()
计次循环首 (记录数量, i)
进度显示 (进度条1, 记录集1.记录数量, i)
记录集1.读文本 (1, 单号6)
记录集1.读文本 (2, 日期6)
记录集1.读文本 (4, 名称6)
记录集1.读文本 (5, 型号6)
记录集1.读文本 (6, 描述6)
记录集1.读文本 (8, 数量6)
记录集1.读文本 (7, 单价6)
记录集1.读文本 (9, 应收金额6)
记录集1.读文本 (10, 实收金额6)
记录集1.读文本 (11, 欠款金额6)
记录集1.读文本 (12, 姓名6)
记录集1.读文本 (13, 电话6)
记录集1.读文本 (14, 地址6)
记录集1.读文本 (15, 信誉单号6)
记录集1.读文本 (16, 内机条码6)
记录集1.读文本 (17, 外机条码6)
记录集1.读文本 (18, 备注6)
记录集1.读文本 (19, 有欠款6)
记录集1.读文本 (20, 开税票6)
记录集1.读文本 (21, 未送货6)
记录集1.读文本 (3, 产品编号6)
销售单号 [i] = 单号6
销售日期 [i] = 日期6
产品名称 [i] = 名称6
产品型号 [i] = 型号6
产品描述 [i] = 描述6
数量 [i] = 数量6
单价 [i] = 单价6
应收金额 [i] = 应收金额6
实收金额 [i] = 实收金额6
欠款金额 [i] = 欠款金额6
姓名1 [i] = 姓名6
电话 [i] = 电话6
地址 [i] = 地址6
信誉单号1 [i] = 单号6
产品条码1 [i] = 内机条码6
产品条码2 [i] = 外机条码6
备注1 [i] = 备注6
有欠款 [i] = 有欠款6
开税票 [i] = 开税票6
未送货 [i] = 未送货6
产品编号 [i] = 产品编号6
记录集1.到前一条 ()
计次循环尾 ()


i支持库列表   支持库注释   
eDB数据库操作支持库

反过来,倒序排,把尾部放在最前面。

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (3/3)

签到天数: 20 天

 楼主| 发表于 2025-3-16 13:26:25 | 显示全部楼层   福建省三明市
aipca 发表于 2025-3-16 12:38
[e=1].版本 2
.支持库 eDB

这也是个好方法,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表