我想使stringgrid的固定行作为表头,同时使该表头实现类似于excel的合并单元格的效果,可是由于列数太多,当我移动滚动条后,我所实现的样式全都变回去了,请问那位大虾能告诉我具体怎样在ondrawcell事件中控制。

解决方案 »

  1.   

    TCell=record
      Row:integer;
      Column:integer;
    end;
    TMergedCell=class
      private:
      FTopLeftCell:TCell;
      FMergedCell:array of TCell;
      public:
      ...
     end;
    将你需要合并的单元格的最左边并且最上端的单元格行标和列标以及要合并的单元格的行标和列标建立TMergedCell对象。建立TMergedCell类型的TList存储所有合并单元格的信息。在绘制单元格的时候,如果当前的行标和列标等于某个TMergedCell的FTopLeftCell中的信息,则获取所有单元格(包括FTopLeftCell和FMergedCell)的矩形并且绘制必要的信息,如果当前单元格行标和列标在FMergedCell中则跳过绘制。
      

  2.   

    请写详细些.楼上的大哥,我也想学一学,最好请发代码给小弟[email protected]