Página 1 de 2
Modo Console - pisca / sombra
Enviado: 14 Mai 2012 22:38
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 ?
Modo Console
Enviado: 14 Mai 2012 22:59
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 ?
Modo Console
Enviado: 15 Mai 2012 00:50
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..
Modo Console
Enviado: 15 Mai 2012 10:49
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
Modo Console - pisca / sombra
Enviado: 15 Mai 2012 11:29
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)...
Modo Console - pisca / sombra
Enviado: 15 Mai 2012 11:37
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.
Modo Console - pisca / sombra
Enviado: 15 Mai 2012 14:07
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..
Modo Console - pisca / sombra
Enviado: 15 Mai 2012 14:37
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.
Modo Console - pisca / sombra
Enviado: 15 Mai 2012 18:40
por alxsts
Olá!
Você colocou SetBlink( .F. ) antes do SetColor()?
Modo Console - pisca / sombra
Enviado: 15 Mai 2012 19:29
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.
Modo Console - pisca / sombra
Enviado: 15 Mai 2012 19:34
por alxsts
Olá!
Tentou SetBlink( .T. )? (estou sem ambiente xBase por isto não consigo fazer testes).
Modo Console - pisca / sombra
Enviado: 15 Mai 2012 20:22
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.
Modo Console - pisca / sombra
Enviado: 15 Mai 2012 21:31
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
Modo Console - pisca / sombra
Enviado: 15 Mai 2012 22:10
por Pablo César
Boma ideia de implementar a opção de som. Eu refiz o exemplo que postei na minha mensagem anterior.
Modo Console - pisca / sombra
Enviado: 03 Dez 2012 15:13
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