Página 1 de 1

Problema com um comando do Objecto Tbrowser!

Enviado: 03 Out 2006 14:15
por deividdjs
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 :

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