Mensaje    Asunto: Insertar fechas,hora,etc en un TDBGrid Responder citando

Hola a todos!
Tengo un problema con un TDBGrid al que llevo dandole vueltas varios días y no encuentro solucion.
A la hora de insertar un valor en un TDBGrid, quiero controlar lo que el usuario está metiendo, sólo veo dos formas de hacerlos, pero ninguna me convence, son las siguientes:

1ª) Controlar todas las pulsaciones de teclas con el evento OnKeyPress,esta es la forma mas 'rudimentaria' de hacerlo, habría no solo q controlar los datos alfanumericos, sino si se pulsa 'Supr', 'backspace' y ademas habría que tener en cuenta si se pegan contenidos del portapapeles... lo veo casi imposible así.

2ª) Lo explico con el siguiente ejemplo en delphi:
for B := 0 to dbgRegistro.ControlCount - 1 do
if dbgRegistro.Controls[B] is TInPlaceEdit then
begin
with dbgRegistro.Controls[B] as TInPlaceEdit do
begin
showmessage(Text);
...

dbgRegistro es el TDBGrid, B es de tipo Byte. El problema surge cuando el usuario pulsa tabulador (que inserta automaticamente la fecha actual, para la columna fecha) sin haber introducido ningun valor en el DBGrid, por lo tanto ControlCount todavía está a 0 y se produce un error en la direccion de memoria de la matriz Controls.. de todas forma, este ejemplo no lo tengo muy claro y antes de meterme a mirar como va lo de controls, TInplaceEdit, etc.. me gustaría saber si veis alguna otra forma de hacerlo.
Gracias y hasta otra.