Página 1 de 2

Mudar as cores no tbrowse

Enviado: 04 Ago 2017 20:32
por JoséQuintas
Eu queria mudar as cores do tbrowse, mas não as cores internas, as cores dos traços.
Existe essa possibilidade?

Mudar as cores no tbrowse

Enviado: 04 Ago 2017 21:40
por JoséQuintas
Consegui.
Primeiro teste ok.
Apenas coincidência, mas ficou até parecido com o separador do Windows 10.
Não é a mesma cor, mas parece... rs

Acho que é um jeito de ter o separador, sem poluir a tela com o traço branco que dá destaque demais.
tbrowse.png

Mudar as cores no tbrowse

Enviado: 04 Ago 2017 21:46
por JoséQuintas
Ficaria melhor em tela GUI?
Sim.
Se me disserem qual LIB GUI aceita browse em multithread abrindo e fechando janelas à vontade, em qualquer ordem, poderei testar.
E de preferência fazendo isso numa janela GTWVG, que é uma janela Windows quase normal... rs
browse.png

Mudar as cores no tbrowse

Enviado: 04 Ago 2017 22:15
por JoséQuintas
Eu tive que alterar tbrowse.prg do Harbour.
Por acaso tem algum outro jeito sem fazer isso?

Mudar as cores no tbrowse

Enviado: 05 Ago 2017 00:33
por cl@udio
JoseQuintas

Eu tirei os desenho das bordas do tbrowse()

Mudar as cores no tbrowse

Enviado: 05 Ago 2017 20:38
por JoséQuintas
Tem só um detalhe curioso:

No Windows 10 praticamente não existe borda.
Usar toda a tela fica esquisito.
Deixar assim um tempo, pode ser questão de costume.

Nota: reparou que o frame do tbrowse com cor mais leve deixou a tela também mais leve?
Apesar que com muita informação, não tem jeito de ficar leve.... rs
browse2.png

Mudar as cores no tbrowse

Enviado: 06 Ago 2017 11:21
por Jairo Maia
Essa questão de mudar leiaute do TBrowse é mesmo bem delicado. Já alterei cores: chiadeira geral, então voltei para monocromático. Já limpei o rodapé, ai sim quase me mataram, esqueci que usuário gosta de usar o mouse. O mouse funciona geral, inclusive o Scroll.

Já marcar a linha toda é que não consegui mesmo até agora. Fiz muitas tentativas com base no manual e desse tópico: ColorRect() mas não há meio de fazer funcionar. Creio que seja algo específico em minha função,mas ainda não sei o que.
TBrowse.Jpg

Mudar as cores no tbrowse

Enviado: 06 Ago 2017 13:01
por JoséQuintas
Dá uma olhada na minha rotina.
Aliás são basicamente DUAS:

Fazbrowse()

uso para browse de tela cheia, é só o browse e nada mais na tela
Filtra conforme digita, também pesquisa pelos ítens do browse, ou filtro por qualquer campo do arquivo, inclundo palavras compostas "QUI JOSE" pra achar "JOSE QUINTAS" entre outros, ou nome "QUINTAS" na rua "JOSE", ou alterar índice usado no browse.
Cheguei a alterar pra usar pushbutton, e pra usar HWGUI ou HMG Extended, depois retornei.
Acho até que esqueci de reativar os cliques nas palavras da mensagem, depois verifico.....
Alguns dos recursos extras não estão "amigos do usuário", mas como são recursos extras, achei melhor deixar disponível assim do que deixar sem.
Por exemplo: ao alterar a ordem por CNPJ vai digitando e filtrando CNPJ, se for por nome vai digitando e filtrando nome, se for for data vai digitando e filtrando data (ano/mes/dia).
Ou seja, atende todo o aplicativo qualquer que seja o arquivo.

dbView()

uso para browse que faz parte de outras telas, como os produtos na tela de pedidos

https://github.com/JoseQuintas/JoseQuin ... browse.prg

Exemplos de uso:

FazBrowse()

ou

oTBrowse := { ... }
FazBrowse( oTBrowse )

etc.
Tem muitos exemplos de uso espalhados nos fontes.

Quanto às cores:
Tinha uma usuária, até jovem, que tinha estrabismo (ou algo assim).
Conforme a cor usada na tela, ela tinha problemas de tontura e outras coisas mais.
Usar o aplicativo pra teste não é o mesmo do que usar o tempo todo.
As vezes pra nós parece bom, mas pra quem usa pode ser problema.
E se o aplicativo for colorido demais, uma mensagem de outra cor pra chamar a atenção não vai chamar a atenção.

De vez em quando tento alterar as cores, mas acabo voltando.... rs
Até criei uma tela que permite escolher qualquer das cores do Windows, pelo seletor de cores do Windows, mas é difícil escolher.
Ninguém nunca reclamou das cores atuais... só das tentativas de mudança.... rs

Mudar as cores no tbrowse

Enviado: 06 Ago 2017 13:21
por JoséQuintas
Pra usar qualquer cor do Windows, uso isto:

https://github.com/JoseQuintas/JoseQuin ... alette.prg

e pra facilitar definir/usar cores, uso isto:

https://github.com/JoseQuintas/JoseQuin ... tcolor.prg

Recentemente adicionei esse SetColorTBrowseFrame(), justamente pra atender o assunto do post.

Apesar do nome, é apenas a cor.
Assim posso usar em:

SetColor( SetColorNormal() )
ou
@ 1, 1 SAY "texto" COLOR SetColorNormal()

Fiz assim porque não precisa de variável própria, e se escrever errado o linqueditor vai dar falta da função, além de já valer pra multithread.
Se liberar para o usuário a configuração de cores, basta alterar essas funções pra buscar do que foi salvo, por exemplo.

Mudar as cores no tbrowse

Enviado: 07 Ago 2017 08:08
por JoséQuintas
Jairo, mais especificamente sobre cor de linha e linha/coluna aqui.

Código: Selecionar todos

      nkey := 0
      DO WHILE nkey == 0 .AND. ! oBrowse:Stable
         oBrowse:Stabilize()
         nkey := Inkey()
      ENDDO
      IF nKey == 0
         oBrowse:RefreshCurrent()
         DO WHILE ! oBrowse:Stabilize()
         ENDDO
         oBrowse:ColorRect( { oBrowse:RowPos, 1, oBrowse:RowPos, oBrowse:ColCount }, { 3, 3 } ) // linha está com o cursor
         oBrowse:ColorRect( { oBrowse:RowPos, oBrowse:ColPos, oBrowse:RowPos, oBrowse:ColPos }, { 2, 2 } ) // linha/coluna está com o cursor
         nkey := Inkey(600)
         IF nKey == 0
            KEYBOARD Chr( K_ESC )
         ENDIF
      ENDIF
Só que essa rotina inclui um certo tipo de agilização (if nkey==0), economizando atualizações de tela e deixando o tbrowse mais rápido.
Se usar tudo exatamente igual, vai precisar dos outros blocos em outros lugares (do while ! oBrowse:Stable; oBrowse:Stabilize(); enddo )
É que a atualização de tela do tbrowse também altera o registro atual, então precisa compensar esssa "não atualização".
Senão vai parecer que o tbrowse ficou maluco.... rs...
Vai saber se não foi algo assim que aconteceu no seu tbrowse.

Mudar as cores no tbrowse

Enviado: 07 Ago 2017 08:15
por JoséQuintas
Complemento:
Até pelo mesmo motivo mantenho essas duas rotinas de tbrowse; Fazbrowse() e dbview().
Existe uma pequena diferença na parte de agilizar tbrowse entre elas.
Fazbrowse() é só pra consulta, então dá pra agilizar ao máximo.

Mudar as cores no tbrowse

Enviado: 07 Ago 2017 10:57
por Jairo Maia
Olá José,

A função TBrowse que uso, herdei do GasPRO. Ela tinha várias funções úteis na época e adotei como padrão. Isso foi em 2000, e desde 2002 tenho uma série de alterações que fui implementando várias coisas que ela não contemplava e que são muito usadas hoje (várias delas como você já citou acima, buscas por digitação, melhoria na montagem de relatórios com arquivo relacional (já tinha, mas alterei porque não gostava do original), etc.), então abandonar essa função está praticamente fora de questão, considerando que foi adaptada para usar GTWVG inclusive. O que precisa e com calma é rever todas as alterações, e com cuidado adaptar a recursos mais atuais (Harbour) quando for o caso.

No entanto, hoje voltei a fazer alguns testes com o método ColorRect(). Chego a ficar envergonhado, mas tenho que colocar o lixo na cabeça e dizer: Quando alterei as cores do TBrowse, nunca voltei a fazer testes com CollorRect() com as cores alteradas, não monocromático. No entanto hoje, decidi da forma que você passou:

Código: Selecionar todos

br_w:ColorRect( { br_w:rowPos, 1, br_w:rowPos, br_w:colCount }, { 3, 3 } ) // linha está com o cursor
br_w:ColorRect( { br_w:RowPos, br_w:ColPos, br_w:RowPos, br_w:ColPos }, { 2, 2 } ) // linha/coluna está com o cursor
Ao testar não aconteceu patavina nenhuma.... Porém, então baixei e compilei a ze_setcolor.prg e alterei minha função para:

Código: Selecionar todos

br_w:ColorSpec := SetColorTbrowse()
Bingo!!!

Óbvio, só então percebi que não era porque não funcionava, é que como estou usando monocromático, meu método ColorSpec() estava:

Código: Selecionar todos

br_w:ColorSpec := "W+/N,N/W*,W+/N,W+/N"
Então pode fazer a combinação que quiser, obviamente não terá efeito, a não ser dependendo dela nem o cursor aparece, é tudo monocromático. Realmente fiquei chateado e envergonhado, por não ter percebido isso...

Para efeito de testes, alterei ColorSpec() para:

Código: Selecionar todos

br_w:ColorSpec := "W+/N,GR+/G+,W+/G+,W+/N"
Não sei ainda como ficará no final, é apenas testes, o que vai ficar em produção ainda vou pensar com calma, mas esse foi o efeito:
TBrowse1.Jpg
Valeu...

Mudar as cores no tbrowse

Enviado: 07 Ago 2017 15:50
por JoséQuintas
Vergonha do que? Conseguiu !

Olhe eu aqui neste post, também não consegui na época.
Finalizei com "qualquer dia tento de novo", em 2013.

https://pctoledo.org/forum/viewto ... t=+tbrowse

Mudar as cores no tbrowse

Enviado: 14 Out 2017 17:59
por fladimir
Poderia postar um exemplo de como ficou, eu fiz aki mas vai pintando tudo conforme vou movendo o cursor pra baixo ele ainda permanece as linhas acima pintadas

Mudar as cores no tbrowse

Enviado: 14 Out 2017 21:04
por sygecom
JoséQuintas escreveu:Ficaria melhor em tela GUI?
Sim.
Se me disserem qual LIB GUI aceita browse em multithread abrindo e fechando janelas à vontade, em qualquer ordem, poderei testar.
E de preferência fazendo isso numa janela GTWVG, que é uma janela Windows quase normal... rs
Zé,
Usando telas GUI é bem comum usar varias telas abertas, pode ser da mesma ou telas diferentes, na Hwgui usamos MDI, código de exemplo abaixo:

Código: Selecionar todos

#include "hwgui.ch"

STATIC Thisform

FUNCTION TESTE
LOCAL oDlg_MALA

INIT WINDOW oDlg_MALA MDICHILD VAR Thisform TITLE 'Envio de Mala direta por E-mail' ;
   AT 0,0;
   SIZE GETDESKTOPWIDTH(),GETDESKTOPHEIGHT()-180 ;
   STYLE WS_CAPTION+DS_CENTER +WS_SYSMENU+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+WS_CHILD

ACTIVATE WINDOW oDlg_MALA

RETURN NIL
O anexo anexo.png não se encontra mais disponível