como usar :colorRect no tbrowse

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
edutek
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 21 Set 2005 21:16
Localização: Campo Grande-MS

como usar :colorRect no tbrowse

Mensagem por edutek »

Bom Dia!!


Como eu uso a ":colorRect" para alterar a cor de uma linha no tbrowse

pois como eu iso hoje só fica uma coluna selecionada, eu queria que toda a linha selecionada ficava com uma cor diferente



Eduardo Mendes
Eduardo Mendes
eduardo@conesnet.com.br
xharbour 1.0.0 + gtwvw + dbfcdx + xdev + sqlib + hwgui (printdos e msgs)
clipper 5.2e + exospace
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

De uma olhada nesse exemplo abaixo:

Código: Selecionar todos

***************
FUNC PESQAGE2()
***************
FIELD NOME,TELEFONE1,CELULAR,TIPO,TELEFONE2,ENDERECO,BAIRRO,CIDADE,UF,CEP IN AGENDA
LOCAL nButton := 1
LOCAL nOpcao  := 0
LOCAL OTbr  :=TBrowseDB( 03, 01, 22, 80 )
LOCAL OTbc1 :=TbColumnNew("Descricao do Cadastrado",{ || NOME     } )
LOCAL OTbc2 :=TbColumnNew("N§ Telefone",            { || TELEFONE1} )
LOCAL OTbc3 :=TbColumnNew("N§ Celular",             { || CELULAR  } )
LOCAL OTbc4 :=TbColumnNew("TIPO",                   { || TIPO     } )
LOCAL OTbc5 :=TbColumnNew("N§ Telefone",            { || TELEFONE2} )
LOCAL OTbc6 :=TbColumnNew("Endere‡o Completo",      { || ENDERECO } )
LOCAL OTbc7 :=TbColumnNew("Bairro",                 { || BAIRRO   } )
LOCAL OTbc8 :=TbColumnNew("Cidade",                 { || CIDADE   } )
LOCAL OTbc9 :=TbColumnNew("UF",                     { || UF       } )
LOCAL OTbc10:=TbColumnNew("CEP",                    { || CEP      } )

LOCAL nKey
LOCAL lExitRequested
PARA TIPOCAD,LINHA

********************************************************************
*                  1      2       3       4      5       6     7      8     9      10       11      12      13
oTbr:colorspec :="N*/W , W+/BG , W+/B , R+*/W , W*/W+ , RJ/W , W/B , R/N , B+*/W , RW*/W , N+*/W, BG+*/W, RG+*/W"
oTbr:addColumn(oTbc1)
oTbr:addColumn(oTbc2)
oTbr:addColumn(oTbc3)
oTbr:addColumn(oTbc4)
oTbr:addColumn(oTbc5)
oTbr:addColumn(oTbc6)
oTbr:addColumn(oTbc7)
oTbr:addColumn(oTbc8)
oTbr:addColumn(oTbc9)
oTbr:addColumn(oTbc10)

oTbC1:COLORBLOCK :={| NOME     | IIF ( TIPO ="CLIENTE",    { 9,2  } ,;
                                 IIF ( TIPO ="FORNECEDOR", { 4,2  } ,;
                                 IIF ( TIPO ="FUNCIONARIO",{ 10,2 } ,;
                                 IIF ( TIPO ="COMPRADOR",  { 13,2 } ,;
                                 IIF ( TIPO ="CREDOR",     { 12,2 } ,;
                                 IIF ( TIPO ="DIVERSOS",   { 11,2 } , { 1,2} ) ) ) ) ) ) }

oTbC2:COLORBLOCK :={| NOME     | IIF ( TIPO ="CLIENTE",    { 9,2  } ,;
                                 IIF ( TIPO ="FORNECEDOR", { 4,2  } ,;
                                 IIF ( TIPO ="FUNCIONARIO",{ 10,2 } ,;
                                 IIF ( TIPO ="COMPRADOR",  { 13,2 } ,;
                                 IIF ( TIPO ="CREDOR",     { 12,2 } ,;
                                 IIF ( TIPO ="DIVERSOS",   { 11,2 } , { 1,2} ) ) ) ) ) ) }

oTbC3:COLORBLOCK :={| NOME     | IIF ( TIPO ="CLIENTE",    { 9,2  } ,;
                                 IIF ( TIPO ="FORNECEDOR", { 4,2  } ,;
                                 IIF ( TIPO ="FUNCIONARIO",{ 10,2 } ,;
                                 IIF ( TIPO ="COMPRADOR",  { 13,2 } ,;
                                 IIF ( TIPO ="CREDOR",     { 12,2 } ,;
                                 IIF ( TIPO ="DIVERSOS",   { 11,2 } , { 1,2} ) ) ) ) ) ) }

oTbC4:COLORBLOCK :={| NOME     | IIF ( TIPO ="CLIENTE",    { 9,2  } ,;
                                 IIF ( TIPO ="FORNECEDOR", { 4,2  } ,;
                                 IIF ( TIPO ="FUNCIONARIO",{ 10,2 } ,;
                                 IIF ( TIPO ="COMPRADOR",  { 13,2 } ,;
                                 IIF ( TIPO ="CREDOR",     { 12,2 } ,;
                                 IIF ( TIPO ="DIVERSOS",   { 11,2 } , { 1,2} ) ) ) ) ) ) }


************ largura das colunas ***********
oTbc1:width:=29
************ Marcara das colunas ***********
oTbc2:picture:="@R (99) 9999-9999"
oTbc3:picture:="@R (99) 9999-9999"
oTbc5:picture:="@R (99) 9999-9999"
************ Linhas das colunas ************
oTbr:COLSEP :=DEF_CSEP  // desenha colunas Verticais
oTbr:HEADSEP:=HEAD_SEP  // desenha colunas Horizontais superior
oTbr:FOOTSEP:=FOOT_SEP  // desenha colunas Horizontais inferior
************ COLUNAS A CONGELAR ************
ColFix := 1              // atraves de variaval colfix
oTbr:freeze := ColFix

**********************************
SELE AGENDA
SET ORDER TO 2

Otbr:gotop()
IExitRequested := .F.
vCONTINUA=" "

DO WHILE !IExitRequested
    DO WHILE !oTbr:stabilize()
    ENDDO
    IF !vCONTINUA="S"
       nKey := inkey(0)
    ENDIF

    DO CASE

      CASE vCONTINUA="S"
         CLEAR TYPEAHEAD         // limpa sujeira no teclado
         vNOME=SPACE(30)
         vREG=RECCOUNT()
         vCONTINUA=" "

         SETCOLOR( "N/W,N*/RG,N/W* , , N*/W" )
         @ ROW(),01      GET vNOME      PICT"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
         READ
         SETCOLOR( "N*/W,W+/BG" )

         IF LASTKEY()==27
            IF EMPTY(vNOME)
               TRAVAREG()
               DELE
               LIBERAREG()
               OTBR:refreshall()
               Otbr:gotop()  // no arquivo indexado
               LOOP
            ENDIF
         ENDIF

         TRAVAREG()
         REPL NOME      WITH vNOME
         LIBERAREG()

         IF FOUND()
            Msginfo("Descrição de Estoque Já Cadastrada!, favor verificar","Aviso do Sistema")
            EXIT
         ENDIF

         OTBR:refreshall()
         Otbr:gotop()  // no arquivo indexado
         GOTO vREG

      CASE nKey == K_ENTER .OR. nKey == K_a .OR. nKey == K_A

         nCOLNUM:=OTBR:COLPOS

         DO CASE

         ENDCASE

         IF TIPO="DIVERSOS"

            DO WHILE .T.

               vNOME=NOME
               vTELEFONE1=TELEFONE1
               vCELULAR=CELULAR
               vTIPO=TIPO
               vTELEFONE2=TELEFONE2
               vENDERECO=ENDERECO
               vBAIRRO=BAIRRO
               vCIDADE=CIDADE
               vCEP=CEP
               vUF=UF

               SET CURSOR ON

               SETCOLOR( "N/W,N*/RG,N/W* , , N*/W" )
               IF nCOLNUM==1
                  @ ROW(),COL() GET vNOME      PICT"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
                  READ
               ENDIF

               IF nCOLNUM==2
                  LINHA=ROW()
                  COLUNA=COL()
                  @ ROW(),COL() GET vTELEFONE1 PICT"@R (99) 9999-9999"
                  READ
               ENDIF

               IF nCOLNUM==3
                  @ ROW(),COL() GET vCELULAR   PICT"@R (99) 9999-9999"
                  READ
               ENDIF

               IF nCOLNUM==4
                  @ ROW(),COL() GET vTIPO PICT"!!!!!!!!!!!"
                  READ
               ENDIF

               IF nCOLNUM==5
                  @ ROW(),COL() GET vTELEFONE2 PICT"@R (99) 9999-9999"
                  READ
               ENDIF

               IF nCOLNUM==6
                  @ ROW(),COL() GET vENDERECO
                  READ
               ENDIF

               IF nCOLNUM==7
                  @ ROW(),COL() GET vBAIRRO
                  READ
               ENDIF

               IF nCOLNUM==8
                  @ ROW(),COL() GET vCIDADE
                  READ
               ENDIF

               IF nCOLNUM==9
                  @ ROW(),COL() GET vUF
                  READ
               ENDIF

               IF nCOLNUM==10
                  @ ROW(),COL() GET vCEP
                  READ
               ENDIF

               SET CONFIRM OFF

               SETCOLOR( "N*/W,W+/BG" )

               IF !LASTKEY() = 27
                  SELE AGENDA
                  TRAVAREG()
                  REPL NOME      WITH vNOME
                  REPL TELEFONE1 WITH vTELEFONE1
                  REPL CELULAR   WITH vCELULAR
                  REPL TIPO      WITH vTIPO
                  REPL TELEFONE2 WITH vTELEFONE2
                  REPL ENDERECO  WITH vENDERECO
                  REPL BAIRRO    WITH vBAIRRO
                  REPL CIDADE    WITH vCIDADE
                  REPL CEP       WITH VCEP
                  REPL UF        WITH vUF
                  LIBERAREG()
               ENDIF
               EXIT
            ENDDO
         ELSE
            Msginfo("Não é permitido a Alteração por esse processo, Favor entrar no cadastro de origem.","Aviso do Sistema")
         ENDIF

         SET ORDER TO 2
         OTBR:refreshall()
      CASE nKey == K_C .OR. nKey == K_c
         SELE AGENDA
         SET ORDER TO 2
         APPE BLAN
         TRAVAREG()
         REPL TIPO    WITH "DIVERSOS"
         LIBERAREG()

         OTBR:refreshall()
         Otbr:gotop()  // no arquivo indexado

         vCONTINUA="S"
         LOOP
      CASE nKey == K_F .OR. nKey == K_f
           vVOLTAR=SPACE(1)
           IExitRequested := .T.
      CASE nKey == K_DEL
         IF TIPO="DIVERSOS"
            IF !Msgyesno("Deseja Realmente Excluir esse Registro ?","Aviso do Sistema")
               LOOP
            ENDIF

            TRAVAREG()
            DELE
            LIBERAREG()
            OTBR:refreshall()
            Otbr:gotop()  // no arquivo indexado
         ELSE
            Msginfo("Não é permitido a Alteração por esse processo, Favor entrar no cadastro de origem","Aviso do Sistema")
         ENDIF
      CASE nKey == K_F1
         IF INDEXORD()==2
            SET ORDER TO 7
         ELSEIF INDEXORD()==7
            SET ORDER TO 2
         ENDIF
         oTbr:refreshall()

      CASE nKey == K_F2

         aBusca := savenv( 01, 00, 23, 79 )
         chave:= Space(30)
         SETCOLOR( "N*/W,B/W" )
         aWin := Win( 10, 15, 13, 62, "Busca por Nome",WT_VERDE2BRANCO,WD_VERDE2BRANCO)
         CLEAR TYPEAHEAD
         @  12, 18 say "Nome.:" get CHAVE pict"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" when DwnMsg( "Informe o Nome para uma pesquisar")
         READ
         RstEnv(aBusca)
         SETCOLOR( "N*/W,W+/B" )
         set softseek on
         seek chave
         set softseek off
         oTbr:refreshall()

      CASE nKey == K_DOWN
           oTbr:down()
      CASE nKey == K_UP
           oTbr:up()
      CASE nKey == K_PGDN
           oTbr:pageDown()
      CASE nKey == K_PGUP
           oTbr:pageUp()
      CASE nKey == K_CTRL_PGUP
           oTbr:goTop()
      CASE nKey == K_CTRL_PGDN
           oTbr:goBottom()
      CASE nKey == K_RIGHT
           oTbr:right()
      CASE nKey == K_LEFT
           oTbr:left()
      CASE nKey == K_HOME
           oTbr:home()
      CASE nKey == K_END
           oTbr:end()
      CASE nKey == K_CTRL_LEFT
           oTbr:panLeft()
      CASE nKey == K_CTRL_RIGHT
           oTbr:panRight()
      CASE nKey == K_CTRL_HOME
           oTbr:panHome()
      CASE nKey == K_CTRL_END
           oTbr:panEnd()
      CASE nKey == K_ESC
           vVOLTAR="S"
           OTBR:refreshall()
           Otbr:gotop()  // no arquivo indexado
           IExitRequested := .T.
    ENDCASE
  ENDDO
RETURN NIL
Qualquer duvida prende o grito.....

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
edutek
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 21 Set 2005 21:16
Localização: Campo Grande-MS

Mensagem por edutek »

Valeu

Aproveitei seu codigo, mas o que eu queria mesmo e deixar de uma cor só todos as colunas do browse em que estiver o cursor (selecionado), mas resilvi usando isso

while .t.
objbrowse:ForceStable()
objbrowse:colorRect({objbrowse:rowPos, objbrowse:freeze-1, objbrowse:rowPos, objbrowse:colCount}, IIF(QTATU>0,{7,2},{6,13}) )
objbrowse:hilite()
objbrowse:RefreshCurrent()
SetInkeyAfterBlock({|nkey| AfterInkeyMt2( nkey ) })
RefreshHXB(objBrowse, nWin, nHScrollBar) //20040704
RefreshVXB(objBrowse, nWin, nVScrollBar) //2040704
if (objbrowse:applykey(inkey(0))== -1)
exit
endif
enddo


ai funcionou.

Valeu

ps. eu uso o tBrowse conforme o Clipper 5.3.
Eduardo Mendes
eduardo@conesnet.com.br
xharbour 1.0.0 + gtwvw + dbfcdx + xdev + sqlib + hwgui (printdos e msgs)
clipper 5.2e + exospace
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Aproveitei seu codigo, mas o que eu queria mesmo e deixar de uma cor só todos as colunas do browse em que estiver o cursor (selecionado)
Tche, anteriormente vc não tinha dito que era onde passava o cursor..mas tudo bem.......se resolveu é a conta....

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder