Busqueda incremental en wbrowse de arreglo

Busqueda incremental en wbrowse de arreglo

Postby jllinas » Tue Mar 18, 2008 4:28 am

Pues eso....

A ver si alguien me tira la toalla...

Para hacer esto en dbf esta bien, pero en arreglos, no se. Sobre todo, una vez encontrado el elemento, para refrescar el browse hago:

oBrw:UpStable()
oBrw:Refresh()

Pero en este caso, es diferente la cosa, pues ::Upstable() arroja un error si es un arreglo.

AYUDA !
Julio Llinás
Visita mi Blog en http://mangucybernetico.blogspot.com/
xHarbour 1.1.0 + FWH810 + Borland 5.5.1
User avatar
jllinas
 
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic

Postby Antonio Linares » Tue Mar 18, 2008 8:43 am

Julio,

A que te refieres con un browse de arreglo ?

A usar un array en vez de una DBF ?
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

Postby Raymundo Islas M. » Tue Mar 18, 2008 1:13 pm

Julio :

nLenStr := Len( cXStr )
nEle := Ascan( TuArreglo,{ | aEle | SubStr( aEle[2], 1, nLenStr ) == cXStr } )
If nEle > 0
pSM := nEle
tulistbox:REFRESH()
ENDIF

// aEle[2] lo ajustas dependiendo en que dimension quieras buscar

En si, lo que hay que hacer, es ya encontrado el "registro", asignar al puntero de tu arreglo, el indice donde fue encontrado y refrescar.


Saludos
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Postby jllinas » Wed Mar 19, 2008 12:44 am

Eso, eso Antonio.... un browse de array, no de DBF

Raymundo, ¿Pudieras orientarme con un poco mas de código de como "mover" el puntero del browse a ese valor encontrado?

Supondo que la variable "cXStr" es la que contiene el valor a buscar.... no?

Gracias anticipadas !
Julio Llinás
Visita mi Blog en http://mangucybernetico.blogspot.com/
xHarbour 1.1.0 + FWH810 + Borland 5.5.1
User avatar
jllinas
 
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic

Postby Raymundo Islas M. » Wed Mar 19, 2008 1:20 am

Julio :


Aqui tienes un ejemplo :


Code: Select all  Expand view  RUN

// Estas las manejo como Static
aSrcMar := { {"","",""} }
pSM := 1


REDEFINE LISTBOX lbSrcMar ;
   FIELDS aSrcMar[pSM,1] ;
   HEAD "NOMBRE" ;
   ID 103 ;
   FONT oBrwFnt ;   
   OF oFldSrc:aDialogs[1]

   lbSrcMar:SetArray( aSrcMar )
   lbSrcMar:nLineStyle  := 2
   lbSrcMar:lDrawFocusRect := .F.
   lbSrcMar:nClrLine    := CLR_WHITE
   lbSrcMar:BGOTOP     := { || pSM :=1}
     lbSrcMar:BGOBOTTOM  := { || pSM := eval( lbSrcMar:bLogicLen ) }
     lbSrcMar:BSKIP      := { | nwant, nold | nold := pSM , pSM += nwant,;
      pSM := max( 1, min( pSM, eval( lbSrcMar:bLogicLen ) ) ), pSM - nOld }
   lbSrcMar:BLOGICLEN  := { || Len( aSrcMar ) }
   lbSrcMar:nClrPane   := { || IIF( pSM%2 == 0, CLR_A, CLR_B ) }
   lbSrcMar:bKeyDown   := { | nKey | SRCMARKEY( nKey ) }


Static Function SRCMARKEY( nKey )
cStr2Seek += Upper( Chr( nKey ) )
nLenStr := Len( cStr2Seek )
nEle := Ascan( aSrcMar, { |aEle| SubStr( aEle[1], 1, nLenStr ) == cStr2Seek } )
IF nEle > 0
   pSM := nEle
   lbSrcMar:REFRESH()
ENDIF
Return NIL



Este codigo esta trabajando OK, solo ponle los ajustes que requieras.


Saludos
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Postby jllinas » Wed Mar 19, 2008 2:09 am

Gracias amigo,

Lo pruebo y cualquier cosa te "grito" popr aqui !

Abrazos,
Julio Llinás
Visita mi Blog en http://mangucybernetico.blogspot.com/
xHarbour 1.1.0 + FWH810 + Borland 5.5.1
User avatar
jllinas
 
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 29 guests