This is a huge question that begs its own set of questions
I know because I have done this (partially?) myself.
1. Have you decided which field types you are going to support and
what to do about field types you will not support?
e.g. BLOB fields, other fields that do not override AsString
2. Work with the TDataset and make sure it is not connected to a DB aware grid
or any other GUI components as that will slow down processing dramatically.
3. Take a good look at the TDataset, TFields and TField objects, you will find that they give you access
to all the information you need. But remember item 1. above.
TDataset.FieldCount may NOT be the number of fields you can or want to represent.
4. From 1,3 above - what to do about BLOB fields etc.
Put in default text like <BLOB> (in every row?)?
Put in description <Picture> or <rich text>?
5. How will you format numeric fields?
OK. I could go on for a while; but this is, I hope, enough to get you thinking.
If it leads to more targeted questions then please post a follow up.