当表格项目很多的时候,为什么DrawGrid比StringGrid速度快?

ooolinux 2020-08-30 06:50:58
假如表格有成千上万行。
...全文
509 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
DrawGrid占用的内存基本是恒定的,它只维护grid的外观,每个格子显示什么内容它不管,需要用户在OnDrawCell事件中绘制
ListView也维护显示的数据,有四种显示模式:大图标、小图标、列表、报表,这东西不适合显示非常多的数据,一般也就几十、几百行
ooolinux 2020-09-02
  • 打赏
  • 举报
回复
引用 10 楼 早打大打打核战争 的回复:
也可能,但不会特别多,我看了一下我的电脑E盘,有12万多个文件,但没有超过1万个文件的目录

三个表格控件还是各有用处的,外观也不太一样。
  • 打赏
  • 举报
回复
也可能,但不会特别多,我看了一下我的电脑E盘,有12万多个文件,但没有超过1万个文件的目录
ooolinux 2020-09-02
  • 打赏
  • 举报
回复
引用 8 楼 早打大打打核战争的回复:
DrawGrid占用的内存基本是恒定的,它只维护grid的外观,每个格子显示什么内容它不管,需要用户在OnDrawCell事件中绘制
ListView也维护显示的数据,有四种显示模式:大图标、小图标、列表、报表,这东西不适合显示非常多的数据,一般也就几十、几百行
有用ListView做的文件管理器,也有文件很多的情况。
ooolinux 2020-09-01
  • 打赏
  • 举报
回复
引用 5 楼 早打大打打核战争的回复:
StringGrid会维护其中的数据,必要时重绘,DrawGrid不维护数据,需要用户自己绘制
如果项目很多,跟项目不多相比,DrawGrid也占用内存变化不大吗?
  • 打赏
  • 举报
回复
StringGrid会维护其中的数据,必要时重绘,DrawGrid不维护数据,需要用户自己绘制
ooolinux 2020-09-01
  • 打赏
  • 举报
回复
ListView控件内存中要维护表格数据吗?比StringGrid有什么优势或劣势?
ooolinux 2020-08-31
  • 打赏
  • 举报
回复
引用 1 楼 青蛙工作室 的回复:
我一直用StringGrid,试过14万行,30列,电脑也很普通,没觉得有卡。不过千万级别的没机会尝试。
小青蛙有对比过千万级的DrawGrid和StringGrid吗,差距大不大?


引用 3 楼 早打大打打核战争 的回复:
[quote=引用 2 楼 早打大打打核战争 的回复:]实测创建一千万行、20列的stringgrid,耗时0.016秒,占用内存10.6MB,没有设置Cells内容,如果2亿个cells都设置了串,占用内存会超过10GB


看错了,是2.7GB
[/quote]
https://bbs.csdn.net/topics/390305505
我是看的这个帖子,StringGrid慢是因为一次性全部填充数据,而DrawGrid是显示到哪里画出哪里(单元格)吗?
青蛙工作室 2020-08-31
  • 打赏
  • 举报
回复
我一直用StringGrid,试过14万行,30列,电脑也很普通,没觉得有卡。不过千万级别的没机会尝试。 小青蛙有对比过千万级的DrawGrid和StringGrid吗,差距大不大?
  • 打赏
  • 举报
回复
引用 2 楼 早打大打打核战争 的回复:
实测创建一千万行、20列的stringgrid,耗时0.016秒,占用内存10.6MB,没有设置Cells内容,如果2亿个cells都设置了串,占用内存会超过10GB


看错了,是2.7GB
  • 打赏
  • 举报
回复
实测创建一千万行、20列的stringgrid,耗时0.016秒,占用内存10.6MB,没有设置Cells内容,如果2亿个cells都设置了串,占用内存会超过10GB

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧