Browse do GASPro zebrado

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

Moderador: Moderadores

Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Browse do GASPro zebrado

Mensagem por clodoaldomonteiro »

Olá amigos!

Converti minha aplicação Clippers/Gas para xHarbour 1.00 e queria saber se tem como zebrar o browse, e/ou colocar uma tarja colorida na linha em esteja o foco.

Desde já agradeço a atenção de todos.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
frazato
Usuário Nível 3
Usuário Nível 3
Mensagens: 219
Registrado em: 08 Jul 2004 07:45

Browse do GASPro zebrado

Mensagem por frazato »

Bom dia!
Faço assim, segue parte do codigo!

Código: Selecionar todos

*nMaxCol:= 90
                     nMaxLin:= nMaxRow
                     nJanGet:= CAIXATEXTO(00,00,nMaxLin-1,nMaxCol,"CADASTRO DE ENTIDADES","BG+/NB+","NN/NN","N")
                     _alias := 'Produto' // Dbf para Navegacao
                     _browse:= 'oTab'

                     If lViaFatura==.f.
                        BuildMenu( @hMenu, @hMenuItem )
                     endif

                     if !ToolBarGEN(nJanGet)
                         Return NIL
                     endif
                     SetInkeyAfterBlock({|nkey| AfterInkeyGEN( nkey ) })


                     oTab:=TbrowseDb(00,00,nMaxLin-1,nMaxCol)
                     oTab:ColSep    := " "
                     oTab:HeadSep   := "__"
                     oTab:ColorSpec := "n/ww+*,B/GR+*,N/w,N/W*+,g+*/ww+*"

                     Coluna1 := TbColumnNew("RAZAO SOCIAL",{ ||Forneced->codigo+'-'+Forneced->Razao } )
                     Coluna2 := TbColumnNew("Fantasia"    ,{ ||Forneced->Fantasia } )
                     Coluna3 := TbColumnNew("### Cnpj ###",{ ||Forneced->cgc } )
                     Coluna4 := TbColumnNew("I.E /RG"     ,{ ||Forneced->Ie } )
                     Coluna5 := TbColumnNew("Contato"     ,{ ||Forneced->Contato } )
                     Coluna6 := TbColumnNew("Endereco"    ,{ ||Forneced->Endereco } )
                     Coluna7 := TbColumnNew("Cidade  "    ,{ ||Forneced->cidade   } )
                     Coluna8 := TbColumnNew("Opcao Pagamento",{|| Iif(Forneced->Finan_001=='2',;
                                                                      '##   NEGOCIAR   ##',;
                                                                      Iif(Forneced->Finan_001=='3',;
                                                                      '##   NAO PAGAR  ##',;
                                                                      '## PAGAR EM DIA ##')) } )

                     Coluna9  := TbColumnNew("Prz.Entreg."  ,{ ||Forneced->PrzEntrg   } )
                     Coluna10 := TbColumnNew("TP.Contribuinte."  ,{ ||Ajusta_Campo10(Forneced->indiedest,.f.) } )

                   



                     oTab:AddColumn(Coluna1)
                     oTab:AddColumn(Coluna2)
                     oTab:AddColumn(Coluna3)
                     oTab:AddColumn(Coluna4)
                     oTab:AddColumn(Coluna5)
                     oTab:AddColumn(Coluna6)
                     oTab:AddColumn(Coluna7)
                     oTab:AddColumn(Coluna8)
                     oTab:AddColumn(Coluna9)
                     oTab:AddColumn(Coluna10)



                     oTab:Freeze := 1 // oTab:Colpos - 1

                     Centra(24,'')
                     Sele Forneced
                          Go top

                     Do While .t.

                        OrdSetFocus('fornece2')

                        For i:= 1 to 10
                            oTab:GetColumn(i):ColorBlock :=  { || { Iif(OrdKeyNo()%2==0,4,3),2 } } // Aqui fica zebrado
                        Next

                        Lin_Br := 21
                        Do While ! oTab:Stabilize()
                        Enddo

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Browse do GASPro zebrado

Mensagem por janio »

Mas nesta solução a 'barra luminosa' fica apenas no primeiro campo do browse ne?

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
frazato
Usuário Nível 3
Usuário Nível 3
Mensagens: 219
Registrado em: 08 Jul 2004 07:45

Browse do GASPro zebrado

Mensagem por frazato »

Ele irá pintar as 10 colunas neste caso, mais você pode colocar pra pintar todas caso queira.

For i:= 1 to Len(oTab:ColCount()) // Pra quantas coluna tiver


Frazato
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Browse do GASPro zebrado

Mensagem por janio »

Frazato,

Mim refiro a 'barra luminosa' de navegação no browse!

Testei seu exemplo e funciona perfeitamente! Ocorre que uso um recurso para deixar essa barra luminosa inteira no browse e não somente no primeiro campo. Mas, usando esse recurso, a medida q vamos navegando no browse a 'zebra' vai sumindo.

Pergunto se ha alguma solução para a barra luminosa de navegação ficar inteira no browse (todos os campos visiveis) e ainda o browse continuar zebrado a medida q for navegando nas setinhas

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Browse do GASPro zebrado

Mensagem por janio »

Assim funcionou como eu queria!

Código: Selecionar todos

   for n := 1 to Len( aCampos )
      oCol := TBColumnNew( aCabecalho[n], &( "{||" + aCAMPOS[n] + "}" ) ) 
      oCol:Picture := aPict[n]
      oBrw:AddColumn(oCol)
		oBrw:GetColumn(n):ColorBlock :=  { || { Iif(OrdKeyNo()%2==0,4,3),2 } } // Aqui fica zebrado
   next 

   oBrw:ForceStable()

   While ( .t. )

       // para deixar selecionada toda a linha 
      oBrw:colorrect({oBrw:rowpos,1,oBrw:rowpos,oBrw:colCount},{Iif(OrdKeyNo()%2==0,1,3), 1}) // q nao esta com o cursor
      do While ( !oBrw:stabilize() ) ; Enddo
      oBrw:colorrect({oBrw:rowpos,1,oBrw:rowpos,oBrw:colCount},{2,2}) // esta com o cursor

      nTecla := Inkey( 0 )
             
      do Case

fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse do GASPro zebrado

Mensagem por JoséQuintas »

Quando passei pra Harbour, isso de deixar a linha inteira de outra cor nunca mais funcionou.
Vou até testar agora pra ver se voltou a funcionar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse do GASPro zebrado

Mensagem por JoséQuintas »

Deu certo.
Retirei a aceleração da minha rotina (parte comentada).

Código: Selecionar todos

      //nkey := 0
      //DO WHILE nkey == 0 .AND. .NOT. oBrowse:Stable
      //   oBrowse:Stabilize()
      //   nkey := Inkey()
      //ENDDO
      //IF oBrowse:Stable
         oBrowse:RefreshCurrent()
         DO WHILE .NOT. oBrowse:Stabilize()
         ENDDO
         oBrowse:ColorRect( { oBrowse:RowPos, 1, oBrowse:RowPos, oBrowse:ColCount }, { 2, 2 } ) // esta com o cursor
         nkey := Inkey(600)
         IF nKey == 0
            KEYBOARD Chr( K_ESC )
            LOOP
         ENDIF
      //ENDIF
No meu caso foi só pra linha inteira ficar com a mesma cor.
Uso cor no browse conforme status da informação da linha, e bastou essa alteração.
Então dá pra simplificar o zebrado, pois oBrowse:RefreshCurrent() faz o serviço de tirar o destaque.

Valeu pelo post.

Nota:
A intenção da aceleração seria nem perder tempo atualizando a tela, caso o usuário tecle alguma coisa.
O Inkey(600) é porque se o usuário demorar mais de 10 minutos pra escolher, o sistema dá ESC automático.
Com isso dá pra pressupor que oBrowse:ColorRect() pinta a área, mas sem mexer nos codeblocks de cores.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse do GASPro zebrado

Mensagem por JoséQuintas »

Confirmado no manual do Clipper:
Cells that are colored using colorRect retain their color until they are scrolled off the screen up or down
Retorna à cor original assim que não for mais a linha atual.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Browse do GASPro zebrado

Mensagem por clodoaldomonteiro »

Muito obrigado meus amigos, vou testes e postarei aqui os resultados.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse do GASPro zebrado

Mensagem por JoséQuintas »

Reli meus posts, e acabei não explicando direito:

A rotina do Frazato deu certo, pro zebrado basta definir cor das colunas pro zebrado:

Código: Selecionar todos

oBrw:GetColumn(n):ColorBlock :=  { || { Iif(OrdKeyNo()%2==0,4,3),2 } } // Aqui fica zebrado

A rotina do Janio também deu certo, de destacar a linha inteira, mas deu pra simplificar

Código: Selecionar todos

oBrowse:RefreshCurrent() 
DO WHILE .NOT. oBrowse:Stabilize() 
ENDDO 
oBrowse:ColorRect( { oBrowse:RowPos, 1, oBrowse:RowPos, oBrowse:ColCount }, { 2, 2 } ) // esta com o cursor 
nkey := Inkey(0) 
O detalhe de não funcionar comigo antes, era que a rotina de aceleração acabava desposicionando e fazendo o refreshcurrent() em registro errado.

Não estranhem eu repassar.
É que eu até já tinha até desistido disso, e agora voltou a funcionar, então pode ter mais alguém na mesma situação.

Novamente valeu pelo post, Frazato e Janio.

Depois vou rever minha rotina de aceleração.

Parece óbvio agora:
- ColorRect() faz destaque (não interessa :ColorBlock, e só precisa se for diferente do padrão)
- RefreshCurrent() Retorna ao default da linha (retira ColorRect e obedece :ColorBlock - destaque ou não)
- coluna:ColorBlock() define as cores pra normal e destaque, podendo ser zebrado
Se alguma coisa não funcionar, é porque um desses está sendo executado na hora/lugar/posicionamento errado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Browse do GASPro zebrado

Mensagem por clodoaldomonteiro »

Amigos!
Muito obrigado pela ajuda e optei por deixar a linha em foco toda colorida, mas não estou conseguindo deixar a coluna em foco com cor diferente, pois assim deixaria o usuário perdido.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse do GASPro zebrado

Mensagem por JoséQuintas »

Talvez alterar aqui, testando a coluna atual, ou pra simplificar, pintar novamente somente a coluna atual de outra cor:

Código: Selecionar todos

oBrowse:ColorRect( { oBrowse:RowPos, 1, oBrowse:RowPos, oBrowse:ColCount }, { 2, 2 } ) // linha inteira com cursor
oBrowse:ColorRect( { oBrowse:RowPos, oBrowse:ColPos, oBrowse:RowPos, oBrowse:ColPos}, { 3, 3 } ) // linha/coluna com o cursor
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Browse do GASPro zebrado

Mensagem por clodoaldomonteiro »

Perfeito José, o trabalho foi só definir as novas cores.

Muito obrigado meu amigo.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Browse do GASPro zebrado

Mensagem por JoséQuintas »

Este tópico me transformou num expert... rs

Estamos sempre aprendendo e ensinando.
Só acertei minha rotina em Harbour neste mês, durante este tópico.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder