Exemplo de Tbrowse
Moderador: Moderadores
-
carlosgustavo
- Usuário Nível 1

- Mensagens: 10
- Registrado em: 08 Jul 2010 16:49
- Localização: Santo Antonio do Pinhal
Exemplo de Tbrowse
Tenho um banco de dados chamado clientes com os campos codigo, nome, rg, cpf, cep, cidade, estado, endereco, telefone e email e queria utilizar o tbrowse para exibi-los na tela.
Não faço a minima ideia de como se utiliza o Tbrowse().
Se der, por favor comentem as linhas.
Não faço a minima ideia de como se utiliza o Tbrowse().
Se der, por favor comentem as linhas.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Exemplo de Tbrowse
Carlos, procure usar a opção de busca do fórum, que fica no canto direito superior desta página. Basta digitar no campo busca o que você está procurando e depois clicar no botão Busca. Existe aqui no fórum vários tópicos falando sobre o TBrowse, e muitos com exemplos de código.
Segue abaixo um exemplo que tentei adaptar a estrutura do arquivo DBF que você passou.
Eu não testei, mas acho que vai funcionar sem problemas.
Abraços,
Segue abaixo um exemplo que tentei adaptar a estrutura do arquivo DBF que você passou.
Código: Selecionar todos
#include "inkey.ch"
clear
SET DATE BRITISH
SET CENTURY ON
SET SCOREBOARD OFF
/******************************************
* Voce tem que criar um vetor com a seguinte
* estrutura:
* {{"Nome_do_Campo","Picture","Titulo_da_Coluna"}}
* conforme exemplo abaixo.
******************************************/
PRIV aCampos:={{"codigo","9999","Codigo"},;
{"nome","@!","Nome do Cliente"},;
{"rg","@!","RG"},;
{"cpf","@R 999.999.999-99","CPF"},;
{"cep","@R 99.999-999","Cep"},;
{"cidade","@!","Cidade"},;
{"estado","@!","UF"},;
{"endereco","@!","Endereco"},;
{"telefone","@R (99)9999-9999","Telefone"},;
{"email",REPL("X",30),"E-mail"}}
USE CLIENTES ALIAS CLIENTES NEW //Abrir o arquivo DBF
J_ANELA(2,3,20,76,"B+/BG","N/BG","W/BG"," (CADASTRO DE CLIENTES) ")
BRW_ARQ(2,3,20,76,aCampos)
retu
PROC BRW_ARQ
PARAMETERS brw_ls,brw_cs,brw_li,brw_ci,brw_campos
brw:=TBrowseNew(brw_ls+1,brw_cs+1,brw_li-1,brw_ci-1)
brw:colorspec := "B/BG,R/BG,G/BG,W+/W,N/BG"
brw:headsep:=chr(205)+chr(209)+chr(205)
brw:colsep:=" "+chr(179)+" "
brw:gotopblock({|| dbGoTop()})
brw:gobottomblock({|| dbGoBottom()})
brw:skipblock({|_1| MOV_PTR(_1)})
FOR i_=1 TO LEN(brw_campos)
cp_titu:=brw_campos[i_,3]
cp_masc:=brw_campos[i_,2]
cp_:=brw_campos[i_,1]
brw:addcolumn(tbcolumnnew(cp_titu,&("{||TRAN("+cp_+",["+cp_masc+"])}")))
brw:getcolumn(i_):width := LEN(TRAN(&cp_.,cp_masc))
NEXT
volta_db=.t.
DO WHILE volta_db
SETCOLOR("W+/B")
SET CURSO OFF
DO WHILE !brw:stabilize() .AND. NEXTKEY()=0
ENDD
READINSERT(.f.)
x_ = COL() ; y_ = ROW()
tecl_p=INKEY(0)
carac_ = UPPER(CHR(tecl_p))
SET CURSO ON
brw:dehilite()
DO CASE
CASE tecl_p = K_ESC
volta_db=.f.
CASE tecl_p = K_UP
brw:up()
CASE tecl_p = K_DOWN
brw:down()
CASE tecl_p = K_RIGHT
brw:right()
CASE tecl_p = K_LEFT
brw:left()
CASE tecl_p = K_HOME
brw:home()
CASE tecl_p = K_END
brw:end()
CASE tecl_p = K_PGUP
brw:pageup()
CASE tecl_p = K_PGDN
brw:pagedown()
CASE tecl_p = K_CTRL_PGDN
brw:gobottom()
CASE tecl_p = K_CTRL_PGUP
brw:gotop()
CASE tecl_p = K_CTRL_END
brw:panend()
CASE tecl_p = K_CTRL_HOME
brw:panhome()
CASE tecl_p = K_CTRL_LEFT
brw:panleft()
CASE tecl_p = K_CTRL_RIGHT
brw:panright()
ENDC
ENDD
SET CURSO ON
RETU
FUNC MOV_PTR(a_pular)
LOCAL ja_pulado := 0, chv_
IF a_pular = 0
SKIP 0
ELSE
DO WHILE !EOF() .AND. !BOF() .AND.;
a_pular != ja_pulado
IF a_pular > 0
SKIP
ja_pulado++
ELSE
SKIP -1
ja_pulado--
ENDI
ENDD
IF EOF() .OR. BOF()
IF a_pular > 0
GO BOTTOM
ja_pulado--
ELSE
GO TOP
ja_pulado++
ENDI
ENDI
ENDI
RETU ja_pulado
FUNCTION J_ANELA
PARAMETERS L1,C1,L2,C2,C_OR1,C_OR2,C_OR3,T_ITULO
CORR=SETCOLOR()
SET COLOR TO &C_OR1
@ L1,C1 CLEAR TO L2,C2
@ L1,C1 SAY 'Ú'+REPLICATE(CHR(196),C2-C1-1)+'¿'
SET COLOR TO &C_OR3
@ L1,(80-LEN(T_ITULO))/2 SAY T_ITULO
FOR A=L1+1 TO L2-1
SET COLOR TO &C_OR1
@ A,C1 SAY '³'
SET COLOR TO &C_OR2
@ A,C2 SAY '³'
NEXT A
SET COLOR TO &C_OR2
@ L2,C1 SAY 'À'+REPLICATE(CHR(196),C2-C1-1)+'Ù'
SETCOLOR(CORR)
RETURNAbraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Re: Exemplo de Tbrowse
Aproveitando o tópico...
Tenho uma função no achoice que me dá opção de selecionar um item e deixar ele marcado.. Gostaria de fazer a mesma coisa com o tbrowse... alguem sabe como..?
Eu estou modificando o contas a receber de forma que eu selecione o cliente e ele me mostre todas as "notinhas desse cliente" no achoice... mas alguns clientes tem mais de 110 "notinhas" daí dá um erro no achoice. Acho que deve ter algum limite. Então parti para o Tbrowse. Consegui selecionar condicionalmente as colunas mas uma linha não consigo. A intenção é pressionar a barra de spaço em uma determinada linha e ela ficar marcada de outra cor.. com a coluna consigo fazer mas nao consigo com a linha...
Outra coisa quando crio o tbrowse os dados são carregados para a memória ou a minupalação é feita direta no dbf..
Vlw..
Rubens
Tenho uma função no achoice que me dá opção de selecionar um item e deixar ele marcado.. Gostaria de fazer a mesma coisa com o tbrowse... alguem sabe como..?
Eu estou modificando o contas a receber de forma que eu selecione o cliente e ele me mostre todas as "notinhas desse cliente" no achoice... mas alguns clientes tem mais de 110 "notinhas" daí dá um erro no achoice. Acho que deve ter algum limite. Então parti para o Tbrowse. Consegui selecionar condicionalmente as colunas mas uma linha não consigo. A intenção é pressionar a barra de spaço em uma determinada linha e ela ficar marcada de outra cor.. com a coluna consigo fazer mas nao consigo com a linha...
Outra coisa quando crio o tbrowse os dados são carregados para a memória ou a minupalação é feita direta no dbf..
Vlw..
Rubens
"Eu e minha casa servimos ao Senhor e você
"
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Exemplo de Tbrowse
Rubens, segue em anexo um exemplo do que você pode fazer.
Abraços,
Abraços,
- Anexos
-
brwcor.zip- Exemplo de TBrowse com alteração da cor da linha ao pressionar barra de espaço
- (2.06 KiB) Baixado 774 vezes
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Re: Exemplo de Tbrowse
Toledo...
Resolveu sim o problema que eu tinha... mas agora surgiu outra dúvida...
veja o screen abaixo:

Estou usando o código abaixo dentro do Tbrowse. Gostaria que exibisse a linha inteira quando movimentasse o cursor como está na figura na ultima linha, e quando tivesse algum conta vencida ele mostrasse de cor diferente como está na linha COLUNA:COLORBLOCK:={ || IF( DIASV()>1 ,{8,1},{1,2})}
Mas parece que não aceita duas condições. Sempre fica a ultima condição... daí quando aperta barra de espaço para ficar selecionada, alinha de fundo vermelho não gera a linha inteira. Se mudo a linha oTAB:GETCOLUMN(I):COLORBLOCK:={ || IF( CR->MARCADO,{6,1},{1,2})} para depois condição de vencida... a condição de vencida não aparece mais... tem como colocar essas duas condições ou só aceita uma mesmo.. ?
Vlw..
Rubens
Resolveu sim o problema que eu tinha... mas agora surgiu outra dúvida...
veja o screen abaixo:

Estou usando o código abaixo dentro do Tbrowse. Gostaria que exibisse a linha inteira quando movimentasse o cursor como está na figura na ultima linha, e quando tivesse algum conta vencida ele mostrasse de cor diferente como está na linha COLUNA:COLORBLOCK:={ || IF( DIASV()>1 ,{8,1},{1,2})}
Mas parece que não aceita duas condições. Sempre fica a ultima condição... daí quando aperta barra de espaço para ficar selecionada, alinha de fundo vermelho não gera a linha inteira. Se mudo a linha oTAB:GETCOLUMN(I):COLORBLOCK:={ || IF( CR->MARCADO,{6,1},{1,2})} para depois condição de vencida... a condição de vencida não aparece mais... tem como colocar essas duas condições ou só aceita uma mesmo.. ?
Vlw..
Rubens
Código: Selecionar todos
oTab:addColumn( oCol )
oTAB:GETCOLUMN(I):COLORBLOCK:={ || IF( CR->MARCADO,{6,1},{1,2})}
IF I=4
COLUNA=oTAB:GETCOLUMN(I)
COLUNA:COLORBLOCK:={ || IF( DIASV()>1 ,{8,1},{1,2})}
ENDIF"Eu e minha casa servimos ao Senhor e você
"
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Re: Exemplo de Tbrowse
Rubens, tente o seguinte:
Abraços,
Código: Selecionar todos
oTab:addColumn( oCol )
oTAB:GETCOLUMN(I):COLORBLOCK:={ || IF( CR->MARCADO,{6,1},{1,2})}
IF I=4
COLUNA=oTAB:GETCOLUMN(I)
COLUNA:COLORBLOCK:={||IF(DIASV()>1,IF(CR->MARCADO, {6,1},{8,1}),IF(CR->MARCADO,{6,1},{1,2}))}
ENDIFToledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Re: Exemplo de Tbrowse
Exato...
Funcionou redondinho...
Vlw... Toledo.
Obrigado....
Rubens
Funcionou redondinho...
Vlw... Toledo.
Obrigado....
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Re: Exemplo de Tbrowse
Vários colegas expõe suas dúvidas a respeito do TBrowse.
Eu já vou colocar uma dúvida maior ainda.
Para que serve mesmo o TBrowse
Há anos programo em Clipper, desde o Summer 87, e, francamente nada vi até hoje que o Tbrowse acrescentasse aos meus sistemas que o DbEdit(), Achoice() ou o próprio Browse(), nativos do Clipper não fizessem.
Inclusive quando habilito essas funções nos sistemas, o faço num tópico de verificação geral de arquivos, aconselhando o máximo de cuidado pois alterações ou exclusões ficam por conta e risco do cliente, tanto que só permito aos principais operadores do sistema o acesso aos bancos de dados.
Permito o máximo de verificações, filtrando campos, colocando inclusive todos eles como índices, tudo isso feito, quando possível, em uma cópia do arquivo. Enquanto isso o arquivo principal continua disponível a todo o sistema.
No TBrowse você precisa ter acesso exclusivo ao arquivo, não é ?
O TBrowse se assemelha, para mim, ao recurso do Delphi chamado Navigator, onde tem um botão para você ir ao primeiro registro, ao último, avançar, retroceder, que pode funcionar em arquivos muito pequenos mas impraticável em arquivos enormes.
Se alguém usa para valer o Tbrowse informe o que ele faz mais do que ir ao topo, ir ao fundo, isto é, andar como o Navigator do Delphi,colocar cor em linhas, editar campos com a máxima segurança.
Quando eu vejo em um sistema visual o componente Navigator...
Eu já vou colocar uma dúvida maior ainda.
Para que serve mesmo o TBrowse
Há anos programo em Clipper, desde o Summer 87, e, francamente nada vi até hoje que o Tbrowse acrescentasse aos meus sistemas que o DbEdit(), Achoice() ou o próprio Browse(), nativos do Clipper não fizessem.
Inclusive quando habilito essas funções nos sistemas, o faço num tópico de verificação geral de arquivos, aconselhando o máximo de cuidado pois alterações ou exclusões ficam por conta e risco do cliente, tanto que só permito aos principais operadores do sistema o acesso aos bancos de dados.
Permito o máximo de verificações, filtrando campos, colocando inclusive todos eles como índices, tudo isso feito, quando possível, em uma cópia do arquivo. Enquanto isso o arquivo principal continua disponível a todo o sistema.
No TBrowse você precisa ter acesso exclusivo ao arquivo, não é ?
O TBrowse se assemelha, para mim, ao recurso do Delphi chamado Navigator, onde tem um botão para você ir ao primeiro registro, ao último, avançar, retroceder, que pode funcionar em arquivos muito pequenos mas impraticável em arquivos enormes.
Se alguém usa para valer o Tbrowse informe o que ele faz mais do que ir ao topo, ir ao fundo, isto é, andar como o Navigator do Delphi,colocar cor em linhas, editar campos com a máxima segurança.
Quando eu vejo em um sistema visual o componente Navigator...
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Re: Exemplo de Tbrowse
Acho que uma das vantagens do TBrowse é quando existe um banco de dados muito grande e vc necessita de que ele mostre em mode browser
somente dados que correspondem a uma condição especifica.
Um exemplo que ocorreu comigo:
Tinha um cliente (ortodontista) que possuia seis cadeiras em seu consultorio, então haveria um dbf com o codigo do doutor, seis campos de cadeiras dividadas em 30 em 30 minutos de atendimento 6 dias por semana. Ele queria gerar a agenda de dois em dois anos....e quando
entrasse em um dia aparecesse as cadeiras (com seus agendamentos) divididas de 30 em 30 minutos.
O dbf ficou com ums 400 mil registros....nem pensar em usar filtro e remontar em temporarios, pois o cliente queria que se apertasse a tecla
pgdown ele automaticamente pulasse para outro dia, sempre em modeo browser....
Foi a unica vez que o Tbrowswe salvou meu couro, ficou realmente muito rapido, sendo que o cliente usou este programa por quinze anos até
que se aposentou.
Abraços =)
somente dados que correspondem a uma condição especifica.
Um exemplo que ocorreu comigo:
Tinha um cliente (ortodontista) que possuia seis cadeiras em seu consultorio, então haveria um dbf com o codigo do doutor, seis campos de cadeiras dividadas em 30 em 30 minutos de atendimento 6 dias por semana. Ele queria gerar a agenda de dois em dois anos....e quando
entrasse em um dia aparecesse as cadeiras (com seus agendamentos) divididas de 30 em 30 minutos.
O dbf ficou com ums 400 mil registros....nem pensar em usar filtro e remontar em temporarios, pois o cliente queria que se apertasse a tecla
pgdown ele automaticamente pulasse para outro dia, sempre em modeo browser....
Foi a unica vez que o Tbrowswe salvou meu couro, ficou realmente muito rapido, sendo que o cliente usou este programa por quinze anos até
que se aposentou.
Abraços =)
mixsistemas@gmail.com
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Exemplo de Tbrowse
Olá!
Veja:
Veja:
Código: Selecionar todos
// quantidade de colunas a congelar (travar), contando da esquerda para a direita
Local nToColsToFreeze := 2
oTbrowse:freeze := nToColsToFreeze []´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Exemplo de Tbrowse
Use a variável freeze do objeto TBrowse:
nColuna é o número da coluna que você quer travar.
Abraços,
Código: Selecionar todos
brw:freeze := nColunaAbraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao

