FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: ON EDIT CHANGE en Combobox
Posted: 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
Fivewin-Xharbour 24.09, Iquique, Chile
Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: ON EDIT CHANGE en Combobox
Posted: 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 24.09, Iquique, Chile
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: ON EDIT CHANGE en Combobox
Posted: Thu May 30, 2013 06:29 AM

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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: ON EDIT CHANGE en Combobox
Posted: Thu May 30, 2013 07: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 24.09, Iquique, Chile
Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posted: Tue Mar 18, 2014 02: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 24.09, Iquique, Chile
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posted: Tue Mar 18, 2014 05: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 "
Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posted: Tue Mar 18, 2014 06: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 24.09, Iquique, Chile
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM
Re: ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posted: Wed Mar 19, 2014 05: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 "
Posts: 282
Joined: Mon Oct 10, 2005 08:55 AM
Re: ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posted: 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:

Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posted: Fri Mar 21, 2014 01: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. :-)


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 24.09, Iquique, Chile
Posts: 282
Joined: Mon Oct 10, 2005 08:55 AM
Re: ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posted: Fri Mar 21, 2014 03: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 (fw): Select all Collapse
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 :-)

Perd贸n por la vara. :-)
Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posted: Fri Mar 21, 2014 03: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 24.09, Iquique, Chile
Posts: 282
Joined: Mon Oct 10, 2005 08:55 AM
Re: ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posted: Fri Mar 21, 2014 05: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:

Posts: 336
Joined: Wed May 16, 2007 09:40 PM
Re: ON EDIT CHANGE en Combobox (Sin Soluci贸n)
Posted: Fri Mar 21, 2014 06: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. :-)


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 24.09, Iquique, Chile
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: ON EDIT CHANGE en Combobox (Solucionado)
Posted: Mon Mar 24, 2014 07: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 (fw): Select all Collapse
#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 (fw): Select all Collapse
聽 聽@ 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

Continue the discussion