Mudar as cores no tbrowse

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

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Mudar as cores no tbrowse

Mensagem por rubens »

Bom dia...
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
Fladimir...
Não entendi bem o que não deu certo aí...
Aqui uso assim e funciona beleza...

Código: Selecionar todos

oTAB:COLORSPEC:="W/B,B/W,N/W,W/N,R/W,W+/R,W/G,R+/B"
Dentro do while

Código: Selecionar todos

	DO WHILE ( !oTab:stabilize() )
	ENDDO	
   oTab:colorRect({oTab:rowPos, oTab:freeze + 1, oTab:rowPos,oTab:colCount}, {2, 2})
   oTAB:hilite()
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mudar as cores no tbrowse

Mensagem por JoséQuintas »

O segredo é a parte que mostrei, e que também foi mostrada depois.
Primeiro o tbrowse precisa estar estabilizado, o que significa totalmente "desenhado".
E nesse momento, pinta a linha atual.
Se detectar tecla antes disso e mover a posição, o tbrowse não vai saber aonde faltou "redesenhar".

Sygecom
Não veio aviso do seu post, só vi agora.
Vou fazer alguns testes, pra ver se isso vale em multithread.
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
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Mudar as cores no tbrowse

Mensagem por fladimir »

Testei aki Rubens e não deu certo, fica pintando a tela...

Simplifiquei um pequeno exemplo (troque a tabela DBF por qualquer outra sua e altere os 4 campos respectivamente)

Código: Selecionar todos

Procedure tbrwcolor
	Local TelAbcf:=SaveScreen(0,0,24,79), AREA:=ALIAS()
	LOCAL oTbr  := TBrowseDB( 03, 01, 21, 78 ), oTbc1, oTbc2, oTbc3, oTBC4
	LOCAL aWst, lExt, nInd, nLin, nCol, nTbrLin, nTbrCol
	Local nKey
	LOCAL aFiles[1]
	LOCAL nPos := 0
   LOCAL Continua 

   set cursor off
	set scoreboard off
	
	use tabela alias tabela shared new
	dbsetindex('tabela')
	oTbc1 := TBColumnNew( "Descricao"      , { || (left(alltrim(Tabela->MED_DES),19) + " " + upper(left(alltrim(Tabela->MED_APR),20))) } )
	oTbc2 := TBColumnNew( "Laboratorio"    , { || left(alltrim(Tabela->LAB_nom),12)   } )
	oTbc3 := TBColumnNew( "Principio Ativo", { || left(Tabela->Med_princi,25) } )
	oTBC4 := TBColumnNew( "Pre‡o Ven"      , { || If((Tabela->MED_fra17>0),transform(Tabela->Med_fra17,"@E 99,999.99"),transform(Tabela->Med_PCO17,"@E 99,999.99")) } )

	oTbc1:Width := 35

	oTbr:colSep    := " ³ "
	oTbr:headSep   := "Ä"
	
	oTbr:addColumn( oTbc1 )
	oTbr:addColumn( oTbc2 )
	oTbr:addColumn( oTbc3 )
	oTbr:addColumn( oTBC4 )
	oTbr:Freeze    := 2
	
	@0,0 clear to 24,79
	Abrebox(00,00,24,79,frame2, vcn,,vcr, .T.)
	lExt := .F.
	oTbr:COLORSPEC:="W/B,B/W,N/W,W/N,R/W,W+/R,W/G,R+/B" // Sugerido Rubens
	Continua=" "
	WHILE !lExt
	   WHILE !oTbr:stabilize() ; END
      nKey:= inkey(0)
/* Trecho sugerido Rubens */
      oTbr:colorRect( { oTbr:rowPos, oTbr:freeze + 1, oTbr:rowPos, oTbr:colCount }, {2,2})
      oTbr:hilite()
*--      
	   if nKey == K_ESC
	      oTbr:refreshall()
	      oTbr:gotop()  // no arquivo indexado
	      lExt := .T.
	   ElseIf nKey == K_DOWN          ; oTbr:down()
	   ElseIf nKey == K_UP            ; oTbr:up()
	   ElseIf nKey == K_PGDN          ; oTbr:pageDown()
	   ElseIf nKey == K_PGUP          ; oTbr:pageUp()
	   ElseIf nKey == K_CTRL_PGUP     ; oTbr:goTop()
	   ElseIf nKey == K_CTRL_PGDN     ; oTbr:goBottom()
	   ElseIf nKey == K_RIGHT         ; oTbr:right()
	   ElseIf nKey == K_LEFT          ; oTbr:left()
	   ElseIf nKey == K_HOME          ; oTbr:home()
	   ElseIf nKey == K_END           ; oTbr:end()
	   ElseIf nKey == K_CTRL_LEFT     ; oTbr:panLeft()
	   ElseIf nKey == K_CTRL_RIGHT    ; oTbr:panRight()
	   ElseIf nKey == K_CTRL_HOME     ; oTbr:panHome()
	   ElseIf nKey == K_CTRL_END      ; oTbr:panEnd()
	 Endif
	END
	FechaArea('Tabela')
	DBSELECTAREA( SELECT( AREA ) )
	RestScreen(s_geral,TelAbcf)
Return

Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Mudar as cores no tbrowse

Mensagem por Jairo Maia »

Olá Fladimir,

Altere essa parte que está assim:

Código: Selecionar todos

WHILE !oTbr:stabilize() ; END
nKey:= inkey(0)
Desta forma e veja oque acontece:

Código: Selecionar todos

WHILE !oTbr:stabilize() ; END
oTbr:refreshall()
nKey:= inkey(0)
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Mudar as cores no tbrowse

Mensagem por fladimir »

Fiz o seguinte... no trecho abaixo:

Código: Selecionar todos

WHILE !oTbr:stabilize() ; END
nKey:= inkey(0)
Alterei para:

Código: Selecionar todos

oTBr:colorrect({oTBr:rowpos(), 1, oTBr:rowpos(), oTBr:colcount()}, {1, 1}) //--> Linha acrescida antes

WHILE !oTbr:stabilize() ; END
nKey:= inkey(0)

oTBr:colorrect({oTBr:rowpos(), 1, oTBr:rowpos(), oTBr:colcount()}, {5, 2}) //--> Linha acrescida depois
oTBr:hilite() //--> Linha acrescida depois
Ai deu certo.

Vlw pessoal pela paciência, vou continuar os testes pra ver se aprendo mais.
Abraço.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
GilmarDalantonia
Usuário Nível 1
Usuário Nível 1
Mensagens: 44
Registrado em: 11 Dez 2014 16:42
Localização: Adamantina/SP

Mudar as cores no tbrowse

Mensagem por GilmarDalantonia »

Boa tarde... aproveitando o tópico... sou novo no tbrowse... tenho uma tela com os seguintes campo: Codigo, Descrição, tamanho, quantidade... gostaria de pegar a posição da coluna em que o cursor esta... por exemplo: se eu der um enter na coluna do "Codigo", o sistema ordenaria por codigos, na coluna da "descrição", o sistema ordenaria por descrição... e também como editar o campo para alterar no tbrowse, não tenho idéia de como fazer isso... se alguem puder me ajudar, agradeço muito.
Responder