Cores de tela de fundo - Branco e amarelo intensos

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

EduardoSPno
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 03 Mai 2012 16:23
Localização: Sao Paulo/SP

Cores de tela de fundo - Branco e amarelo intensos

Mensagem por EduardoSPno »

Fala amigos, tudo bem ?!?, gostaria de saber se alguem sabe como deixar o funco "branco" de tela, mas "branco" mesmo, nao o cinza habitual q fica.

Exemplo: Letra Azul e fundo branco
set color to b+/w

Obrigado por todos, abraco ...
Editado pela última vez por Pablo César em 04 Out 2012 13:12, em um total de 2 vezes.
Razão: O título foi alterado para melhor identificação do problema e exemplo no futuro.
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á

Ajuda com cores de tela

Mensagem por Pablo César »

Veja o exemplo este exemplo:

Código: Selecionar todos

SetMode(25,80)
SetColor("gr+/n")
For i=0 to 24
    @ i,00 Say Replicate(Chr(219),80) Color "w+/b"
Next
DBGShadow(05,10,18,50)
@ 05,10 To 18,50
For i=6 to 17
    @ i,11 Say Replicate(Chr(219),39) Color "gr+/w"
Next
@ 24,00 Say PadC("Tecle uma tecla para continuar...",80) Color "N/W"
Inkey(0)
Compile e verá este resultado:
Tela50.PNG
Você também pode alterar as tonalidades e até mesmo a cor original que o Clipper oferece através da função VGAPALETTE() da biblioteca CT.Lib, para maiores detalhes leia este tópico: https://pctoledo.org/forum/viewto ... ilit=cores
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

Ajuda com cores de tela

Mensagem por alxsts »

Olá!

Legal o exemplo do Pablo mas, para o que foi pedido, creio que baste:

Código: Selecionar todos

SetColor( "B+/W*" )
[]´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á

Ajuda com cores de tela

Mensagem por Pablo César »

creio que baste:
                          SetColor( "B+/W*" )
O asterisco serve para deixa piscando. E a sua indicação simplesmente não funciona no fundo quando utilizado "W+". Por isso foi colocado o caracter cheio ( Chr(219) ) para que pudesse aparecer qualquer cor como fundo. A não ser que atarvés do VGAPALETTE mude a cor "W" (branco cinza) para uma cor mais intensa como branco total.
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

Ajuda com cores de tela

Mensagem por alxsts »

Olá!

Testei em xHarbour e funciona perfeitamente. Para desativar o fundo piscante é só colocar antes um:

Código: Selecionar todos

SetBlink( .F. )
Infelizmente não tenho o Clipper instalado para testar nele.
[]´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á

Ajuda com cores de tela

Mensagem por Pablo César »

Esclarecendo...

Pior Alexandre que funciona em Clipper, mas tem que colocar o SetBlink( .F. ), eis o código exemplo e tela:

Código: Selecionar todos

SetBlink( .F. )
SetMode(25,80)
SetColor( "B+/W*" )
cls
SetColor("gr+/n")
DBGShadow(05,10,18,50)
SetColor("gr+/n")
@ 05,10 To 18,50
SetColor("n/gr+")
@ 06,11 Clear To 17,49
@ 24,00 Say PadC("Tecle uma tecla para continuar...",80) Color "N/W"
Inkey(0)
Pena que a sombra fica preta e não cinza como apareceu no meu primeiro exemplo. A cor amarela do quadro interno também naõ ficou com amarelo intenso.
Tela51.PNG
Se substituir o "+" pelo "*" ai funciona normal. Rs vai saber... !! Mas a sombra continua preta e não cinza... rs
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

Ajuda com cores de tela

Mensagem por alxsts »

Olá!

Funciona sim. Usei isso durante muitos anos em Clipper.

Se puder, tente fazer a sombra com o código abaixo e veja se fica melhor que aquela área preta. Peguei isso em algum lugar. Nem sei como funciona mas dá um aspecto melhor.

Código: Selecionar todos

/***
*
*  BoxShadow( <nTop>, <nLeft>, <nBottom>, <nRight> ) --> NIL
*
*  Draw a box shadow with see through
*
*/
//------------------------------------------------------------------------------
FUNCTION BoxShadow( _Li, _Ci, _Lf, _Cf )

   LOCAL Tela1, Tela2, Tela3, Tela4

   Tela3 := SaveScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1)
   Tela4 := SaveScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1)

   For Tela1:= 2 to Len(Tela3) step 2
      Tela2:= shadow(Asc(Substr(Tela3,Tela1,1)))
      Tela3:= Stuff(Tela3,Tela1,1,Tela2)
   End

   For Tela1:= 2 to Len(Tela4) step 2
      Tela2:= shadow(Asc(Substr(Tela4, Tela1,1)))
      Tela4:= Stuff(Tela4,Tela1,1,Tela2)
   End

   RestScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1, Tela3)
   RestScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1, Tela4)

   Return NIL

//------------------------------------------------------------------------------
STATIC FUNCTION Shadow(_Car)
      Local Var1, Var2, Var3
      Var1:= _Car % 16
      Var2:= (_Car - Var1) / 16
      Var3:= {0, 0, 8, 8, 0, 8, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7}
      Var1:= Var3[Var1 + 1]
      Var2:= Var3[Var2 + 1]
   RETURN Chr(16 * Var2 + Var1)

//------------------------------------------------------------------------------
[]´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á

Ajuda com cores de tela

Mensagem por Pablo César »

Funcionou desta vez Alexandre, obrigado e desculpe a minha precipitação. Eu não sabia que o asterisco pudesse funcionar para alterar a intensidade após o SetBlink(.f.). Ficou igualzinha !

Código: Selecionar todos

SetBlink( .F. )
SetMode(25,80)
SetColor( "B+/W*" )
cls
BoxShadow(05,10,18,50)
SetColor("gr+/n")
@ 05,10 To 18,50
SetColor("n/gr*")
@ 06,11 Clear To 17,49
@ 24,00 Say PadC("Tecle uma tecla para continuar...",80) Color "N/W"
Inkey(0)


FUNCTION BoxShadow( _Li, _Ci, _Lf, _Cf )
LOCAL Tela1, Tela2, Tela3, Tela4

Tela3 := SaveScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1)
Tela4 := SaveScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1)
For Tela1:= 2 to Len(Tela3) step 2
   Tela2:= shadow(Asc(Substr(Tela3,Tela1,1)))
   Tela3:= Stuff(Tela3,Tela1,1,Tela2)
End
For Tela1:= 2 to Len(Tela4) step 2
   Tela2:= shadow(Asc(Substr(Tela4, Tela1,1)))
   Tela4:= Stuff(Tela4,Tela1,1,Tela2)
End
RestScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1, Tela3)
RestScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1, Tela4)
Return NIL

STATIC FUNCTION Shadow(_Car)
Local Var1, Var2, Var3
Var1:= _Car % 16
Var2:= (_Car - Var1) / 16
Var3:= {0, 0, 8, 8, 0, 8, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7}
Var1:= Var3[Var1 + 1]
Var2:= Var3[Var2 + 1]
RETURN Chr(16 * Var2 + Var1)
Com a mesma aparência da primeira tela:
Anexos
Tela52.PNG
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

Cores de tela de fundo - Branco e amarelo intensos

Mensagem por alxsts »

Olá!

Legal! São os guardados do fundo do baú...

Talvez fosse interessante colocar esta rotina de sombra em um local separado, para facilidade de acesso e localização. Não sei se na Seção de Downloads ou na parte de Contribuições...
[]´s
Alexandre Santos (AlxSts)
EduardoSPno
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 03 Mai 2012 16:23
Localização: Sao Paulo/SP

Cores de tela de fundo - Branco e amarelo intensos

Mensagem por EduardoSPno »

Fala galera, valeu pela força, mas acho q faltou dizer uma coisinha, nos exemplos a tela fica branca utilizando o replicate(chr)219)), mas por exemplo se eu for deixar algo digitado no meio, ta la a faixa cinza (em vez do branco) e a letra da cor desejada ....

@00,00 Say Replicate(Chr(219),80) Color "w+/b"

AK SO PRA VER COMO FICA:
@10,10 say "TESTE DE LETRA COM FUNDO BRANCO !!"
EduardoSPno
Usuário Nível 2
Usuário Nível 2
Mensagens: 59
Registrado em: 03 Mai 2012 16:23
Localização: Sao Paulo/SP

Cores de tela de fundo - Branco e amarelo intensos

Mensagem por EduardoSPno »

HEHE, Falha minha ak galera, se utilizar o SETBLINK( .F. ) o fundo fica legal, assim da pra utilizar o branco sem problemas no fundo das letras, o unico probleminha é q nao sera mais possivel exibir uma mensagem piscando "*", sendo q o mesmo no SETBLINK exibe o branco, e nao o piscante ....

Agradeco muito a atencao de todos, um CLIP ABRACO !!!

Aproveitando, alguem ja conseguiu rodar a biblioteca VL2_52.LIB no WIN7???, a tela fica toda desconfigurada ...

Valeu galera ....
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Cores de tela de fundo - Branco e amarelo intensos

Mensagem por alxsts »

Olá!

Uma opção para exibir uma mensagem piscando seria habilitar o SetBlink( .T. ), exibir a mensagem e desabilitar SetBlink( .F. ).
[]´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á

Cores de tela de fundo - Branco e amarelo intensos

Mensagem por Pablo César »

alxsts escreveu:Uma opção para exibir uma mensagem piscando seria habilitar o SetBlink( .T. ), exibir a mensagem e desabilitar SetBlink( .F. ).
Bom não creio nesse caso que as cores continuem funcionando (iriam retornar as cores não desejadas) e sendo em Clipper no XP o piscar não funciona ao menos em modo janelado.

Para não quebrar a idéia do que foi indicado e dependendo de que forma quer mostrar as mesnagens de piscar, teria outra forma:

Código: Selecionar todos

SetBlink( .F. )
SetMode(25,80)
SetColor( "B+/W*" )
cls
BoxShadow(05,10,18,50)
SetColor("gr+/n")
@ 05,10 To 18,50
SetColor("n/gr*")
@ 06,11 Clear To 17,49
@ 24,00 Say PadC("Pressione <Esc> para sair...",80) Color "N/W"
SetCursor(0)
nKey:=0
Do While nKey=0
   nKey:=Inkey(0.3)
   @ 10,20 Say "Texto piscando..." Color "bg+/b"
   nKey:=Inkey(0.3)
   @ 10,20 Say "                 " Color "gr/gr*"
Enddo


FUNCTION BoxShadow( _Li, _Ci, _Lf, _Cf )
LOCAL Tela1, Tela2, Tela3, Tela4

Tela3 := SaveScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1)
Tela4 := SaveScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1)
For Tela1:= 2 to Len(Tela3) step 2
   Tela2:= shadow(Asc(Substr(Tela3,Tela1,1)))
   Tela3:= Stuff(Tela3,Tela1,1,Tela2)
End
For Tela1:= 2 to Len(Tela4) step 2
   Tela2:= shadow(Asc(Substr(Tela4, Tela1,1)))
   Tela4:= Stuff(Tela4,Tela1,1,Tela2)
End
RestScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1, Tela3)
RestScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1, Tela4)
Return NIL

STATIC FUNCTION Shadow(_Car)
Local Var1, Var2, Var3
Var1:= _Car % 16
Var2:= (_Car - Var1) / 16
Var3:= {0, 0, 8, 8, 0, 8, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7}
Var1:= Var3[Var1 + 1]
Var2:= Var3[Var2 + 1]
RETURN Chr(16 * Var2 + Var1)
Mas outra forma (por não dizer gambiarra de simular uma mensagem que pisca...
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

Cores de tela de fundo - Branco e amarelo intensos

Mensagem por alxsts »

Olá!

Pensei nisso hahaha mas achei muita POG. Afinal nem gosto de mensagens piscando, prefiro um Alert(), não esquecendo que esta função tem um terceiro parâmetro para configurar a cor desejada.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Cores de tela de fundo - Branco e amarelo intensos

Mensagem por JoséQuintas »

Aproveitando o post.
Ao modificar as cores padrão percebi o seguinte:
Usando número ao invés de letras o resultado é certo.
Tipo... W+ equivale a cor 15.
SetColor("0/15")
SetColor("N/W+")
Por letra, o + não tem efeito na cor de fundo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder