cxGrid滚动Bug和数据分页的解决办法

DevExpress cxGrid v5.9 Full Source 编译配置与性能调优指南 在Delphi桌面开发领域,VCL控件体系长期扮演着关键角色,而商业控件的Full Source版本更是为开发者打开了黑盒,让源码级调试与修复成为可能。以DevExpress经典网格套件ExpressQuantumGrid v5.9为例,其cxGrid组件凭借多视图、主从表嵌套、分组汇总等强大功能,曾是进销存和ERP系统的首选表格控件。从编译配置到DCU生成,从性能调优到常见坑位规避,掌握这套老版本源码的维护方法,不仅能解决遗留系统在Windows老环境下的稳定运行问题,还能深入理解VCL事件机制与绘制管线 阅读详情
 使用SQL进行数据分页时,需要用数据集的滚动事件进行读包。而表格控件在设置数据源、其数据集状态改变时都会产生滚动事件。
   下面我就cxGrid的滚动事件的处理及产生始末讲解一下:
       进行SQL数据分页时,都是在滚动事件中判断记录是否到了最后一条,如果是则读下一个分页。此一分页的数据需要显示到到cxGrid中,因此读的时候又产生了滚动事件,也一定读到最后一条~如此又触发读包SQL......由此一直循环到读出所有数据,这使得数据分页的意义全无,而且~如果分页数据是主表,且存在从表,那我们程序就失去了响应。
      在前一家公司工作时,开发组长对这个问题都没找到比较好的解决方案,只能强迫用户使用按钮来明确的显示调用读包操作!我对cxGrid研究很久,希望有一个简单的设置表格的属性来解决这一问题,但一无所获。上大富翁和优快云提问都没人回答得了!最后想到一个笨拙但简单的方法:用标志变量配合用户操作事件解决了这个问题!
   首先在数据处理类中加一标志变量,表示刚刚读了一个分页与否,并将其用可写属性导出;当滚动到最后一条记录时,判断此标志,不为真才读包;读取一个包后就设置此标志为真。其次在表格的键盘和鼠标事件中将该标志置为假。
   怎么样,够简单的吧!此解决方案完美解决了上述问题及Bug,在公司的开发框架中运行表现良好!但我还是觉得有些烦琐,希望与同行切磋。
   
   Xinggsf#t o m.c o m   # -> @  请注明技术或编程主题!
DevExpress VCL 26.1.3安装实战与Delphi桌面开发效率提升指南 在Delphi桌面开发中,组件库的选择直接影响企业级管理系统的构建效率。DevExpress VCL作为商业级VCL控件集,通过封装复杂表格、报表、Ribbon界面等底层逻辑,让开发者从重复造轮子中解放出来,专注于业务实现。其安装配置看似简单,实则涉及IDE版本匹配、环境清理、设计期包注册等关键环节。本文从组件库的技术价值出发,梳理DevExpress VCL的完整安装流程与验证方法,剖析cxGrid、dxRibbon、cxTreeList等核心控件的功能定位,并延伸至FireMonkey跨平台、PDA扫码 阅读详情

相关推荐

Delphi开发者必备:DevExpress VCL控件库安装、核心组件解析与实战指南

在Delphi企业级应用开发中,第三方控件库是提升开发效率和界面专业度的关键工具。其核心原理在于通过封装复杂功能、提供丰富组件,将开发者从底层UI实现中解放出来,专注于业务逻辑。这类库的技术价值体现在大幅缩短开发周期、统一界面风格以及提供高性能数据处理能力,尤其在构建数据密集型管理系统时优势明显。应用场景广泛覆盖ERP、CRM、MES等需要复杂表格、图表、报表模块的企业软件。本文以DevExpress VCL Controls为例,深入解析其安装部署流程、核心组件如TcxGrid的高级用法与性能调优,并探讨

weixin_30475039的博客 449

cxgrid的分页功能

把cxGrid的view的datacontroller属性下的datamodecontroller下的GridMode设置为true 在设置GridModeBufferCount为每页显示的行数就可以了 如果不想出现让滚动条出线主要是注意控制界面宽度,当然如果设置了ScrollBars为ssNone也不会出现导航条,但是需要合理的计算出来GridModeBufferCount为适当值就可以了吧,否则如果一页行数过多,而有设置了没有导航条,如果界面显示不了那么多行,就会导致有部分数据显示不了。 .

天天进步一点点 893

Delphi 12安装DevExpress VCL Full Source完整指南与避坑技巧

在Delphi桌面应用开发中,VCL组件体系是构建高效界面的基石,而DevExpress VCL作为广泛使用的第三方控件套件,常需要与Delphi 12等新版本IDE配合。正确安装Full Source版本,不仅是获得控件使用权,更意味着调试时能深入源码定位问题。本文从环境兼容性、BDS路径配置、源码编译等基础环节切入,梳理了从解压到注册设计时包的完整安装流程,并针对控件失踪、dcu路径冲突等常见编译错误给出排查方法。同时延伸探讨cxGrid的ServerMode大数据量优化与全局皮肤控制等实际应用场景,帮

weixin_27743991的博客 310

cxGrid实现分页

把cxGrid的view的datacontroller属性下的datamodecontroller下的GridMode设置为true 在设置GridModeBufferCount为每页显示的行数就可以了 不出现滚动主要是注意控制界面宽度,然后设置GridModeBufferCount为适当值就可以了吧...

java开发指南博客 【转载】 434

cxGrid判断滚动到记录尾部否

cxGrid判断滚动到记录尾部否

分页显示大量数据

大量数据的提取,显示,不卡死界面,非常实用,拖动cxGrid垂直滚动条后,显示后续数据,不需要按钮来控制显示下一页。

解决Ext GridPanel 不能显示横滚动条

不知是Ext的Bug还是其他原因,当初始化grid并将宽度设为100%时,其宽度会变成10000px宽,高度100%则grid高度根据grid内容自适应,而不是根据其所在容器自适应,一直没有很好的办法,只能使用绝对宽高,但有时这是很不方便的。 对此问题一直耿耿于怀,后来终于想出了一个办法,还真的可行,但就是感觉有点蹩脚。 一般我们都通过render到指定id的层上来展现grid,虽然不能让gr...

c170331773的专栏 471

delphi+mysql实现分页显示

delphi+mysql 在dbgrid上实现分页显示

让cxGrid只取一部分数据

在做AdoHelper实用程序的时候,我用了DevExpress的cxGrid控件.在此之前用的是dbgrid,考虑到不能把所有的数据都拉到本地,我用了动态生成的select top 500的命令.这样很笨.昨天忽然想到,可以看看控件是否支持只拉取一部分数据的,象access那样. 找了一阵,没找到,上网查.原来是这条命令:   GridView.DataController.DataM...

weixin_33720078的博客 138

cxGrid多表头设置及应用

实现复杂的cxGrid多表头的例子,以及多表头下数据的填写与显示

大模型推理常见采样策略:Top-k, Top-p, Temperature, Beam Search

大模型推理采样策略,举例通俗易懂汇总介绍

qq_43243579的博客 2万+

delphi cxgrid 添加分页

把cxGrid的view的datacontroller属性下的datamodecontroller下的GridMode设置为true。不出现滚动主要是注意控制界面宽度,然后设置GridModeBufferCount为适当值就可以了吧。在设置GridModeBufferCount为每页显示的行数就可以了。delphi cxgrid 添加分页。

2301_80849678的博客 659

Python 音频: sounddevice 使用 左声道/右声道/立体声 --- 播放,录音

# coding: utf8 """ Python 音频: 使用 sounddevice 操作声卡的 左声道, 右声道, 立体声 仅限 MME, Windows DirectSound, Windows WASAPI, Windows WDM-KS 等支持双声道的驱动类型 """ import os import sounddevice as sd import soundfile mapping_left_ch = 1 # 左声道为 1 mapping_right_ch

weixin_42019925的博客 4926

cxGrid滚动条样式调整

写作日期:2019-10-22 作者:习践无界 cxGrid滚动条默认是触屏模式,鼠标移开后会自动隐藏(如下图),但做单时容易影响最后一行的数据录入,线条太细了,看起来以及操作起来有的让人不习惯。 处理方式: 选中cxGrid,然后将LookAndFeel中的ScrollbarMode属性改为sbmClassic就可以了 ...

习ぃ践无界う 1398

Python实战:动态爬取国家地表水水质实时监测数据(附最新代码解析)

本文详细介绍了使用Python动态爬取国家地表水水质实时监测数据的实战方法。针对动态网站数据加载特点,重点解析了如何利用Selenium模拟浏览器操作、结合BeautifulSoup解析数据,并提供了最新的代码实现与常见问题解决方案,帮助开发者高效获取环境监测数据。

app77的博客 280

实战复盘:如何用Frida脚本绕过某书APP的libmsaoaidsec.so检测(附完整Hook代码)

本文深入探讨了如何利用Frida脚本绕过某书APP通过libmsaoaidsec.so实现的反Frida检测机制。通过分析动态链接过程中的关键节点和检测模式,提供了两种实战验证的绕过方案:动态Hook关键链接器函数和静态Patch SO文件。文章还分享了进阶对抗策略和调试技巧,帮助安全研究人员有效应对现代移动安全防护挑战。

weixin_42706667的博客 219

数据的分组及分页

数据的分组

m0_70932495的博客 105

5V转±12V无变压器双boost电路

最近有个新项目,需要±10V范围的模拟量输出(非隔离),对于5V以下供电的控制板而言单端输出绝对没问题,可现在需要有正负输出,是少不了正负电源的,因此准备设计一个5V转±12V的电源,然后选择一个双向供电的运放,来实现单端模拟量信号向双向模拟量信号转换。 本文就来分享一下5V转±12V电源的设计。对于有类似双向电源需求的场合,大多使用变压器通过增加多个绕组来实现,而对于体积空间有要求的场合来讲,变压器实在是太大了,另外对于一些成熟的项目,变压器如果是已经设计好的,再额外增加绕组需要重新设计,费时费力。于是,

qq_30388337的博客 1万+
上一篇: 变参array of const深入研究
下一篇: Delphi中模块句柄管理,及FindClassHInstance详解
king_xing
博客等级 码龄25年 35粉丝 49原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值