FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xBrowse - bSeek Ayuda
Posts: 189
Joined: Sun Jul 08, 2007 01:46 AM
xBrowse - bSeek Ayuda
Posted: Thu Sep 25, 2008 12:22 AM

Amigos:

Necesito un ejemplo de un xBrowse que al digitar
un nombre se mueva el browse hasta el nombre ese que se digita

Muchas gracias.

(Disculpen, me estoy cambiando de Browse)

Saludos y Gracias

Ruben Fernandez

Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
xBrowse - bSeek Ayuda
Posted: Thu Sep 25, 2008 12:26 PM
Hola Rubén:

A ver si es esto lo que estás buscando:

..................
     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())
cKey := SubStr(cKey,1,Len(cKey)-1) 
//
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 )
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 189
Joined: Sun Jul 08, 2007 01:46 AM
xBrowse - bSeek Ayuda
Posted: Thu Sep 25, 2008 04:49 PM

Gracias Manuel:

Lo pruebo y te aviso.

Gracias y Saludos

Ruben Fernandez.

Posts: 189
Joined: Sun Jul 08, 2007 01:46 AM
xBrowse - bSeek Ayuda
Posted: Thu Sep 25, 2008 05:04 PM

Manuel:

Funciono perfecto, ahora deseo enmcontrar la funcion similar
del twBrowse de HDC para xBrowse. No necesita tener un get,
solo digitar lo que buscas.

Muchas gracias, por ahora esta solucionado

Saludos

Ruben Fernandez.

Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
xBrowse - bSeek Ayuda
Posted: Thu Sep 25, 2008 06:13 PM
Usando bkeydown podrías conseguirlo. La siguiente función te desplaza el browse según la letra que digitas. Con algunas modificaciones creo que te servirá para implementar lo que buscas.

................
oLbx:bkeydown:={|nKey|DOKEYCHECK(nKey,oLbx)} 
.................

******************************************************************
FUNCTION DOKEYCHECK(nKey,oBrw)
******************************************************************
*------SINGLE CHARACTER BROWSE SEARCHER----------------------
   local cKEY, nSeekrec
   nSeekrec:=recno()           && Record number before the seek...
   && Note ASCII values: 65-90  are Capital A through Z.
   &&                  : 97-122 are lowercase a through z.
   &&                  : 48-57  are numbers 0-9.
   &&                  : 13     used below is for a RETURN key hit.
   IF nKEY>=65 .AND. nKEY<=90 .OR. nKEY>=97 .AND. nKEY<=122 .OR. nKEY >=48 .AND. nKEY<=57

      cKey:=UPPER(CHR(nKEY)) && Change ACSII nKey value to a Character value
                             && for the SEEK...

      SET SOFTSEEK ON        && Get as close as you can to the key value...
      SEEK UPPER(cKey)
      SET SOFTSEEK OFF         && Reset softseek

      oBRW:oVscroll:setpos(recno())   && Refresh browser object sequence...
      oBRW:refresh()                  &&
      SysRefresh()
      RETURN( NIL )                   && Drop out!
   ENDIF

*-RECORD SELECTION AFTER A RETURN KEY HIT...POSSIBLY TO DROP TO EDIT WINDOW -*
   DO CASE
      CASE nKEY == VK_SPACE
           //
      CASE nKEY == VK_RETURN
           //
   ENDCASE
//
RETURN( NIL )
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 189
Joined: Sun Jul 08, 2007 01:46 AM
xBrowse - bSeek Ayuda
Posted: Fri Sep 26, 2008 01:13 AM

Manuel:

Espectacular, muchas gracias.

Saludos

Ruben Fernandez

Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
xBrowse - bSeek Ayuda
Posted: Fri Sep 26, 2008 07:17 AM
Lo que te comenta Manuel esta bien y seguro que funciona, pero para xBrowse lo ideal sería emplear sus Datas y metodos que proporciona para busquedas.
Lo primero crear un objeto say, que irá visualizando la cadena de busqueda.
Una vez creado el say, añades las siugientes lineas, y ya tienes la busqueda implementada.

      oBrw:bSeek   := { | c | Alias->(DBSeek( c ), .T. ) }  //el alias que quieras
      oBrw:oSeek   := oSay //El say que has creado antes, no es obligatorio
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
xBrowse - bSeek Ayuda
Posted: Fri Sep 26, 2008 07:47 AM

Muchas gracias Biel. Va uno heredando código antiguo, que aunque funciona, no es lo mejor.

Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 189
Joined: Sun Jul 08, 2007 01:46 AM
xBrowse - bSeek Ayuda
Posted: Fri Sep 26, 2008 12:16 PM

Gracias Biel.

Saludos

Ruben Fernandez.

Continue the discussion