Seleccionar una fila en un grid y luego mandarla a un formaulario solo esa fila
Lo que tienes que tener en cuenta es que un control grid no es más que un browse algo sofisticado montado sobre un cursor. Por lo tanto, la fila que tienes en edición, corresponde al registro del cursor del cual puedes tomar uno o más campos.
Las formas pueden ser varias:
1) Si no utilizas sesión privada de datos, cargas el formulario y lees directamente el registro del cursor. Si usas sesion privada de datos, ni siquiera lo intentes.
2) Ceas un array con SCATTER TO laArrayDatos y pasas el array como parámetro al otro form (acá debes recordar el orden de los campos para saber qué elemento del array tiene tal valor.
3) Pudes utilizar SCATTER NAME Thisform ADDITIVE y pasas como parámetro al otro form la referencia de objeto.
Por ejemplo, si tenemos una tabla de clientes que tiene los campos "idclien", "nombre" , "cuit" y el el otro form se llama "frmsecundario"
* Botón de selección
SELECT (thisform.grid1.Recordsource)
SCATTER NAME thisform ADDITIVE
DO FORM frmSEcundario WITH thisform
* frmSecundario.Init
LPARAMETERS toForm
WITH THIS
.TxtIdclien.Value = toForm.Idclien
.txtnombre.value=toForm.nombre
.txtCuit.Value = toForm.cuit
ENDWITH
4) Hay formas más sofisticadas utilizando xml. Importante para Sesión privada de datos.
Por ejemplo
* Al seleccionar el registro
CURSORTOXML("CLIENTES","clientes.xml",3,512,1)
DO FORM frmSecundario with "CLIENTES.XML"
*frmSecundario.Init
LPARAMETERS tc_xmlFile_Name
XMLTOCURSOR(tc_xmlFile_Name,"curClien",512)
SELECT curclien