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
Este tópico pode ajudar:
https://pctoledo.org/forum/viewto ... 17&p=35637

Abraços,

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
amigo janio eu usei desse link aqui

https://pctoledo.org/forum/viewto ... 977#p15543

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