DBCombo: omision u error

DBCombo: omision u error

Postby RSalazarU » Fri Jul 25, 2008 7:57 pm

Hola amigos del foro:

Hace tiempo que uso el DBCombo, pero recien me di cuenta que no funciona bien el autoserch. Despues de leer varios post del foro me puse a analizar el codigo fuente DBCombo.prg y ComboBox.prg.

Ahi vi que:

1. cSearchKey esta definida en ambos prg, creo que no deberia estar en DBCombo.prg

2. En el metodo KeyChar(..) de DBCombo.prg se debe colocar RETURN 0 una vez que se a encontrado un nuevo item y evaluado bChange, si no se hace esto DBCombo ejecuta Super:KeyChar(nKey, nFlags) y ahi se ejecuta otra busqueda que cambia de nuevo la posicion del DBCombo.

Mi version de FWH es 8.02 y el codigo corregido en concreto seria:

Code: Select all  Expand view  RUN
METHOD KeyChar( nKey, nFlags) CLASS TDBCombo

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

   // Incremental search
   if nKey = 32   // space resets the search
      ::cSearchKey := ""
      ::Set(1)
   else
      if nKey = VK_BACK
         ::cSearchKey := left(::cSearchKey,Len(::cSearchKey)-1)
      else
         ::cSearchKey += upper(chr(nKey))
      endif

      nNewAT := ascan(::aList, {|x| upper(x) = ::cSearchKey} )

      if nNewAt != nOldAt .and. nNewAT != 0  // If found and changed

         if ::lSound
            tone(60,.3) // sound if searchkey found
         endif

         ::set( nNewAt )

         if ::bChange != nil

            if ::oGet != nil                        // Always not nil for dropdown
               ::oGet:VarPut( Eval( ::bSetGet ) )   // udate variable before calling bChange
               ::oGet:Refresh()
            endif

            Eval( ::bChange, Self, ::varGet() )

         endif

    return 0 // <- ACA ESTA EL CAMBIO!!!!!!!!

      else
         ::cSearchKey := left(::cSearchKey,Len(::cSearchKey)-1)
      endif
   endif

   Super:KeyChar(nKey, nFlags)

RETURN 0   // Must be 0 - We don't want API default behavior.




Con esta correccion corre bien el DBCombo . :D

Saludos

Rolando
Sauro Srl.
Informática y Sistemas
Cochabamba - Bolivia
FWH 8.02 xharbour 1.1.0 (SimpLex)
RSalazarU
 
Posts: 211
Joined: Wed Jul 16, 2008 12:59 pm
Location: Cochabamba-Bolivia

Postby Antonio Linares » Fri Aug 01, 2008 6:27 am

Rolando,

Implementado, gracias! :-)
regards, saludos

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 60 guests