Program AblakProba;
Uses NewDelay,Crt;
{$i VRAM.inc}
Type TAblak=Object
bfx,bfy,jax,jay,
kSzin,cSzin,hSzin,bSzin:Byte;
cim:String;
masolat:TKepernyo;
cX,cY:Byte;
Procedure Nyit(pbfx,pbfy,pjax,pjay,
pkSzin,pcSzin,phSzin,pbSzin:Byte;
pcim:String);
Procedure Zar;
Procedure SorIr(szoveg:String);
Procedure LapozasraVar(szoveg:String);
Procedure Torol;
End;
(*
a TAblak objektum metodusainak definicioja:
*)
Procedure TAblak.Nyit(pbfx,pbfy,pjax,pjay,
pkSzin,pcSzin,phSzin,pbSzin:Byte;
pcim:String);
Var s,o:Byte;
Begin
(*
teljes kepernyomasolat letrehozasa:
*)
For s:=1 to MaxSor do for o:=1 to MaxOszlop do
Begin
masolat[s,o]:=Kep[s,o]
End;
(*
attributumok kitoltese:
*)
bfx:=pbfx; bfy:=pbfy; jax:=pjax; jay:=pjay;
kSzin:=pkSzin; cSzin:=pcSzin; hSzin:=phSzin; bSzin:=pbSzin;
cim:=pcim;
cX:=WhereX; cY:=WhereY;
(*
az ablak letrehozasa a kepernyon:
*)
Window(bfx,bfy,jax,jay);
TextBackground(kSzin); ClrScr;
TextColor(cSzin); Write(cim:((jax-bfx) Div 2)+(Length(cim) Div 2));
Window(bfx+1,bfy+1,jax-1,jay-1);
TextBackground(hSzin); ClrScr;
TextColor(bSzin);
cX:=WhereX; cY:=WhereY;
End;
Procedure TAblak.Zar;
Var s,o:Byte;
Begin
(*
teljes kepernyomasolat visszatoltese:
*)
For s:=1 to MaxSor do for o:=1 to MaxOszlop do
Begin
Kep[s,o]:=masolat[s,o]
End;
End;
Procedure TAblak.SorIr(szoveg:String);
Begin
(*
Ablak szin-, hely-, kurzor-allapot visszaallitas:
*)
Window(bfx+1,bfy+1,jax-1,jay-1); TextBackground(hSzin); TextColor(bSzin);
GotoXY(cX,cY);
(*
Ha mar nem fer oda, akkor lapozasra varakozas:
*)
If WhereY+(Length(szoveg)+(jax-bfx-1)) Div (jax-bfx)>(jay-bfy-1) then
Begin
LapozasraVar('Betelt. Esc-re tovabb.');
Torol;
End;
Writeln(szoveg);
cX:=WhereX; cY:=WhereY;
End;
Procedure TAblak.LapozasraVar(szoveg:String);
Const Esc=#27;
Var c:Char;
Begin
(*
Also, keretbeli sorba iras,
Esc-ig, veletlenszeruen valasztott szinnel:
*)
Window(bfx,jay,jax,jay); TextBackground(kSzin);
c:=#0;
Repeat
TextColor(Random(16));
GotoXY(((jax-bfx) Div 2)-(Length(szoveg) Div 2),1);
Write(szoveg);
Delay(100);
If KeyPressed then c:=ReadKey;
Until c=Esc;
(*
Alapallapot visszaallitas:
*)
TextBackground(kSzin); ClrScr;
Window(bfx+1,bfy+1,jax-1,jay-1); TextBackground(hSzin); TextColor(bSzin);
End;
Procedure TAblak.Torol;
Begin
ClrScr;
cX:=WhereX; cY:=WhereY;
End;
Var a0,a1,a2:TAblak;
c:Char;
i:Integer;
si:String;
Begin
ClrScr;
a0.Nyit(1,1,80,25,
Red,Blue,White,Black,
'Teljes k‚p');
For i:=1 to 30 do {lapraferes probaja}
Begin
Str(i:71,si);
a0.SorIr(si+'. sor.');
{uj ablak rairas probaja:}
a1.Nyit(Random(10)+10,Random(3)+5,70-Random(3),20-Random(3),
Blue,White,Black,Red,
'Bels“ k‚p');
a1.SorIr('1. bels“ ablak:'+si+'.');
{uj ablak rairas probaja:}
a2.Nyit(Random(15)+1,Random(5)+8,74-Random(5),22-Random(5),
Green,Red,Cyan,White,
'Legbels“ k‚p');
a2.SorIr('2. bels“ ablak:'+si+'.');
If Random<0.1 then a2.LapozasraVar('Esc-re megyunk.');
Delay(500);
a2.Zar;
If Random<0.1 then a1.LapozasraVar('Hadd menjunk!');
Delay(500);
a1.Zar;
End;
a0.LapozasraVar('Mehetunk?');
a0.Zar;
End.