Page 1 of 1

PROBLEMAS CON EL TWBROWSE

Posted: Fri Jun 21, 2013 5:45 pm
by ROBER68
Hola uso el LISTBOX para los browse de mis sistemas, pero en algunas compus pasan cosas raras desde que compilo con xHarbour1.0

Desaparecen visualmente los _, luego a veces marca error en el TWBROWSE:PAINT

Alguien sabe porque ?

METHOD Paint() CLASS TWBrowse

local n := 1, nSkipped := 1, nLines
local nSkip, nRealSkip
local aInfo

_WBRWSET_
if ::lIconView
::DrawIcons()
return 0
endif

CursorWait()
aInfo:= ::DispBegin()

if ::nRowPos == 1 .and. ! Empty( ::cAlias ) .and. ;
Upper( ::cAlias ) != "ARRAY" .and. Upper( ::cAlias ) != "_TXT_"
if ! ( ::cAlias )->( EoF() )
( ::cAlias )->( DbSkip( -1 ) )
if ! ( ::cAlias )->( BoF() )
( ::cAlias )->( DbSkip() )
endif
endif
endif

::DrawHeaders() // CeSoTech
::DrawFooters() // CeSoTech

if ( ::nLen := Eval( ::bLogicLen ) ) > 0

////////////////////////////////////
// AutoEstabilizacion by CeSoTech //
////////////////////////////////////

// le quite estas lineas por el error de PAINT
nSkip := 1 - ::nRowPos
nRealSkip:= ::Skip( nSkip )

if nSkip <> nRealSkip
::nRowPos-= nRealSkip - nSkip // Esta es la linea que habia quitado por el problema
::nRowPos:= Max( ::nRowPos, 1 )
EndIf

#ifdef __XPP__
nLines = ::nRowCount()
while n <= nLines .and. nSkipped == 1
::DrawLine( n )
nSkipped = ::Skip( 1 )
if nSkipped == 1
n++
endif
end
::Skip( ::nRowPos - n )
#else
// WBrwPane() returns the nº of visible rows
// WBrwPane recieves at aColSizes the Array or a Block
// to get dinamically the Sizes !!!
::Skip( ::nRowPos - wBrwPane( ::hWnd, ::hDC, Self, ::bLine,;
::aColSizes, ::nColPos, ::nClrText, ::nClrPane,;
If( ::oFont != nil, ::oFont:hFont, 0 ), ::aJustify, ;
::nLineStyle, 0 , .f., ::bTextColor, ::bBkColor, ::nClrLine,;
::oBrush:nRGBColor, ::bFont ) )
#endif

if ::nLen < ::nRowPos
::nRowPos = ::nLen
endif
::DrawSelect()

endif

::DispEnd( aInfo )

If ::oVScroll != Nil .and. ::bLogicPos != Nil
if ::lHitTop .or. ( ::nLogicPos!= nil .and. ::nLogicPos <= 1 ) .or. ::lGoTop .or. ::nLen <= 1
::oVScroll:SetPos( 1 )
elseif ::lHitBottom .or. ::lGoBottom
::oVScroll:SetPos( 100 )
else
::oVScroll:SetPos( _POSVSCROLL_ )
endif
EndIf

if ! Empty( ::cAlias ) .and. Upper( ::cAlias ) != "ARRAY" ;
.and. Upper( ::cAlias ) != "_TXT_"
::lHitTop = ( ::cAlias )->( BoF() )
::lHitBottom = ( ::cAlias )->( EoF() )
endif
CursorArrow()

return 0

Re: PROBLEMAS CON EL TWBROWSE

Posted: Mon Jun 24, 2013 1:10 pm
by karinha

Code: Select all

#Include "FiveWin.Ch"

REQUEST OrdKeyNo, OrdKeyCount, OrdCreate, OrdKeyGoto

FUNCTION CLIENTES( lAppend, DbClientes, DbCabec, DbPaieMae, DeOndeVem )

    IF DeOndeVem != [DELIVERY] .AND. DeOndeVem != [RESERVAS] .AND. ;
       DeOndeVem != [LOCACAO]
       // Para mostrar possiveis ¡ndices
       IF NetUse( "CADETIQ", .T. )
          OrdListAdd( "CADETIQ", "RAZ_MATRIC", "DEST_NOME", "END",             ;
                                 "NOME_ARTIS", "CPF",       "CNPJ",            ;
                                 "TELEFONE" )
          //OrdDescend( ,,.T. ) // - Crescente
          OrdDescend( ,,.F. ) // - Decrescente
          DATABASE DbClientes // Como Escrevemos em Ingles
          DbClientes:Gotop()
          DbClientes:Load()
          DbClientes:SetBuffer( .T. )    // Assim, .T. a Op‡Æo (Cancelar) Funciona.
       ELSE
          MsgStop( "Banco de Dados dos CLIENTES Bloqueado", "Cuidado!" )
          RETURN NIL
       ENDIF
    ENDIF

    IF NetUse( "CABCLALF", .T. )   // Exclusive ‚ .F.  Shared ‚ .T.
       //ignorar indice quero o banco puro
       DATABASE DbCabec
       DbCabec:Load()
       DbCabec:SetBuffer( .T. )
       DbCabec:GoTop()
       DbSkip(-1)
    ELSE
       MsgStop( "Banco de Dados Bloqueado", "Cuidado!" )
       RETURN NIL
    ENDIF

    IF NetUse( "PAIEMAE", .T. )
       OrdListAdd( "PAIEMAE", "RAZ_MATRIC" )
       OrdDescend( ,,.F. ) // - Decrescente
       DATABASE DbPaieMae // Como Escrevemos em Ingles
       DbPaieMae:Gotop()
       DbPaieMae:Load()
       DbPaieMae:SetBuffer( .T. )    // Assim, .T. a Op‡Æo (Cancelar) Funciona.
    ELSE
       MsgStop( "Banco de Dados dos CLIENTES Bloqueado", "Cuidado!" )
       RETURN NIL
    ENDIF

    DbSelectArea( ( DbClientes:cAlias ) )
    DbClientes:SetOrder( 2 )
    DbGoTop()

    DEFINE BRUSH oBrush    RESOURCE "LOGO2" //-> PEGA A BITMAP DO ARQUIVO.RES(LOGO.BMP)
    DEFINE CURSOR oHand RESOURCE "Dedo"
    DEFINE FONT oFnt   NAME "Ms Sans Serif" SIZE 0,  14 BOLD //UnderLine
    DEFINE FONT oFont  NAME "Ms Sans Serif" SIZE 0, -14 BOLD //UnderLine
    DEFINE FONT oFont2 NAME "Ms Sans Serif" SIZE 0,  13 BOLD
    DEFINE ICON OICO FILE ".\BRASIL__.BMP"

    DEFINE DIALOG oDlg  RESOURCE "BROWSE"                                    ;
           TITLE "Gerenciador de Clientes:-Browse"                           ;
           BRUSH oBrush TRANSPARENT ICON oIco

    oDlg:lHelpIcon := .F.

    For IDCor = 401 To 403 // Os ID's dos TEXTOS na DIALOG.
        REDEFINE SENSITIVE SAY ID IDCor OF oDlg    ;
        COLOR CLR_BLACK UPDATE RAISED CENTER FONT oFont2  TRANSPARENT
    Next IDCor

    REDEFINE LISTBOX oLbx FIELDS                                    ;
             (DbClientes:cAlias)->RAZ_MATRIC                      , ;
             (DbClientes:cAlias)->DEST_NOME                       , ;
             (DbClientes:cAlias)->END                             , ;
             (DbClientes:cAlias)->BAI                             , ;
             (DbClientes:cAlias)->CID                             , ;
             (DbClientes:cAlias)->CEP                             , ;
             (DbClientes:cAlias)->TEL                             , ;
             (DbClientes:cAlias)->TEL2                            , ;
             (DbClientes:cAlias)->TEL3                              ;
             HEADERS ( OemToAnsi( "C¢digo/Cnpj/Cpf" ) )           , ;
                     ( OemToAnsi( "Nome/RazÆo Social=> "          + ;
                     "<Click> Mouse Direito<Menu>" ) )            , ;
                     ( OemToAnsi( "Endere‡o"        ) )           , ;
                     ( OemToAnsi( "Bairro"          ) )           , ;
                     ( OemToAnsi( "Cidade"          ) )           , ;
                     ( OemToAnsi( "Cep"             ) )           , ;
                     ( OemToAnsi( "Telefone"        ) )           , ;
                     ( OemToAnsi( "Telefone"        ) )           , ;
                     ( OemToAnsi( "Telefone"        ) )             ;
             FIELDSIZES 130, 480, 480, 200, 200, 100, 150, 150, 150 ;
             COLOR CLR_BROWN, CLR_LGREEN                            ;
             FONT oFont                                             ;
             CURSOR oHand                                           ;
             UPDATE                                                 ;
             ID 101                                                 ;
             OF oDlg                                                ;
             ON DBLCLICK( Click()                                 , ;
                          GETCLIENTES( .F., DbClientes, DbCabec,    ;
                                            DbPaieMae, DeOndeVem ), ;
             oLbx:SetFocus(), oLbx:Refresh(), oLbx:DrawSelect() )

    oLbx:nClrBackHead  := CLR_LGREEN  // Cor do Fundo do Cabe‡alho
    oLbx:nClrText      := {|| nRGB( 165,  42,  42 ) } // Cor do Fundo do Cabe‡alho
    oLbx:nClrBackFocus := CLR_HRED    // Cor do Cursor Em Cima do Ötem
    oLbx:nClrForeFocus := CLR_AMARELO // Cor da letra da barra ativa
    oLbx:nClrForeHead  := CLR_HRED    // Cor nos Headers - Cabe‡alhos
    // Cor no Pano de Fundo da Browse() Listbox-Legal - abaixo o comando
    oLbx:nClrPane      := { || IIF( ( oLbx:cAlias )->( OrdKeyNo() ) %2 == 0, ;
                               CLR_LGREEN, CLR_LGRAY ) }
    oLbx:nColAct       := 2           // Onde o Cursor Vai Iniciar na coluna
    oLbx:nLineStyle    := 3           // Estilo das linhas nos dados da Browse
    oLbx:lCellStyle    := .T.         // Somente pinta a c‚lula em que o cursor esta no momento
    // Justifica o Cabe‡alho: .F. = Esquerda .T. = Centro
    oLbx:aJustify := { .T., .F., .F., .F., .F., .F., .F., .F., .F., .F., .F., .F., .F., .F., .F., .F., .F. }
    oLbx:lMChange      := .F.         // Desabilita Mousemove - Movimentos do Mouse Congelam.
    // Barra vertical exacta...
    //oLbx:bLogicLen := { || ( DbClientes:cAlias )->( OrdCount() ) }
    oLbx:SetFocus()                   // Refocus on The Browse - Ativa o Foco na ListBox(Browse)
    oLbx:Refresh()                    // Estabiliza o Browse/Listbox - Refresca os Dados.
                                      // Pinta os Dados Novamente

    ACTIVATE DIALOG oDlg CENTERED

RETURN NIL