En parte depende de cómo llamas al formulario que tiene el grid, porque hay muchas alternativas.
1) Que lo llames desde un menú, en cuyo caso la solución puede resultar compleja
2) Que lo llames desde el mismo formulario, en cuyo caso también hay opciones:
2.1) Que el formulario que contiene el grid sea modal y lo llames con la fórmula:
DO FORM (buscador) WITH (parametros) TO (variable devuelta)
2.2) Que el formulario que contiene el grid no sea modal (modeless) en cuyo caso puedes utilizar parámetros de resolución.
Lo más sencillo sería el 2.1)
Para esto tienes que hacer algunas cosas en el formulario que tiene el grid.
1) Agrega una propiedad al formulario en el Init del mismo, con el nombre que prefieras.
* La función que sigue crea una propiedad en el formulario del grid con el nombre ObjDevuelto y su valor es el valor nulo.
ADDPROPERTY(Thisform,"objDevuelto", null )
2) Agrega un botón de selección al formulario (típico botón de Aceptar) con un código como el siguiente:
SELECT (thisform.grid.RecordSource) && selecciona el área del cursor del control grid.
Thisform.ObjDevuelto = Newobject("Empty")
SCATTER NAME thisform.ObjDevuelto
Thisform.Release()
3) En el evento UNLOAD del formulario del grid, debes colocar lo siguiente:
RETURN Thisform.ObjDevuelto
En el formulario de abajo, acomodemos la sentencia, suponiendo que el formulario del grid se llama "buscador", en el evento click del botón que llama, o en un método derivado.