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
PROBLEMAS CON EL TWBROWSE
Re: PROBLEMAS CON EL TWBROWSE
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
João Santos - São Paulo - Brasil