Exibir dados na tela do FreeDOS com harbour ...

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

Moderador: Moderadores

arcanjoebc
Usuário Nível 2
Usuário Nível 2
Mensagens: 63
Registrado em: 23 Dez 2015 23:58
Localização: Tramandaí/RS

Exibir dados na tela do FreeDOS com harbour ...

Mensagem por arcanjoebc »

Abaixo, coloco à disposição uma rotina que fiz no meu aplicativo dentro do FreeDOS no DOSBox do Debian LXDE e a rotina funciona parcialmente, pois deveria mostrar todo o conteúdo do ".DBF", mas mostra somente parte, pois a segunda página não é mostrada na tela. Alguém pode me ajudar com esse pequeno problema???? Aguardo contato ...

Código: Selecionar todos

use usuarios
OrdSetFocus("indnome")

LINHA=0
PAGINA=0
TOT_USU=0
@ 00,00 CLEAR TO 23,79
DO WHILE .NOT. EOF()
   IF LINHA = 0 .OR. LINHA > 59
      PAGINA = PAGINA + 1
      IF PAGINA > 1
         EJECT         
      ENDIF
      @ 01,01 SAY "DESPESAS DO LAR"
      @ 01,67 SAY "PAG"
      @ 01,73 SAY PAGINA PICT "##"
      @ 03,29 SAY "LISTAGEM DE USUARIOS"
      @ 03,67 SAY DATE()
      @ 05,01 SAY REPLICATE("_",76)
      @ 06,01 SAY "CODIGO"
      @ 06,09 SAY "NOME"
      @ 06,41 SAY "DT NASC"
      @ 06,52 SAY "TELEFONE"
      @ 07,01 SAY REPLICATE("_",76)
      LINHA = 8
   ENDIF
   LINHA = LINHA + 1
   @ LINHA, 03 SAY LTRIM(STR(COD))
   @ LINHA, 09 SAY RTRIM(NOME)
   @ LINHA, 41 SAY NASC
   @ LINHA, 52 SAY FONE
   SKIP
ENDDO
LINHA = LINHA + 1
TOT_USU = RECNO()-1 
@ LINHA,01 SAY "TOTAL DE USUARIOS"
@ LINHA,20 SAY TOT_USU
WAIT "Termino da listagem ... tecle <ENTER> ... "
CLOSE ALL
RETURN
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Exibir dados na tela do FreeDOS com harbour ...

Mensagem por JoséQuintas »

EJECT é pra impressora e não pra tela.

Faltou após selecionar o índice, um GOTO TOP, pra posicionar no início.
Talvez uma pausa, ou limpar a tela, antes de começar a próxima página.

Talvez mais interessante usar o Scroll(), e usar LastRec() para quantidade de registros.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
arcanjoebc
Usuário Nível 2
Usuário Nível 2
Mensagens: 63
Registrado em: 23 Dez 2015 23:58
Localização: Tramandaí/RS

Exibir dados na tela do FreeDOS com harbour ...[Resolvido]

Mensagem por arcanjoebc »

JoséQuintas, obrigado pela resposta ... eu não sei como utilizar as funções que mencionastes, procurei um exemplo na Internet, sem êxito. Mas a dica de limpar a tela e fazer uma pausa antes de pular a página, deu certo. O código ficou assim, então:

Código: Selecionar todos

use usuarios exclusive
OrdSetFocus("indnome")
GOTO TOP

LINHA=0
PAGINA=0
TOT_USU=0
@ 00,00 CLEAR TO 23,79
DO WHILE .NOT. EOF()
   IF LINHA = 0 .OR. LINHA > 23
      WAIT "Pressione qualquer tecla para continuar ..."
      PAGINA = PAGINA + 1
      IF PAGINA > 1
         @ 00,00 CLEAR TO 23,79         
      ENDIF
      CLEAR
      @ 01,01 SAY "DESPESAS DO LAR"
      @ 01,67 SAY "PAG"
      @ 01,73 SAY PAGINA PICT "##"
      @ 03,29 SAY "LISTAGEM DE USUARIOS"
      @ 03,67 SAY DATE()
      @ 05,01 SAY REPLICATE("_",76)
      @ 06,01 SAY "CODIGO"
      @ 06,09 SAY "NOME"
      @ 06,41 SAY "DT NASC"
      @ 06,52 SAY "TELEFONE"
      @ 07,01 SAY REPLICATE("_",76)
      LINHA = 8
   ENDIF
   LINHA = LINHA + 1
   @ LINHA, 03 SAY LTRIM(STR(COD))
   @ LINHA, 09 SAY RTRIM(NOME)
   @ LINHA, 41 SAY NASC
   @ LINHA, 52 SAY FONE
   SKIP
ENDDO
LINHA = LINHA + 1
TOT_USU = RECNO()-1 
@ LINHA,01 SAY "TOTAL DE USUARIOS:"
@ LINHA,20 SAY TOT_USU
WAIT "Termino da listagem ... tecle <ENTER> ... "
CLOSE ALL
RETURN
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Exibir dados na tela do FreeDOS com harbour ...

Mensagem por alxsts »

Olá!

Código: Selecionar todos

PROCEDURE Listagem()  // define um nome par a Procedure

   LOCAL LINHA, PAGINA, TOT_USU  // declara as variaveis

   SET DATE BRITISH  // data no formato dd/mm/aaaa
   SET DELETED ON    // ignora os deletados

   USE usuarios exclusive
   OrdSetFocus("indnome")

   GOTO TOP
   
   LINHA   := 999  // inicializa com valor maior que o limite de linhas...
   PAGINA  := 0
   TOT_USU := 0

   //@ 00,00 CLEAR TO 23,79  desnecessario...

   DO WHILE .NOT. EOF()
      //IF LINHA = 0 .OR. LINHA > 23
      IF LINHA > 23  // foi inicializado com 999
         If Pagina > 0  // somente a partir da segunda página 
            WAIT "Pressione qualquer tecla para continuar ..."
         Endif

         @ 00,00 CLEAR TO 23,79

         PAGINA = PAGINA + 1  // poderia ser PAGINA++

         //IF PAGINA > 1
         //   @ 00,00 CLEAR TO 23,79
         //ENDIF
         // CLEAR  desnecessario... nem lembro pra que serve isto...

         @ 01,01 SAY "DESPESAS DO LAR"
         @ 01,67 SAY "PAG " + Str( PAGINA, 99 )
         //@ 01,73 SAY PAGINA PICT "##"
         @ 03,29 SAY "LISTAGEM DE USUARIOS"
         @ 03,67 SAY DATE()
         @ 05,01 SAY REPLICATE("_",76)
         @ 06,01 SAY "CODIGO"
         @ 06,09 SAY "NOME"
         @ 06,41 SAY "DT NASC"
         @ 06,52 SAY "TELEFONE"
         @ 07,01 SAY REPLICATE("_",76)
         LINHA = 8
      ENDIF

      LINHA = LINHA + 1  // Poderia ser Linha++
      @ LINHA, 03 SAY LTRIM(STR(COD))
      @ LINHA, 09 SAY RTRIM(NOME)
      @ LINHA, 41 SAY NASC
      @ LINHA, 52 SAY FONE
      SKIP
   ENDDO

   LINHA = LINHA + 1  // Poderia ser Linha++

   //TOT_USU = RECNO()-1 
   TOT_USU =: LastRec()  // Lastrec() retorna o total de registros da tabela...
   
   @ LINHA,01 SAY "TOTAL DE USUARIOS:"
   @ LINHA,20 SAY TOT_USU
   WAIT "Termino da listagem ... tecle  ... "
   CLOSE ALL
RETURN
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
vailton
Colaborador
Colaborador
Mensagens: 390
Registrado em: 17 Nov 2005 19:08
Localização: Brasil
Contato:

Exibir dados na tela do FreeDOS com harbour ...

Mensagem por vailton »

... eu não sei como utilizar as funções que mencionastes, procurei um exemplo na Internet, sem êxito.
Logo abaixo estou enviando um link para uma cópia do NG em Português com os comandos e funcoes do Clipper 5.
Muita coisa ali funciona também no Clipper 5.3 e no Harbour atual.

Como voce disse que está utilizando emulador, descompacte o arquivo e execute o aplicativo NG.EXE para que ele seja carregado na memória.
Depois é só apertar Shift+F1 a qualquer momento para chamar a tela do NG, indo em OPTIONS > DATABASE voce pode trocar em qual arquivo de ajuda deseja consultar.

Sucesso e bons estudos, espero ter ajudado.

Link para download:
http://kssoftware.com.br/ngport.zip
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"

E-mail/MSN: contato@vailton.com.br
Skype: vailtom
Responder