No estoy muy seguro de qué tanto beneficia usar un DrawGrid. De entrada, el StringGrid también tiene el evento OnDrawCell, pero los datos de cualquier manera se tienen que vaciar sobre el componente. Posiblemente hay algo que no termino de ver, pero veo más conveniente usar un componente como el TListView, o mejor, el
TVirtualTreeView, que funcionan en modo virtual. Esto significa que el componente no debe tener todos los datos al mismo tiempo, sino que éstos pueden mantenerse en otra estructura más eficiente (incluso, quizá, el propio disco) y se proporcionan al componente conforme se van requiriendo.
Bye