FoxPro/Visual FoxPro - AYUDA CON COMBOX

 
Vista:

AYUDA CON COMBOX

Publicado por ALBERTO (6 intervenciones) el 18/09/2006 19:22:36
QUIERO busca la palabra "ELÁSTICO", puedO escribir E-L-A, etc. A medida que escribe, buscará incrementalmente la combinación de letras que ha escrito de modo que coincida con la palabra que busca PERO NO SE COMO HACERLO
PORQUE DIABLOS NO SE INCREMENTA EN MI CASO ME PUEDEN DR ALGUNA EXPLICACION PORFAVOR
NECESITO SABER LA RAZON
TENGO COMO UN 1.000.000 DE REGISTROS Y NECESITO HACER ESTO PARA QUE EL USUARIO BUSQUE LOS CLIENTES POR NOMBRE
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:AYUDA CON COMBOX

Publicado por sergio (737 intervenciones) el 18/09/2006 21:16:24
Mira este codigo y fijate si te sirve lo qu ehace es create un form y agregarle un combobox, toma la parte del combo y `programala desde tu formulario dinamicamente o desde los metodos del combo
Si pegas este codigo en un prg y lo ejecutas vas a ver como funciona

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"
style = 0

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
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