开源
功能说明:该程序是一个用于实现两个高级表格(高级表格1和高级表格2)垂直滚动条实时同步联动的易语言桌面应用程序。核心功能是:当用户拖动或点击任意一个表格的垂直滚动条时,另一个表格的滚动条会自动跟随并保持相同滚动位置,从而实现双表格视图的滚动同步,适用于需要对比显示、镜像查看或多视图协同操作的场景(如数据比对、行列对照、左右分屏浏览等)。程序通过Windows底层API消息钩子机制实现:在启动时,使用SetWindowLongA替换高级表格1的窗口过程(WndProc),将WM_VSCROLL(消息号276)和WM_MOUSEWHEEL(消息号522,部分代码中隐含或原意应为277/522,但根据上下文及典型用法,277实为WM_MOUSEWHEEL的常见误标,结合timeSetEvent延时器调用逻辑可确认其意图是响应鼠标滚轮)等滚动相关消息拦截;当检测到滚动消息时,提取滚动位置参数(如通过右移获取高字节位置值),再通过发送相同消息或直接调用SetScrollPos/GetScrollInfo/SetScrollInfo等API,将滚动状态精确同步至高级表格2。其中特别处理了鼠标滚轮事件(以277为标识)、滚动方向判断(参数1低字节区分SB_LINEUP/SB_LINEDOWN等)、以及防抖与重绘优化(使用winmm定时器timeSetEvent确保异步稳定同步,避免消息冲突)。此外,程序在初始化阶段自动为两个表格的首行和首列填充序号(0,1,2…),构建基础测试数据结构,便于直观验证同步效果。整个程序不依赖外部控件扩展,纯基于eGrid支持库和Windows API,具备轻量、稳定、低耦合特点,本质是一个专用于解决多表格滚动不同步问题的UI交互增强工具。
======启动窗口程序集
| |
| |------ __启动窗口_创建完毕
| |
| |------ 处理
| |
| |------ 延时器
| |
| |------ __启动窗口_可否被关闭
| |
| |
======调用的Dll
| |
| |---[dll]------ CallWindowProcA
| |
| |---[dll]------ SetWindowLongA
| |
| |---[dll]------ SetScrollPos
| |
| |---[dll]------ GetScrollPos
| |
| |---[dll]------ GetScrollInfo
| |
| |---[dll]------ SetScrollInfo
| |
| |---[dll]------ timeKillEvent
| |
| |---[dll]------ timeSetEvent
======启动窗口程序集
| |
| |------ __启动窗口_创建完毕
| |
| |------ 处理
| |
| |------ __启动窗口_可否被关闭
| |
| |
======调用的Dll
| |
| |---[dll]------ CallWindowProcA
| |
| |---[dll]------ SetWindowLongA
| |
| |---[dll]------ SetScrollPos
| |
| |---[dll]------ GetScrollPos
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。