Jump to content
Fivewin Brasil

ListBox Lento D+


reneumg

Recommended Posts

Alguem ai sabe me dizer porque um arquivo de 16.800 registros e 20 campos fica lento em um ListBox, em uma rede Linux de 18 terminais com windows XP, ah no meu computador sem rede e windows XP Tá normal.

Obs: Arquivo DBF/NTX

Compilado em FW 2.7 xHarbour

Desde já agradeço quem puder me ajudar

Reneu, Catanduva/SP

Editado por - reneumg on 30/07/2009 21:26:31

Link to comment
Share on other sites

  • Replies 52
  • Created
  • Last Reply

Top Posters In This Topic

Alguem ai sabe me dizer porque um arquivo de 16.800 registros e 20 campos fica lento em um ListBox, em uma rede Linux de 18 terminais com windows XP, ah no meu computador sem rede e windows XP Tá normal.

Obs: Arquivo DBF/NTX

Compilado em FW 2.7 xHarbour

Desde já agradeço quem puder me ajudar

Reneu, Catanduva/SP

Editado por - reneumg on 30/07/2009 21:26:31

Link to comment
Share on other sites

citação:

O Pessoal ninguem tem se quer uma idéia do que pode ser?


id=quote>id=quote>

Olá, boa noite..... vc utiliza [x]harbour com NTX ?

Tem filtros neste listbox ?

Experimente mudar os indices para CDX.. Faça um pequeno teste com estas mesmas quantidades de terminais...

Nelson Nunes de Araujo

Santo André - SP

MSN : nelson.n.araujo@hotmail.com

EMAIL: nelson.n.araujo@gmail.com

nelson.n.araujo@terra.com.br

Clipper 5.3E, Blinker 7.0, FW 2.4, Workshop

Editado por - senun on 30/07/2009 22:46:17

Link to comment
Share on other sites

Nelson vou testar o CDX, é que tenho este sistema rodando nesta empresa com o velho clipper 5.01 a uns 8 anos +ou- e to mudandos aos poucos e o browse do clipper vai bem. mas vou testar o CDX.

Daniel é um ListBox simples vê acho que tá certo qualquer coisa que possa melhorar ta um toque.

************************************************

Set relation to PRODUTO->COD_SEG into SEGUIMENTO

nOrden:=2

REDEFINE LISTBOX oLbxBrw ;

FIELDS PRODUTO->COD_PRO,;

PRODUTO->NOME,;

PRODUTO->COD_EXT,;

SEGUIMENTO->DESCRICAO,;

Transform((PRODUTO->PRC_VEN/oFator[1]), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"1",(PRODUTO->PRC_VEN/oFator[2]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"2",(PRODUTO->PRC_VEN/oFator[3]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"3",(PRODUTO->PRC_VEN/oFator[4]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"4",(PRODUTO->PRC_VEN/oFator[5]),0), [@E 9,999,999.99] ) ;

FIELDSIZES 150, 390, 150, 90, 80, 80, 80, 80, 80 ;

HEADERS OemToAnsi("C¢digo"), OemToAnsi("Descri‡Æo"), "Nosso Codigo", "Seguimento", oTitulo[1], oTitulo[2], oTitulo[3], oTitulo[4], oTitulo[5] ;

ON LEFT DBLCLICK F_Cad( oDlgBrw, .F., BrwFile );

ID 115 OF oDlgBrw

oLbxBrw:bKeyChar = { | nKey | LstBusca( oLbxBrw, nKey ) }

***********************************

Blza.

Reneu.

Link to comment
Share on other sites

Olá, coloque isto no inicio do modulo, teste e reporte.

Request OrdKeyNo

Request OrdKeyCount

Se não funcionar, mostre o código todo.

Abraços,

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Editado por - kapiaba on 31/07/2009 09:01:08

Link to comment
Share on other sites

O João Santos Tranquilo, Ta ai como to fazendo mas será que não tem uma configuração nos micros ou na rede que pode melhorar o desempelho, é que em rede sou meio leigo se tiver manda ai que eu mostro para os pessoal la que cuida da rede e dos micros. Ta ai:

//----------------------------------------------------------------------------//

//------ WBRW.PRG : Modulo com ListBox diversas utilizadas no Sistema -----//

//----------------------------------------------------------------------------//

#include "FIVEWIN.CH"

* -----------------------------------------------------------------------------

FUNCTION BrwArq(Brwfile,BrwTitulo,oBrw,oDlg,oDbf,aCtr,aRelacao)

* -----------------------------------------------------------------------------

LOCAL oLbxBrw, oDlgBrw, oFont, oSay

LOCAL oRadioButtons, aNtx:=0, nOrden:=1, oTmp:=" "

LOCAL lBsc := .F., oPsgm := .F., oFator:={0,0,0,0,0}, oTitulo:={"","","","",""}

LOCAL oDlg_B:=iif(oBrw,"xDlg_Brw","Dlg_Brw")

vBusca:=vCd:=""

Select(BrwFile)

aNtx:=(BrwFile)->(indexord())

If aNtx = 1

(BrwFile)->(DBSetOrder(2)) // Ordem de Nome

EndIf

(BrwFile)->(DBGoTop())

DEFINE DIALOG oDlgBrw RESOURCE oDlg_B TITLE OemToAnsi(BrwTitulo) // FONT oFont

if BrwFile = "PRODUTO"

Do While !TABGRUPO->(Eof())

If Val(TABGRUPO->TAB_GR)>0 .and. Val(TABGRUPO->TAB_GR)<6

oFator[Val(TABGRUPO->TAB_GR)]:=TABGRUPO->FATOR

oTitulo[Val(TABGRUPO->TAB_GR)]:=TABGRUPO->CABECA

EndIf

TABGRUPO->(DBSkip())

EndDo

Set relation to PRODUTO->COD_SEG into SEGUIMENTO

nOrden:=2

REDEFINE LISTBOX oLbxBrw ;

FIELDS PRODUTO->COD_PRO,;

PRODUTO->NOME,;

PRODUTO->COD_EXT,;

SEGUIMENTO->DESCRICAO,;

Transform((PRODUTO->PRC_VEN/oFator[1]), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"1",(PRODUTO->PRC_VEN/oFator[2]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"2",(PRODUTO->PRC_VEN/oFator[3]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"3",(PRODUTO->PRC_VEN/oFator[4]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"4",(PRODUTO->PRC_VEN/oFator[5]),0), [@E 9,999,999.99] ) ;

FIELDSIZES 150, 390, 150, 90, 80, 80, 80, 80, 80 ;

HEADERS OemToAnsi("C¢digo"), OemToAnsi("Descri‡Æo"), "Nosso Codigo", "Seguimento", oTitulo[1], oTitulo[2], oTitulo[3], oTitulo[4], oTitulo[5] ;

ON LEFT DBLCLICK F_Cad( oDlgBrw, .F., BrwFile );

ID 115 OF oDlgBrw

oLbxBrw:bKeyChar = { | nKey | LstBusca( oLbxBrw, nKey ) }

endif

oLbxBrw:bGoTop:={|| 1 }

oLbxBrw:cAlias:= BrwFile

oLbxBrw:SetFocus()

oLBXBrw:nClrBackHead := nRgb(128,128,192)

oLbxBrw:nClrBackFocus:= nrgb(192,254,237)

oLbxBrw:nClrForeFocus:= nrgb(0,0,255 )

oLbxBrw:nClrForeHead := nRgb(255,255,217)

oLbxBrw:bKeyDown = { | nKey | If( nKey == VK_RETURN,;

F_Cad( oDlgBrw, .F., BrwFile ),;

If( nKey == VK_INSERT,;

F_Cad( oDlgBrw, .T., BrwFile ),;

If(nKey == VK_F2,;

ORD_TAB( nOrden, oDlgBrw, BrwFile, @oTmp ),))), nil }

REDEFINE RADIO oRadioButtons var nOrden ID 120,121 ;

OF oDlgBrw ON CHANGE Orden(nOrden,oDlgBrw,BrwFile) // Muda a ordem do NTX 1 Codigo 2 Descricao

REDEFINE BUTTON ID 101 OF oDlgBrw ;

ACTION F_Cad( oDlgBrw, .T., BrwFile ) // Botao Novo

REDEFINE BUTTON ID 102 OF oDlgBrw ;

ACTION F_Cad( oDlgBrw, .F., BrwFile ) // Botao Alatera

REDEFINE BUTTON ID 104 OF oDlgBrw ;

ACTION nMsgBusca( BrwFile, oLbxBrw ) // Busca

REDEFINE BUTTON ID 103 OF oDlgBrw ;

ACTION DelRegistro( oDlgBrw, BrwFile ) // Botao Exclui

REDEFINE BUTTON ID 105 OF oDlgBrw ;

ACTION F_Move( oDlgBrw, .T., BrwFile ) // Botao Inicio

REDEFINE BUTTON ID 106 OF oDlgBrw ;

ACTION F_Move( oDlgBrw, .F., BrwFile ) // Botao Final

REDEFINE BUTTON ID 107 OF oDlgBrw ;

ACTION (IMPCD(BrwFile,BrwTitulo,oPsgm), oLbxBrw:Refresh()) // Botao Inprimir

REDEFINE BUTTON ID 108 OF oDlgBrw ;

ACTION oDlgBrw:End();

CANCEL // Botao Sair

oDlgBrw:aControls[1]:SetFocus()

ACTIVATE DIALOG oDlgBrw CENTER

(BrwFile)->(DBSetOrder(aNtx)) // Ordem Inicial

RETURN ( NIL )

***************************************

Abraços

Reneu. Catanduva-SP

Link to comment
Share on other sites


//----------------------------------------------------------------------------//

//------ WBRW.PRG : Modulo com ListBox diversas utilizadas no Sistema -----//

//----------------------------------------------------------------------------//

#Include "FiveWin.Ch"

#Define CLR_LGRAY nRGB( 230, 230, 230 )

#Define CLR_LGREEN nRGB( 190, 215, 190 )

#Define CLR_CHOCOLATE nRGB( 238, 118, 33 )

#Define CLR_VERMELHO nRGB( 255, 000, 000 ) //--> Vermelho Para a Letra

#Define CLR_AMARELO nRGB( 255, 255, 000 ) //--> Amarelo Para o Fundo

#Define CLR_LYELLOW nRGB( 255, 255, 128 ) //--> Amarelo Claro

#Define CLR_LWHITE nRGB( 255, 255, 254 ) //--> 16777215

#Define CLR_BOMBOM nRGB( 165, 42, 42 ) //--> Marrom BomBom

#Define CLR_MARROM nRGB( 235, 202, 171 ) //--> Marrom Normal

Request OrdKeyNo

Request OrdKeyCount

* -----------------------------------------------------------------------------

FUNCTION BrwArq(Brwfile,BrwTitulo,oBrw,oDlg,oDbf,aCtr,aRelacao)

* -----------------------------------------------------------------------------

LOCAL oLbxBrw, oDlgBrw, oFont, oSay

LOCAL oRadioButtons, aNtx:=0, nOrden:=1, oTmp:=" "

LOCAL lBsc := .F., oPsgm := .F., oFator:={0,0,0,0,0}, oTitulo:={"","","","",""}

LOCAL oDlg_B:=iif(oBrw,"xDlg_Brw","Dlg_Brw")

vBusca:=vCd:=""

Select(BrwFile)

aNtx:=(BrwFile)->(indexord())

If aNtx = 1

(BrwFile)->(DBSetOrder(2)) // Ordem de Nome

EndIf

(BrwFile)->(DBGoTop())

//-> local correto para este looping, se ele realmente for necessario

//-> Nao pode dentro do DEFINE DIALOG / ACTIVATE DIALOG.

Do While !TABGRUPO->(Eof())

SYSREFRESH() //-> refresque o looping

If Val(TABGRUPO->TAB_GR)>0 .and. Val(TABGRUPO->TAB_GR)<6

oFator[Val(TABGRUPO->TAB_GR)]:=TABGRUPO->FATOR

oTitulo[Val(TABGRUPO->TAB_GR)]:=TABGRUPO->CABECA

EndIf

TABGRUPO->(DBSkip())

EndDo

Set relation to PRODUTO->COD_SEG into SEGUIMENTO

nOrden := 2

DEFINE DIALOG oDlgBrw RESOURCE oDlg_B TITLE OemToAnsi(BrwTitulo) // FONT oFont

//-> E SE FOR OUTRA COISA?? O QUE ACONTECE?

IF BrwFile = "PRODUTO" //-> Nao entendi?? Entra outra coisa aqui???

//-> Isto esta no lugar errado

/* O DEFINE DIALOG JA E UM LOOPING, NAO PODE TER OUTRO

Do While !TABGRUPO->(Eof())

SYSREFRESH()

If Val(TABGRUPO->TAB_GR)>0 .and. Val(TABGRUPO->TAB_GR)<6

oFator[Val(TABGRUPO->TAB_GR)]:=TABGRUPO->FATOR

oTitulo[Val(TABGRUPO->TAB_GR)]:=TABGRUPO->CABECA

EndIf

TABGRUPO->(DBSkip())

EndDo

Set relation to PRODUTO->COD_SEG into SEGUIMENTO

nOrden:=2

*/

REDEFINE LISTBOX oLbxBrw ;

FIELDS PRODUTO->COD_PRO,;

PRODUTO->NOME,;

PRODUTO->COD_EXT,;

SEGUIMENTO->DESCRICAO,;

Transform((PRODUTO->PRC_VEN/oFator[1]), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"1",(PRODUTO->PRC_VEN/oFator[2]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"2",(PRODUTO->PRC_VEN/oFator[3]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"3",(PRODUTO->PRC_VEN/oFator[4]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"4",(PRODUTO->PRC_VEN/oFator[5]),0), [@E 9,999,999.99] ) ;

FIELDSIZES 150, 390, 150, 90, 80, 80, 80, 80, 80 ;

HEADERS OemToAnsi("C¢digo"), OemToAnsi("Descri‡Æo"), "Nosso Codigo", "Seguimento", oTitulo[1], oTitulo[2], oTitulo[3], oTitulo[4], oTitulo[5] ;

ON LEFT DBLCLICK F_Cad( oDlgBrw, .F., BrwFile );

ID 115 OF oDlgBrw

oLbxBrw:bKeyChar = { | nKey | LstBusca( oLbxBrw, nKey ) }

ELSE

//-> E SE NAO FOR = "PRODUTO" Mostra o que??? Nao entendi este IF

? [ENTREI NO ELSE NA LINHA 104, O QUE E QUE EU FACO???]

ENDIF

//-> LOCAL CORRETO

oLbxBrw:bKeyDown = { | nKey | If( nKey == VK_RETURN,;

F_Cad( oDlgBrw, .F., BrwFile ),;

If( nKey == VK_INSERT,;

F_Cad( oDlgBrw, .T., BrwFile ),;

If(nKey == VK_F2,;

ORD_TAB( nOrden, oDlgBrw, BrwFile, @oTmp ),))), nil }

//---------------------------------------------------------------------

oLbxBrw:nClrBackHead := CLR_LGREEN // Cor do Fundo do Cabe‡alho

oLbxBrw:nClrBackFocus := CLR_HRED // Cor do Cursor Em Cima do Ötem

oLbxBrw:nClrForeFocus := CLR_AMARELO // cor da letra da barra ativa

oLbxBrw:nClrForeHead := CLR_HRED // Cor nos Headers - Cabe‡alhos

// Cor no Pano de Fundo da Browse() Listbox-Legal - abaixo o comando

oLbxBrw:nClrPane := { || IIF( ( oLbxBrw:cAlias )->( OrdKeyNo() ) %2 == 0, ;

CLR_LGREEN, CLR_LGRAY ) }

oLbxBrw:nColAct := 2 // Onde o Cursor Vai Iniciar qual coluna?

oLbxBrw:nLineStyle := 3 // Estilo das linhas nos dados da Browse

oLbxBrw:lCellStyle := .T. // S¢ Pinta a celula que o cursor est 

// Justifica As Colunas dos Campos Esq. .T. = Centro

oLbxBrw:aJustify := { .T., .F., .F., .F., .F., .F., .F., .F., .F. }

oLbxBrw:lMChange := .F. // Desabilita Mousemove

oLbxBrw:SetFocus() // Refocus on The Browse

oLbxBrw:Refresh() // Estabiliza o Browse/Listbox

// ( Pinta os Dados Novamente )

/* //-> Arrume a gosto

oLbxBrw:bGoTop:={|| 1 }

oLbxBrw:cAlias:= BrwFile

oLbxBrw:SetFocus()

oLBXBrw:nClrBackHead := nRgb(128,128,192)

oLbxBrw:nClrBackFocus:= nrgb(192,254,237)

oLbxBrw:nClrForeFocus:= nrgb(0,0,255 )

oLbxBrw:nClrForeHead := nRgb(255,255,217)

*/

//-> LOCAL ERRADO - sempre antes das definicoes do cabecalho da ListBox

/*

oLbxBrw:bKeyDown = { | nKey | If( nKey == VK_RETURN,;

F_Cad( oDlgBrw, .F., BrwFile ),;

If( nKey == VK_INSERT,;

F_Cad( oDlgBrw, .T., BrwFile ),;

If(nKey == VK_F2,;

ORD_TAB( nOrden, oDlgBrw, BrwFile, @oTmp ),))), nil }

*/

REDEFINE RADIO oRadioButtons var nOrden ID 120,121 ;

OF oDlgBrw ON CHANGE Orden(nOrden,oDlgBrw,BrwFile) // Muda a ordem do NTX 1 Codigo 2 Descricao

REDEFINE BUTTON ID 101 OF oDlgBrw ;

ACTION F_Cad( oDlgBrw, .T., BrwFile ) // Botao Novo

REDEFINE BUTTON ID 102 OF oDlgBrw ;

ACTION F_Cad( oDlgBrw, .F., BrwFile ) // Botao Alatera

REDEFINE BUTTON ID 104 OF oDlgBrw ;

ACTION nMsgBusca( BrwFile, oLbxBrw ) // Busca

REDEFINE BUTTON ID 103 OF oDlgBrw ;

ACTION DelRegistro( oDlgBrw, BrwFile ) // Botao Exclui

REDEFINE BUTTON ID 105 OF oDlgBrw ;

ACTION F_Move( oDlgBrw, .T., BrwFile ) // Botao Inicio

REDEFINE BUTTON ID 106 OF oDlgBrw ;

ACTION F_Move( oDlgBrw, .F., BrwFile ) // Botao Final

REDEFINE BUTTON ID 107 OF oDlgBrw ;

ACTION (IMPCD(BrwFile,BrwTitulo,oPsgm), oLbxBrw:Refresh()) // Botao Inprimir

REDEFINE BUTTON ID 108 OF oDlgBrw ;

ACTION oDlgBrw:End();

CANCEL // Botao Sair

//-> Lugar errado, nem sei qual e o motivo disto - Desnecessario

//oDlgBrw:aControls[1]:SetFocus() //?????? QUE TAL NO ON INIT??

//-> ESTE COMANDO TEM FINALIDADE DE QUE EM UMA LISTBOX???

ACTIVATE DIALOG oDlgBrw CENTER

(BrwFile)->(DBSetOrder(aNtx)) // Ordem Inicial - AQUI NAO VOLTA PARA O MENU PRINCIPAL?

//DBCLOSEALL()

//RELEASE ALL

RETURN ( NIL )

***************************************

id=code>id=code>

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

Olá, será que não é set relation que está deixando lento???

Alessandroid=blue>

FW20d+CL53b+Blk7+@Say+CDX

FW9.02+xHb110+@Say+CDX

"O fracasso jamais me surpreenderá, se minha vontade de vencer for suficientemente forte..."id=red>

Link to comment
Share on other sites

citação:

Olá, será que não é set relation que está deixando lento???

Alessandroid=blue>

FW20d+CL53b+Blk7+@Say+CDX

FW9.02+xHb110+@Say+CDX

"O fracasso jamais me surpreenderá, se minha vontade de vencer for suficientemente forte..."id=red>


id=quote>id=quote>

NÃO, É O LOOPING DENTRO DE OUTRO LOOPING, TESTE AI, PONHA UM BANCO DE DADOS DENTRO DE UM DEFINE DIALOG... ACTIVATE DIALOG, DE UM LOOPING NELE, E VEJA O QUE ACONTECE.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

aff, é mesmo, eu li o seu post pensando que era o dele, relamente é o loop.... "medesculpeme" pela falha rsrsrs

Alessandroid=blue>

FW20d+CL53b+Blk7+@Say+CDX

FW9.02+xHb110+@Say+CDX

"O fracasso jamais me surpreenderá, se minha vontade de vencer for suficientemente forte..."id=red>

Link to comment
Share on other sites

-----------------------------------------------------------

//-> E SE FOR OUTRA COISA?? O QUE ACONTECE?

IF BrwFile = "PRODUTO" //-> Nao entendi?? Entra outra coisa aqui???

------------------------------------------------------------

Oi João é que uso uma tela padrão numa Dll pra varios ligares Ex:

IF BrwFile = "PRODUTO"

ListBox Blá Blá Blá Blá Blá

ElseIf BrwFile ="CIDADE"

ListBox Blá Blá Blá Blá Blá

ElseIf BrwFile ="CLIENTE"

ListBox Blá Blá Blá Blá Blá

Else

Mensagem (Moódulo não disponivel)

EndIf

Isso é Errado?

só não coloquei a funcão interira pq ela é Grande e ia te dar um trabalho danado.

Mas vou ver tudo aquilo que vc me passou com calma e aviso se der certo

Obrigado

Reneu.

Link to comment
Share on other sites

ESTA CORRETO, FIQUE TRAQUILO, QUE AGORA A LISTBOX, VAI ´VOAR´.

NO PRIMEIRO LOOPING, MANDE UM AVISO DE:

"Aguarde Processamento... ", " Demorado"

Se o banco for muito grande, faça o seu programa falar com o usuário.

Abraços.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

João fiz os acertos e vou no cliente testar.

Ficou legal no visual mas fica preto na linha onde não está o cursor agora se oLbxBrw:lCellStyle for .F. Toda a linha fica vermelha e se for .T. fica vermelho onde esta o cursor e preto o resto da linha, tem como resolver isso?

Reneu.

Catanduva-SP

Link to comment
Share on other sites

citação:

João fiz os acertos e vou no cliente testar.

Ficou legal no visual mas fica preto na linha onde não está o cursor agora se oLbxBrw:lCellStyle for .F. Toda a linha fica vermelha e se for .T. fica vermelho onde esta o cursor e preto o resto da linha, tem como resolver isso?

Reneu.

Catanduva-SP


id=quote>id=quote>

MOSTRE UMA IMAGEM E O CODIGO FINAL.

VOE PODE TER COMETIDO UMA ´FALHINHA´ TÉCNICA, EXTREMAMENTE NATURAL.

SE BEM, QUE USUARIOS DE RECURSOS, NÃO HERRAM NUNKA! KKKKKK

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

//-> Altere a classe WBROWSE.PRG e incorpore ao seu projeto para ver se resolve.


METHOD DrawSelect() CLASS TWBrowse

if ::lCellStyle

::DrawLine()

WBrwLine( ::hWnd, ::hDC, ::nRowPos, Eval( ::bLine, Self ),;

::GetColSizes(), ::nColPos, ::nClrForeFocus,;

If( ::lFocused, ::nClrBackFocus, CLR_BOMBOM ),; //-> troque por outra cor

If( ::oFont != nil, ::oFont:hFont, 0 ),;

ValType( ::aColSizes ) == "B", ::aJustify,, ::nLineStyle,;

::nColAct, ::lFocused, ::oVScroll, ::bLogicLen )

else

WBrwLine( ::hWnd, ::hDC, ::nRowPos, Eval( ::bLine, Self ),;

::GetColSizes(), ::nColPos, ::nClrForeFocus,;

If( ::lFocused, ::nClrBackFocus, CLR_BOMBOM ),; //-> troque por outra cor

If( ::oFont != nil, ::oFont:hFont, 0 ),;

ValType( ::aColSizes ) == "B", ::aJustify,, ::nLineStyle, nil,;

::lFocused, ::oVScroll, ::bLogicLen )

endif

return nil

id=code>id=code>

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Editado por - kapiaba on 31/07/2009 16:23:00

Link to comment
Share on other sites

//-> veja:

#Define CLR_LGRAY nRGB( 230, 230, 230 )

#Define CLR_LGREEN nRGB( 190, 215, 190 )

#Define CLR_VERMELHO nRGB( 255, 000, 000 ) //--> Vermelho Para a Letra

#Define CLR_AMARELO nRgb( 255, 255, 000 ) //--> Amarelo Para o Fundo

#Define CLR_BOMBOM nRGB( 165, 42, 42 ) //--> Marrom BomBom

#Define CLR_MARROM nRGB( 235, 202, 171 ) //--> Marrom Normal

Request OrdKeyNo

Request OrdKeyCount


FUNCTION...

REDEFINE LISTBOX oLbx FIELDS ;

xPadL( AllTrim( Str( ( CADCLIEN )->CLIENCOD ) ), 12 ) , ;

( CADCLIEN )->CLIENTE , ;

( CADCLIEN )->FANTASIA , ;

TRANSFORM( ( CADCLIEN )->CGC, "@R 99.999.999/9999-99" ) , ;

TRANSFORM( ( CADCLIEN )->CPF, "@R 999.999.999-99" ) , ;

SPACE(1) ;

HEADERS OemToAnsi( "C¢digo " ) , ;

OemToAnsi( "Nome do Cliente" ) , ;

OemToAnsi( "Fantasia " ) , ;

OemToAnsi( "C.n.p.j. " ) , ;

OemToAnsi( "C.p.f. " ) , ;

OemToAnsi( " " ) ;

FIELDSIZES 110, 330, 180, 160, 130, 01 ;

COLOR CLR_BROWN, CLR_LGREEN ;

FONT wfonte_FixedSys ;

ID 101 ;

OF oDlg ;

ON DBLCLICK( CLICK(), GETCLIEN( .F., CADCLITM, CARTOPL, ;

CADCONDI, CADMOVCR, CADMUNIC, CADREGIO, ;

CADFUNCI, CADENDEN, CADCLIEN, CADPARAM, ;

CADTPCLI, CADBANCO, CADVENDE, CADTRANS, ;

CADUF, CADCESTA, CADORCAM, ;

oLbx, lPesquisa := .T. ), oLbx:Refresh(), oLbx:SetFocus() )

oLbx:nClrBackHead := CLR_LGREEN // Cor do Fundo do Cabe‡alho

oLbx:nClrText := {|| nRGB( 165, 42, 42 ) }

oLbx:nClrBackFocus := CLR_HBLUE // 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

oLbx:nClrPane := { || IIF( ( oLbx:cAlias )->( OrdKeyNo() ) %2 == 0, ;

CLR_LGREEN, CLR_LGRAY ) }

oLbx:nColAct := 2 // Onde o Cursor Vai Iniciar qual coluna?

oLbx:nLineStyle := 3 // Estilo das linhas nos dados da Browse

oLbx:lCellStyle := .T. // S¢ Pinta a celula que o cursor est 

oLbx:aJustify := { .T., .F., .F., .F., .F., .F. }

oLbx:lMChange := .F. // Desabilita Mousemove

oLbx:SetFocus() // Refocus on The Browse

oLbx:Refresh() // Estabiliza o Browse/Listbox

id=code>id=code>

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

ja olhei, mostre o codigo final.

ou olhe o que esta errado comparando com o exemplo acima.

em ultimo caso, altere a classe WBROWSE.PRG y incorpore ao projeto.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

No Final Ficou Assim mas continua com a linha preta mas agora da pra ver o que esta escrito em azul ainda nao testei pra ver se ficou rapido segunda eu faço o teste.

Obrigado, mais tá na hora de uma gelada. 18:50 ja passou.

Reneu

//----------------------------------------------------------------------------//

//------ WBRW.PRG : Modulo com funcoes diversas utilizadas no Sistema -----//

//----------------------------------------------------------------------------//

#include "FIVEWIN.CH"

#Define CLR_LGRAY nRGB( 230, 230, 230 )

#Define CLR_LGREEN nRGB( 190, 215, 190 )

#Define CLR_CHOCOLATE nRGB( 238, 118, 33 )

#Define CLR_VERMELHO nRGB( 255, 000, 000 ) //--> Vermelho Para a Letra

#Define CLR_AMARELO nRGB( 255, 255, 000 ) //--> Amarelo Para o Fundo

#Define CLR_LYELLOW nRGB( 255, 255, 128 ) //--> Amarelo Claro

#Define CLR_LWHITE nRGB( 255, 255, 254 ) //--> 16777215

#Define CLR_BOMBOM nRGB( 165, 42, 42 ) //--> Marrom BomBom

#Define CLR_MARROM nRGB( 235, 202, 171 ) //--> Marrom Normal

Request OrdKeyNo

Request OrdKeyCount

* -----------------------------------------------------------------------------

FUNCTION BrwArq(Brwfile,BrwTitulo,oBrw,oDlg,oDbf,aCtr,aRelacao)

* -----------------------------------------------------------------------------

LOCAL oLbxBrw, oDlgBrw, oFont, oSay

LOCAL nSenha:="*****"

LOCAL oRadioButtons, aNtx:=0, nOrden:=1, oTmp:=" "

LOCAL lBsc := .F., oPsgm := .F., oFator:={0,0,0,0,0}, oTitulo:={"","","","",""}

LOCAL oDlg_B:=iif(oBrw,"xDlg_Brw","Dlg_Brw")

vBusca:=vCd:=""

Select(BrwFile)

If !oBrw

aNtx:=(BrwFile)->(indexord())

If aNtx = 1

(BrwFile)->(DBSetOrder(2)) // Ordem de Nome

EndIf

If (BrwFile)->(indexord())<1

(BrwFile)->(DBSetOrder(1)) // Ordem de Codigo

aNtx:=1

EndIf

EndIf

(BrwFile)->(DBGoTop())

Do While !TABGRUPO->(Eof())

If Val(TABGRUPO->TAB_GR)>0 .and. Val(TABGRUPO->TAB_GR)<6

oFator[Val(TABGRUPO->TAB_GR)] :=TABGRUPO->FATOR

oTitulo[Val(TABGRUPO->TAB_GR)]:=TABGRUPO->CABECA

EndIf

TABGRUPO->(DBSkip())

EndDo

DEFINE DIALOG oDlgBrw RESOURCE oDlg_B TITLE OemToAnsi(BrwTitulo)

IF BrwFile = "PRODUTO"

Set relation to PRODUTO->COD_SEG into SEGUIMENTO

nOrden:=2

REDEFINE LISTBOX oLbxBrw ;

FIELDS PRODUTO->COD_PRO,;

PRODUTO->NOME,;

PRODUTO->COD_EXT,;

SEGUIMENTO->DESCRICAO,;

Transform((PRODUTO->PRC_VEN/oFator[1]), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"1",(PRODUTO->PRC_VEN/oFator[2]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"2",(PRODUTO->PRC_VEN/oFator[3]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"3",(PRODUTO->PRC_VEN/oFator[4]),0), [@E 9,999,999.99] ),;

Transform(iif(SEGUIMENTO->QTD_TB>"4",(PRODUTO->PRC_VEN/oFator[5]),0), [@E 9,999,999.99] ) ;

FIELDSIZES 150, 390, 150, 90, 80, 80, 80, 80, 80 ;

HEADERS OemToAnsi("C¢digo"), OemToAnsi("Descri‡Æo"), "Nosso Codigo", "Seguimento", oTitulo[1], oTitulo[2], oTitulo[3], oTitulo[4], oTitulo[5] ;

ON LEFT DBLCLICK F_Cad( oDlgBrw, .F., BrwFile );

ID 115 OF oDlgBrw

oLbxBrw:bKeyChar = { | nKey | LstBusca( oLbxBrw, nKey ) }

ENDIF

oLbxBrw:bKeyDown = { | nKey | If( nKey == VK_RETURN,;

F_Cad( oDlgBrw, .F., BrwFile ),;

If( nKey == VK_INSERT,;

F_Cad( oDlgBrw, .T., BrwFile ),;

If(nKey == VK_F2,;

ORD_TAB( nOrden, oDlgBrw, BrwFile, @oTmp ),))), nil }

oLbxBrw:nClrBackHead := CLR_LGREEN // Cor do Fundo do Cabe‡alho

oLbxBrw:nClrText := CLR_HBLUE //{|| nRGB( 165, 42, 42) }

oLbxBrw:nClrBackFocus := CLR_HBLUE // Cor do Cursor Em Cima do Ötem

oLbxBrw:nClrForeFocus := CLR_AMARELO // cor da letra da barra ativa

oLbxBrw:nClrForeHead := CLR_HRED // Cor nos Headers - Cabe‡alhos

If BrwFile != "FUNCI"

oLbxBrw:nClrPane := { || IIF( ( oLbxBrw:cAlias )->( OrdKeyNo() ) %2 == 0, ;

CLR_LGREEN, CLR_LGRAY ) }

EndIf

oLbxBrw:nColAct := 2 // Onde o Cursor Vai Iniciar qual coluna?

oLbxBrw:nLineStyle := 3 // Estilo das linhas nos dados da Browse

oLbxBrw:lCellStyle := .t. // S¢ Pinta a celula que o cursor est

oLbxBrw:aJustify := { .F., .F., .F., .F., .F., .F., .F., .F., .F. }

oLbxBrw:lMChange := .F. // Desabilita Mousemove

oLbxBrw:SetFocus() // Refocus on The Browse

oLbxBrw:Refresh() // Estabiliza o Browse/Listbox

// ( Pinta os Dados Novamente )

oLbxBrw:cAlias:= BrwFile

REDEFINE RADIO oRadioButtons var nOrden ID 120,121 ;

OF oDlgBrw ON CHANGE Orden(nOrden,oDlgBrw,BrwFile)

REDEFINE BUTTON ID 101 OF oDlgBrw ;

ACTION F_Cad( oDlgBrw, .T., BrwFile ) // Botao Novo

REDEFINE BUTTON ID 102 OF oDlgBrw ;

ACTION F_Cad( oDlgBrw, .F., BrwFile ) // Botao Alatera

REDEFINE BUTTON ID 104 OF oDlgBrw ;

ACTION nMsgBusca( BrwFile, oLbxBrw )

REDEFINE BUTTON ID 103 OF oDlgBrw ;

ACTION DelRegistro( oDlgBrw, BrwFile ) // Botao Exclui

REDEFINE BUTTON ID 105 OF oDlgBrw ;

ACTION F_Move( oDlgBrw, .T., BrwFile ) // Botao Inicio

REDEFINE BUTTON ID 106 OF oDlgBrw ;

ACTION F_Move( oDlgBrw, .F., BrwFile ) // Botao Final

REDEFINE BUTTON ID 107 OF oDlgBrw ;

ACTION (IMPCD(BrwFile,BrwTitulo,oPsgm), oLbxBrw:Refresh()) // Botao Inprimir

REDEFINE BUTTON ID 108 OF oDlgBrw ;

ACTION oDlgBrw:End();

CANCEL // Botao Sair

ACTIVATE DIALOG oDlgBrw CENTER

If aNtx>0

(BrwFile)->(DBSetOrder(aNtx)) // Ordem Anterior

EndIf

RETURN ( NIL )

return .t.

Link to comment
Share on other sites

Se já tomou as brejas, tá na hora de trabalhar.

Se funcionar do jeito que voce sonhou, fica então o senhor me devendo UMAS BREJAS.

No próximo encontro que eu marcar, V.Sa., já está CONVOCADO, pelo:

MAIOR HIPER SUPER MEGA ULTRA POTENCIA do FIVEWIN MUNDI.

-> Porém, super modesto: -> KKKKKKKKKKKKKKKKKKKK

Modifique aqui para a perfeição:


Do While !TABGRUPO->(Eof())

SYSREFRESH() //-> Refresque o looping, agiliza o processador.

If Val(TABGRUPO->TAB_GR)>0 .and. Val(TABGRUPO->TAB_GR)<6

oFator[Val(TABGRUPO->TAB_GR)] :=TABGRUPO->FATOR

oTitulo[Val(TABGRUPO->TAB_GR)]:=TABGRUPO->CABECA

EndIf

TABGRUPO->(DBSkip())

EndDo

id=code>id=code>

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...