Busqueda incremental en wbrowse de arreglo

Post Reply
User avatar
jllinas
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic
Contact:

Busqueda incremental en wbrowse de arreglo

Post by jllinas »

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
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
Raymundo Islas M.
Posts: 590
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Post by Raymundo Islas M. »

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
jllinas
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic
Contact:

Post by jllinas »

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
Raymundo Islas M.
Posts: 590
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Post by Raymundo Islas M. »

Julio :


Aqui tienes un ejemplo :

Code: Select all


// 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
jllinas
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic
Contact:

Post by jllinas »

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
Post Reply