[Back to TEXTWNDW SWAG index] [Back to Main SWAG index] [Original]
{ very simple windowing routine. This allow you to define a text window with
borders, and upper and lower label. The ascii code for corners and lines is
the portuguese version. I'm not sure if it'll work well in the International
code. If it doesn't just replace the symbols by the correct ones (also to
change from double to single line border). This is freeware. No guarantees.
Made by Luis Evaristo Fonseca, Thunderball Software Inc., 1994 Portugal }
{ Parameters for makewindow:
(x1,y1) upper left corner coordinates;
(x2,y2) lower right corner coordinates;
ctxt text color;
cfnd background color (numbers bigger than 7 are blinking colors);
title upper title (lefty);
bottom bottom note (centered);
Hidecursor:
Simply hides the cursor;
Showcursor:
Makes the cursor visible again;
Setcolor:
Changes text/back color, by changing values in textattr;
}
unit windows;
interface
uses crt;
procedure makewindow(x1,y1,x2,y2,ctxt,cfnd:integer;title,bottom:string);
procedure hidecursor;
procedure showcursor;
procedure setcolor(f,b:integer);
implementation
{****************************************************************************}
procedure setcolor(f,b:integer);
begin
textattr := f + b * 16;
end;
{****************************************************************************}
procedure hidecursor; assembler;
asm
mov ax,$0100
mov cx,$2607
int $10
end;
{****************************************************************************}
procedure showcursor; assembler;
asm
mov ax,$0100
mov cx,$0506
int $10
end;
{****************************************************************************}
procedure makewindow(x1,y1,x2,y2,ctxt,cfnd:integer;title,bottom:string);
var c1,c2:integer;
sattr:byte;
begin
if (x1+1>x2) or (y1+1>y2) then
exit;
sattr:=textattr;
hidecursor;
setcolor(cfnd,ctxt);
c2:=x1;
for c1:=y1 to y2 do
begin
for c2:=x1 to x2 do
begin
gotoxy(c2,c1);
write(' ');
end;
end;
gotoxy(x1,y1);
write('É');
for c1:=x1+1 to x2-1 do
write('Í');
write('»');
for c1:=y1+1 to y2-1 do
begin
gotoxy(x1,c1);
write('º');
gotoxy(x2,c1);
write('º');
end;
gotoxy(x1,y2);
write('È');
for c1:=x1+1 to x2-1 do
write('Í');
write('¼');
if (title<>'') and (length(title)<x2-x1-4) then
begin
gotoxy(x1+1,y1);
write('¹ '+title+' Ì');
end;
if (bottom<>'') and (length(bottom)<x2-x1-9) then
begin
gotoxy(x1+((x2-x1) div 2 - length(bottom) div 2 - 2),y2);
write('¹ '+bottom+' Ì');
end;
gotoxy(x1+1,y1+1);
showcursor;
textattr:=sattr;
end;
end.
[Back to TEXTWNDW SWAG index] [Back to Main SWAG index] [Original]