dbedit recall e refresh tela

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

Moderador: Moderadores

lapinhazzz
Usuário Nível 3
Usuário Nível 3
Mensagens: 130
Registrado em: 20 Abr 2009 10:52
Localização: LAGOA

dbedit recall e refresh tela

Mensagem por lapinhazzz »

Boa Noite amigos do Forum,
Gostaria que alguém me ajudasse neste problema.
Aqui vai um trecho do código:

Código: Selecionar todos

/*
 ÚÄ Program ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
 ³   Aplica‡„o: DBEDIT - lista com deleted(). DBF indexado com a condicao   ³
 ³   deleted()                                                              ³
 ³   O que se pretende e que atraves do DBEDIT sempre que na base           ³
 ³   de dados o campo ff=1 e o registo esteja deletado este seja            ³
 ³   recuperado com recall e haja um refresh no ecra                        ³
 ³   Por exemplo: Carrego no SPACE e o campo ff="1"                         ³
 ³                Carrego em enter e o programa "tira" o "1" do ff a todos
                   os registos e faz um ³
 ³                refresh do DBEDIT e mostra a lista dos registos que nao   ³
 ³                estao marcados com "1" tirando aqueles que estao marcados ³
 ³                e mostrando os outros                                       ³
 ³                 No DBEDIT tenho o seguinte:                              ³
 ³                    case l=32                                             ³
 ³                       IF ff="1"                                          ³
 ³                          replace ff with " "                             ³
 ³                       elseif ff=" "                                      ³
 ³                          replace ff with "1"                             ³
 ³                       ENDIF                                              ³
 ³                       X=1                                                ³
 ³                       tecla(26,1)                                        ³
 ³                    endicase                                              ³
 ³                                                                          ³
 ³         Nome: PROBLEMA.PRG                                               ³
 ³        Autor: Carlos Lapa                                                ³
 ³       Vers„o: 2.00                                                       ³
 ³ Data cria‡„o: 05-10-10              Actualizado em   : þ05-10-10         ³
 ³ Hora cria‡„o: 21:54:02              Hora actualiza‡„o: þ21:54:02         ³
 ³   Fich. Make:                                                            ³
 ³  Fich. Exec.:                       Doc.s por: Carlos Lapa               ³
 ³          Copyright:       (c) Carlos Lapa, Inc.                          ³
 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
*/
function mv_mv()
   rot="MVMV"
   priv l
   sele 1
   use vendas inde venda tag vvenda3 to vvendas for deleted()
   OrdSetFocus("vvenda3")
   dbsetorder(3)
   set deleted off
   set filt to recno()>1
   go top
   do whil .t.
      publ v1a[1],v2a[1],v3a[1],v4a
      if indexord()=3
         tit("Vendas (Recupera‡Æo por venda)")
         v1a[1]="strzero(VENDA,5,0)+' '+dtoc(datactual)+' '+utente+' '+proc+' '+hora+' '+letraesc+cursoabv+'    '+origem+tran(total,'@E 999,999.99')+iif(ff=' ',' ',iif(ff='1','þ',' '))"

         v3a[1]="Venda DataACTUAL Utente                Proc    Hora   Esc  Curso  Orig    Total"
         pfs("[SPACE]Marca/Desmarca,[ENTER]Grava,F7ReordenaLista")
      elseif indexord()=4
         tit("Vendas (Recupera‡Æo por utente)")
         v1a[1]="utente+' '+strzero(venda,5,0)+' '+dtoc(datactual)+' '+proc+' '+hora+' '+letraesc+cursoabv+'    '+origem+tran(total,'@E 999,999.99')+iif(ff=' ',' ',iif(ff='1','þ',' '))"

         v3a[1]="Utente               Venda DataACTUAL Proc    Hora    Esc  Curso   Orig    Total"
         pfs("[SPACE]Marca/Desmarca,[ENTER]Grava,F7ReordenaLista")
      endi
      v2a[1]="@"
      v4a=""
      cor(2)
      keyb chr(26)
      dbedit(04,00,22,80,v1a,"fc",v2a,v3a,v4a)
      l=lastkey()
      do case
         case l=27
            replace all ff with " "
            exit
         case l=13
            *  mv_mv()
            mv_gr(1)
            IF vali=.T.
               go top
               do whil !eof()
                  IF ff="1" && se carregar no espaco ff="1" na base de dados
                     && o que indica que esta marcado para recuperar                                 && para recuperar da-se espaco
                     recall
                     dbcommit()
                     replace ff with " "
                  ENDIF
                  skip
               endd
            ENDIF
            inkey(0)
         case l=-6
            mv_ord()                                            // reordena
            if lastkey()=27
               exit
            endif
      endc
   endd
   rele v1a,v2a,v3a,v4a
   rot="MAIN"
return
Obrigado a todos
Agradeco o vosso tempo na resolucao deste problema
xharbour 1.2.0 e bcc55
lapinhazzz
jamazevedo
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 29 Dez 2005 16:50
Localização: Manaus - AM

Re: dbedit recall e refresh tela

Mensagem por jamazevedo »

Usando a classe TBrowseDb() você tem uma instância chamada de RefreshAll().
Eu faço da seguinte forma:

Código: Selecionar todos

oBrowse := TBrowseDb( nLin1 , nCol1 , nLin2 , nCol2 )
oColuna := TbColumnNew( Campo , Picture )
oBrowse:AddColumn( cColuna )
.
.
.
oBrowse:RefreshAll()
.
.
.
A documentação do TBrowse() você encontra em: /xharbour/tests/tbrowse.prg
É isso.

Atenciosamente,

José Airton
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
lapinhazzz
Usuário Nível 3
Usuário Nível 3
Mensagens: 130
Registrado em: 20 Abr 2009 10:52
Localização: LAGOA

Re: dbedit recall e refresh tela

Mensagem por lapinhazzz »

Bom Dia,
Eu não estou muito à vontade com tbrowse.
Poderá me indicar como faço com o dbedit.
é que todo o programa está feito com dbedit
Sei que quando o dbedit retorna 2 faz o refresh.
Mas neste caso não está a fazer.
Alguém me ajude.
A base de dados esta indexada com index on venda tag vvenda3 to vvenda for deleted()
obrigado
lapinhazzz
Responder