Página 2 de 2

Modo Console - pisca / sombra

Enviado: 03 Dez 2012 21:19
por asimoes
O screenmark é uma ótima função desde que nao se use caracteres gráficos tipo ã | ç ►◄ esses caracteres não são tratados pela função screenmark,
então fiz essa outra versão que pode aceitar, usando @ say

Código: Selecionar todos


FUNCTION MAIN
   Pisca(24,00,"► ATENÇÃO","W+/B","B/B")
   Inkey(0)
RETURN Nil

FUNCTION Pisca(nLinha,nColuna,cMensagem,cCor1,cCor2)
PUBLIC nTmpLog:=1
   HB_DEFAULT(@cMensagem,"")
   HB_DEFAULT(@cCor1,"W+/N")
   HB_DEFAULT(@cCor2,"N/N")
   IF !Empty(cMensagem)
      IF !TYPE("nPisca") == "U"
         HB_IdleDel( nPisca )
      ENDIF
      nPisca:=HB_IdleAdd( {|| PiscaMensagem(nLinha,nColuna,cMensagem,cCor1,cCor2) } )
   ELSE
      HB_IdleDel( nPisca )
   ENDIF
RETURN .T.  

FUNCTION PiscaMensagem(nLinha,nColuna,cMensagem,cCor1,cCor2)
STATIC nTempoPisca
   IF nTempoPisca = Nil
      nTempoPisca:=Seconds()
   ENDIF
   
   IF Seconds() - nTempoPisca >= nTmpLog
      //ScreenMark(cMensagem,cCor1,.F.,.T.)
      @ nLinha,nColuna SAY cMensagem COLOR cCor1
      HB_IdleSleep( .3 )
      //ScreenMark(cMensagem,cCor2,.F.,.T.)
      @ nLinha,nColuna SAY cMensagem COLOR cCor2
      nTempoPisca:=Seconds()
   ENDIF
RETURN Nil

Modo Console - pisca / sombra

Enviado: 06 Jan 2016 08:51
por asimoes
Descobri ontem que a função ScreenMark usa a função ScreenText que captura a tela em ansi, e a string que eu estava procurando estava em oem, por isso não estava funcionando.

Modo Console - pisca / sombra

Enviado: 06 Jan 2016 16:03
por JoséQuintas
A questão da sombra:

Opção 1:

Habilite o modo de compatibilidade com Clipper para salvar/restaurar telas

Código: Selecionar todos

   hb_gtInfo( HB_GTI_COMPATBUFFER, .T. )

Opção 2:

Substitua a sombra por espaços em branco

Opção 3:

Pare de usar sombra.

Modo Console - pisca / sombra

Enviado: 06 Jan 2016 16:16
por JoséQuintas
Rotina simples substituindo sombra por espaços em branco.

Imagine o retângulo.
A sombra vai ser à direita, uma coluna depois da final.
Também embaixo uma linha depois da final.
E vai começar uma linha depois da inicial e uma coluna depois da inicial, pra dar o efeito 3D.

Isso em código fonte (mas não lembro se o CLEAR TO aceita cor):

Código: Selecionar todos

FUNCTION Sombra( LinhaIniicial, ColunaInicial, LinhaFinal, ColunaFinal )
   @ LinhaInicial + 1, ColunaFinal + 1 CLEAR TO LinhaFinal + 1, ColunaFinal + 1 COLOR "N/N"
   @ LinhaFinal + 1, ColunaInicial + 1 CLEAR TO LinhaFinal + 1, ColunaFinal + 1 COLOR "N/N"
   RETURN NIL
Nota:
Pode ser CLEAR TO, BOX Space(9), ou Scroll( ..., 0 )
Se não aceitar cor, é salvar, trocar, usar e restaurar.

Código: Selecionar todos

cCorAnt := SetColor( "N/N" )
...
SetColor( cCorAnt )

Modo Console - pisca / sombra

Enviado: 12 Mar 2022 19:11
por clodoaldomonteiro
Boas,
O exemplo abaixo tá bem tosco, mas funciona.

Código: Selecionar todos

   ...
   lPisca := .t.
   ii:=0
   Do While !Eof()
      ii++
      If IsInteger(ii / 50 )
         If lPisca
            @ 1,1 Say 'Aguarde coleta de dados...' Color "n/w"
         Else
            @ 1,1 Say 'Aguarde coleta de dados...' Color "w/n"
         Endif
         lPisca := !lPisca
      Endif
      Skip
   EndDo
   ...
   ...