Como fazer sombra "transparente" como a do Edit do Ms-Dos?

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

labaroazul
Usuário Nível 2
Usuário Nível 2
Mensagens: 83
Registrado em: 26 Fev 2008 14:52
Localização: São Paulo - SP
Contato:

Como fazer sombra "transparente" como a do Edit do Ms-Dos?

Mensagem por labaroazul »

Bom dia!

Estou tentanto dar uma "embelezada" em um sistema e gostaria de saber se, no Clipper, tem algum jeito de imitar aquele efeito de sombra "transparente" dos menus do Edit do Ms-dos. A sombra não fica preta, dá pra ver o que está escrito no fundo.

É só uma curiosidade!

:{
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
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á

Como fazer sombra "transparente" como a do Edit do Ms-Dos?

Mensagem por Pablo César »

Aqui no fórum na seção de "Downloads" tem, dê uma olhada: https://pctoledo.org/forum/filebase.php?search=1

Também tem este exemplo:
Anexos
Demo.prg
(1.34 KiB) Baixado 233 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
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Re: Como fazer sombra "transparente" comoa do Edit do Ms-Dos?

Mensagem por Daniel »

eu uso esta função do miro

Código: Selecionar todos

@ 13, 19 Prompt " 1-> Cadastro Entrada de N.F.  "
@ 14, 19 Prompt " 2-> Consulta Entrada de N.F.  "
@ 15, 19 Prompt " 3-> Relat¢rio Entrada de N.F. "
shadow(12, 18, 16, 50)
Menu To ows

********************************
Function Shadow(LIN_SUP,COL_SUP,LIN_INF,COL_INF)

LIN_INF=LIN_INF+1
LIN_SUP=LIN_SUP-1
COL_INF=COL_INF+2
COL_SUP=COL_SUP-2
IF PCOUNT()=2 .OR. PCOUNT()=3
   C_SOM=COL_SUP
   L_SOM=LIN_SUP
   LIN_SUP=VAL(SUBS(C_SOM,1,2))
   COL_SUP=VAL(SUBS(C_SOM,3,2))
   LIN_INF=VAL(SUBS(C_SOM,5,2))
   COL_INF=VAL(SUBS(C_SOM,7,2))
   COL_SOM=SUBS(C_SOM,9)
   LIN_SOM=L_SOM
ENDIF
IF COL_SUP<2 .OR. LIN_INF>22
   C_SOM=""
   L_SOM=""
   RETURN .F.
ENDIF
IF PCOUNT()=3
   RESTSCREEN(LIN_SUP+1,COL_INF+1,LIN_INF,COL_INF+2,COL_SOM)
   RESTSCREEN(LIN_INF+1,COL_SUP+2,LIN_INF+2,COL_INF+2,LIN_SOM)
   RETURN .F.
ENDIF
IF PCOUNT()<>2
   COL_SOM=SAVESCREEN(LIN_SUP+1,COL_INF+1,LIN_INF,COL_INF+2)
   LIN_SOM=SAVESCREEN(LIN_INF+1,COL_SUP+2,LIN_INF+2,COL_INF+2)
ENDIF
COL_SOM=SUBS(COL_SOM,1,((LIN_INF-LIN_SUP)+1)*4)
LIN_SOM=SUBS(LIN_SOM,1,((COL_INF-COL_SUP)+1)*4)
IF SUBS(COL_SOM,2,1)<>CHR(7)
   C_SOM=STR(LIN_SUP,2)+STR(COL_SUP,2)+STR(LIN_INF,2)+STR(COL_INF,2)+COL_SOM
   L_SOM=LIN_SOM
ENDIF
FOR I=2 TO LEN(COL_SOM) STEP 2
   COL_SOM=STUFF(COL_SOM,I,1,CHR(8))
NEXT
FOR I=2 TO LEN(LIN_SOM)/2 STEP 2
   LIN_SOM=STUFF(LIN_SOM,I,1,CHR(8))
NEXT
RESTSCREEN(LIN_SUP+1,COL_INF+1,LIN_INF+1,COL_INF+2,COL_SOM)
RESTSCREEN(LIN_INF+1,COL_SUP+2,LIN_INF+2,COL_INF+2,LIN_SOM)
RETURN .T.
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Como fazer sombra "transparente" comoa do Edit do Ms-Dos?

Mensagem por Maligno »

Você terá de trabalhar em cada byte de cor da área de sombra, individualmente. Mas pelo menos o truque é simples: altere o byte de cor para fundo preto (0) e frente preto enfatizado (8), ou seja, 08 (hexa), mantendo o byte do caractere intacto, claro.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

Re: Como fazer sombra "transparente" como a do Edit do Ms-Dos?

Mensagem por Pablo César »

Sei também que o Clipper possue uma função interna de sombra que faz parte do "undocumented" functions, mas não lembro onde tem a respeito.
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
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Como fazer sombra "transparente" comoa do Edit do Ms-Dos?

Mensagem por alaminojunior »

Sei também que o Clipper possue uma função interna de sombra que faz parte do "undocumented" functions, mas não lembro onde tem a respeito.
DBGSHADOW(10,10,20,50)

É tiro e queda !!!
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Como fazer sombra "transparente" comoa do Edit do Ms-Dos?

Mensagem por Maligno »

Pablo César escreveu:Sei também que o Clipper possue uma função interna de sombra que faz parte do "undocumented" functions, mas não lembro onde tem a respeito.
Não conheço. Mas isso nem é tão importante, a meu ver. É coisa fácil de fazer. Fiz minha própria função em pouco tempo. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

Como fazer sombra "transparente" como a do Edit do Ms-Dos?

Mensagem por Pablo César »

alaminojunior escreveu:DBGSHADOW(10,10,20,50)

É tiro e queda !!!
É isso aí colega, valeu !
Maligno escreveu:Não conheço. Mas isso nem é tão importante, a meu ver.
Agora você conhece. O efeito é o mesmo e com menos linha de programação, veja tem dois exemplos:

Código: Selecionar todos

SETCOLOR("N/BG")
CLS
FUN_DO:=PADR("® Clipper on Line ¯",50)
FUN_DO:=SUBSTR( FUN_DO + REPLICATE( FUN_DO, 1840 / LEN( FUN_DO ) ), 1, 1840 )
FOR CONTAR=0 TO 24
    @ CONTAR, 00 SAY SUBSTR( FUN_DO, CONTAR * 80 - 79, 80 )
NEXT
SETCOLOR("W/B")

@ 05,05 CLEAR TO 15,33
SOMBRA2(05,05,15,33)

@ 05,42 CLEAR TO 15,70
DBGSHADOW(05,42,15,70)

FUNCTION SOMBRA2(LS,CS,LI,CI)
COL=SAVESCREEN(LS-1,CS-1,LI-1,CS-1)
LIN=SAVESCREEN(LS-1,CS-1,LS-1,CI-1)
FOR I = 2 TO LEN(COL)  STEP 2
    COL=STUFF(COL,I,1,CHR(8))
NEXT
FOR I = 2 TO LEN(LIN) STEP 2
    LIN=STUFF(LIN,I,1,CHR(8))
NEXT
RESTSCREEN(LS-1,CS-1,LI-1,CS-1,COL)
RESTSCREEN(LS-1,CS-1,LS-1,CI-1,LIN)
RETURN
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
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Como fazer sombra "transparente" como a do Edit do Ms-Dos?

Mensagem por Maligno »

A função DBGShadow() não é não-documentada. Ela apenas foi omitida do NG, provavelmente por falha no processo de documentação. Ela até aparece na lista de palavras reservadas.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
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á

Re: Como fazer sombra "transparente" como a do Edit do Ms-Dos?

Mensagem por Pablo César »

Maligno escreveu:A função DBGShadow() não é não-documentada. Ela apenas foi omitida do NG, provavelmente por falha no processo de documentação.
Será ?. Na internet esta função como a DISPOUTAT() são mencionadas por vários autores e todos mencionam como não documentadas. Mesmo sendo mencionadas no reserved.ch. Eu por exemplo não tenho lido nada em livros sobre essas funções, portanto eu também deveria considerá-las como non-documented functions.
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
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Há uma diferença entre objeto não documentado por falha e não documentado por conveniência. As funções DBGShadow() e __xdo() são dois exemplos. A primeira não apareceu provavelmente por falha do documentador. A segunda por conveniência ou precaução (sabe-se lá) do fabricante. Sem falar dos ponteiros internos que variam de versão pra versão. Não seria prudente publicar algo que seria restrito.

Mas é como eu disse: isso não tem lá muita importância. O fato concreto é que elas não constam na documentação. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Manuel Luis Modernel
Usuário Nível 2
Usuário Nível 2
Mensagens: 66
Registrado em: 02 Mar 2008 20:40
Localização: São José do Rio Preto - SP

Re: Como fazer sombra "transparente" como a do Edit do Ms-Dos?

Mensagem por Manuel Luis Modernel »

Boa Noite amigos !

Gostaria de saber o que VC´s chamam de "Sombra Transparente" , abri o Edit do Dos e nos menus encontrei "titulos" que mudam de cor no texto e na cor do fundo.

è isto mesmo ????, Mudar a cor para aparentar "desabilitado" ?? Mudar fundo e texto ficando tipo "desbotado" ??

Se for isto, eu fazia com uma linha só, assim:

set color to n/w+ (Isto dá fundo cinza claro com letras cinza escuro)
OI Aqui é o Veio Modernel
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Não é isso, Modernel. O colega está se referindo àquela sombra em torno das janelas.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Manuel Luis Modernel
Usuário Nível 2
Usuário Nível 2
Mensagens: 66
Registrado em: 02 Mar 2008 20:40
Localização: São José do Rio Preto - SP

Re: Como fazer sombra "transparente" como a do Edit do Ms-Dos?

Mensagem por Manuel Luis Modernel »

Oi Maligno, obrigado !

Agora prestei mais atenção e me localizei "na tar" de sombra transparente, e a dizer verdade nunca tinha reparado nela, já fiz sombras em janelas POP-UP, mais nunca vi se eram ou não transparentes, probavelmente NÃO.

Eu limpava uma area "deslocada de um caracter para abaixo e para direita" com o Clear to e depois desenhava a janela de menús por cima, sobrando a parte da sombra.

Achei bacana o efeito transparente, vou tentar fazer no meu velho Summer !
OI Aqui é o Veio Modernel
labaroazul
Usuário Nível 2
Usuário Nível 2
Mensagens: 83
Registrado em: 26 Fev 2008 14:52
Localização: São Paulo - SP
Contato:

Re: Como fazer sombra "transparente" como a do Edit do Ms-Dos?

Mensagem por labaroazul »

Valeu gente! :))

Usando a função DBGShadow() consegui o efeito que queria: o que chamei de "sombra transparente" mostrando o conteúdo abaixo da sombra com cores invertidas!

Meus menus e caixas ficaram muito bons com isso! :)) :{

Obrigado!! :{
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
Responder