Modo Console - pisca / sombra

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

Moderador: Moderadores

Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

Modo Console - pisca / sombra

Mensagem por Paulo Pereira »

Estou tendo 3 problemas no modo console..

1-Esse comando setcolor('w*/r') // vermelho piscante. NAO pisca no harbour

2-Quando faz um atalho para o aplicativo, o sistema da mensagem: editor desconhecido e pede se quer continuar.

3-Se compilar com harbour 3.2, uma funcao que que simulava uma janela com sombra .. na sombra agora mostra o caracter ? (ponto de interrogacao)

Alguma solucao ?
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Modo Console

Mensagem por sygecom »

Olá Paulo,
Paulo Pereira escreveu: 1-Esse comando setcolor('w*/r') // vermelho piscante. NAO pisca no harbour
HUmmm, Não sei, nem nunca usei pisca-pisca.
2-Quando faz um atalho para o aplicativo, o sistema da mensagem: editor desconhecido e pede se quer continuar.
Normal em aplicativos 32bits sendo rodado pela rede, na maquina local isso não acontece, se quer tirar esse aviso Siga os passos abaixo:
Abra o Internet explorer
clique em Ferramentas > Opções da Internet > Segurança > Click em Intranet
Local e depois clique em Sites e Desmarque a opção Detectar Automaticamente a
rede Intranet
3-Se compilar com harbour 3.2, uma funcao que que simulava uma janela com sombra .. na sombra agora mostra o caracter ? (ponto de interrogacao)
Antes era um carácter ASCII ? está rodando em modo tela cheia ? está linkando alguma LIB grafica ou essas que parace gráfica, tipo GTWVG, GTWVW ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

Modo Console

Mensagem por Paulo Pereira »

Nao uso LIbs grafica, o problema acontece em tela cheia ou janela
Em anexo a funcao, moldura

PS: O Pisca pisca é muito necessario para o meu cliente..
Anexos
LMOLDURA.PRG
(831 Bytes) Baixado 191 vezes
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Modo Console

Mensagem por Pablo César »

Fiz a pesquisa aqui no fórum e encontrei que os colegas aqui neste tópicos, abordam o tema:
https://pctoledo.org/forum/viewto ... sca#p57486
https://pctoledo.org/forum/viewto ... 922#p31922
Apesar que o colega Maligno tenha conseguido algum resultado em C++, não mostrou o código e também parece que só iria resultar favorável em tela cheia (não janelado) e ainda teria que alterar o modo de exibição do vídeo. Em outras palavras: não impossível no entanto limitado.
Apesar que eu já implementei algo parecido com este que o colega indicou: https://pctoledo.org/forum/viewto ... 131#p21131 experimente, se você gostar, poderia você mesmo criar uma função pisca_pisca.

Com respeito a sombra, também achei aqui no fórum uma solução apresentada recente: https://pctoledo.org/forum/viewto ... bra#p74900
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
vailton
Colaborador
Colaborador
Mensagens: 390
Registrado em: 17 Nov 2005 19:08
Localização: Brasil
Contato:

Modo Console - pisca / sombra

Mensagem por vailton »

Aplicativos Windows não possuem este recurso de "piscar". Já pesquisei sobre isto, inclusive dentro da documentação oficial do Windows onde encontrei uma resposta a este assunto dizendo que não é implementado pela Win32 API (na época)...
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"

E-mail/MSN: contato@vailton.com.br
Skype: vailtom
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Modo Console - pisca / sombra

Mensagem por Pablo César »

Sim Vailton, na minha mensagem anterior, eu já mencionei em forma de link um tópico no qual você fala já sobre isso.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

Modo Console - pisca / sombra

Mensagem por Paulo Pereira »

Obrigado a todos.. vou testar...
Vejam como é o cliente.... foi reclamar de um pisca pisca,, já está em vermelho..
mas tem que piscar
Nao entendo como uma linguagem em C, nao consegue fazer piscar na tela..
Avatar do usuário
vailton
Colaborador
Colaborador
Mensagens: 390
Registrado em: 17 Nov 2005 19:08
Localização: Brasil
Contato:

Modo Console - pisca / sombra

Mensagem por vailton »

Paulo Pereira escreveu:Nao entendo como uma linguagem em C, nao consegue fazer piscar na tela..
A microsoft (que desenvolve o software Microsoft Windows) em sua documentação oficial diz que não implementou este recurso dentro do seu sistema operacional... não faz muita diferença se é em C, Delphi, C++, C# ou ASM: se eles não derem brecha para isto, fica no minimo dificil de se obter este resultado.

Embora eu desconfie de que talvez um recurso como este possa ser alcançado usando meios muito alternativos, não sei se os investimentos justificariam uma pesquisa e desenvolvimento de uma solução (que com certeza seria muito onerosa) para este cenário.
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"

E-mail/MSN: contato@vailton.com.br
Skype: vailtom
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Modo Console - pisca / sombra

Mensagem por alxsts »

Olá!

Você colocou SetBlink( .F. ) antes do SetColor()?
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Modo Console - pisca / sombra

Mensagem por Pablo César »

No exemplo que ele colocou LMOLDURA.PRG eu baixei e notei que não tinha utilizado o SetBlink mas mesmo colocando não resolve, como já foi exposto.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Modo Console - pisca / sombra

Mensagem por alxsts »

Olá!

Tentou SetBlink( .T. )? (estou sem ambiente xBase por isto não consigo fazer testes).
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Modo Console - pisca / sombra

Mensagem por Pablo César »

Já experimentei de todas as formas. Aqui comigo não funciona. Consegui reproduzir algo semelhante, anexei o executável para testarem e já aproveitando postei a questão das sombras:

Código: Selecionar todos

eREQUEST HB_GT_WIN_DEFAULT // Utilizado no HMG para compilar em modo console (pode remover)

Function Main
CLS
SetMode(25,80)
For i=1 to 23
   @ i,00 Say Replicate(Chr(219),80) color "GR+/GR+"
Next
hb_gtInfo( 9, .T. )

SetBlink( .F. )
moldura(02,20,10,69,1)
@ 06, 40 say "Blink attribute is: "+(if(SetBlink(),"On","Off")) COLOR "GR*/B"
@ 24,00 say PadC("Press a key to toggle blink attribute",80)
Inkey(0)

SetBlink( .NOT. SetBlink() )
moldura(14,20,21,69,2)
cTexto:="Blink attribute is: "+(if(SetBlink(),"On","Off"))
@ 18, 25 say cTexto COLOR "GR*/B"
@ 24,00 say PadC("Press a key to see GAMBIARRA",80)
Inkey(0)
Pisca(18,25,cTexto,"GR*/B",.t.)


@ 24,00 say PadC("Press a key to end",80)
Inkey(0)
RETURN

*--------------------------------
* Funcao das molduras das opcoes
*--------------------------------
func moldura(wli,wci,wlf,wcf,vtipo)
local ja_rl,ja_rc,ja_col,ja_lin,vcont,vcor:=setcolor()
ja_col:=savescreen(wli+1,wcf+1,wlf+1,wcf+1)
ja_lin:=savescreen(wlf+1,wci+1,wlf+1,wcf+1)
store '' to ja_rl,ja_rc
for vcont:=1 to len(ja_lin)/2
    ja_rl:=ja_rl+substr(ja_lin,vcont*2-1,1)+chr(9)
next
for vcont:=1 to len(ja_col)/2
    ja_rc:=ja_rc+substr(ja_col,vcont*2-1,1)+chr(9)
next
restscreen(wli+1,wcf+1,wlf+1,wcf+1,ja_rc) // <====efeito da sombra vertical
restscreen(wlf+1,wci+1,wlf+1,wcf+1,ja_rl) // <== efeito da sombra no rodape

setcolor('gr/b+')
if valtype(vtipo)='U' .or. vtipo=1
   @ wli,wci,wlf,wcf box "ËÍ˺¼ÍȺ "
else
   @ wli,wci,wlf,wcf box "ÉÍ»º¼ÍȺ "   && moldura 2
endif
setcolor(vcor)
return

Function Pisca(nL,nC,cT,cC,lSom)
Local nK:=0, nCursor:=SetCursor()

Set Cursor off
do while !(nK>0)
  @ nL, nC say cT Color cC
  nK:=Inkey(.2)
  @ nL, nC say space(Len(cT)) Color cC
  nK:=Inkey(.2)
  If lSom
     PlayExclamation() 
  Endif
enddo
@ nL, nC say cT Color cC
SetCursor(nCursor)
Return Nil
Como podem ver o SetBlink não resolveu, apenas a função Pisca deu o efeito que assemelha-se ao "*" do Setcolor. Espero que tenha servido o propósito.
Anexos
Demo.rar
(483.48 KiB) Baixado 176 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Modo Console - pisca / sombra

Mensagem por fladimir »

Colega qdo migrei meu sistema tb tinha o recurso de alerta piscante e ao migrar percebi que estava diferente, mas não atentei a isto...
Atentei somente a questões mais graves como algum erro etc... enfim coloquei em alguns clientes beta testers da versão nova na época em xHarbour e uns dos q retornaram notou q não piscava os alertas...

Enfim me debati daki e dali fiz testes com Set Blink e outros e nada... cheguei a conclusão q por maneiras convencionais não conseguiria, foi então q um deles deu uma solução q foi adota e esta até hoje que é a seguinte...

Destaque mais as cores tipo um "N/GR*" q vc verá por exemplo q ficara um amarelo intenso de fundo e a letra Preta"
E a solução alternativa é colocar junto um sinal sonoro através da Função Tone()

Ou seja aí vc amarra a Cor destacada ao Sinal Sonoro, simbolizando um alerta alternativo...

Exemplo:

Código: Selecionar todos

.... Seu código
IF lAlerta
   AlertaeSom("Atenção este é um alerta", nTipodoSom)
Endif
....

**************************************************************************************************************
Procedure AlertaeSom(cMensagem, nTipodoSom)
* Rotina para Mostrar um Alerta com Som, na verdade primeiro o som depois o alerta... rsrs
**************************************************************************************************************
   //-- Define por padrão o som tipo 1 caso não venha o parâmetro
   nTipodoSom := IIF( nTipodoSom == NIL, 1, nTipodoSom)  

   //-- Define por padrão a mensagem como "Alerta Padrão" caso não venha o parâmetro   
   cMensagem := IIF( cMensagem == NIL, "Alerta Padrão", cMensagem)

   //-- Verifica qual o tipo do som e emite
   do case
      case nTipodoSom == 1  //-- Som tipo tal
         tone(262, 3)
         tone(262, 1)
         tone(294, 6)
         tone(262, 6)
         tone(349, 6)
         tone(330, 15)
      case nTipodoSom == 2 //-- Som tipo outro
         tone(392, 1)
         tone(523, 1)
         tone(659, 1)
         tone(784, 5)
         tone(659, 1)
         tone(784, 25)
      otherwise //-- E mais outro... etc
         tone(4000, 1)
         InKey(0.1)
          tone(4000, 1)
         InKey(0.1)
         tone(4000, 1)
      endcase
     
      //-- Mostra a mensagem de alerta em cor destacada preta com fundo amarelo intenso e depois de 5 segundos caso o usuario não interagir cai fora
      Alert( cMensagem, , "N/GR*", 5)
Return
Tomara q vc consiga, na época não consegui mas ficou bom com esta alternativa...

[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Modo Console - pisca / sombra

Mensagem por Pablo César »

Boma ideia de implementar a opção de som. Eu refiz o exemplo que postei na minha mensagem anterior.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Modo Console - pisca / sombra

Mensagem por asimoes »

Uma alternativa para fazer piscar na tela.

Para usar

Declarar a variável nPisca

Código: Selecionar todos

STATIC nPisca

FUNCTION Main
   @10,00 SAY "TESTE"
   Pisca("TESTE")
   inkey(0)
   Pisca() //para cancelar o blink   
RETURN Nil

Código: Selecionar todos

FUNCTION Pisca(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(cMensagem,cCor1,cCor2) } )
   ENDIF
RETURN .T.  

FUNCTION PiscaMensagem(cMensagem,cCor1,cCor2)
STATIC nTempoPisca
   IF nTempoPisca = Nil
      nTempoPisca:=Seconds()
   ENDIF
   
   IF Seconds() - nTempoPisca >= nTmpLog
      ScreenMark(cMensagem,cCor1,.F.,.T.)
      HB_IdleSleep( .3 )
      ScreenMark(cMensagem,cCor2,.F.,.T.)
      nTempoPisca:=Seconds()
   ENDIF
RETURN Nil
►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)
Responder