【发布时间】:2019-02-02 05:11:49
【问题描述】:
在 Delphi 10.1 Berlin 中,我正在构建一个在表格网格中显示数据的应用程序。
这很简单,我使用:
- FDQUery
- 数据源
- 与本地 SQlite 3 数据库的 FDConnection(大小为 100 Mo)
- 唯一的“奇异”功能是来自 EHlib 的 DBgrid。
查询在 FormShow 上打开,总共显示 10.215 行,我相信这并不多。
表格显示后,当我在DBGrid中用鼠标向下滚动时,感觉迟钝,或者“沉重”,我真的不知道如何描述这种感觉......就像有一些“重量” " 附在网格上。
应用程序的内存占用是 45 Mo RAM,顺便说一下,我的设置运行 16 Go RAM、i7 intel 处理器和 512 Go SSD 驱动器...
当我调整应用程序的大小(默认全屏运行)时也是同样的感觉。
关于我的应用程序的 4 个要点:
- DBGrid 显示 11 列,其中 6 列链接到 ImageLists 并显示小图标,但禁用 Imagelists 没有任何作用
- 我的主窗体是 FormStyle : fsMDIForm 并且 Dbgrid 显示在设置为 MDI 子级的第二个窗体上。
- 应用程序显示的越小,这种迟缓现象就越少。
- 我没有使用 VCL 样式
我试图克服这种情况的是将数据集获取模式从 fmAll 切换到 fmOnDemand,但它没有任何改变。
我真的没有其他可以测试的东西......
代码:
这个表单确实没有代码可以显示,到目前为止我为这个表单编写的唯一几行是一个关闭过程和一个资源释放过程:
procedure TfrmMyAssets.Button1Click(Sender: TObject);
begin
Close;
end;
和
procedure TfrmMyAssets.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
用户单击“关闭按钮”并调用 FormClose 事件。
期望:
好吧,事实上,我只是提交这种情况,以防有人已经遇到这种情况并可以提供有关如何安排的建议。 老实说,这很烦人,但该应用程序仍然可用。
提前感谢您的阅读时间。
干杯
数学
【问题讨论】:
-
您是否就这个问题联系过
EhLib支持人员? -
我怀疑是否有很多读者可以访问 EHLib 网格。标准 TDBGrid 是否表现出相同的行为?一个 TDBGrid 应该能够处理 10k 行而不会表现缓慢,
-
@MartynA 99.9% 的问题与
EhLib组件有关。为什么我这么认为?一旦我尝试使用MS Access数据库,我得到了不同的故障(数据网格中的数据刷新只需 5 秒)。相同的代码,但使用 MS SQL Server 数据库可以正常工作——没有延迟,也没有故障。我从 2006 年开始使用EhLib,即使有大量或记录,它也能很好地工作。 -
@Zam:好吧,我投票决定关闭这个问题,因为它不是真正的主题。如果有答案,EhLib 应该知道...
-
抱歉耽搁了,这里是 GMT+11。我联系 EHLIb 支持并与他们一起查看。 @-MartynA:你是对的,标准 DBGrid 行为正确。