Página 1 de 1
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 29 Set 2014 20:55
por janio
Ola a todos,
Estou querendo dar uma implementada no meu sistema console colocando uma msg de ajuda (qndo houver) nos gets. Ja tenho isso usando a clausula when, mas num acho muito legal nao. O ideal seria acrescentar mais alguma cláusula no comando get, tipo:
@ 10, 20 Get vNomeCliente Pict "@!" AJUDA "INFORME O NOME DO CLIENTE!"
read
Precisaria disso no getsys!
Alguém ja tem algo pronto dessa natureza?
Janio
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 29 Set 2014 22:03
por Toledo
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 30 Set 2014 08:28
por janio
Toledo,
Seria exatamente isso que preciso. Inclusive, com a possibilidade da 'ajuda' ter diversas linhas.
Eu não uso lib's do GAS, mas vou ver se consigo adaptar ao meu getsys!
Janio
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 30 Set 2014 09:25
por asimoes
Você pode usar também na clausula
Código: Selecionar todos
cVar:=Space(10)
@ 10,00 SAY "Teste " GET cVar WHEN Msg("Informe o nome do arquivo remessa.|Outra Linha 1|Outra Linha 2")
READ
FUNCTION Msg(cMens)
LOCAL nLin:=Row()+1, nCol:=Col(), I, aMens:={}
AADD(aMens,"")
nElemento:=1
nColMax:=0
FOR I:=1 to Len(cMens)
IF SubStr(cMens,i,1) = "|"
AADD(aMens,"")
nElemento++
ELSE
aMens[nElemento]+=SubStr(cMens,I,1)
ENDIF
NEXT
FOR I:=1 TO Len(aMens)
@ nLin,nCol SAY aMens[I]
nLin++
NEXT
RETURN .T.
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 30 Set 2014 09:59
por janio
aSimões,
Não deu pra testar ainda o seu exemplo, mas não vi a questão da restauração da tela pra msg sumir qndo sair do get.
Janio
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 30 Set 2014 11:21
por asimoes
Rogério,
Agora salvando a tela.
Código: Selecionar todos
cVar1:=Space(10)
cVar2:=Space(10)
cVar3:=Space(10)
@ 10,00 SAY "Teste 1 " GET cVar1 WHEN {||Msg()}
@ 11,00 SAY "Teste 2 " GET cVar2 WHEN {||Msg(10,30,"Informe o nome do arquivo remessa.|Outra Linha 1|Outra Linha 2")}
@ 12,00 SAY "Teste 3 " GET cVar3 WHEN {||Msg()}
READ
FUNCTION Msg(nLin,nCol,cMens)
LOCAL I, aMens:={}
HB_Default(@cMens,"")
IF TYPE('FLAGMENSW') <> 'L'
PUBLIC FLAGMENSW:=.F., cTela
cTela:=SaveScreen()
ENDIF
RestScreen(00,00,24,79,cTela)
IF !Empty(cMens)
AADD(aMens,"")
nElemento:=1
nColMax:=0
FOR I:=1 to Len(cMens)
IF SubStr(cMens,i,1) = "|"
AADD(aMens,"")
nElemento++
ELSE
aMens[nElemento]+=SubStr(cMens,I,1)
ENDIF
NEXT
FOR I:=1 TO Len(aMens)
@ nLin,nCol SAY aMens[I]
nLin++
NEXT
ENDIF
RETURN .T.
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 30 Set 2014 20:36
por janio
aSimoes,
Qndo vai para o get seguinte, some o que foi escrito no get anterior!
Janio
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 30 Set 2014 20:59
por asimoes
Acho que agora resolve o problema do GET
Código: Selecionar todos
FUNCTION Msg(nLin,nCol,cMens)
LOCAL I, aMens:={}
HB_Default(@cMens,"")
IF TYPE('FLAGMENSW') <> 'L'
PUBLIC FLAGMENSW:=.F., cTela
cTela:=SaveScreen()
ENDIF
RestScreen(00,00,24,79,cTela)
FOR I:=1 TO Len(GetList)
GetList[I]:display() //Mostrar o conteúdo do get
NEXT
IF !Empty(cMens)
AADD(aMens,"")
nElemento:=1
nColMax:=0
FOR I:=1 to Len(cMens)
IF SubStr(cMens,i,1) = "|"
AADD(aMens,"")
nElemento++
ELSE
aMens[nElemento]+=SubStr(cMens,I,1)
ENDIF
NEXT
FOR I:=1 TO Len(aMens)
@ nLin,nCol SAY aMens[I]
nLin++
NEXT
ENDIF
RETURN .T.
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 30 Set 2014 23:40
por Nascimento
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 01 Out 2014 11:07
por asimoes
A mensagem dentro de um box
Código: Selecionar todos
FUNCTION Msg(nLin,nCol,cMens)
LOCAL I, aMens:={}, nMax:=0
HB_Default(@cMens,"")
IF TYPE('FLAGMENSW') <> 'L'
PUBLIC FLAGMENSW:=.F., cTela
cTela:=SaveScreen()
ENDIF
RestScreen(00,00,24,MaxCol(),cTela)
FOR I:=1 TO Len(GetList)
GetList[I]:display()
NEXT
IF !Empty(cMens)
AADD(aMens,"")
nElemento:=1
nColMax:=0
FOR I:=1 to Len(cMens)
IF SubStr(cMens,i,1) = "|"
AADD(aMens,"")
nElemento++
ELSE
aMens[nElemento]+=SubStr(cMens,I,1)
ENDIF
NEXT
AEval( aMens, {|x| nMax:=Max(Len(x),nMax) } )
@ nLin-1, nCol TO nLin + Len(aMens), nCol + nMax + 1
FOR I:=1 TO Len(aMens)
@ nLin,nCol+1 SAY aMens[I]
nLin++
NEXT
ENDIF
RETURN .T.
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 01 Out 2014 12:13
por asimoes
Que tal um hint com tempo de exibição:
Para usar a thread tem que compilar com a diretiva -mt
Incluir o header :
#include "hbthread.ch"
Código: Selecionar todos
cVar1:=Space(10)
cVar2:=Space(10)
cVar3:=Space(10)
@ 10,00 SAY "Teste 1 " GET cVar1 WHEN {||Msg(10,20,10,"Informe o codigo.")}
@ 11,00 SAY "Teste 2 " GET cVar2 WHEN {||Msg(11,20,20,"Informe o nome do arquivo remessa.|Teste")} //WHEN Msg(10,30,"Informe o nome do arquivo remessa.|Outra Linha 1|Outra Linha 2")
@ 12,00 SAY "Teste 3 " GET cVar3 WHEN {||Msg(12,20,10,"A|B")}
READ
FUNCTION Msg(nLin,nCol,nSec,cMens)
LOCAL I, aMens:={}
HB_Default(@cMens,"")
HB_Default(@nSec,10)
IF TYPE('FLAGMENSW') <> 'L'
PUBLIC FLAGMENSW:=.F., cTela
cTela:=SaveScreen(00, nCol, 24, MaxCol())
ENDIF
RestScreen(00,nCol,24,MaxCol(),cTela)
FOR I:=1 TO Len(GetList)
GetList[I]:display()
NEXT
IF !Empty(cMens)
AADD(aMens,"")
nElemento:=1
nColMax:=0
FOR I:=1 to Len(cMens)
IF SubStr(cMens,i,1) = "|"
AADD(aMens,"")
nElemento++
ELSE
aMens[nElemento]+=SubStr(cMens,I,1)
ENDIF
NEXT
nMax:=0
AEval( aMens, {|x| nMax:=Max(Len(x),nMax) } )
hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @LimpaHint(), nSec, nCol)
@ nLin-1, nCol TO nLin + Len(aMens), nCol + nMax + 1
FOR I:=1 TO Len(aMens)
@ nLin,nCol+1 SAY aMens[I]
nLin++
NEXT
ENDIF
RETURN .T.
FUNCTION LimpaHint(nSec,nCol)
LOCAL nTempo:=Seconds(), lContinua:=.T.
DO WHILE lContinua
IF Seconds() - nTempo >= nSec
RestScreen(00,nCol,24,MaxCol(),cTela)
lContinua:=.F.
ENDIF
ENDDO
RETURN .T.
Getsys - Mostrar msg de ajuda no campo get!
Enviado: 01 Out 2014 12:17
por janio
Josivan,
Ja tinha visto esse exemplo, mas num gostei muito.
Vou fazer alguns testes com o exemplo do aSimoes, fazer alguns ajustes (texto dentro de um box - q ele ja fez) e ver como fica.
Ta faltando eh tempo pra fazer os testes... mas hj pretendo concluir!
O inconveniente do exemplo do aSimoes eh o fato de ter q chamar a função um get antes e um depois do get q efetivamente a msg sera exibida. Isso pra pra função restaurar a tela e sumir a msg. Mas da pra ir levando... Se fosse algo dentro do proprio getsys, acho q isso seria evitado!
Janio