TStringGrid的糟糕设计

最近在给客户作一个更加强大的类似于TStringGrid的支持多种自定义编辑器的网格控件,结果发现TStringGrid的设计是比较糟糕的,它所使用的原位编辑器的虚方法只能是从TInputEdit派生,而TInplaceEdit又是从TMaskEdit派生出来的,这样的结果就是如果要从TStringGrid派生新组件的话,无法通过重载CreateEditor来支持其他的编辑器控件,虽然Grids单元中Borland也做了一些其他的原位编辑器,但是实现的非常生硬。另外TStringGrid中很多重要的方法没有声明为虚方法,甚至没有放在Protected部分,导致扩展性极差,看了一些其他的商业的网格控件,好多作者直接放弃了扩展TStringGrid的想法,直接从TCustomControl来重新做的。