FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Posible bug en TXBrowse:PageUp()
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Posible bug en TXBrowse:PageUp()
Posted: Mon Sep 24, 2007 11:29 AM
Antonio,

Usando TestxBrw del directorio samples, haz estas dos modificaciones:
1) Deja solo 30 registros en customer.dbf
2) Modifica HorzRow() como lo que sigue:
STATIC FUNCTION HorzRow( oWnd )

   local oChild, oBrw, oFont

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0, -12

   DEFINE WINDOW oChild TITLE "Horizontal lines & Row selector browse" MDICHILD OF oWnd

   oBrw := TXBrowse():New( oWnd )
   oBrw:SetFont( oFont )

   oBrw:nMarqueeStyle       := MARQSTYLE_HIGHLROW
   oBrW:nColDividerStyle    := LINESTYLE_BLACK
   oBrw:nRowDividerStyle    := LINESTYLE_BLACK

   oBrw:SetRDD()
   oBrw:CreateFromCode()
   oChild:oClient := oBrw

   ACTIVATE WINDOW oChild ON INIT oBrw:SetFocus()

RETURN NIL


Es decir agregarle el FONT y cambiamos los separadores de filas y columnas.

Luego lo ejecutas y entras en esa opción. Bajas hasta llegar al último registro usando la tecla hacia abajo. Cuando llegue al último registro, le dás a RePag, es decir que haga un pageUp, con lo que me deja el browse "descolocado", desincronizado con la información de la DBF.

El error es reproducible. Aparentemente el ajuste no es correcto cuando al pintar hay que ajustar el valor de nRowSel

Un saludo,

Carlos.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Posible bug en TXBrowse:PageUp()
Posted: Tue Sep 25, 2007 01:15 PM

Antonio,
has podido verificar el error?

Carlos

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Posible bug en TXBrowse:PageUp()
Posted: Thu Sep 27, 2007 08:20 AM
Buenos días Antonio,

ya parezco el "malo de la peli" con el tema TXBrowse

Modifiqué el testxbrw.prg del directorio samples, la función multiline de la siguiente forma:


STATIC FUNCTION MultiLine( oWnd )

   local oChild, oBrw
   local nFor, oFont

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0, -12

   DEFINE WINDOW oChild TITLE "Horizontal and vertical lines and dotted Cell selector browse" MDICHILD OF oWnd

   oBrw := TXBrowse():New( oWnd )
   oBrw:SetFont( oFont )

   oBrw:nMarqueeStyle       := MARQSTYLE_HIGHLCELL
   oBrw:nColDividerStyle    := LINESTYLE_BLACK
   oBrw:nRowDividerStyle    := LINESTYLE_BLACK
   oBrw:lColDividerComplete := .t.
   oBrw:nHeaderLines        := 2
   oBrw:nDataLines          := 2
   oBrw:SetRDD()

   for nFor := 1 to Fcount()
      oBrw:aCols[ nFor ]:cHeader := "Field: " + ltrim( str( nFor ) ) + CRLF + FieldName( nFor )
      oBrw:aCols[ nFor ]:nDataStrAlign := AL_RIGHT
      oBrw:aCols[ nFor ]:nHeadStrAlign := AL_RIGHT
   next

   oBrw:CreateFromCode()

   oChild:oClient := oBrw

   ACTIVATE WINDOW oChild ON INIT oBrw:SetFocus()

RETURN NIL



Pero no me justifica a la derecha los datos. Los headers los hace bien.

Pudiste ver algo del ejemplo que te puse del otro tema?


Un saludo,

Carlos.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Posible bug en TXBrowse:PageUp()
Posted: Mon Oct 15, 2007 08:28 AM
Otro tema para resolver, y para este no tengo el codigo fuente.

Modifica en testxbrw el código del ejemplo de uso de xBrowse en diálogo
STATIC FUNCTION NewDialog( oWnd )

   local oDlg, oBrw

   DEFINE DIALOG oDlg RESOURCE "TEST" OF oWnd

   oBrw := TXBrowse():New( oWnd )

   //-----------8<----------- Añadido desde acá
   oBrw:lRecordSelector    := .F.
   oBrw:nHeaderLines       := 2

   oBrw:nMarqueeStyle      := MARQSTYLE_HIGHLROW
   oBrw:nColDividerStyle   := ;
   oBrw:nRowDividerStyle   := LINESTYLE_BLACK
   //-----------8<----------- Añadido hasta acá

   oBrw:CreateFromResource( 101 )

   ACTIVATE DIALOG oDlg

RETURN NIL


cuando hagas el scroll vertical con la rueda del raton o bien con las teclas arriba y abajo, verás que se pintan mal las últimas líneas.

Es un problema que están en el XBrwScroll() , que estan en C y que no está el código fuente, por lo que no puedo buscarle una solución.

En general el fallo me aparece cuando tengo headers de más de 1 línea de alto.

Un saludo,

Carlos.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Posible bug en TXBrowse:PageUp()
Posted: Mon Oct 15, 2007 08:41 AM
Carlos,

Aqui tienes el código:
#ifdef __HARBOUR__
HB_FUNC( XBRWSCROLL ) // ( hWnd, nRows, nRowHeight, nHeaderHeight, nFooterHeight ) --> nil
#else
CLIPPER XBRWSCROLL( PARAMS ) // ( hWnd, nRows, nRowHeight, nHeaderHeight, nFooterHeight ) --> nil
#endif
{
   HWND hWnd   = ( HWND ) _parnl( 1 );
   int wRows   = _parni( 2 );
   int wHeight = _parnl( 3 );
   RECT rct;

   GetClientRect( hWnd, &rct );

   rct.top += ( _parnl( 4 ) );
   rct.bottom -= ( _parnl( 5 ) );
   rct.bottom -= ( ( rct.bottom - rct.top ) % _parnl( 3 ) ) + 1;

   ScrollWindowEx( hWnd, 0, -( wHeight * wRows ), 0, &rct, 0, 0, 0 );
}

Como ves, el XBrowse fué un regalito que nos dejaron con bastantes "bichitos" dentro :-)

Se me habían pasado estos mensajes tuyos, discúlpame, voy a echarles un vistazo cuanto antes
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Posible bug en TXBrowse:PageUp()
Posted: Mon Oct 15, 2007 09:33 AM

Antonio,

gracias por el código. Para más detalle respecto del problema del scroll, se pinta mal cuando hacemos el scroll hacia arriba, y luego ese pintado mal hecho afecta al scroll hacia arriba.

Ya te cuento si le doy en el fallo.

Carlos

Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 989
Joined: Thu Nov 24, 2005 03:01 PM
Posible bug en TXBrowse:PageUp()
Posted: Mon Oct 15, 2007 10:37 AM
Antonio,

para que no digan que solo doy problemas :-)

en el método goup()
debe cambiarse la llamada a EraseData
            // ::EraseData( ( ( Int(nHeight/::nRowHeight) + 1 ) * ::nRowHeight ) + 10 ) lo quité por los problemas de pintado, con esto lo resuelve.
            ::EraseData( ::HeaderHeight() + ::nRowHeight * ::RowCount() )


Lo que se calculaba mal era la posición desde donde hay que borrar. Al menos en mis pruebas funciona correctamente, si alguien más me lo confirma...

Es cierto que el Xbrowse adolece de muchos bugs, pero de los que he probado es el mejor estructurado, y aunque eventualmente falla es el más sencillo de extender. Tal vez hay algunos detalles mejorables pero en lo personal es el que más me gusta. Añadirle prestaciones no es muy complicado, según sé hay algunos compañeros que le han añadido Headers con temas de Windows usando los THeaders de Windows y algunas otras extensiones.

Sigo en el tema XBrowse como habras notado, creo que al final lo vamos a dejar bien.

Un saludo,

Carlos.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Posible bug en TXBrowse:PageUp()
Posted: Mon Oct 15, 2007 12:28 PM

Carlos,

> ::EraseData( ::HeaderHeight() + ::nRowHeight * ::RowCount() )

Modificado. Gracias! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion