Problema com um comando do Objecto Tbrowser!
Enviado: 03 Out 2006 14:15
Ola Amigos !
será q alguem da lista que usa TBROWSER e usa esse seguinte comando:
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{2,5})
é q estou tendo problemas com ele .. sempre preciso dar o comando oTab:Refreshall( ) para atualizar .. até o momento eu tinha testado em uma base de dados de produtos com 8 mil registros somente estava indo tudo bem .. mais quando fui testar em uma base maior .., ficou bastante lento o processo .. e quando eu tiro Refreshall fica rapido mais ele não atualiza as cores de acordo com a Regra adicionadas no Tbrowser.. se alguem tiver um exemplo pra me mandar fico muito grato ..
o meu está assim hoje :
será q alguem da lista que usa TBROWSER e usa esse seguinte comando:
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{2,5})
é q estou tendo problemas com ele .. sempre preciso dar o comando oTab:Refreshall( ) para atualizar .. até o momento eu tinha testado em uma base de dados de produtos com 8 mil registros somente estava indo tudo bem .. mais quando fui testar em uma base maior .., ficou bastante lento o processo .. e quando eu tiro Refreshall fica rapido mais ele não atualiza as cores de acordo com a Regra adicionadas no Tbrowser.. se alguem tiver um exemplo pra me mandar fico muito grato ..
o meu está assim hoje :
Código: Selecionar todos
*----------------------------------------------------------------*
function DB_PRODUTO( aCab, aCamp, aPict, cAlias, nOrdem, Regra )
*----------------------------------------------------------------*
local oTAB, oCol, nKey, nRow, nCol, cTela, cArea
local OLDREC, OBROWSE, OCOLUNA, PESQUISA
select( cAlias )
set order to nOrdem
go top
setcursor(0)
cArea := savescreen( 00, 00, 24, 79 )
X:=aCamp[2]
oTab := TBrowseDB( 05, 02, 20, 77 ) // GERA UM TBROWSE
oTab:colsep := CHR(179)
oTab:headsep := CHR(196)+CHR(194)+CHR(196)
oTab:footsep := CHR(196)+CHR(193)+CHR(196)
oTab:ColorSpec := "N/W*,W+/B+,R+/W*,R+/N+,W+/N+"
for i = 1 TO len( aCamp )
if valtype(aCamp[I]) == "B"
oCol:=TBcolumnNew( aCab[I], ( aCamp[I] ) )
oCol:Picture:=aPict[I]
else
oCol:=TBcolumnNew( aCab[I], FIELDWBLOCK( aCamp[I], SELECT()))
oCol:Picture:=aPict[I]
endif
If Regra # Nil
oCol:ColorBlock:={|X| If(&(Regra),{3,4},{1,2})}
EndIf
oTab:addColumn( oCol )
next
nCol_Reg := (oTab:nRight-oTab:nLeft+2) / LEN(aCamp)
oTab:Freeze := 3 // Definindo Coluna fixa
oTab:ColPos := 1
do while .T.
nRow := ROW()
nCol := COL()
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{2,5})
DO WHILE !oTab:Stabilize()
oTab:STABILIZE()
IF INKEY() # 0 ; EXIT ; ENDIF
ENDDO
*******************************
** INFORMAۂO DA LINHA ATIVA **
******************************
@21,02 say "C¢d.Fabric: " + cc_codfabr color "b+/w*"
@21,30 say "|" color "n+/w*"
if (cn_quant - cn_pende) <= 0
@21,32 say "Dispon¡vel : " + transform((CN_QUANT - CN_PENDE),"999999.9") color "r+/w*"
@21,58 say "Reservado : " + transform(CN_PENDE,"999999.9") color "r+/w*"
else
@21,32 say "Dispon¡vel : " + transform((CN_QUANT - CN_PENDE),"999999.9") color "b+/w*"
@21,58 say "Reservado : " + transform(CN_PENDE,"999999.9") color "b+/w*"
endif
*************************************
if cn_quant <= 0
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{4,5})
else
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{2,5})
endif
oTab:hilite()
setpos( nRow, nCol )
nKey := inkey()
if oTAB:stable
if oTAB:hittop
oTAB:HITTOP := .F.
tone(1000)
elseif oTAB:hitbottom
oTAB:HITBOTTOM := .F.
tone(1000)
endif
setpos( nRow, nCol )
nKey := Inkey(0)
endif
do case
case lastkey() = K_ESC
RSTENV(PRINC)
RSTENV(DB_PRO)
SET KEY 281 TO DB_CADPRO()
SELECT(n_Arqant)
RSTENV(tela)
exit
CASE LASTKEY()=73 .OR. LASTKEY()=105 && "I" -> INCLUE PRODUTOS
do while .t.
if substr(PSW->acesso,57,1) = "N"
MSGBOX1("Vocˆ nÆo tem acesso a este MàDULO -> 057")
exit
endif
SALVATELA()
INCLU_PRO()
VOLTATELA()
exit
enddo
CASE LASTKEY()=75 .OR. LASTKEY()=107 && "K" -> INCLUE KIT DE PRODUTOS
do while .t.
if substr(PSW->acesso,57,1) = "N"
MSGBOX1("Vocˆ nÆo tem acesso a este MàDULO -> 057")
exit
endif
SALVATELA()
public KIT_IA := "I"
INCLU_KIT()
VOLTATELA()
exit
enddo
CASE LASTKEY()=97 .OR. LASTKEY()=65 && "A" -> ALTERA PRODUTOS
do while .t.
if substr(PSW->acesso,58,1) = "N"
MSGBOX1("Vocˆ nÆo tem acesso a este MàDULO -> 058")
exit
endif
SALVATELA()
if cc_und # "KIT"
ALT_PRO()
else
public KIT_IA := "A"
INCLU_KIT()
endif
VOLTATELA()
exit
enddo
CASE LASTKEY()=101 .OR. LASTKEY()=69 && "E" -> EXCLUE PRODUTOS
do while .t.
if substr(PSW->acesso,58,1) = "N"
MSGBOX1("Vocˆ nÆo tem acesso a este MàDULO -> 058")
exit
endif
SALVATELA()
EXCLU_PRO()
VOLTATELA()
exit
enddo
CASE LASTKEY()=32 && TABELA DE PRECOS - "ESPA€O"
TAB_PRECO()
CASE LASTKEY()=-9 && TABELA TECNICA - OBS - "F10"
TAB_TEC()
CASE LASTKEY()=80 .OR. LASTKEY()=112 && PESQUISA PRODUTOS
SAVE SCREEN TO PESQ_PRO
PESQ_PRO()
CASE LASTKEY()=82 .OR. LASTKEY()=114
PED_PEND() && VERIFICA PENDENCIAS EXISTENTES NOS PEDIDOS DE VENDA
CASE LASTKEY()=71 .OR. LASTKEY()=103 && MOVIMENTO DETALHADO DO PRODUTO
do while .t.
if substr(PSW->acesso,64,1) = "N"
MSGBOX1("Vocˆ nÆo tem acesso a este MàDULO -> 064")
exit
endif
SALVATELA()
MOV_DETALHE()
VOLTATELA()
exit
enddo
CASE LASTKEY()=72 .OR. LASTKEY()=104 && HISTORICO DE COMPRA - "H"
* PROC_USU()
* if substr(acesso,64,1) = "N"
* MSGBOX1("Vocˆ nÆo tem acesso a este MàDULO -> 064")
* select PRO
* return(2)
* endif
* select PRO
* SAVE SCREEN TO MOV_DET
status_PCO := "N"
c_PCO := "N" && nÆo est dentro do pedido de compra
HIST_COMPRA()
CASE LASTKEY()=77 .OR. LASTKEY()=109 && ESTATISTICA DO PRODUTO - "M"
MEDIA_PROD()
CASE LASTKEY()=67 .OR. LASTKEY()=99 && LAN€A CONTAGEM - "C"
CONTAGEM()
CASE LASTKEY()=66 .OR. LASTKEY()=98 && VERIFICA PEDENCIA DE COMPRAS - "B"
status_PCO = "N"
c_PCO := "N" && nÆo est dentro do pedido de compra
PEND_COMP()
CASE LASTKEY()=-41 && PESQUISA PRODUTOS POR LETRA A LETRA - "F12"
PESQ_PRO_LT()
CASE LASTKEY()=-40 && BUSCA RELACAO DE PRODUTOS Q CONTEM - "F11"
BUSCA_PRO()
CASE LASTKEY()=16 && AJUSTA PRECO NO CADASTRO DE PRODUTOS - CTRL + "P"
AJUST_PREC()
CASE LASTKEY()=84 .OR. LASTKEY()=116 && MOSTRA RESUMO DE ESTOQUE - "T"
RESUMO_EST()
CASE LASTKEY()=86 .OR. LASTKEY()=118 && AJUSTA DATA DE VALIDADE DO PRODUTO - "V"
AJUS_VALID()
CASE LASTKEY()=83 .OR. LASTKEY()=115 && AJUSTA DATA DE VALIDADE DO PRODUTO - "S"
AJUS_SALDO()
OTHERWISE
ENDCASE
setcursor(0)
oTab:Refreshall() // Refresca a Tela ou Atualiza os Dados
if nKey == K_F1
elseif nKey == K_F2
elseif nKey == K_F3
elseif nKey == K_F4
elseif nKey == K_F5
elseif nKey == K_F6
elseif nKey == K_F7
elseif nKey == K_UP ; oTab:UP()
elseif nKey == K_DOWN ; oTab:DOWN()
elseif nKey == K_LEFT ; oTab:LEFT()
elseif nKey == K_CTRL_LEFT ; oTab:PANLEFT()
elseif nKey == K_RIGHT ; oTab:RIGHT()
elseif nKey == K_CTRL_RIGHT ; oTab:PANRIGHT()
elseif nKey == K_PGUP ; oTab:PAGEUP()
elseif nKey == K_CTRL_PGUP ; oTab:GOTOP()
elseif nKey == K_PGDN ; oTab:PAGEDOWN()
elseif nKey == K_CTRL_PGDN ; oTab:GOBOTTOM()
elseif nKey == K_HOME ; oTab:HOME()
elseif nKey == K_CTRL_HOME ; oTab:PANHOME()
elseif nKey == K_END ; oTab:END()
elseif nKey == K_CTRL_END ; oTab:PANEND()
elseif nKey == K_ESC ; EXIT
endif
enddo
return