ON EDIT CHANGE en Combobox (Sin Solución)

Re: ON EDIT CHANGE en Combobox

Postby elmoiquique » Wed May 29, 2013 10:26 pm

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-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 309
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: ON EDIT CHANGE en Combobox

Postby elmoiquique » Wed May 29, 2013 10:49 pm

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-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 309
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: ON EDIT CHANGE en Combobox

Postby Antonio Linares » Thu May 30, 2013 6:29 am

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42068
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: ON EDIT CHANGE en Combobox

Postby elmoiquique » Thu May 30, 2013 7:21 pm

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-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 309
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

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

Postby elmoiquique » Tue Mar 18, 2014 2:12 pm

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-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 309
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

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

Postby sysctrl2 » Tue Mar 18, 2014 5:51 pm

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 "
User avatar
sysctrl2
 
Posts: 1014
Joined: Mon Feb 05, 2007 7:15 pm

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

Postby elmoiquique » Tue Mar 18, 2014 6:18 pm

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-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 309
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

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

Postby sysctrl2 » Wed Mar 19, 2014 5:10 am

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
sysctrl2
 
Posts: 1014
Joined: Mon Feb 05, 2007 7:15 pm

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

Postby José Vicente Beltrán » Fri Mar 21, 2014 11:19 am

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:
User avatar
José Vicente Beltrán
 
Posts: 282
Joined: Mon Oct 10, 2005 8:55 am
Location: Algeciras, España

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

Postby elmoiquique » Fri Mar 21, 2014 1:52 pm

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-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 309
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

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

Postby José Vicente Beltrán » Fri Mar 21, 2014 3:09 pm

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  Expand view
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:
User avatar
José Vicente Beltrán
 
Posts: 282
Joined: Mon Oct 10, 2005 8:55 am
Location: Algeciras, España

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

Postby elmoiquique » Fri Mar 21, 2014 3:52 pm

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-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 309
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

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

Postby José Vicente Beltrán » Fri Mar 21, 2014 5:44 pm

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 otros caracteres, por lo que ambas cadenas resultan identicas.
Pido disculpas. :shock:
User avatar
José Vicente Beltrán
 
Posts: 282
Joined: Mon Oct 10, 2005 8:55 am
Location: Algeciras, España

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

Postby elmoiquique » Fri Mar 21, 2014 6:27 pm

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 otros caracteres, 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-Xharbour 11.07, Iquique, Chile
elmoiquique
 
Posts: 309
Joined: Wed May 16, 2007 9:40 pm
Location: Region de Ñuble, Chile

Re: ON EDIT CHANGE en Combobox (Solucionado)

Postby cnavarro » Mon Mar 24, 2014 7:20 pm

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


#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  Expand view

   @ 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
viewtopic.php?p=145162#p145162
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6541
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 35 guests