*!* BndGrid User Method
*!* ------------------------------
LOCAL lnEvents,obj,nLines,nt,lnRec,lcIndice,i
LOCAL ARRAY gaEvents(1),gaLines(1)
lnEvents=AEVENTS(gaEvents,0)
IF lnEvents=0
RETURN
ENDIF
obj=gaEvents[1]
STORE "" TO lcIndice
* Obtener nombre de tabla y campo afectado
nLines=ALINES(gaLines,UPPER(Obj.Parent.ControlSource),1,".")
IF nLines<2
* No hay ninguna tabla
RETURN
ENDIF
SELECT (gaLines[1]) && selecciono la tabla
lnRec=RECNO(galines[1]) && determino la posición actual del puntero
NT=ATAGINFO(GATAGS) && devuelve los índice de la tabla o cursor
* Buscar si el campo afectado tiene una etiqueta de índice
FOR i=1 TO nt
IF LEFT(gatags[i,3],LEN(gaLines[2]))==galines[2]
LcIndice=gatags[i,1]
EXIT
ENDIF
ENDFOR
IF EMPTY(lcIndice)
* No hay etiqueta asignada al campo
RETURN
ENDIF
SET ORDER TO (lcIndice) && establece el master
Obj.Parent.Parent.Refresh && refresh para el control Grid
IF !EMPTY(lnRec)
GO lnRec && envía el puntero al registro dónde estaba
ELSE
GO top && si LnREc=0 envía al primer registro del orden
ENDIF
Obj.Parent.Parent.SetFocus && Envía el foco al control Grid