Busqueda Incremental en un Combo Box

06/09/2006 - 18:56 por alejandro | Informe spam
Como puedo hacer una busqueda incremental con un combo, similar al del
internet explorer(que cuando empiezas a digitar algo aparecen todas las
posibles coincidencias registradas).

Gracias

Preguntas similare

Leer las respuestas

#1 integral
06/09/2006 - 19:37 | Informe spam
Amigo Alejandro :
Aqui te muestro una Clase de ejemplo, al menos funciona aunque le falta
algunas caracteristicas que tiene el del Internet Explorer...

PUBLIC oMiFormulario
oMiFormulario=NEWOBJECT("MiFormulario")
oMiFormulario.SHOW
RETURN
*--
DEFINE CLASS MiFormulario AS FORM
DOCREATE = .T.
CAPTION = "Autocompletar en ComboBox"
NAME = "frmAutocompletar"
ADD OBJECT combo1 AS COMBOBOX WITH ;
FONTBOLD = .T., ;
FONTSIZE = 12, ;
ROWSOURCETYPE = 1, ;
ROWSOURCE = "ALICIA MILANO,AMIRA,ANA,ELENA,ESTELA," + ;
"ESTHER,MARCELA,MARIA,MARTA," + ;
"MARTINA,MERCEDES,MIRTA,MONICA", ;
HEIGHT = 24, ;
LEFT = 24, ;
TOP = 24, ;
WIDTH = 240, ;
NAME = "Combo1"
PROCEDURE combo1.INTERACTIVECHANGE
LOCAL lnUltimaTecla, lcMostrarValor,lcUltimoValorMostrado, ;
lnUltimaSeleccion, lnSeleccionados
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
lcUltimoValorMostrado = THIS.DISPLAYVALUE
lnUltimaSeleccion = THIS.SELSTART
lnSeleccionados = THIS.SELLENGTH
RETURN
ENDIF
ENDFOR
THIS.DISPLAYVALUE = lcUltimoValorMostrado
THIS.SELSTART = lnUltimaSeleccion
THIS.SELLENGTH = lnSeleccionados
ENDIF
ENDPROC
ENDDEFINE

Saludos,

GABRIEL
(Lima-Perú)

alejandro ha escrito:

Como puedo hacer una busqueda incremental con un combo, similar al del
internet explorer(que cuando empiezas a digitar algo aparecen todas las
posibles coincidencias registradas).

Gracias
Respuesta Responder a este mensaje
#2 Luis María Guayán
06/09/2006 - 21:11 | Informe spam
http://www.portalfox.com/article.php?sid77

Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"alejandro" escribió en el mensaje
news:
Como puedo hacer una busqueda incremental con un combo, similar al del
internet explorer(que cuando empiezas a digitar algo aparecen todas las
posibles coincidencias registradas).

Gracias
Respuesta Responder a este mensaje
#3 alejandro
07/09/2006 - 14:19 | Informe spam
Lo he probado en un combo que tiene las siguiente propiedades:
RowSourceType=3 (Instruccion SQL)
Y no funciona.
Puede ser que solo funcione para controles con RowSourceType=1?

Gracias


"Luis María Guayán" escribió:

http://www.portalfox.com/article.php?sid77

Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"alejandro" escribió en el mensaje
news:
> Como puedo hacer una busqueda incremental con un combo, similar al del
> internet explorer(que cuando empiezas a digitar algo aparecen todas las
> posibles coincidencias registradas).
>
> Gracias



Respuesta Responder a este mensaje
#4 alejandro
07/09/2006 - 14:46 | Informe spam
Ya esta solucionado.
El problema estaba en la propiedad Style.
Esta estaba seteada con valor "2". La puse en "0" y anduvo bien.

Gracias

"Luis María Guayán" escribió:

http://www.portalfox.com/article.php?sid77

Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"alejandro" escribió en el mensaje
news:
> Como puedo hacer una busqueda incremental con un combo, similar al del
> internet explorer(que cuando empiezas a digitar algo aparecen todas las
> posibles coincidencias registradas).
>
> Gracias



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida