A Crt egység a karakteres képernyõ, a billentyûzet valamint a hangszóró kezelését segítõ függvényeket, eljárásokat tartalmazza. Mint az egységek többsége, a Crt unit is definiál konstansokat, változókat.
Színek:
A karakteres képernyõ tartalma megtalálható az ún. képernyõ memóriában. Itt egy karaktert két bájton tárol el a rendszer, melyek a karakter ASCII kódja (1 bájt) valamint a karakter attribútuma (1 bájt). Ez utóbbi a színinformációt hordozza, az alábbi módon:
7 6 5 4 3 2 1 0
V R G B I R G B
A 0.-3. bit a karakter tintaszínét határozza meg, R, G, B az additív színkeverés három alapszíne, I pedig az intenzitás. Például 0100 - piros, 1100 - világospiros, 0101 - lila. A 4.-6. bitek a karakter háttérszínét kódolják. Ha a 7. bit (V) egyes, akkor a karakter villog.
A fentiekbõl következik, hogy összesen 16 tinta- és 8 háttérszínt használhatunk. A színek kódjait könnyen kiszámolhatjuk, ezeket a megfelelõ eljárásokban használhatjuk, de a könnyebb megjegyezhetõség kedvéért a Crt unit az alábbi szín konstansokat definiálja.
Tinta- és háttérszínek: |
További tintaszínek: |
||||
Balck |
0 |
Fekete |
DarkGray |
8 |
Sötétszürke |
Blue |
1 |
Kék |
LightBlue |
9 |
Világoskék |
Green |
2 |
Zöld |
LightGreen |
10 |
Világoszöld |
Cyan |
3 |
Türkiz |
LightCyan |
11 |
Világostürkiz |
Red |
4 |
Piros |
LightRed |
12 |
Világospiros |
Magenta |
5 |
Lila |
LightMagenta |
13 |
Világoslila |
Brown |
6 |
Barna |
Yellow |
14 |
Sárga |
LightGray |
7 |
Világosszürke |
White |
15 |
Fehér |
Blink 128 Villogás
Pl: TextColor(Lightred+Blink), ezzel egyenértékû: TextColor(12 + 128) vagy TextColor(140).
Fontosabb eljárások, függvények:
Képernyõkezelés:
Függvények: WhereX, WhereY
Eljárások: TextBackground, TextColor, ClrScr, CrlEol, DelLine, InsLine, GotoXY, Window, NormVideo, TextMode
Billentyûzetkezelés:
Függvények: KeyPressed, ReadKey
Hang, késleltetés:
Eljárások: Sound, Delay, NoSound
Példa:
1. Mozgassunk egy téglalapot (egy kis képernyõt) benne egy szöveggel a képenyõn a kurzormozgató billentyûk segítségével!
Crt unit - példaprogram
program CrtPl;
uses Crt;
var x1, x2, y1, y2: byte;
c: char;
begin
x1:=35; y1:=12; x2:=45; y2:=16;
repeat
{A régi ablak törlése}
TextBackground(black);
ClrScr;
{Új ablak és a szöveg megjelenítése}
Window(x1, y1, x2, y2);
TextBackground(blue);
TextColor(red);
ClrScr;
GotoXY(3, 3);
WriteLn('szoveg');
{Várakozás egy billentyû leütésére}
c := ReadKey;
{Ha a billentyûzetnek két bájtos kódja van (az elsõ bájt #0), a második bájt beolvasása.
Ilyenek a kurzormozgató billentyûk.}
if c = #0 then
begin
c := ReadKey;
case c of
#72: begin Dec(y1); Dec(y2) end; {Felfele nyíl}
#80: begin Inc(y1); Inc(y2) end; {Lefele nyíl}
#77: begin Inc(x1); Inc(x2) end; {Jobbra nyíl}
#75: begin Dec(x1); Dec(x2) end; {Balra nyíl}
end;
end
{Kilépés ESC-re}
until c = #27;
NormVideo; {Eredeti színek visszaállítása}
ClrScr
end.