Código: Selecionar todos
#include 'inkey.ch'
Function Main()
local salvatela, l1, l2, c1, c2, diflin, difcol, mcol, mlin, mudalin, mudacol
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_UTF8EX
HB_LANGSELECT( 'PT' )
HB_CDPSELECT( "UTF8EX" )
set date french
set century on
set scoreboard off
set cursor off
setmode(25,80)
set color to W+/B
cls
set color to W+/R
@ 00,00 clear to 00,79
@ 00, 01 say "ESC = SAIR"
save screen to salvatela
l1 = 1
l2 = 6
c1 = 10
c2 = 35
diflin = l2 -l1
difcol = c2 - c1
mcol = 79
mlin = 23
mudalin = 1
mudacol = 1
keyboard chr(13)
do while.t.
restore screen from salvatela
l1 = l1 + mudalin
l2 = l1 + diflin
c1 = c1 + mudacol
c2 = c1 + difcol
if l2 > mlin
l1 = mlin - diflin
mudalin = -1
loop
endif
if l1 < 1
l1 = 1
mudalin = 1
loop
endif
if c2 > mcol
c1 = mcol - difcol
mudacol = -1
loop
endif
if c1 < 1
c1 = 1
mudacol = 1
loop
endif
l2 = l1 + diflin
c2 = c1 + difcol
ylib_Msg("Testando BOX",l1,c1,l2,c2,"W+/G","N/W",1,"Janela para verificar o efeito de deslocamento de um box!")
letra := inkey(0.25)
if letra == 27
exit
endif
enddo
set color to
cls
return NIL
/**
--------------------------------------------------------------------------------------------------------------------
Descrição:
Criar Janela Genérica com controle de cor, posição, cor do título e sombra com 4 posições
Parâmetros:
1. mTitulo....: Titulo da janela
2. l1.........: Linha inicial da janela
3. c1.........: Coluna inicial da janela
4. l2.........: Linha final da janela
5. c2.........: Coluna final da janela
6. corTitulo..: Cor do Título da janela (Frente e Fundo)
7. corJanela..: Cor da janela (Frente e Fundo)
8. tipoSombra.: pode ser 1, 2, 3, 4, respectivamente, sombra na posição inferior esquerdo, inferior direito, superior esquerdo e superior direito
--------------------------------------------------------------------------------------------------------------------
*/
function ylib_janela(mTitulo,l1,c1,l2,c2,corTitulo,corJanela,tipoSombra)
if corTitulo == NIL
corTitulo = "W/B"
endif
if corJanela == NIL
corJanela = "N/W"
endif
// Posicionamento da sombra da Janela
setcolor("N/N+")
do case
case tipoSombra == 1 // inferior esquerdo
ylib_Sombra(l1+1,c1-1,l2+1,c2-1)
case tipoSombra == 2 // inferior direito
ylib_Sombra(l1+1,c1+1,l2+1,c2+1)
case tipoSombra == 3 // superior esquerdo
ylib_Sombra(l1-1,c1-1,l2-1,c2-1)
case tipoSombra == 4 // superior direito
ylib_Sombra(l1-1,c1+1,l2-1,c2+1)
otherwise
ylib_Sombra(l1+1,c1-1,l2+1,c2-1) // Padrão inferior esquerdo
endcase
// Posicionamento da Janela e Título
setcolor(corJanela)
@ l1,c1 clear to l2,c2
setcolor(corTitulo)
@ l1,c1 clear to l1,c2
@ l1,c1+1 say mTitulo
return nil
/**
--------------------------------------------------------------------------------------------------------------------
Descrição:
Sombra Real na tela
Parâmetros:
01. l1...: Linha inicial
02. c1...: Coluna Inicial
03. l2...: Linha final
04. c2...: Coluna final
---------------------------------------------------------------------------------------------------------------------
*/
function ylib_Sombra(l1,c1,l2,c2)
local ret := "", ct:= 0, tela, coluna:=c1, linha:=l1, cor, tam:=0, acumula := ""
tela :=savescreen(l1,c1,l2,c2)
cor := setcolor()
setcolor("N+/N")
tela := hb_utf8tostr(tela)
tam := len(tela)
for ct:= 1 to tam step 4
@ linha,coluna say substr(tela,ct,1)
++ coluna
if coluna > c2
coluna = c1
++ linha
endif
if linha > l2
exit
endif
next
setcolor(cor)
return nil
/**
--------------------------------------------------------------------------------------------------------------------
Descrição:
Tela Para Mensagem
Parâmetros:
01. mTitulo....: Titulo da Janela
02. l1.........: Linha inicial da janela
03. c1.........: Coluna inicial da janela
04. l2.........: Linha final da janela
05. c2.........: Coluna final da janela
06. corTitulo..: Cor do Título da janela (Frente e Fundo)
07. corJanela..: Cor da janela (Frente e Fundo)
08. tipoSombra.: pode ser 1, 2, 3, 4, respectivamente, sombra na posição inferior esquerdo, inferior direito, superior esquerdo e superior direito
09. Mensagem...: Mensagem de Erro ou aviso
--------------------------------------------------------------------------------------------------------------------
*/
function ylib_Msg(mTitulo,l1,c1,l2,c2,corTitulo,corJanela,tipoSombra,mensagem)
set cursor off
ylib_janela(mTitulo,l1,c1,l2,c2,corTitulo,corJanela,tipoSombra)
setcolor(corJanela)
keyboard chr(27)
memoedit(mensagem,l1+2,c1+1,l2-1,c2-1,.F.)
return nil