Olá a todos, estou com um problema, preciso mostrar uma dica, instrução ou sugestão ao usuário de acordo com a movimentação sobre os GET'S, ou seja, conforme o usuário vai preenchendo o Cadastro, em cada get mostre a forma correta de preencher o GET, já vi algumas funções (DICATST), mas o problema é que muitas vezes a dica dará mais do que 1 linha.
Grato pela atenção, e pelas ajudas que vocês puderem fornecer.
Abraços,
Marcos.
Como mostrar Instrução ao usuário em um Get?
Moderador: Moderadores
Prezado Colega
Você poderia usar a claúsula WHEN para isso, exemplo :
Até logo.
Marcelo
Você poderia usar a claúsula WHEN para isso, exemplo :
Código: Selecionar todos
WPROD=SPACE(40)
@ 02,00 SAY "Produto : " GET WPROD WHEN DICA()
READ
RETURN
FUNCTION DICA()
IF READVAR()=="WPROD"
@ 24,00 say "Digite neste campo o nome do produto !"
ENDIF
RETURN
Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
como colocar mensagem ao usuário em um get.
Marcos, eu uso da maneira abaixo, se te ajudar, inclua em seus programas.
Na abertura da tela onde vão ocorrer os gets, salvo a área das mensagens com
TelaMens:=savescreen(22,0,24,79)
Crie uma procedure chamada MensGet()
entro na rotina de gets,e em cada get faço da seguinte forma:
@ 10,20 get npedido pict '9999' valid(npedido>0) when MensGet('Digite o número do pedido, campo de 4 dígitos')
@ 11,20 get codprod pict '999999' valid(codprod>0) when MensGet('Digite o código do produto, campo de 6 dígitos')
@ 12,20 get prod pict '@!' valid(! empty(prod)) when MensGet('Digite a descrição do produto, campo com 30 caracteres')
read
restscreen(22,0,24,79,TelaMens)
sempre após um read restaure a tela
e assim vai até o final dos gets.
procedure MensGet(texto)
restscreen(22,0,24,79,TelaMens)
setcolor(cores) //->Salva as cores em uso
texto1:=len(texto)
ci:=(80-texto1)/2-1
cf:=ci+texto1+1
set color to w+/rb,n/w //->Escreve branco intenso sobre magenta, e preto sobre branco para video realçado.
@ 22,ci clear to 24,cf
@ 22,ci to 24,cf double
@ 23,ci+1 say texto
setcolor(cores) //->restaura as cores padrão.
Dorival
Na abertura da tela onde vão ocorrer os gets, salvo a área das mensagens com
TelaMens:=savescreen(22,0,24,79)
Crie uma procedure chamada MensGet()
entro na rotina de gets,e em cada get faço da seguinte forma:
@ 10,20 get npedido pict '9999' valid(npedido>0) when MensGet('Digite o número do pedido, campo de 4 dígitos')
@ 11,20 get codprod pict '999999' valid(codprod>0) when MensGet('Digite o código do produto, campo de 6 dígitos')
@ 12,20 get prod pict '@!' valid(! empty(prod)) when MensGet('Digite a descrição do produto, campo com 30 caracteres')
read
restscreen(22,0,24,79,TelaMens)
sempre após um read restaure a tela
e assim vai até o final dos gets.
procedure MensGet(texto)
restscreen(22,0,24,79,TelaMens)
setcolor(cores) //->Salva as cores em uso
texto1:=len(texto)
ci:=(80-texto1)/2-1
cf:=ci+texto1+1
set color to w+/rb,n/w //->Escreve branco intenso sobre magenta, e preto sobre branco para video realçado.
@ 22,ci clear to 24,cf
@ 22,ci to 24,cf double
@ 23,ci+1 say texto
setcolor(cores) //->restaura as cores padrão.
Dorival
outro exemplo :
vcodigo:=0
vnome:=spac(40)
@ 10,10 say "Codigo: " get vcodigo pict"999";
when limpa() .and. msg(" Digite o codigo do cliente",maxrow())
@ 12,10 say "Nome : " get vnome pict"@!x";
when limpa() .and. msg("Digite o nome do cliente",maxrow()-1);
.and. msg("por favor nao acentue",maxrow())
read
retu nil
//////////////
func msg(mensagem,linha)
@ linha,00 say padc(mensagem,maxcol())
retu .t.
///////////////
funct limpa
@ maxrow()-1,00 clear to maxrow()
retu .t.
vcodigo:=0
vnome:=spac(40)
@ 10,10 say "Codigo: " get vcodigo pict"999";
when limpa() .and. msg(" Digite o codigo do cliente",maxrow())
@ 12,10 say "Nome : " get vnome pict"@!x";
when limpa() .and. msg("Digite o nome do cliente",maxrow()-1);
.and. msg("por favor nao acentue",maxrow())
read
retu nil
//////////////
func msg(mensagem,linha)
@ linha,00 say padc(mensagem,maxcol())
retu .t.
///////////////
funct limpa
@ maxrow()-1,00 clear to maxrow()
retu .t.
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Funcionou.
Obrigado a todos que me ajudaram com as sugestões, pois meu problema foi resolvido com estas.
Abraços
Marcos.
Abraços
Marcos.


