Búsqueda incremental en xHarbour

Búsqueda incremental en xHarbour

Postby Manuel Aranda » Wed Oct 25, 2006 7:36 pm

En Clipper+Fivewin el siguiente código funciona correctamente, es decir cada vez que se introduce una letra en el GET el Listbox se mueve hasta el registro que contiene esas letras, sin embargo con FWH el Listbox no se mueve conforme se van introduciendo letras, solamente cuando se pulsa la tecla retroceso después de introdocir una cadena. Por favor, pueden echarle un vistazo al código ?, tal vez sea necesaria alguna optimización para xHarbour pero no encuentro que puede ser:

Code: Select all  Expand view
REDEFINE GET oGet VAR cText ID 801 PICTURE "@!" OF oDlg;
     ON CHANGE ( Self:Assign(),;
     Locator(""+SubStr(cText,1,Self:nPos-1)+Upper(Chr( nKey )),oLbx,cUsaBase) )


*********#######*****************
FUNCTION LOCATOR(cKey,oB,cUsaBase)
*********#######*****************
// oB = TWBrowse Object, cKey = Contenido del Get
local nSeekrec
//
nSeekrec:=(cUsaBase)->(Recno())
IF GetASyncKey( VK_BACK )
cKey := SubStr(cKey,1,Len(cKey)-1)
EndIF

(cUsaBase)->(DbSeek(cKey,.T.))
If !Found()
GO nSeekrec
EndIF
//
oB:Refresh()
//
RETURN( NIL )
//
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby Antonio Linares » Wed Oct 25, 2006 10:39 pm

Manuel,

Aqui tienes un ejemplo completo:
http://fivetechsoft.com/forums/viewtopi ... ncremental
regards, saludos

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

Postby Francisco Horta » Thu Oct 26, 2006 5:23 am

que tal manuel,
yo uso la busqueda incremental en la msgbar con la twbrowse tee paso un ejemplo de su uso, espero te sirva:

LOCAL cDefaulMsg:=""
DEFINE DIALOG oDls bla bla bla...
REDEFINE LISTBOX oBrs ;
FIELDS (oDCli)->Nombre, (oDCli)->Codigo bla bla bla ....

oBrs:bSeek := {|lRet| oBrs:DbfSeek(.T.) }
oBrs:bUpdateBuffer:= {|| UpdateBuffer( oDls:oMsgBar, ;
cDefaultMsg, oBrs:cBuffer ) }

ACTIVATE DIALOG oDls CENTERED;
ON INIT MsgBarra(oDls,cDefaultMsg)

STAT FUNCTION MsgBarra(oDls,cDefaultMsg)
SET MESSAGE OF oDls TO cDefaultMsg NOINSET
RETURN Nil

FUNCTION UpdateBuffer( oMsgBar, cDefaultMsg, cBuffer )
local nClrText:= oMsgBar:nClrText
local cMsg, oFont

DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 0,-10 BOLD

if Len( cBuffer ) > 0
cMsg:= "Buscando: " + upper(cBuffer)
oMsgBar:nClrText:= CLR_BLUE
oMsgBar:SetFont(oFont)
else
cMsg:= cDefaultMsg
endif
oMsgBar:SetMsg( PadR( cMsg ,200) )
oMsgBar:nClrText:= nClrText
oFont:End()
return Nil

Salu2
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Postby Manuel Aranda » Thu Oct 26, 2006 11:30 am

Gracias Antonio y Francisco. Lo pruebo.

Un saludo,
Manuel
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 58 guests