Duvida com Tbrowse
Moderador: Moderadores
Duvida com Tbrowse
Boa tarde!
Estou montando uma tela de monitoramento de produto e nele estou usando 3 dbfs ao mesmo tempo, para alimentar as colunas tenho uma função que retorna os valores de cada dbfs, esta um pouco lento, mais até ai tudo bem, porque o usuario nao fica rolando muito a tela, mais gostaria de fazer as colunas/celulas mudarem de cor, quando usando os dados de um dbf e simples, mais a minha duvida e a seguinte, como faço para pegar o valor corrente de uma coluna , ja que esta coluna e resultado de uma funcao, nao um registro.
Obrigado.
Frazato
Estou montando uma tela de monitoramento de produto e nele estou usando 3 dbfs ao mesmo tempo, para alimentar as colunas tenho uma função que retorna os valores de cada dbfs, esta um pouco lento, mais até ai tudo bem, porque o usuario nao fica rolando muito a tela, mais gostaria de fazer as colunas/celulas mudarem de cor, quando usando os dados de um dbf e simples, mais a minha duvida e a seguinte, como faço para pegar o valor corrente de uma coluna , ja que esta coluna e resultado de uma funcao, nao um registro.
Obrigado.
Frazato
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Duvida com Tbrowse
Saudações a todos.
Caro Frazato, não conheço [x]Harbour e sim Clipper mas, como é xBase, vou tentar te ajudar:
Para pegar o valor de uma coluna de um TBrowse, voce precisa pegar primeiro o objeto coluna (oTb:getColumn( <posição da coluna>)) e depois executar o block da coluna. Veja um exemplo de código:
Pelo que voce postou, o teu problema não é este e sim exibir uma célula colorida conforme uma regra. Para isso, voce precisará contruir uma função que execute essa regra e devolva um array com um par de números. Essa função deverá ser colocada no colorBlock do objeto coluna desejado e obrigatóriamente deverá retornar um array com um par de números inteiros que apontará para a variável de instancia do TBrowse, chamada colorSpec. Durante a estabilização o TBrowse executará o code block colocado em colorBlock e pintará a célula conforme a referencia ao colorSpec referenciada pelo par de números do array. Abaixo, repito o código já postado acima. Nele ajusto o colorBlock para executar a função SetTBColorSpec( ), para a coluna 3 do TBrowse, a cada estabilização. Note que o code block recebe um parametro x, que é repassado para a função. Esse parametro contem o dado da coluna.
Segue o código da função. Note que ela retorna o array com o par de números que aponta para o colorSpec do TBrowse. Voce não vai entender a minha necessidade na ocasião que construi esse código Espero que sirva como exemplo.
Esses elementos do array apontam para a variável de instância colorSpec do TBrowse. O primeiro elemento (unselected color) define a cor usada para exibir uma célula do TBrowse quando o cursor não está sobre ela. Já o segundo elemento (selected color) é usado para exibir a célula quando o cursor está posicionado nela. Assim, se o colorSpec do TBrowse contiver "B/W,B/W*,N/W,B/W,B/W,R+/W,R*+/W,W+/BG" ), o array {1,2} apontaria para o primeiro e o segundo par de cores, ou seja B/W,B/W*.
Com certeza a resposta ficou longa mas o assunto exige. Espero ter ajudado. Mais dúvidas? Poste.
Caro Frazato, não conheço [x]Harbour e sim Clipper mas, como é xBase, vou tentar te ajudar:
Para pegar o valor de uma coluna de um TBrowse, voce precisa pegar primeiro o objeto coluna (oTb:getColumn( <posição da coluna>)) e depois executar o block da coluna. Veja um exemplo de código:
Código: Selecionar todos
// cria TBrowse
oTb := TBrowseNew( 0, 0, MaxRow(), MaxCol() )
// adiciona algumas colunas
oTb:addColumn(TBColumnNew( "Placa", FieldBlock( "VEICULO->IDPLACA" ) ) )
oTb:addColumn(TBColumnNew( "Marca", { || Left( VEICULO->NMMARCA, 15 ) } ) )
oTb:addColumn(TBColumnNew( "Cor",{ || VEICULO->CDCOR } ) )
// estabelece a largura da coluna Cor
oTb:getColumn(3):width := 9
oTb:addColumn(TBColumnNew( "Usu rio", { || PadR( Left( VEICULO->CDUSUINC, 3 ), 4 ) } ) )
oTb:addColumn(TBColumnNew( "Status", { || If( VEICULO->FGATIVO == "A", "Ativo", If( VEICULO->FGATIVO == "I", "Inativo", "" ) ) } ) )
// estabelece a largura do campo Status
oTb:getColumn(5):width := 7
oTb:gobottomblock := {||dbgobottom()}
oTb:gotopblock := {||dbgotop()}
oTb:skipblock := {|n|dskip(n)}
oTb:headSep := DEF_HSEP
oTb:colSep := DEF_CSEP
oTb:footSep := DEF_FSEP
oTb:colorSpec := SetTBColorSpec( oTb, 1 )
// ajusta a coluna de cor para refletir a cor do veiculo
oTb:getColumn(3):colorBlock := { |x| SetTBColorSpec( oTb, 2, x ) }
// executa estabilização
oTb:forceStable()
// obtem o objeto coluna onde o TBrowse estiver posicionado
oCol := oTb:getColumn(oTb:colPos)
// obtem o valor da célula (dados) onde o TBrowse estiver posicionado
xVar := Eval(oCol:block)
Código: Selecionar todos
// ajusta a coluna de cor para refletir a cor do veiculo
oTb:getColumn(3):colorBlock := { |x| SetTBColorSpec( oTb, 2, x ) }
Código: Selecionar todos
STATIC FUNCTION SetTBColorSpec( oTb, nMode, cColorName )
STATIC nOffSet, aColorArray
LOCAL aRet, nPos, cColorSpec
IF PCount() > 0
IF nMode == 1
// Na primeira chamada, configura a especificacao de cor do TBrowse
IF nOffSet == NIL
nOffSet := 0
cColorSpec := oTb:colorSpec
// conta quantas cores existem no colorspec padrao do Tbrowse (SetColor() atual
// por default ou outro valor atribuido pelo programa)
WHILE ! Empty( cColorSpec )
nPos := At( ",", cColorSpec )
IF nPos > 0
nOffSet++
cColorSpec := SubStr( cColorSpec, nPos + 1 )
ELSE
IF ! Empty( cColorSpec )
nOffSet++
cColorSpec := ""
ENDIF
ENDIF
ENDDO
ENDIF
cColorSpec := oTb:colorSpec
// inicializa array com as cores padrao, para
// pesquisa em cada estabilizacao do TBrowse
aColorArray := { { "Preta" , "W+/N", "N/B" } , ;
{ "Cinza" , "N/W", "W/B" } , ;
{ "Branca" , "N/W*", "W+/B" } , ;
{ "Ciano" , "N/BG*", "BG+/B" } , ;
{ "Verde" , "N/G*", "G+/B" } , ;
{ "Azul" , "W+/B*", "B+/B*" } , ;
{ "Amarela" , "N/GR*", "GR+/B" } , ;
{ "Laranja" , "W+/R*", "R+/B" } , ;
{ "Vermelha", "W+/R", "R/B" } , ;
{ "Marrom" , "W+/GR", "GR/B" } , ;
{ "Lilas" , "N/RB*", "RB+/B" } , ;
{ "Roxa" , "W+/RB", "RB/B" } ;
}
// acrescenta as cores padrao no colorspec original
AEval( aColorArray, { |e| cColorSpec += "," + e[2] } )
// atualiza a colorspec do TBrowse
oTb:colorSpec := cColorSpec
ELSE
// na estabilizacao ajusta a cor da coluna conforme a cor
// armazenada no registro do veículo
nPos := AScan( aColorArray, { |e| e[1] == RTrim( cColorName ) } )
IF nPos > 0
// monta um array para retorno e execução pelo oTb:getColumn(3):colorBlock,
// com um par de cores ( uma cor encontrada na tabela de cores, para cor standard
// e outra cor para enhanced )
// acrescido de nOffSet (quantidade de cores que ja existiam)
aRet := { nOffSet + nPos, 2 }
ELSE
aRet := { 1, 2 }
ENDIF
ENDIF
ELSE
// libera memoria
nOffSet := NIL
aColorArray := NIL
ENDIF
RETURN aRet
//------------------------------------------------------------------------------
Com certeza a resposta ficou longa mas o assunto exige. Espero ter ajudado. Mais dúvidas? Poste.
Editado pela última vez por alxsts em 06 Ago 2009 18:35, em um total de 1 vez.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
alxsts
Muito legal essa postagem... Esclareceu muito sobre o tbrowse.
Tu sabe como faz pro mouse ficar ativo , em termos de rolar as telas ou retornar um código no click do botão ?...
Tu sabe como faz pro mouse ficar ativo , em termos de rolar as telas ou retornar um código no click do botão ?...
lugab
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Duvida com Tbrowse
Olá Lugab,
usei muito uma lib chamada SuperLib e dá pra fazer o que voce quer, facilmente. Ela tem um manipulador de eventos que controla teclado e mouse. Atualmente é freeware e vem com os fontes e NG.
Pode baixar em http://www.the-oasis.net/ftpmaster.php3 ... ftplib.htm (o arquivo é o Supfree.zip)
Vá estudando. Se precisar de um exemplo poderemos fazer.
usei muito uma lib chamada SuperLib e dá pra fazer o que voce quer, facilmente. Ela tem um manipulador de eventos que controla teclado e mouse. Atualmente é freeware e vem com os fontes e NG.
Pode baixar em http://www.the-oasis.net/ftpmaster.php3 ... ftplib.htm (o arquivo é o Supfree.zip)
Vá estudando. Se precisar de um exemplo poderemos fazer.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Re: Duvida com Tbrowse
Sim!
Tenho o uso do Mouse em meu tBrowse mais estou usando a Gtwvw, caso queira posso lhe enviar uma tela das que utilizo.
Fiz usando os exemplos do Manoel Angeiras.
[img]C:\Documents%20and%20Settings\Frazato\Meus%20documentos\Minhas%20imagens\ManagerRepositor.jpg[/img]
Rs.. nao consigo anexar a imagem da Tela..
Frazato
Tenho o uso do Mouse em meu tBrowse mais estou usando a Gtwvw, caso queira posso lhe enviar uma tela das que utilizo.
Fiz usando os exemplos do Manoel Angeiras.
[img]C:\Documents%20and%20Settings\Frazato\Meus%20documentos\Minhas%20imagens\ManagerRepositor.jpg[/img]
Rs.. nao consigo anexar a imagem da Tela..
Frazato
- Anexos
-
reposito.txt- (33.84 KiB) Baixado 215 vezes
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Duvida com Tbrowse
Olá amigos,
infelizmente, a lib que mencionei é para Clipper, 16 bits... Mas não deixe de postar suas dúvidas. Certamente os colegas do Forum ajudarão.Caro Frazato, não conheço [x]Harbour e sim Clipper mas, como é xBase, vou tentar te ajudar:
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
Re: Duvida com Tbrowse
Frazato, Queria ver o fonte do seu código tbrowse em que o mouse funciona..
O meu fonte tbrowse, eu copiei daqui mesmo do fórum, mas o mouse não funciona nele...
To precisando pra cacilda dessa rotina !!
(Alxsts, pena q a lib é só pra 16bits, mas.......valeu a intenção)
O meu fonte tbrowse, eu copiei daqui mesmo do fórum, mas o mouse não funciona nele...
To precisando pra cacilda dessa rotina !!
(Alxsts, pena q a lib é só pra 16bits, mas.......valeu a intenção)
lugab
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Duvida com Tbrowse
Saudações a todos, neste dia dos pais.
Os fontes, em sua maioria, são escritos em Clipper e, até aí, tudo bem, é só compilar em xHb. Existem algumas funções em C e Assember. Pergunto aos entendidos em C e Assembler: Seria possível converter isso?...Atualmente é freeware e vem com os fontes e NG.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Duvida com Tbrowse
Olá a Todos,
A LIB SUPERLIB já funciona com o Harbour do SVN. Econtra-se em: \harbour\examples\superlib
Para quem não acompanha o Harbour e quiser testar, posso enviar o Harbour compilado para BCC55,BCC58,BCC60,MINGW ou MSVC. É só para testar mesmo, mas para quem quiser usar em produção é por conta e risco, e já estou usando com MSVC. Mas cada um sabe o que é melhor para si. Posso colocar em 4shared.com da vida se quiserem.
A LIB SUPERLIB já funciona com o Harbour do SVN. Econtra-se em: \harbour\examples\superlib
Para quem não acompanha o Harbour e quiser testar, posso enviar o Harbour compilado para BCC55,BCC58,BCC60,MINGW ou MSVC. É só para testar mesmo, mas para quem quiser usar em produção é por conta e risco, e já estou usando com MSVC. Mas cada um sabe o que é melhor para si. Posso colocar em 4shared.com da vida se quiserem.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: Duvida com Tbrowse
Eu to precisando é é exibir na tela um arquivo .TXT (de 24lin X 80col), em tela cheia, usando o Trbowse.
Durante a exibição, qdo o "cabra" clicar no mouse ou apertar algum tecla (que não seja o "ESC" ), chamarei a minha rotina de seleção de impressoras. Se o cabvra clicar ESC, eu simplesmente abandono a rotina
Alguém aqui tem uma rotina pronta pra eu compilar junto com meus fontes no Xharbour e a deseja compartilhar ?
Grato,
Gabriel
Durante a exibição, qdo o "cabra" clicar no mouse ou apertar algum tecla (que não seja o "ESC" ), chamarei a minha rotina de seleção de impressoras. Se o cabvra clicar ESC, eu simplesmente abandono a rotina
Alguém aqui tem uma rotina pronta pra eu compilar junto com meus fontes no Xharbour e a deseja compartilhar ?
Grato,
Gabriel
lugab
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Duvida com Tbrowse
Olá!
Pode-se verificar, através do recurso de busca deste fórum, que o tema já foi discutido recentemente.
Veja este tópico que trata o assunto e remete o leitor a outro tópico que faz o mesmo, apresentando o código fonte de rotinas publicadas em um livro do Stephen J. Straley. Já usei estas rotinas em Clipper e funcionam muito bem.
Pode-se verificar, através do recurso de busca deste fórum, que o tema já foi discutido recentemente.
Veja este tópico que trata o assunto e remete o leitor a outro tópico que faz o mesmo, apresentando o código fonte de rotinas publicadas em um livro do Stephen J. Straley. Já usei estas rotinas em Clipper e funcionam muito bem.
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Duvida com Tbrowse
Olá Gabriel,
Você já está usando o TBROWSE() para visualizar o TXT ? se tiver vai ficar fácil de lhe mostrar como proceder, mas se não tiver vamos primeiro ver a primeira etapa de visualizar, depois mandar para a impressora a visualização é mamão com açúcar.
Você já está usando o TBROWSE() para visualizar o TXT ? se tiver vai ficar fácil de lhe mostrar como proceder, mas se não tiver vamos primeiro ver a primeira etapa de visualizar, depois mandar para a impressora a visualização é mamão com açúcar.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: Duvida com Tbrowse
Não, Leonardo. Não fiz nada com Tbrowse ainda.
Acho que visualizar arquivo texto é uma função tão comum que deve ter um monte de rotina já pronta e por isso eu prefiro queixar uma aqui do que reinventar a roda. Eu faço tanta coisa aqui na loja, que nem ânimo eu tenho de me enfronhar no tbrowse..
Falo daquelas funções , tipo as que a gente só passa o nome e a pasta do arquivo .TXT e as coisas acontecem, tanto clicando no mouse, como usando as teclas de função, sabe ?
Prefiro tê-la compilada no meu fonte, do que dar run em wordpad, edit e etc..
E alxsts, eu baixei o fonte daquele post seu e vou experimentar....
Grato a todos,
gabriel
Acho que visualizar arquivo texto é uma função tão comum que deve ter um monte de rotina já pronta e por isso eu prefiro queixar uma aqui do que reinventar a roda. Eu faço tanta coisa aqui na loja, que nem ânimo eu tenho de me enfronhar no tbrowse..
Falo daquelas funções , tipo as que a gente só passa o nome e a pasta do arquivo .TXT e as coisas acontecem, tanto clicando no mouse, como usando as teclas de função, sabe ?
Prefiro tê-la compilada no meu fonte, do que dar run em wordpad, edit e etc..
E alxsts, eu baixei o fonte daquele post seu e vou experimentar....
Grato a todos,
gabriel
lugab
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Duvida com Tbrowse
Certo entendi, esse do link usei por muitos anos sem problemas, unica adaptação seria de mandar a visualização para impressão que não tem essa opção mas é facil de adaptar, se ficar com dificuldades post que vamos resolvendo.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
