| La procedura è scritta
in Pascal:
| Essa organizza i parametri al fine
di stampare un'area ci spazi colorati con bordo scelto con tecnica
di tipo CASE .. OF |
| Si può osservare che, per risolvere
i noti problemi legati alla
eventuale stampa in posizione [80,25] al fine di scongiurare lo scrolling verso l’alto di una riga di tutta l’immagine,
l'ultimo carattere viene comunque stampato
a basso livello con la
STAchr; a differenza di
Cornice2, ad essa molto simile, per
realizzare l’effetto ombra non è necessario usare la procedura
ATTRchr, dato che
STAchr
provvede in proprio alla gestione del colore. |
Codice Sorgente |
|
|
|
|
PROCEDURE
Cornice4 (rig,col,lar,alt,txt,sfo,ombP,ombS,
tipo:integer;ombC:char);
VAR
n,m:integer;
chr:array[1..6] of char;
BEGIN
CASE tipo OF
1: chr:=('');
2: chr:=('');
3: chr:=('');
4: chr:=('');
5: chr:=('');
6: chr:=('');
end;
textcolor(txt);textbackground(sfo);
gotoxy(col,rig);
write(' ',chr[1]); {**************************}
FOR n:=1 to lar-4 do
{
}
IF (tipo=5) THEN
{Stampa il tratto
superiore}
write ('')
{della cornice
}
ELSE
{(se "lar"=4 non esegue il}
write(chr[5]);
{ loop)
}
write(chr[2],' ');
{**************************}
FOR m:=1 to
alt-2 do
{**************************}
begin
{Stampa il tratto centrale}
gotoxy(col,rig+m);
{della cornice con l'ombra}
write(' ',chr[6]);
{di 2 caratteri posti a }
FOR n:=1 to lar-4 do
{destra
}
write(' ');
{
}
write(chr[6],' ');
{
}
textbackground(ombS);
{
}
textcolor (ombP);
{
}
write(ombC,ombC);
{
}
textbackground(sfo);
{
}
textcolor (txt);
{
}
end; {**************************}
gotoxy(col,rig+alt-1);
{**************************}
write(' ',chr[3]);
{Stampa il tratto inferiore}
FOR n:=1 to (lar-4) do
{della cornice con }
IF (tipo=5) THEN
{l'ombra di un carattere }
write ('')
{posto
sotto
}
ELSE
{
}
write(chr[5]);
{
}
write(chr[4]);
{*****************
}
STAchr(rig+alt-1,col+lar-1,txt,sfo,'
'); {
}
IF lar<80 THEN
{
}
STAchr(rig+alt-1,lar+col
,ombP,ombS,ombC);{
}
IF lar<79 THEN
{
}
STAchr(rig+alt-1,lar+col+1,ombP,ombS,ombC);{*********}
gotoxy(col+2,rig+alt);
{**************}
IF lar=79 THEN
lar:=lar-1;
{Stampa l'ombra}
IF lar=80 THEN
lar:=lar-2;
{ sottostante }
FOR n:=1 to (lar) do
{
}
STAchr(rig+alt,col+n+1,ombP,ombS,ombC);{
}
gotoxy(1,1);
{**************}
END; |
|