FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Bug. XBROWSE y SaveState()
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Bug. XBROWSE y SaveState()
Posted: Fri Aug 20, 2010 12:01 PM
Existe un bug a la hora de guardar/restaurar el estado de un xbrowse.

La cuestión es que no deja correctamente el orden de las columnas, y las va desplazando.

Ejemplo sobre testxbr3.prg modificado.

1.- Selecciona, windows, RDD,Selected Cols.
2.-Una vez que se abre la MDI, mueve la columna Last, y colocala delante de Married.
3.-Ahora presiona el boton que he añadido, GUARDAR segundo estado. ( De esta manera tenemos el estado anterior y el actual )
4.-Ahora ves presionando el boton de al lado, restaura estados, una y otra vez, y verás el efecto que te digo.

Modificaciones a testxbr3.prg, no se como subir un fichero al foro ;

Code (fw): Select all Collapse
... al inicio, antes del Main() 
// Dos staticas, que guardan el estado inicial y el nuevo
static cPrg, cFunc
static s_RestoreBrowse, s_RestoreBrowse2  // codigo add


En la función static function RddBrwSelColsWin
Code (fw): Select all Collapse
  ... codigo de fw....
   oWnd:oClient := oBrw

   if empty( s_RestoreBrowse )  // Codigo addd
      s_RestoreBrowse := oBrw:SaveState()  // Guardo estado
   endif


Ahora, en la funcion BtnBar() add estos 2 botones al final

Code (fw): Select all Collapse
   DEFINE BUTTON OF oBar ;
      RESOURCE "SAVE" TOP ;
      PROMPT "Guardar SEGUNDO Estado" ;
      ACTION s_RestoreBrowse2 := oBrw:SaveState() ;
      MESSAGE "Guarda el estado del browse"

   DEFINE BUTTON OF oBar ;
      RESOURCE "RESTAURA" TOP ;
      PROMPT "Restaura Estados" ;
      ACTION rueda( oBrw ) ;
      MESSAGE "Restaura el estado del browse"


Creamos la funcion rueda()
Code (fw): Select all Collapse
static function rueda( oBrw )
 static luno := .T.

  if lUno
     oBrw:RestoreState( s_RestoreBrowse )
     lUno := .F.
  else
    oBrw:RestoreState( s_RestoreBrowse2 )
     lUno := .T.
  endif
  oBrw:refresh()

return nil
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Bug. XBROWSE y SaveState()
Posted: Sun Aug 22, 2010 06:06 AM
Please replace the Method RestoreState( cState ) in the xbrowse.prg with this code:
Code (fw): Select all Collapse
//--------------------------------------------------------------
METHOD RestoreState( cState ) CLASS TXBrowse

   local aCols       := {}
   local aNewOrder   := {}
   local nFor, nLen, nHeight, cCol, oCol, nWidth, cHeader, nOrder, lHide

   if Empty( cState )
      return nil
   endif

   nLen   := Len( ::aCols )
   nHeight := Val(StrToken( cState, 1, ";" ) )

   if Empty( ::nRowHeight )
      return nil
   endif

   for nFor := 1 to nLen
      cCol := StrToken( cState, nFor + 1, ";" )
      if Empty( cCol )
         return nil
      endif
      aadd( aNewOrder, Val( cCol ) )
   next

   ASort( ::aCols,,, { |x,y| x:nCreationOrder < y:nCreationOrder } )

   ::nRowHeight := nHeight

   for nFor := 1 to nLen
      cCol   := StrToken( cState, nFor + 1, ";" )
      nOrder := Val( StrToken( cCol, 1, ":" ) )
      nWidth := Val( StrToken( cCol, 2, ":" ) )
      cHeader :=  StrToken( cCol, 3, ":" )
      lHide  := ( AllTrim( StrToken( cCol, 4, ":" ) ) == "H" )
      oCol := ::aCols[ nOrder ]
      oCol:lHide  := lHide
      oCol:nWidth := nWidth
      oCol:cHeader := cHeader
   next

   AEval( aNewOrder, { |n| AAdd( aCols, ::aCols[ n ] ) } )
   ::aCols        := aCols

   ::GetDisplayCols()
   ::Super:Refresh()

return nil

//----------------------------------------------------------------------------//
Regards



G. N. Rao.

Hyderabad, India
Posts: 257
Joined: Tue May 16, 2006 04:46 PM
Re: Bug. XBROWSE y SaveState()
Posted: Fri Feb 04, 2011 10:45 PM

Muchas horas perdidas buscando porque diablos me pasaba eso y con esto se soluciono.

Gracias nageswaragunupudi, espero que ya este corregido en versiones mas recientes.

RodolfoRBG
FWH 1307, xHarbour123 BCC582
rodolfoerbg@gmail.com
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Bug. XBROWSE y SaveState()
Posted: Fri Feb 04, 2011 10:54 PM
espero que ya este corregido en versiones mas recientes.

Yes.
Regards



G. N. Rao.

Hyderabad, India

Continue the discussion