¿Como puedo Hacer para escribir en un grid?
Por ejemplo, si quieres escribir en la columna5 y no en las otras;
thisform.grid1.Columns(5).readonly = .f.
Si quieres escribir en cualquier celda (todas)
Thisform.Grid1.Setall("Readonly", .F. , "Column")
Escribir directamente en las celdas del control grid requiere:
1) Un buen planteo de las validaciones para cada caso. Esto se puede trabajar con clases (reemplazado los currentcontrol de las columnas por los objetos de tu clase, o si usas VFP8 o superior, con BindEvent().
No es recomendable escribir las validaciones en las celdas de un control grid determinado, debido a que cualquier cambio las hará desaparcer en tiempo de ejecución.
2) Que trabajes sobre un cursor, o por lo menos, que estés usando buffering, para confirmar los cambios con TableUpdate() o desecharlos (tablerevert() )
3) Parece innecesario decirlo, pero la configuración del control grid debe hacerse en un método del formulario, que pueda convocarse sin problemas todas las veces que sea necesario (cambio de columnas que se muestran, cambios del cursor asociado, etc).
4) Es altamente recomendable tener una clase grid configurable que resuelva la mayoría de los problemas comunes atinentes a ese objeto y que contenga todos los métodos necesarios para su implementación.