我最近也在研究表格控件。据高手说,如果是做类似电子表格的东西,关键是表格的绘制算法。我根据他的指点有针对的研究了Excel,WPS Office,Cell,Formula one,XlGrid,ExGrid等电子表格和表格控件,发现Excel,Formula One,xlGrid的表格绘制算法较好,而WPS Office,Cell以及另外几个名气不大的类电子表格软件或控件当单元格较多时,消耗内存和绘制速度均不可忍受。
因此,要开发一个更好、更快的表格控件,如果仅从delphi自带的TSringGrid等表格控件继承下来,肯定是不行的。必须另起炉灶。不知你开发的表格控件是针对什么用途?如果仅是显示一下数据库中的数据,倒不必考虑得那么复杂。

解决方案 »

  1.   

    因为接到手上的项目是一个老板要求的复杂的集数据库查询统计为一体的程序.
    结果输出的格式也比较复杂。不过原来要求的也只是Fixed的单元格要能够切分及合并。
    但是算法上是一样的,所以我就设定为在任何地方都能够合并(当然选定的区域必须为矩形,此处有一些规则,我是参考Frontpage的)。
    我在绘制的时候进行了优化,对扩展的单元格(其实含有多个子格)我只绘制一次。但是根据任意一个子格查找单元格是费时间的(好在也不涉及绘制)。
    此外,我的滚动框是按照实际像素来设置大小的,不像一般的控件使用行列数。(只不过我喜欢这样,没有什么理由)
    我预想的功能扩展有:提供HTML支持,提供跟Excel的接口,每个单元格有自己的字体(这个还没有想好怎么做才能省内存,但是在单元格内支持多字体在近期内是不可能了)。……………………然后,我up
      

  2.   

    我下载一个研究研究
    和EXCEL的接口,可借用xlsreadwrite1.35来实现。好象“delphi窑洞”有下,含完整源代码。
    其它功能,ExGrid控件中大多已实现(HTML支持好象还没有实现)。该控件在csdn有下。
      

  3.   

    显示颜色上有Bug,但是并不是大问题,我也已经修正,不过还没有上传。