我最近也在研究表格控件。据高手说,如果是做类似电子表格的东西,关键是表格的绘制算法。我根据他的指点有针对的研究了Excel,WPS Office,Cell,Formula one,XlGrid,ExGrid等电子表格和表格控件,发现Excel,Formula One,xlGrid的表格绘制算法较好,而WPS Office,Cell以及另外几个名气不大的类电子表格软件或控件当单元格较多时,消耗内存和绘制速度均不可忍受。
因此,要开发一个更好、更快的表格控件,如果仅从delphi自带的TSringGrid等表格控件继承下来,肯定是不行的。必须另起炉灶。不知你开发的表格控件是针对什么用途?如果仅是显示一下数据库中的数据,倒不必考虑得那么复杂。
因此,要开发一个更好、更快的表格控件,如果仅从delphi自带的TSringGrid等表格控件继承下来,肯定是不行的。必须另起炉灶。不知你开发的表格控件是针对什么用途?如果仅是显示一下数据库中的数据,倒不必考虑得那么复杂。
解决方案 »
- 数据集访问
- 怎样删除键值名字 不删除RUN启动项
- SkinPageControl的问题
- 各位牛人,请教一个触摸屏中文输入法的问题,大家都来看看啊,也许有一天你也会遇见类似问题的。顶就有分(软键盘每个键太小,要自己做)
- 我有一个播放器程序,在重新编译时出错,而且生成的exe放在其他机子,不能正常工作
- 请教VB程序打包问题(在线等!!!)
- 关于打开文件夹的问题,还望大家多多指教!
- 票据打印---按事先定制好的空白票单打印
- 请问怎么获取datetimepicker1的月份
- 想学delphi7的Indy9组件的使用和运用
- 怎么用程序区分win98和winme?
- 很简单,很简单 ,我只想知怎样关闭CDROM,如果还有好的打开CDROM方法也请讲一讲
结果输出的格式也比较复杂。不过原来要求的也只是Fixed的单元格要能够切分及合并。
但是算法上是一样的,所以我就设定为在任何地方都能够合并(当然选定的区域必须为矩形,此处有一些规则,我是参考Frontpage的)。
我在绘制的时候进行了优化,对扩展的单元格(其实含有多个子格)我只绘制一次。但是根据任意一个子格查找单元格是费时间的(好在也不涉及绘制)。
此外,我的滚动框是按照实际像素来设置大小的,不像一般的控件使用行列数。(只不过我喜欢这样,没有什么理由)
我预想的功能扩展有:提供HTML支持,提供跟Excel的接口,每个单元格有自己的字体(这个还没有想好怎么做才能省内存,但是在单元格内支持多字体在近期内是不可能了)。……………………然后,我up
和EXCEL的接口,可借用xlsreadwrite1.35来实现。好象“delphi窑洞”有下,含完整源代码。
其它功能,ExGrid控件中大多已实现(HTML支持好象还没有实现)。该控件在csdn有下。