FoxPro/Visual FoxPro - Famosa búsqueda en Combo

 
Vista:

Famosa búsqueda en Combo

Publicado por Eduardo Daniel (123 intervenciones) el 29/12/2008 20:50:27
Hola amigos, tengo varios combos, donde hago la busqueda de nombres

En el KeyPress tengo

IF BETWEEN(NKEYCODE, 32, 112)
FOR X=1 TO THIS.ListCount
IF UPPER(SUBS(THIS.LIST(X), 1, THIS.SelStart+1))=;
UPPER(SUBSTR(THIS.Text, 1, THIS.SelStart)+CHR(NKEYCODE))
NCURPOS=THIS.SelStart+1
THIS.Value=THIS.List(X)
THIS.SelStart=NCURPOS
THISSELLENGTH=LEN(ALLT(THIS.List(X))) - NCURPOS
NODEFAULT
EXIT
ENDIF
NEXT X
ENDIF

y en el GotFocus

KEYBOARD "{F4}"

Y he notado lo siguiente, cuando hay un nombre donde las primeras letras son únicas, en el combo puedo escribir todo, pero si hay repetidas, solo escribe una o dos letras y se traba
Para ser mas explicito, supongamos que la lista es la siguiente

PAGANI OSCAR
PEREYRA RAUL
PEREYRA TEODORO
PEREZ ALDO

Si busco PAGANI, voy escribiendo y en el combo me permite escribir todo, ahora si busco PEREZ, esceibo la P y la E y se traba, no me deja escribir mas y queda posicionado en Pereyra Raul
Espero haberme explciado bien y desde ya les agradezco la ayuda

Eduardo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Famosa búsqueda en Combo

Publicado por HELDER MARTINEZ (COUNDY)  (711 intervenciones) el 29/12/2008 23:55:01
PUBLIC lnUltimaTecla, lcMostrarValor, lcUltimoValorMostrado,;
lnUltimaSeleccion, lnSeleccionados, cArticulo, cCategoria


SELECT inventarios
lnUltimaTecla = LASTKEY()
lcUltimoValorMostrado = ""
lnUltimaSeleccion = 0
lnSeleccionados = 0

IF (lnUltimaTecla >= 32 AND lnUltimaTecla <= 126)
IF THIS.SELSTART >= 1
lcMostrarValor = SUBSTR(THIS.DISPLAYVALUE,1,THIS.SELSTART-1)+(CHR(lnUltimaTecla))
ELSE
lcMostrarValor = (CHR(lnUltimaTecla))+ALLT(THIS.DISPLAYVALUE)
ENDIF
IF EMPTY(lcMostrarValor)
lcMostrarValor = ALLT(CHR(lnUltimaTecla))
ENDIF
FOR i = 1 TO THIS.LISTCOUNT
IF UPPER(lcMostrarValor) = UPPER(SUBSTR(THIS.LIST(i),1,LEN(lcMostrarValor)))
THIS.DISPLAYVALUE = THIS.LIST(i)
IF LEN(ALLT(THIS.DISPLAYVALUE)) > LEN(lcMostrarValor)
THIS.SELSTART = LEN(lcMostrarValor)
THIS.SELLENGTH = LEN(ALLT(THIS.DISPLAYVALUE))-LEN(lcMostrarValor)
ENDIF
*/*****************************************************************************************************
****
SELECT articulos
thisform.txtCOd_art.Value = ALLTRIM(cod_art)
thisform.txtPrecio_art.Value = precio_art
thisform.txtCategoria.Value = ALLTRIM(categoria)
thisform.txtUnidad.Value = ALLTRIM(unidad)

***

**
*thisform.txtDetalle.SetFocus
*/******************************************************************************************************

lcUltimoValorMostrado = THIS.DISPLAYVALUE
lnUltimaSeleccion = THIS.SELSTART
lnSeleccionados = THIS.SELLENGTH
RETURN
ENDIF
ENDFOR

THIS.DISPLAYVALUE = lcUltimoValorMostrado
THIS.SELSTART = lnUltimaSeleccion
THIS.SELLENGTH = lnSeleccionados
ENDIF


Puedes usar esto en el procedimiento interactive change de tu combo

saludes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Famosa búsqueda en Combo

Publicado por TIROLOKO (2 intervenciones) el 30/12/2008 15:51:27
AMIGO PROGRAMADOR, TENGO AÑOS QUE NO PROGRAMO CON EL BENDITO VFP QUE TANTOS VENEFICIOS ME DIÓ, Y AHORITA ANDO AKI CURIOCIANDO EN EL FORO..
ME LLEGA A LA MEMORIA UNA INSTRUCCION QUE SE LLAMA SET EXAC ON, NI SIQUIERA RECUERDO BIEN COMO SE ESCRIBE JEJEJE Y EL OPERADOR == EL IGUAL DOS VECES. INVESTIGA ESO Y VERAS QUE ENCONTRARAS LA RESPUESTA, YO TAMBIEN TUVE EL PROBLEMA QUE TU TIENES AHORA, ASI ES EL FOX, DE REPENTE TE HACE SUFRIR MUCHO JEJEJEJEJE ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar