Consulta - Busqueda incremental - Visual Fox

Hola,
Estoy utilizando el siguiente código para realizar una búsqueda en un grid. El código lo tengo dentro de un textbox en la propiedad "interactivechange".
AL ingresar un nombre en el "textbox" me marca en el grid el material encontrado. El problema es que: La búsqueda funciona correctamente (aparentemente), o sea, se posiciona sobre la linea del grid que estoy buscando. Luego (al hacer click) sobre cualquier parte del formulario, se me corre un item hacia arriba del que estaba seleccionado.
LOCAL lc, lnRecno
SELECT materiales
SET ORDER TO MAT_nombr && MAT_NOMBR
SET NEAR ON
lc = ALLT(THIS.VALUE)
lnRecno = RECNO()
IF materiales.mat_nombr >= lc
IF NOT BOF()
SKIP -1
ENDIF
IF materiales.mat_nombr < lc && debe quedar donde estaba
IF lnRecno <= RECC()
GO RECNO()
ELSE
GO BOTT
ENDIF
RETURN
ENDIF
IF NOT EMPTY(ORDER()) && busqueda con indice
SEEK lc
ELSE
GO TOP
LOCATE REST FOR materiales.mat_nombr=lc WHILE materiales.mat_nombr <= lc NOOPTIMIZE
ENDIF
ELSE
LOCATE REST FOR materiales.mat_nombr=lc WHILE materiales.mat_nombr <= lc NOOPTIMIZE
ENDIF
IF lnRecno # RECNO()
THISFORM.grdmateriales.SETFOCUS && el nombre del TextBox
THISFORM.text_buscar.SETFOCUS && el nombre del Grid
ENDIF
RETURN
Respuesta
1
Espero poder ayudarte.
Tu código esta un poco complicado para lo que necesitas
Vemos como podemos hacer. Sería algo así:
set near on
set order to mat_nombr in materiales
seek alltrim(this.value)
thisform.grid.refresh
El el grid te conviene establecer algunas propiedades así el usuario ve que registro le sugiere el sistema
En el init del grid:
with this
    .highlight = .t.
    .highlightBackColor=rgb(200,200,200)
    .highlightForeColor=rgb(0,0,0)
     .highLightStype=2
Endwith

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas