Getsys - Mostrar msg de ajuda no campo get!

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

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Getsys - Mostrar msg de ajuda no campo get!

Mensagem 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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Getsys - Mostrar msg de ajuda no campo get!

Mensagem por Toledo »

Este tópico pode ajudar:
https://pctoledo.org/forum/viewto ... 17&p=35637

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Getsys - Mostrar msg de ajuda no campo get!

Mensagem 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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Getsys - Mostrar msg de ajuda no campo get!

Mensagem 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.    
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Getsys - Mostrar msg de ajuda no campo get!

Mensagem 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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Getsys - Mostrar msg de ajuda no campo get!

Mensagem 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.    
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Getsys - Mostrar msg de ajuda no campo get!

Mensagem por janio »

aSimoes,

Qndo vai para o get seguinte, some o que foi escrito no get anterior!

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Getsys - Mostrar msg de ajuda no campo get!

Mensagem 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.    
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Getsys - Mostrar msg de ajuda no campo get!

Mensagem por Nascimento »

amigo janio eu usei desse link aqui

https://pctoledo.org/forum/viewto ... 977#p15543
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Getsys - Mostrar msg de ajuda no campo get!

Mensagem 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.    
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Getsys - Mostrar msg de ajuda no campo get!

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Getsys - Mostrar msg de ajuda no campo get!

Mensagem 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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Responder