Page 1 of 1

Combobox Busqueda Incremental

Posted: Thu Sep 08, 2011 3:45 pm
by Blessed
Hola amigos

Estoy pasando mi codigo de la FWH 9.06 a la FWH 10.10 y me he encontrado, que la busqueda incremental (incremental search) en la clase combobox no trabaja correctamente en esta version.

Alguien ha hallado como solucionar este problema?

Saludos

Re: Combobox Busqueda Incremental

Posted: Thu Sep 08, 2011 4:56 pm
by Blessed
Hola

Olvide mencionar que es desde recursos.
Y por cierto en el combobox tipo CBS_SIMPLE, la busqueda funciona perfectamente, no asi en CBS_DROPDOWNLIST, al omitir

Code: Select all

   oGet[6]:lIncSearch := .T.  && Activa busqueda incremental
 
Busca solo la primera letra, en la version 9.06 funcionaba con el codigo anterios, alguien tiene algun hilo que hacer en esta version :?:

Saludos

Re: Combobox Busqueda Incremental

Posted: Sat Sep 17, 2011 5:20 pm
by thernandez
aprovechando tu post

con esta funcion se puede realizar la busqueda tipo google?

al ir escribiendo va mostrando los registros que van cumpliendo con dicha busqueda, es posible?

gracias anticipadas

Tomas Hernandez

Re: Combobox Busqueda Incremental

Posted: Mon Sep 19, 2011 2:39 pm
by Blessed
Hola Tomas

Bueno cuando funcionaba...
Te ubicaba a medida que escribias en el elemento a que correspondia.
Lo que hace la busqueda de google es filtrar, y eso se puede hacer pero el problema es que los combos se cargan a memoria, y cuando las tablas crecen, dejan de ser amigables convirtiendose en largas esperas :( ; aun el DBCOMBO trabaja subiendo los valores de la tabla a memoria, no se gestionan los registros sino arreglos de memoria.

Re: Combobox Busqueda Incremental

Posted: Wed Sep 21, 2011 10:45 pm
by Blessed
Hola

He intentado compilar la clase Combobox de la FWH 9.06, que era con la que me funcionaba la busqueda incremental,y despues de hacer un par de malabares funciono, Ya que en la FWH 10.10 no anda bien
Espero no tener lios con otras clases, me preocupa la clase Get, veremos

Re: Combobox Busqueda Incremental

Posted: Wed Sep 21, 2011 11:29 pm
by Blessed
Una pregunta en la 11.08

Ya se soluciono esto de la busqueda incremental ??

Estos detalles podran parecer pequeños, pero soy muy significantes al menos en mis aplicaciones :(

Re: Combobox Busqueda Incremental

Posted: Thu Oct 13, 2011 4:33 pm
by thernandez
Blessed wrote:Hola Tomas

Bueno cuando funcionaba...
Te ubicaba a medida que escribias en el elemento a que correspondia.
Lo que hace la busqueda de google es filtrar, y eso se puede hacer pero el problema es que los combos se cargan a memoria, y cuando las tablas crecen, dejan de ser amigables convirtiendose en largas esperas :( ; aun el DBCOMBO trabaja subiendo los valores de la tabla a memoria, no se gestionan los registros sino arreglos de memoria.

gracias por responder

tendrás algún ejemplo? para revisarlo ?

gracias

Re: Combobox Busqueda Incremental

Posted: Tue Dec 20, 2011 3:29 pm
by russimicro
// CAMBIOS EN LA CLASE DBCOMBO.PRG ... Y ME ESTA FUNCIONANDO

CLASS TDBCombo FROM TComboBox

DATA cSearchBackup // JOHNSON RUSSI - DIC 20 DE 2011

///

METHOD New( nRow, nCol, bSetGet, aItems, nWidth, nHeight, oWnd, nHelpId, ;
bChange, bValid, nClrFore, nClrBack, lPixel, oFont, ;
cMsg, lUpdate, bWhen, lDesign, acBitmaps, bDrawItem, ;
cAlias, cFldItem, cFldList, aList ) CLASS TDBCombo

DEFAULT cAlias := alias(), ;
cFldList := "", ;
cFldItem := "", ;
aList := {},;
aItems:= {}

::aList := aList
::aItems := aItems
::cAlias := cAlias
::cFldList := cFldList
::cFldItem := cFldItem
::cSearchKey:=""

::cSearchBackup :="" // JOHNSON RUSSI - DIC 20 DE 2011


METHOD KeyChar( nKey, nFlags) CLASS TDBCombo

local nNewAT := 0, nOldAT:=::nAT

::cSearchKey := ::cSearchBackup // JOHNSON RUSSI - DIC 20 DE 2011

// Incremental search
if nKey = VK_BACK // VK_BACK RESETEA L ABUSQUEDA , SE QUITA EL VK_SPACE , PARA PODER BUSCAR EN ORACIONES : "NOTA CREDITO" // JOHNSON RUSSI - DIC 20 DE 2011
::cSearchKey := ""
::cSearchBackup := "" // JOHNSON RUSSI - DIC 20 DE 2011
::Set( If( ValType( Eval( ::bSetGet ) ) == "N", 1, ::aItems[ 1 ] ) )
else

if nKey = 45 // CON EL SIGNO (-) BORRA ULTIMO CARACTER JOHNSON RUSSI - DIC 20 DE 2011
::cSearchKey := left(::cSearchKey,Len(::cSearchKey)-1)
else
::cSearchKey += upper(chr(nKey))
endif

::cSearchBackup := ::cSearchKey // JOHNSON RUSSI - DIC 20 DE 2011

nNewAT := ascan(::aList, {|x| subs(upper(x),1,len(::cSearchKey)) == ::cSearchKey} ) // JOHNSON RUSSI - DIC 20 DE 2011