Página 1 de 1
Exibir dados na tela do FreeDOS com harbour ...
Enviado: 08 Mai 2022 20:17
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
Exibir dados na tela do FreeDOS com harbour ...
Enviado: 08 Mai 2022 23:37
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.
Exibir dados na tela do FreeDOS com harbour ...[Resolvido]
Enviado: 09 Mai 2022 20:01
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
Exibir dados na tela do FreeDOS com harbour ...
Enviado: 10 Mai 2022 00:44
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
Exibir dados na tela do FreeDOS com harbour ...
Enviado: 10 Mai 2022 10:29
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