ON EDIT CHANGE en Combobox (Sin Solución)

elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: ON EDIT CHANGE en Combobox

Post by elmoiquique »

Antonio Linares wrote:Por que activas el sort del recurso ? Prueba a no activarlo y ordena el array antes de mostrarlo
Porque si no lo activo, solo me busca el primer caracter, ya que al ingresar mas de 1, solo busca por el primero de la cadena.

Por ejemplo necesito buscar el D5100, cada vez que presiono un caracter, busca el que tiene al comienzo, no busca por cadena como cuando esta activado

BUSCAR= D5100 SORT =.F.

0000054
1000002 ENCUENTRA AL DIGITAR 3 CARACTER 1
2355655
3545648
5000000 ENCUENTRA AL DIGITAR 2 CARACTER 5
AA54564
D2100 ENCUENTRA AL DIGITAR 1 CARACTER D
D2200
D5100
E455654

BUSCAR= D5100 SORT =.T.

0000054
1000002
2355655
3545648
5000000
AA54564
D2100 ENCUENTRA AL DIGITAR 1 CARACTER D
D2200
D5000 ENCUENTRA AL DIGITAR 2 CARACTER 5
D5100 ENCUENTRA AL DIGITAR 3 CARACTER 1
E455654

Esa es la diferencia entre uno y otro, per oel segundo no funciona correctamente
Last edited by elmoiquique on Wed May 29, 2013 10:57 pm, edited 1 time in total.
Fivewin 11.07
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: ON EDIT CHANGE en Combobox

Post by elmoiquique »

Antonio Linares wrote:Por que activas el sort del recurso ? Prueba a no activarlo y ordena el array antes de mostrarlo
Antonio

Desactive el sort, ordene el array, funciona pero la busqueda al intentar encontrar lo que necesito es lenta, como te lo explique antes, y lo ideal es que quede como si el sort estuviera activado.
Fivewin 11.07
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: ON EDIT CHANGE en Combobox

Post by Antonio Linares »

La búsqueda solo hace un AScan(), en que notas que sea lenta ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: ON EDIT CHANGE en Combobox

Post by elmoiquique »

Antonio Linares wrote:La búsqueda solo hace un AScan(), en que notas que sea lenta ?
Hola Antonio

Disculpa No supe expresarme bien, no es que sea lenta... un ejemplo un combox que tiene 500 opciones y todas empiezan con la Letra "A" y la que necesito esta en el lugar "85".. y lo que busco es la palabra "AZUFRE".
Cuando en el combobox yo presiono la Tecla "A", inmediatamente se poseciona en la primera opcion que empieza con la letra "A", cuando Presiono la tecla "Z", para que me busque la cadena "A+Z", no hace eso sino que busca la primera que encuentra con la Letra "Z", entonces que debo hacer yo, bajar con las flechas hasta encontrar lo que busco a eso me refiero que sea lento.....

Espero haberme hecho entender o yo estoy usando mal el combobox

Elmo
Fivewin 11.07
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: ON EDIT CHANGE en Combobox (Sin Solución)

Post by elmoiquique »

Estimado Antonio

Necesito saber si y se implementro la busqueda de una cadena de caracteres en el combobox, ya que en la version que tengo solo busca el primer caracter y no una cadena

Agradeceria tu respuesta para poer actualizarme

Grcis
Fivewin 11.07
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: ON EDIT CHANGE en Combobox (Sin Solución)

Post by sysctrl2 »

creo que 500 registros en un combox es mucho,

y lo que requieres es una búsqueda incremental,

aquizas con xbrowse .

saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: ON EDIT CHANGE en Combobox (Sin Solución)

Post by elmoiquique »

sysctrl2 wrote:creo que 500 registros en un combox es mucho,

y lo que requieres es una búsqueda incremental,

aquizas con xbrowse .

saludos.
Hoal Cesar

El combobox se comporta muy bien con muchos registros, inclusive los que tengo superan los 2000, un array lo hace velozmente, mi problema no es ese, es por buscar un dato especifico y no situarme en la primera que encuentra y despues buscarlo en forma secuencial uno a uno con las flechas sea arriba o abajo.... Eso hace que el metodo de busqueda se torne muy lento..
Los combobox actuales en cualquier lenguaje te permite hacer una busqueda por cadenas de caracteres, lo que no hace el que utilizamos nosotros...
Por eso requiero una respuesta de antonio, para saber si ya fue implementada la busqueda por cadenas de caracteres

Saludos
Fivewin 11.07
User avatar
sysctrl2
Posts: 833
Joined: Mon Feb 05, 2007 7:15 pm
Contact:

Re: ON EDIT CHANGE en Combobox (Sin Solución)

Post by sysctrl2 »

En otros momento ya se ha tocado este tema,
no han encontrado una solución, y como dices ojala
algún guru, de respuesta,
saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
José Vicente Beltrán
Posts: 279
Joined: Mon Oct 10, 2005 8:55 am
Location: Algeciras, España
Contact:

Re: ON EDIT CHANGE en Combobox (Sin Solución)

Post by José Vicente Beltrán »

Pues la solución es muy sencilla:

Hay que utilizar la propiedad SORT del combo y ADEMAS la función asort() para ordenar el array

Con esto se consigue que el buscador del combo coincida siempre con el orden correcto del array.
Probado con arrays grandes y al menos a mi no me falla nunca. :shock:
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: ON EDIT CHANGE en Combobox (Sin Solución)

Post by elmoiquique »

José Vicente Beltrán wrote:Pues la solución es muy sencilla:

Hay que utilizar la propiedad SORT del combo y ADEMAS la función asort() para ordenar el array

Con esto se consigue que el buscador del combo coincida siempre con el orden correcto del array.
Probado con arrays grandes y al menos a mi no me falla nunca. :shock:
Hola Jose....

Gracias por tu respuesta podrias colocar un ejemplo, ya que lo estoy intentando y sigue sin funcionar

Si puedes probar con estos codigos, de esta foma los ordena con el SORT ACTIVADO

D3100
D-3100W
D-3200
D-3200W/18
D5100
D5200
D7000
D-7000W/18
D90
D-90

Saludos
Fivewin 11.07
User avatar
José Vicente Beltrán
Posts: 279
Joined: Mon Oct 10, 2005 8:55 am
Location: Algeciras, España
Contact:

Re: ON EDIT CHANGE en Combobox (Sin Solución)

Post by José Vicente Beltrán »

Yo he tomado la cadena
aCadena := { "D3100", "D5200", "D-3200", "D90", "D-3200W/18", "D5100", "D7000", "D-7000W/18", "D-3100W", "D-90"}
que como ves está desordenada (da igual si la cadena viene ya ordenada)

1.- En Pelles C activo la propiedad SORT para el combo
2.- Escribo el siguiente codigo en el que a la cadena, desordenada o no, le aplico la función asort( aCadena )

Code: Select all

aCadena := { "D3100", "D5200", "D-3200", "D90", "D-3200W/18", "D5100", "D7000", "D-7000W/18", "D-3100W", "D-90"}
ASORT( aCadena )
El resultado es un combo con los elementos perfectamente ordenados de menor a mayor (gracias a asort()) en el que puedes teclear cualquier item que lo encuentra sin problema (gracias a SORT) y lo mas importante sin error al seleccionarlo.

Este modo de actuar se debe a que la propiedad SORT del combo solo ordena los elementos de forma externa, pero el puntero sigue apuntando a la posición que dicho elemento ocupaba antes de ser ordenado (p.e. si localizo el elemento numero tres, el que se selecciona no es el que estoy viendo en tercer lugar sino el que ORIGINALMENTE ocupaba ese lugar en la cadena). Por eso la función ASORT() hace que ambas posiciones interna y externa coincidan con lo que se elimina la discordancia entre el elemento localizado y el elemento seleccionado :shock:

Perdón por la vara. :oops:
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: ON EDIT CHANGE en Combobox (Sin Solución)

Post by elmoiquique »

Estimado Amigo

Gracias por su tiempo,,, efectivamente todo lo explicado sucede tal cual como esta descrito, pero al seleccionar el elemento te toma uno diferente a lo que visualmente se ve... de lo que me he dado cuenta es como si el array estuviera ordenado de otra forma y visualmente se ve diferente....

ejemplo cuando me despliega el combobox con SORT y ASORT queda asi
D3100
D-3100W
D-3200
D-3200W/18
D5100
D5200
D7000
D-7000W/18
D90
D-90

Pero debiera quedar ordendo de la siguiente forma y es la correcta
D-3100W
D-3200
D-3200W/18
D-7000W/18
D-90
D3100
D3200
D5100
D5200
D7000
D90

Que sucede cuando selecciono el elemento del primero que me muestra el combobox por ejemplo D-3100W visualmente creo que estoy seleccionando este, pero finalmente me graba el D-3200 que se encuentra en la misma posicion, sin que el usuario se de cuenta del error..
Fivewin 11.07
User avatar
José Vicente Beltrán
Posts: 279
Joined: Mon Oct 10, 2005 8:55 am
Location: Algeciras, España
Contact:

Re: ON EDIT CHANGE en Combobox (Sin Solución)

Post by José Vicente Beltrán »

Elmoiquique,

Efectivamente llevas razón, lamentablemente visto mas a fondo el tema, resulta que la ordenación en caso de que el array contenga caracteres como '-', '/', etc según SORT es diferente de la ordenación ASORT() y como la primera tiene preferencia sobre la segunda.... pues no hemos hecho nada.

En mi caso siempre ha funcionado peeeero es que los elementos, en los arrays que uso, solo contienen números y/o letras sin _, por lo que ambas cadenas resultan identicas.
Pido disculpas. :shock:
elmoiquique
Posts: 257
Joined: Wed May 16, 2007 9:40 pm
Location: Iquique Chile

Re: ON EDIT CHANGE en Combobox (Sin Solución)

Post by elmoiquique »

José Vicente Beltrán wrote:Elmoiquique,

Efectivamente llevas razón, lamentablemente visto mas a fondo el tema, resulta que la ordenación en caso de que el array contenga caracteres como '-', '/', etc según SORT es diferente de la ordenación ASORT() y como la primera tiene preferencia sobre la segunda.... pues no hemos hecho nada.

En mi caso siempre ha funcionado peeeero es que los elementos, en los arrays que uso, solo contienen números y/o letras sin _, por lo que ambas cadenas resultan identicas.
Pido disculpas. :shock:
Jose

Agradezco tu tiempo al tratar de ayudarme.... Espero que este problema se solucione pronto,

Espero que Antonio vea el Post y suguiera alguna solucion al tema o si realmnte esta corregido ya que aun tengo una version del 2011..

Saludos y gracias
Fivewin 11.07
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: ON EDIT CHANGE en Combobox (Solucionado)

Post by cnavarro »

elmoiquique wrote:Estimado Antonio

Necesito saber si y se implementro la busqueda de una cadena de caracteres en el combobox, ya que en la version que tengo solo busca el primer caracter y no una cadena

Agradeceria tu respuesta para poer actualizarme

Grcis
En la clase combobox existe una DATA lIncSearch que no se inicializa dentro de la clase, por lo que imagino que habría que ponerla a .T. después de definir el control, y es la que en el metodo correspondiente permite realizar búsquedas incrementales
En la version 12.03 ya existía
Habría que añadirla en la definicion del control

Code: Select all


#xcommand @ <nRow>, <nCol> COMBOBOX [ <oCbx> VAR ] <cVar> ;
             [ <it: PROMPTS, ITEMS> <aItems> ] ;
             [ SIZE <nWidth>, <nHeight> ] ;
             [ <dlg:OF,WINDOW,DIALOG> <oWnd> ] ;
             [ <help:HELPID, HELP ID> <nHelpId> ] ;
             [ ON CHANGE <uChange> ] ;
             [ VALID <uValid> ] ;
             [ <color: COLOR,COLORS> <nClrText> [,<nClrBack>] ] ;
             [ <pixel: PIXEL> ] ;
             [ FONT <oFont> ] ;
             [ <update: UPDATE> ] ;
             [ MESSAGE <cMsg> ] ;
             [ WHEN <uWhen> ] ;
             [ <design: DESIGN> ] ;
             [ BITMAPS <acBitmaps> ] ;
             [ ON DRAWITEM <uBmpSelect> ] ;
             [ STYLE <nStyle> ] ;
             [ <pict: PICT, PICTURE> <cPicture> ];
             [ ON EDIT CHANGE <uEChange> ] ;
             [ INCREMENTAL <lIncr>] ;                                // Por ejemplo
       => ;
          [ <oCbx> := ] TComboBox():New( <nRow>, <nCol>, bSETGET(<cVar>),;
             <aItems>, <nWidth>, <nHeight>, <oWnd>, <nHelpId>,;
             [{|Self|<uChange>}], <{uValid}>, <nClrText>, <nClrBack>,;
             <.pixel.>, <oFont>, <cMsg>, <.update.>, <{uWhen}>,;
             <.design.>, <acBitmaps>, [{|nItem|<uBmpSelect>}], <nStyle>,;
             <cPicture>, [<{uEChange}>], [<(oCbx)>],[<lIncr>] )

 
e inicializarla en el New y en el Redefine

Asi, lo he probado y funciona

Code: Select all

   @ 30, 10 COMBOBOX oCbx VAR cTit1 ITEMS aItems ; 
            OF oDlgR SIZE 200, 200 FONT oFont ;
            PIXEL COLOR CLR_BLACK, CLR_WHITE
            oCbx:lIncSearch  := .T.
 
En este link puso Antonio la clase combobox
http://forums.fivetechsupport.com/viewt ... 62#p145162
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Post Reply