Clipper On Line • Ver Tópico - Exibir dados na tela do FreeDOS com harbour ...

Exibir dados na tela do FreeDOS com harbour ...

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

Moderador: Moderadores

 

Exibir dados na tela do FreeDOS com harbour ...

Mensagempor arcanjoebc » 08 Mai 2022 20:17

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 ...

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
arcanjoebc
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 54
Data de registro: 23 Dez 2015 22:58
Cidade/Estado: Tramandaí/RS
Curtiu: 1 vez
Mens.Curtidas: 0 vez

Exibir dados na tela do FreeDOS com harbour ...

Mensagempor JoséQuintas » 08 Mai 2022 23:37

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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18128
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

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

Mensagempor arcanjoebc » 09 Mai 2022 20:01

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:

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
arcanjoebc
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 54
Data de registro: 23 Dez 2015 22:58
Cidade/Estado: Tramandaí/RS
Curtiu: 1 vez
Mens.Curtidas: 0 vez

Exibir dados na tela do FreeDOS com harbour ...

Mensagempor alxsts » 10 Mai 2022 00:44

Olá!

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Exibir dados na tela do FreeDOS com harbour ...

Mensagempor vailton » 10 Mai 2022 10:29

... 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
Avatar de usuário

vailton
Colaborador

Colaborador
 
Mensagens: 378
Data de registro: 17 Nov 2005 18:08
Cidade/Estado: Brasil
Curtiu: 2 vezes
Mens.Curtidas: 11 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro