Tbrowse no Hb34+GtWvW não separa Cabeçalho e Dados

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Cezar
Usuário Nível 3
Usuário Nível 3
Mensagens: 189
Registrado em: 27 Mai 2006 14:03

Tbrowse no Hb34+GtWvW não separa Cabeçalho e Dados

Mensagem por Cezar »

Boa noite,

Usando Harbour 3.4 +GtWvW, o TBrowse não esta fazendo a separação entre o cabeçalho e as linhas de Dados, isto é, não passa um
traço conforme o caractere definido em oBrowse:headsep := "--"

O que ele faz é deixar uma linha em "branco" separando o cabeçalho ( nome das colunas ) das linhas de dados das colunas.

Vocês tem conseguido fazer essa separação ( quem usa Hb3.4+Gtwvw ) no TBrowse ?

Agradeço a orientação.
v_cez@yahoo.com.br



Este código funciona nos programas mais antigos em xharbour+GTWvW :

Código: Selecionar todos

FUNCTION Browse_h( nWinNum, aCols, sTop, sLeft, sBottom, sRight, aScrollBar )

   LOCAL oBrowse
   LOCAL nCol
   LOCAL aColumnsSep
   LOCAL tmp

// oBrowse := TBrowse():New( sTop, sLeft, sBottom, sRight )
   oBrowse := TBrowseNew( sTop, sLeft, sBottom, sRight  )

   oBrowse:ColorSpec     := "N/W,W/B+,N/N,N/BG,N+/BG*,N/BG,W/BG*,N/W"
   oBrowse:ColSep        := "  "
   oBrowse:HeadSep       := "--"

   oBrowse:GoTopBlock    := {|| dbGoTop() }
   oBrowse:GoBottomBlock := {|| dbGoBottom() }
   oBrowse:SkipBlock     := {| nSkip | dbSkipBlock( nSkip ) }


   oBrowse:Configure()
   oBrowse:RefreshCurrent()
   oBrowse:ColorRect( { oBrowse:rowPos, 1, oBrowse:rowPos, oBrowse:colCount }, { 2, 2 } )

   FOR nCol := 1 TO Len( aCols )
      oBrowse:AddColumn( aCols[ nCol ] )
   NEXT

   WvW_SetPen( 0, 1, WIN_RGB( 0, 0, 0 ) )
// WvW_SetPen( 0, 1, RGB( 210, 210, 210 ) )
// WvW_SetPen( 0, 1, RGB( 192, 192, 192 ) )
// WvW_SetPen( 0, 1, RGB( 108, 123, 139 ) )

   aColumnsSep := Array( oBrowse:colCount )
   FOR EACH tmp IN aColumnsSep
      tmp := oBrowse:getColumn( tmp:__enumIndex() ):colSep
   NEXT


   AddMiscObjects( nWinNum, {|nWin| WvW_DrawBoxRecessed( nWin, oBrowse:nTop, oBrowse:nLeft, oBrowse:nBottom, oBrowse:nRight ) } )
   AddMiscObjects( nWinNum, {|nWin| WvW_DrawGridHorz( nWin, oBrowse:nTop+3, oBrowse:nLeft, oBrowse:nRight, oBrowse:nBottom - oBrowse:nTop-2 ) } )
   AddMiscObjects( nWinNum, {|nWin| WvW_DrawGridVert( nWin, oBrowse:nTop, oBrowse:nBottom, aColumnsSep, Len(aColumnsSep) ) } )

   aScrollBar[1] := 0
   aScrollBar[2] := 0
   Browse_Scroll( nWinNum, oBrowse, aScrollBar )

   oBrowse:ForceStable()

   RETURN oBrowse
Ruben Dario
Usuário Nível 3
Usuário Nível 3
Mensagens: 127
Registrado em: 14 Jun 2015 23:19
Localização: Colombia

Tbrowse no Hb34+GtWvW não separa Cabeçalho e Dados

Mensagem por Ruben Dario »

Saludos
Podiras colocar la funciones dbSkipBlock, WIN_RGB , AddMiscObjects y Browse_Scroll
Cezar
Usuário Nível 3
Usuário Nível 3
Mensagens: 189
Registrado em: 27 Mai 2006 14:03

Tbrowse no Hb34+GtWvW não separa Cabeçalho e Dados

Mensagem por Cezar »

Ola,

Na pasta \hb34\contrib você encontrara outros exemplos.

Código: Selecionar todos


FUNCTION DbSkipBlock( n )
   LOCAL nSkipped := 0

   DO CASE
   CASE n == 0
      dbSkip( 0 )
   CASE n > 0
      DO WHILE nSkipped != n .AND. TBNext()
         nSkipped++
      ENDDO
   OTHERWISE
      DO WHILE nSkipped != n .AND. TBPrev()
         nSkipped--
      ENDDO
   ENDCASE
   RETURN nSkipped

FUNCTION TBNext()
   LOCAL nSaveRecNum := RecNo()
   LOCAL lMoved := .T.

   IF Eof()
      lMoved := .F.
   ELSE
      dbSkip()
      IF Eof()
         dbGoto( nSaveRecNum )
         lMoved := .F.
      ENDIF
   ENDIF
   RETURN lMoved

FUNCTION TBPrev()
   LOCAL nSaveRecNum := RecNo()
   LOCAL lMoved := .T.

   dbSkip( -1 )

   IF Bof()
      dbGoto( nSaveRecNum )
      lMoved := .F.
   ENDIF
   RETURN lMoved


FUNCTION Browse_Scroll( nWinNum, oBrowse, aScrollBar )

   aScrollBar[1] := WvW_XBCreate( nWinNum, 0, oBrowse:nBottom+1                ,;
                                              oBrowse:nLeft                    ,;
                                              oBrowse:nRight-oBrowse:nLeft+1   ,;
              {|nWinNum, nXBid, nXBmsg, nXBpos| HS_Scroller( oBrowse, nWinNum, nXBid, nXBmsg, nXBpos )}, Nil )

   aScrollBar[2] := WvW_XBCreate( nWinNum, 1, oBrowse:nTop                     ,;
                                              oBrowse:nRight+1                 ,;
                                              oBrowse:nBottom-oBrowse:nTop+1   ,;
              {|nWinNum, nXBid, nXBmsg, nXBpos| VS_Scroller( oBrowse, nWinNum, nXBid, nXBmsg, nXBpos )}, Nil )
   RETURN Nil

FUNCTION VS_Scroller( oBrowse, nWinNum, XBid, XBmsg, XBPos )
   LOCAL nOldWin, lNeedStabilize

   nOldWin := WvW_nSetCurWindow(nWinNum)
   lNeedStabilize := .F.

   DO WHILE (.T.)
      DO CASE
         CASE XBmsg == 0     
            IF OrdKeyNo() == 1
               EXIT
            ENDIF
            oBrowse:Up()
         CASE XBmsg == 1     
            IF OrdKeyNo() == OrdKeyCount()
               EXIT
            ENDIF
            oBrowse:Down()
         CASE XBmsg == 2     
            IF OrdKeyNo() == 1
               EXIT
            ENDIF
            oBrowse:PageUp()
         CASE XBmsg == 3     
            IF OrdKeyNo() == OrdKeyCount()
               EXIT
            ENDIF
            oBrowse:PageDown()
         CASE XBmsg == 4     
            ++XBPos
            IF XBPos >= ( OrdKeyCount() - oBrowse:RowCount() )
               XBPos := OrdKeyCount() - 1
            ELSEIF XBPos <= oBrowse:RowCount()
               XBPos := 1
            ENDIF
            DBGoTo( XBPos )
            lNeedStabilize := .T.
            EXIT
         CASE XBmsg == 5     
            ++XBPos
            IF XBPos >= ( OrdKeyCount() - oBrowse:RowCount() )
               XBPos := OrdKeyCount() - 1
            ELSEIF XBPos <= oBrowse:RowCount()
               XBPos := 1
            ENDIF
            DBGoTo( XBPos )
            lNeedStabilize := .T.
            EXIT
         CASE XBmsg == 8     
            lNeedStabilize := .T.
            EXIT
         OTHERWISE
            lNeedStabilize := .F.
            EXIT
      ENDCASE
      lNeedStabilize := .T.
      EXIT
   ENDDO

   IF lNeedStabilize
      oBrowse:RefreshAll():ForceStable()
      VS_Refresh( oBrowse, nWinNum, XBid )
   ENDIF

   WvW_nSetCurWindow(nOldWin)
   RETURN Nil

FUNCTION HS_Scroller( oBrowse, nWinNum, XBid, XBmsg )
   LOCAL nOldWin, lNeedStabilize

   nOldWin := WvW_nSetCurWindow(nWinNum)
   lNeedStabilize := .F.

   DO WHILE (.T.)
      DO CASE
         CASE XBmsg == 0   
            IF oBrowse:ColPos== 1
               EXIT
            ENDIF
            oBrowse:Left()
         CASE XBmsg == 1   
            IF oBrowse:ColPos == oBrowse:ColCount()
               EXIT
            ENDIF
            oBrowse:Right()
         CASE XBmsg == 2   
            IF oBrowse:ColPos== 1
               EXIT
            ENDIF
            oBrowse:PanLeft()
         CASE XBmsg == 3   
            IF oBrowse:ColPos == oBrowse:ColCount()
               EXIT
            ENDIF
            oBrowse:PanRight()
         OTHERWISE
            lNeedStabilize := .F.
            EXIT
      ENDCASE
      lNeedStabilize := .T.
      EXIT
   ENDDO

   IF lNeedStabilize
      oBrowse:ForceStable()
      HS_Refresh( oBrowse, nWinNum, XBid )
   ENDIF

   WvW_nSetCurWindow(nOldWin)
   RETURN Nil

FUNCTION VS_Refresh( oBrowse, nWinNum, XBid )
   LOCAL nMin, nMax, nPage, nPos, nRatio

   IF OrdKeyCount() < 30000
      nMin   := 1
      nMax   := OrdKeyCount()
      nPage  := oBrowse:RowCount()
      nPos   := OrdKeyNo() - oBrowse:RowPos + 1
   ELSE
      nRatio := OrdKeyCount() / 10
      DO WHILE nRatio > 30000
         nRatio := nRatio / 10
      ENDDO
      nMin   := 1
      nMax   := Round( OrdKeyCount() / nRatio, 0 )
      nPage  := Round( oBrowse:RowCount() / nRatio, 0 )
      nPos   := Round(( OrdKeyNo() - oBrowse:RowPos + 1 ) / nRatio, 0 )
   ENDIF

   WvW_XBupdate( nWinNum, XBid, nPos, nPage, nMin, nMax )
   RETURN Nil

FUNCTION HS_Refresh( oBrowse, nWinNum, XBid )
   LOCAL nMin, nMax, nPage, nPos

   nMin  := 1
   nMax  := oBrowse:ColCount()
   nPage := oBrowse:RightVisible - oBrowse:LeftVisible + 1
   nPos  := IIF( oBrowse:RightVisible == oBrowse:ColCount(), nMax, oBrowse:LeftVisible )

   WvW_XBupdate( nWinNum, XBid, nPos, nPage, nMin, nMax )
   RETURN Nil
   

PROCEDURE AddMiscObjects( nWinNum, bAction )
   AAdd( s_amiscobjlist[ nWinNum + 1 ], bAction )
   RETURN


//WIN_RGB( red, green, blue )    
//   RETURN ( red + ( green * 256 ) + ( blue * 256 * 256 ) )
Responder