Página 2 de 2

Mudar as cores no tbrowse

Enviado: 15 Out 2017 10:15
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()

Mudar as cores no tbrowse

Enviado: 15 Out 2017 22:47
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.

Mudar as cores no tbrowse

Enviado: 16 Out 2017 02:16
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


Mudar as cores no tbrowse

Enviado: 16 Out 2017 07:37
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)

Mudar as cores no tbrowse

Enviado: 16 Out 2017 12:47
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.

Mudar as cores no tbrowse

Enviado: 24 Jul 2018 16:04
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.