xBrowse - bSeek Ayuda

xBrowse - bSeek Ayuda

Postby Ruben D. Fernandez » 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
Ruben D. Fernandez
 
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

Postby Manuel Aranda » Thu Sep 25, 2008 12:26 pm

Hola Rubén:

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

Code: Select all  Expand view  RUN

..................
     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
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby Ruben D. Fernandez » Thu Sep 25, 2008 4:49 pm

Gracias Manuel:

Lo pruebo y te aviso.

Gracias y Saludos

Ruben Fernandez.
Ruben D. Fernandez
 
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

Postby Ruben D. Fernandez » Thu Sep 25, 2008 5: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.
Ruben D. Fernandez
 
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

Postby Manuel Aranda » Thu Sep 25, 2008 6: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.

Code: Select all  Expand view  RUN
................
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
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby Ruben D. Fernandez » Fri Sep 26, 2008 1:13 am

Manuel:

Espectacular, muchas gracias.

Saludos

Ruben Fernandez
Ruben D. Fernandez
 
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

Postby Biel EA6DD » Fri Sep 26, 2008 7: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.

Code: Select all  Expand view  RUN
      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/
User avatar
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby Manuel Aranda » Fri Sep 26, 2008 7: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
User avatar
Manuel Aranda
 
Posts: 604
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Postby Ruben D. Fernandez » Fri Sep 26, 2008 12:16 pm

Gracias Biel.

Saludos

Ruben Fernandez.
Ruben D. Fernandez
 
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 46 guests