TBROWSE

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

leonardo,ae esta meu e-mail .

Ederxc@itelefonica.com.br
Tah na conta.......

Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

por que vc se referiu a pasta do brose como "trem "e quem fala assim para as coisas é mineiro , ja morei em minas um tempo hehehehe apenas por isso eu perguntei nada mais hehehe té+++
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Poi é... eu estava boiando... mas depois de ter lido teu email Ederxc, percebí a razão dessa expressão.

Puxa ! Como é rico o brasil... reiqueza natural, culturas diferentes... povo muito variado. Legal, isto deixa qualquer gringo de boca aberta.

:)Pos :* -:]
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

voltando ao assunto

Mensagem por ederxc »

Código: Selecionar todos


Fala galera , fiz este pequeno browse para ir pegando a moral mas ñ estou conseguindo usar as teclas de navegação dentro dele , simplesmente o codigo trava no INKEY(0)



cls
set date brit
set century on
set epoc to 2000
set score off
#include 'inkey.ch'
@00,00 to 2,79
@1,5 say [Exemplo de uso TBrowse]
@03,00 to 23,79

use fornec
use fornec index xforn
omybrowser:= tbrowsedb(04,01,22,78)
ocolumn1:= tbcolumnNew('codigo fornecedor',{||fornec->cod})
ocolumn2:= tbcolumnNew('Nome Fornecedor'  ,{||fornec->forn})
ocolumn3:= tbcolumnNew('CNPJ'             ,{||fornec->cnpj})
ocolumn4:= tbcolumnNew('inscri‡ao est.'   ,{||fornec->ie})
ocolumn5:= tbcolumnNew('ENDERE€O'         ,{||fornec->end})

omybrowser:addcolumn(ocolumn1)
omybrowser:addcolumn(ocolumn2)
omybrowser:addcolumn(ocolumn3)
omybrowser:addcolumn(ocolumn4)
omybrowser:addcolumn(ocolumn5)
do while .t.
   do while(!omybrowser:stabilize())
      nKey:= inkey()
      if nkey!=0
         exit
      endif
   enddo
   if omybrowser:stable
      inkey(0)
   endif
   if nkey == K_UP
      oMyBrowser:up()
   elseif nkey == K_DOWN
      oMybrowser:down()
   elseif nkey == K_LEFT
      oMybrowser:left()
   elseif nkey == K_RIGHT
      oMybrowser:right()
   elseif nkey == K_HOME
      oMybrowser:home()
   elseif nkey == K_END
      oMybrowser:end()
   elseif nkey == K_PGUP
      oMybrowser:pageUp()
   elseif nkey == K_PGDN
      oMybrowser:pageDown()
   elseif nkey == K_CTRL_PGUP
      oMybrowser:goTop()
   elseif nkey == K_CTRL_PGDN
      oMybrowser:goBottom()
   elseif nkey == K_CTRL_HOME
      oMybrowser:panHome()
   elseif nkey == K_CTRL_END
      oMybrowser:panEnd()
   elseif nkey == K_CTRL_LEFT
      oMybrowser:panLeft()
   elseif nkey == K_CTRL_RIGHT
      oMybrowser:panRight()
   elseif nkey == K_ESC
      exit
   endif
enddo
dbcloseall()
cls
return
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Código: Selecionar todos

cls
set date brit
set century on
set epoc to 2000
set score off
#include 'inkey.ch'
@00,00 to 2,79
@1,5 say [Exemplo de uso TBrowse]
@03,00 to 23,79

use fornec
use fornec index xforn
omybrowser:= tbrowsedb(04,01,22,78)
ocolumn1:= tbcolumnNew('codigo fornecedor',{||fornec->cod})
ocolumn2:= tbcolumnNew('Nome Fornecedor'  ,{||fornec->forn})
ocolumn3:= tbcolumnNew('CNPJ'             ,{||fornec->cnpj})
ocolumn4:= tbcolumnNew('inscri‡ao est.'   ,{||fornec->ie})
ocolumn5:= tbcolumnNew('ENDERE€O'         ,{||fornec->end})

omybrowser:addcolumn(ocolumn1)
omybrowser:addcolumn(ocolumn2)
omybrowser:addcolumn(ocolumn3)
omybrowser:addcolumn(ocolumn4)
omybrowser:addcolumn(ocolumn5)
do while .t.
   do while !omybrowser:stabilize()
   enddo
   nKey:= inkey(0)

   if nkey == K_UP
      oMyBrowser:up()
   elseif nkey == K_DOWN
      oMybrowser:down()
   elseif nkey == K_LEFT
      oMybrowser:left()
   elseif nkey == K_RIGHT
      oMybrowser:right()
   elseif nkey == K_HOME
      oMybrowser:home()
   elseif nkey == K_END
      oMybrowser:end()
   elseif nkey == K_PGUP
      oMybrowser:pageUp()
   elseif nkey == K_PGDN
      oMybrowser:pageDown()
   elseif nkey == K_CTRL_PGUP
      oMybrowser:goTop()
   elseif nkey == K_CTRL_PGDN
      oMybrowser:goBottom()
   elseif nkey == K_CTRL_HOME
      oMybrowser:panHome()
   elseif nkey == K_CTRL_END
      oMybrowser:panEnd()
   elseif nkey == K_CTRL_LEFT
      oMybrowser:panLeft()
   elseif nkey == K_CTRL_RIGHT
      oMybrowser:panRight()
   elseif nkey == K_ESC
      exit
   endif
enddo
dbcloseall()
cls
return
De uma olhada na alteração que fiz no seu codigo.....teste e veja se ajuda...

Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Ae sim Leonardo , Caiu como uma luva VLW !
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Outro exemplo que achei bem prático é neste, dê uma olhada:
https://pctoledo.org/download/cop ... t&deonde=2

Vale a pena sempre dar uma olhadinha no Downloads...

um clip-abraço :)Pos
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

:)Pos Valeu mais uma vez Paulo





To de sacanagem Sr. Pablo Cezar :)Pos -:] :P
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Que bom que você gostou. Eu também gostei e os créditos são todos daqui do FORUM.

Quando ví outra vez o nome de PAULO... bem pensei putssss parece que eu falo chinês.... hihihihi

Mas não fique tanto de sacanagem... que no meu segundo nome você também ERROU !!.....

Um clip-abraço CESARIANO... hehehe :)Pos
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Deixando de sacanagem por um minuto ....

Pablo Ce"S"ar , Como eu poderia muda a cor apenas do titulo do TbrowserDB()

Simples né , mas ñ to conseguindo :? outra coisa poderia me dar um exemplo de como congelar a primeira coluna

seria alguma coisa assim ? Ex:

oMytbrowser:freeze(oColumn1) :)Pos :(Neg
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Ederxc,

Todos temos formas diferentes de fazer o TBROWSE e o exemplo que vou dar espero que você consiga reconciliar com o TBROWSE seu. Do contrário seria conveniente que você o postasse aqui. Mas de todas formas aqui vai o meu:

Deve declarar as cores que irá utilizar, logo no começo da função que faz TBROWSE:

Código: Selecionar todos

b:colorSpec := "09/01","00/07","15/04","15/01","00/03","00/07"
Você pode colocar uma condição para exibir uma cor quando é menor de 18 anos e outra quando é maior, assim por exemplo:

Código: Selecionar todos

column := TBColumnNew( "Data Nascimento", { || TRANSFORM(DTANAS,"@D") } )
column:colorblock({ || IIF( (DTANAS-DATE())<18, {5,2}, {1,2}) })
b:addColumn(column)
Logo após da exibição dos campos que você deseja exibir, você deve declarar o número da coluna que deseja congelar, fazendo desta forma:

Código: Selecionar todos

b:freeze := 1
while (lMore)
      if ( b:colPos <= b:freeze )
         b:colPos := b:freeze + 1
      endif
      while ( !b:stabilize() )
	    nKey := InKey()
	    if ( nKey != 0 )
               exit
	    endif
      enddo
      if ( b:stable )
	 if ( b:hitTop .or. b:hitBottom )
	    Tone(125, 0)
	 endif

... e assim por diante
Espero ter te esclarecido a suas dúvidas ou de como colocar no seu fontes, coloque o seu código-fonte que eu explico.

Um clip-abraço :)Pos
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

Pala Pablo , então com a função FREEZE foi facil depois que postei dei uma pequisada no google e ja achei como fazer funcionar ... agora quanto a questão das cores ñ estou tendo sucesso , tbm estou com outros dois problemas

1º e mais importante: Gostaria de quando chamar o Tbrowse ñ mostrar todo o conteudo do DBF apenas o que eu especificar , caso faça uma pesquisa de Nota fiscal por tal data ,teria que aparecer no browse apenas as notas fiscais referente a minha pesuisa ,"foi por isso que troquei o dbedit po tbrowse"


2º coloquei para quando teclar enter retonar os valores para a chave de pesquisa , mas ñ estou conseguindo fazer o retorno corretamente


Código: Selecionar todos

FUNCTION PESQ2()
   RESTSCREEN(00,00,24,80,TELA1)
   SELE C   
   SET ORDER TO 2
   @02,01 SAY 'NOME FORNECEDOR:'          COLOR('GR+/B')
   @02,45 SAY 'DATA EMISAO:'             COLOR('GR+/B')
   @24,09 SAY PADC('PESQUISA NO BANCO DE DADOS',60)COLOR('G+*/B')
   @02,17 GET  VMOSTFORN     PICT '@!'COLOR('B/W')
   @02,57 GET  VDATEMI PICT '99/99/9999' COLOR('B/W')
   READ
   IF LASTKEY()=27
      DBCLOSEAREA()
      RETURN 
   ENDIF
   setcolor('w+/b')
   VMOSTFORN=ALLTRIM(VMOSTFORN)   
   if DBSEEK(VMOSTFORN)
      VFORN=COD
      SELE D
      SET ORDER TO 2
      GO TOP
      CHAVE=(STR(VFORN,3)+DTOS(VDATEMI))
      IF DBSEEK(CHAVE)
         tabela()  //aqui usava o dbedit 
      else
         go top
         tabela()  //aqui usava o dbedit 
      endif
   ENDIF
return
**************************<Funcao Tabela>***************************************
function tabela()
         #include "inkey.ch"
         setcolor('n/gb')
         @06,03 clear to 20,76
         dispbox(06,03,20,76)
         oMybrowser:=TBrowseDb(07,04,19,75)
         oMybrowser:HeadSep  :=Chr(196)  + Chr(196) + CHr(196)
         oMybrowser:ColSep   :=Space(01) + Chr(179) + Space(01)
         oMybrowser:ColorSpec:='N/GB'
         ocolum1:=tbcolumnnew('NUMERO DA NOTA'     ,{||NF })
         ocolum2:=tbcolumnnew('DATA DE EMISSAO'    ,{||DATEMI})
         ocolum3:=tbcolumnnew('NOME FORNECEDOR'    ,{||MOSTFORN})
         oMybrowser:addcolumn(ocolum1)
         oMybrowser:addcolumn(ocolum2)
         oMybrowser:addcolumn(ocolum3)
         oMybrowser:freeze:=1      
         do while .t.
            do while(! oMybrowser:stabilize())
            enddo
            if oMybrowser:stable
               if oMybrowser:hitTop()
                  @20,60 say" INICIO " color('r/gb')
               Elseif oMybrowser:hitBottom()
                  @20,60 say" FIM " color('R/gb')
               else
                  @20,60 say "ÄÄÄÄÄÄÄÄÄÄÄÄ"
               endif
            endif
            nkey:=inkey(0)
            if nkey == K_UP
               oMyBrowser:up()
            elseif nkey == K_DOWN
               oMybrowser:down()
            elseif nkey == K_LEFT
               oMybrowser:left()
            elseif nkey == K_RIGHT
               oMybrowser:right()
            elseif nkey == K_HOME
               oMybrowser:home()
            elseif nkey == K_END
               oMybrowser:end()
            elseif nkey == K_PGUP
               oMybrowser:pageUp()
            elseif nkey == K_PGDN
               oMybrowser:pageDown()
            elseif nkey == K_CTRL_PGUP
               oMybrowser:goTop()
            elseif nkey == K_CTRL_PGDN
               oMybrowser:goBottom()
            elseif nkey == K_CTRL_HOME
               oMybrowser:panHome()
            elseif nkey == K_CTRL_END
               oMybrowser:panEnd()
            elseif nkey == K_CTRL_LEFT
               oMybrowser:panLeft()
            elseif nkey == K_CTRL_RIGHT
               oMybrowser:panRight()
            elseif nKey== K_ENTER       // aqui ñ retorna os dados
               vnf:=nf
               vdatemi:=datemi
               return
            elseif nkey == K_ESC
              return 
            endif
        ENDDO
RETURN
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Experimenta fazer TBROWSE com VETORES. Assim não fica pesado, porque eu não aconselho fazer FILTER algum no DBF. Na hora que o usuário for pesquisar as NF por data e tiver a variável data, pegue os registros que atenda a mesma data, mais ou menos assim:

Código: Selecionar todos

SEEK DTOC(VDTA)
DO WHILE DTA_CAMPO=VDTA
     AADD(VETOR,{DTA_CAMPO,NF_CAMPO,DESC_CAMPO}) 
   SKIP
ENDDO
E chame o TBROWSE para vetores. Veja um exemplo: https://pctoledo.org/download/cop ... t&deonde=2

No seu código você fez assim (não sei se funciona o que você fez):

Código: Selecionar todos

         oMybrowser:freeze:=1      
         do while .t. 
            do while(! oMybrowser:stabilize()) 
            enddo 
            if oMybrowser:stable... e assim por diante
Eu faria assim:

freeze:=1
do while .t.
if ( b:colPos <= b:freeze ) // adicionaria aqui
b:colPos := b:freeze + 1
endif

do while(! oMybrowser:stabilize())
enddo
if oMybrowser:stable... e assim por diante
ederxc escreveu:2º coloquei para quando teclar enter retonar os valores para a chave de pesquisa , mas ñ estou conseguindo fazer o retorno corretamente
Talvez você consiga retornando o elemento do vetor selecionado.

Um clip-abraço :)Pos
Editado pela última vez por Pablo César em 23 Mai 2007 14:17, em um total de 2 vezes.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

farei os testes pablo !
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Com o TBROWSE de VETORES, você poderá fazer digamos TODAS as funções que fazia com o TBROWSE com DBF. Eu acho muito conveniente utilizar o de vetores, porque é mais seguro porque pode fazer toda alterações só na memória e depois atualiza no DBF. Pode pesquisar com ASCAN, pode deletar, adicionar novos registros, mas tudo isso tem que fazer algum tratamento também no DBF para o caso que esteja trabalhando em rede. Eu quero dizer, que mesmo que esteja alterando algum registro (mesmo que na memória), acho conveniente dar uma mensagem para usuário dizendo que TAL registro está sendo editado por (fulano de tal), pois senão poderia sobre-escrever alguma alteração feita no mesmo registro por outro usuário.

Puxa, Ederxc... você me deu trabalho desta vez eihnn.... primeiro vetores, depois tbrowse e agora tbrowse com vetores... hehe mas acho que isto te ajudará muito a você e aos outros colegas para levarem em conta em casos similares.

Um clip-abraço :)Pos
Responder