FoxPro/Visual FoxPro - ¿COMO HACER BUSQUEDA EN EL MISMO COMBO? POR FAVOR

 
Vista:

¿COMO HACER BUSQUEDA EN EL MISMO COMBO? POR FAVOR

Publicado por HELDER MARTINEZ (711 intervenciones) el 26/03/2008 23:29:12
HOLA AMIGOS PROGRAMADORES,

QUIERO REALIZAR UNA BUSQUEDA; QUE CUANDO YO ESTE ESCRIBIENDO EN EL COMBO ESTE ME VALLA DESPLEGANDO EL NOMBRE DEL CLIENTE QUE ESCRIBO.

QUE ME DESPLIEGUE SOLAMENTE LOS NOMBRE QUE HACEN REFERENCIA A LA PRIMERA LETRA QUE YO ESCRIBO O A TODO LO QUE ESCRIBO, PERO QUE

POR EJEMPLO;
SI YO ESCRIBO LA LETRA "A"
QUE ME MUESTRA TODOS LOS NOMBRES QUE EMPIEZAN CON LA LETRA "A", EJEMPL;

ANA
ANTONIO
AMALIA
ETC.,
PERO QUE TODO ESTO SE ME MUESTRE EN EL MISMO COMBO.

YO LO INTENTO HACER DE ESTA FORMA ASI;

*******************************************************************************
PUBLIC cNom_cliente
SELECT clientes
cNom_cliente=ALLTRIM(thisform.cboCliente.value)

SELECT clientes
SELECT clientes.nom_cliente FROM clientes;
WHERE ALLTRIM(clientes.nom_cliente)=cNom_cliente;
order BY identidad, nom_cliente;
INTO CURSOR _clientes

thisform.cboCliente.RowSourceType= 6
thisform.cboCliente.ColumnCount =1
thisform.cboCliente.ColumnWidths ="250"
thisform.cboCliente.RowSource ="_clientes.nom_cliente"

**********************************************************************************
NO ME SALE, ESTO,...
SI ALGUIEN ME AYUDA O ME DA OTRA FORMA DE HACERLO,

SALUDES
LES AGRADESCO MUCHO

HELDER
HONDURAS.
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:¿COMO HACER BUSQUEDA EN EL MISMO COMBO? POR FA

Publicado por andy (228 intervenciones) el 26/03/2008 23:47:42
Este ejemplo no es mio, pido perdon por no tener los datos del autor.
Copialo como Prg y ejecutalo, veras que hace lo que tu quieres:

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,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
*--------------------------------
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:¿COMO HACER BUSQUEDA EN EL MISMO COMBO? POR FA

Publicado por HELDER MARTINEZ (711 intervenciones) el 27/03/2008 15:57:16
GRACIAS AMIGO
ESTA INTERESANTE, PERO NECESITO ALGO ORIENTADO A PROGRAMACION A OBJETOS,

SALUDES
GRACIAS

HELDER
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:¿COMO HACER BUSQUEDA EN EL MISMO COMBO? POR FA

Publicado por enrique (1041 intervenciones) el 27/03/2008 16:07:43
Lo que te paso es orientado a objeto.

Copia esto en el InteractiveChange del Combo y prueba

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
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:¿COMO HACER BUSQUEDA EN EL MISMO COMBO? POR FA

Publicado por andy (228 intervenciones) el 27/03/2008 16:31:46
Bien Enrique!! Justo estaba por escribirle lo mismo al amigo Helder, creo que no se dio cuenta que el Procedimiento dice eso. Gracias
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:¿COMO HACER BUSQUEDA EN EL MISMO ***SOLUCIONADO

Publicado por HELDER MARTINEZ (711 intervenciones) el 27/03/2008 17:12:23
SALUDES AMIGOS, GRACIAS A ANDY Y ENRIQUE,

MIL GRACIAS 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:¿COMO HACER BUSQUEDA EN EL MISMO COMBO? POR FA

Publicado por coello carlos daniel (9 intervenciones) el 09/04/2008 14:39:29
Hola a todos... antes que nada gracias por el codigo que nos diste Helder muy bueno, yo quisiera que a medida que autocompleta el nombre que estoy bsucando, en la lista del combo box me valla mostrando una especie de filtrado con esos nombres y todos los que tienen las mismas letras el principio pero con variaciones...

Ejemplo:
si escribo en el combo "Ma" me autocompleta la 1º que seria "Madeline"
y en la lista desplegada hacia abajo esten los demas que comienzan por "ma"
Manuel
Maria
Mario
Marcos
Etc...

y poder selecionar en la lsita al que estoy buscando es en caso de no recordar el nombre exacto del usuario pero si unas primeras letras seria muy util o para busqueda de productos o cualuqier cosa...
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