kategória | ||||||||||
|
||||||||||
|
||
A CRT unit fontosabb beépített konstansai, eljárásai, függvényei, használata
Minden program egyik legfontosabb része - a lényegi problémamegoldás és a hibakezelés mellett - a felhasználói felület, melyen keresztül a felhasználó a programmal kapcsolatot tart. Nagyon fontos a megfelelõ kialakítása, mivel a program használata során mindig tudni kell milyen lehetõségek állnak rendelkezésre a továbblépésre, illetve hogyan lehet javítani hiba esetén. A felhasználói felület kialakítása során két lehetõség közül választhatunk: szöveges és grafikus felület. Figyelembe kell venni a program által támasztott követelményeket - függvényábrázolást oktató programot nem célszerû szöveges felületen írni - és a számítógép hardver kiépítettségét (videokártya, monitor). A hardver tényezõk ma már kevésbé okozna 858d34i k problémát az SVGA monitorok széleskörû elterjedése miatt. Amennyiben a szöveges felület mellett döntünk, Turbo Pascal programok esetében a CRT unit tartalmazza a szükséges eljárásokat, függvényeket, konstansokat.
A szöveges felületet használó programok
elsõ sora általában: Uses CRT; azaz a program elején meg kell hívni a
CRT unit-ot, hogy eljárásait, függvényeit, konstansait használhassuk a
programunk írása során.
A szöveges mód egyik fontos jellemzõje a képernyõ
karakterfelbontása, amely megmutatja, hogy vízszintesen és függõlegesen
hány karakter jeleníthetõ meg a képernyõn. A karakterfelbontás
általában 80x25 karakter, azaz a képernyõ egy sorába 80 karaktert
írhatunk és 25 sor fér el egyszerre a képernyõn. Ettõl
eltérõ értékkel találkozhatunk EGA és VGA monitorok esetében.
Az EGA és VGA monitorok karakterfelbontásai:
Monitortipus |
Oszlopok száma |
Sorok száma |
EGA |
|
|
|
|
|
|
|
|
VGA |
|
|
|
|
|
|
|
|
|
|
A képernyõ tipusa meghatározza a karakterfelbontás mellett az
alkalmazható karakter és háttérszínek számát is. Színes monitor esetén 16 féle
karakterszínt és 8 féle háttérszínt állíthatunk be. Monokrom monitorok esetében
(Hercules, MonoVGA) a különféle színeket árnyalatok jelzik.
Mind a karakterfelbontást, mind a karakter- és
háttérszínt beállíthatjuk a CRT unit eljárásainak és konstansainak
segítségével.
A CRT unit beépített konstansai:
A képernyõ üzemmódjához kapcsolódó beépített konstansok:
Konstans |
Érték |
Karakterfelbontás |
Értelmezés |
BW40 |
|
40x25 |
Fekete-fehér |
BW80 |
|
80x25 |
Fekete-fehér |
CO40 |
|
40x25 |
Színes |
CO80 |
|
80x25 |
Színes |
Mono |
|
80x25 |
Egyszínû (Hercules, MDA) |
Font8x8 |
|
80x43 |
EGA: 80x43 üzemmód |
A
színekhez kapcsolódó beépített konstansok:
Konstans |
Érték |
Szín |
|
Konstans |
Érték |
Szín |
BLACK |
|
Fekete |
LIGHTBLUE |
|
Világoskék |
|
BLUE |
|
Kék |
LIGHTGREEN |
|
Világoszöld |
|
GREEN |
|
Zöld |
LIGHTCYAN |
|
Világostürkiz |
|
CYAN |
|
Türkiz |
LIGHTRED |
|
Világospiros |
|
RED |
|
Piros |
LIGHTMAGNETA |
|
Világoslila |
|
MAGNETA |
|
Lila |
YELLOW |
|
Sárga |
|
BROWN |
|
Barna |
WHITE |
|
Fehér |
|
LIGHTGRAY |
|
Világosszürke |
BLINK |
|
Villogás |
|
DARKGRAY |
|
Sötétszürke |
|
|||
|
|
A fenti konstansokat a szövegszín, háttérszín és képernyõüzemmód
beállításánál használhatjuk. Ezen kívül beállíthatunk még néhény speciális
jellemzõt a CRT unit beépített változóinak segítségével. A változók
beállításai programunk futása során fejtik ki hatásukat.
A CRT unit beépített változói:
CheckBreak:
boolean
A programok futása általában megszakítható a Ctrl+Break
billentyûkombináció segítségével. A CheckBreak változó segítségével ennek
figyelését le lehet tiltani, tehát ha a programunk elején a CheckBreak
változónak False értéket adunk, akkor a Ctrl+Break billentyûkombinációval
a programot nem lehet megszakítani. Ha a változó értéke True, akkor a
Ctrl+Break billentyûkombinációval a program megszakítható. Alapértelmezés
szerinti értéke: True.
A CheckBreak változó értékét akkor célszerû beállítani, amikor a program
már "be van lõve", mert egy végtelen ciklus esetén hasznos
lehet, ha meg tudjuk szakítani a program futását.
CheckSnow:
boolean
CGA tipusú monitorok esetében befolyásolja a megjelenítés minõségét.
DirectVideo:
boolean
A Write és Writeln eljárások mûködését befolyásolja. Ha értéke True, akkor
a Write és Writeln eljárások közvetlenül írhatnak a videomemóriába (amelynek
kezdõcíme: $B800:$0000), ha értéke False, akkor a képernyõre
íráshoz az eljárások BIOS megszakításokat használnak. A videomemória közvetlen
kezelése lényegesen gyorsabb mûködést eredményez, ezért csak nagyon
indokolt esetben célszerû a változó értékét módosítani.
LastMode:
Word
Az utoljára beállított szöveges üzemmód kódját tartalmazza. Alkalmazása akkor
szükséges, ha a program felváltva használ szöveges és grafikus képernyõt.
WindMin:
Word; WindMax: Word
A beállított szöveges ablak (lásd késõbb) bal felsõ és jobb alsó
sarkának abszolút (teljes képernyõre vonatkoztatott) koordinátáit
tartalmazzák. A WindMin a bal felsõ, a WindMax a jobb alsó sarok
koordinátáit tárolja. A változók alsó byte-ja az X, a felsõ byte-ja az Y
koordináta tárolására szolgál. Az értékek a Low és High függvényekkel
nyerhetõk vissza.
Példa:
Uses CRT;
Var X_1, Y_1, X_2, Y_2: Byte;
Begin
X_1:= Low(WindMin);
Y_1:= High(WindMin);
X_2:= Low(WindMax);
Y_2:= High(WindMax);
Writeln('A szoveges ablak
sarkainak koordinatai:');
Writeln('Bal felso sarok: X= ', X_1, 'Y= ', Y_1);
Writeln('Jobb also sarok: X= ', X_2, 'Y= ', Y_2);
End.
A CRT unit eljárásai, függvényei:
A CRT unit eljárásait, függvényeit négy
csoportba sorolhatjuk:
1. Mûködési paraméterek beállítása
2. Be- és kiviteli mûveletek
3. Képernyõkezelés
4. Egyéb eljárások, függvények
Mûködési
paraméterek beállítása:
Ebbe a csoportba tanroznak azok az eljárások, amelyek a szövegszínt,
háttérszínt, üzemmódot állítják be.
HighVideo
eljárás:
A karakterszín intenzitásának növelése.
LowVideo
eljárás:
A karakterszín intenzitásának csökkentése.
NormVideo:
Az alapértelmezés szereinti karakterszín és háttérszín beállítások
visszaállítása. Az alapértelmezett karakterszín: LIGHTGRAY, az alapértelmezett
háttérszín: BLACK.
TextBackground
eljárás:
A háttérszín beállítása. Szintaxisa: TextBackground(Háttérszín);
A háttérszín beállításához használhatjuk a CRT unit beépített konstansai és
azok értékét is. Tehát TextBackground(BLACK) és TextBackground(0)
egyenértékû. A beállítás után a Write és Writeln eljárások a beállított
háttérszínnel fogják a képernyõre írni az adatokat. Ha a teljes
képernyõre szeretnénk a beállításokat érvényesíteni, alkalmazzuk a
ClrScr eljárást.
TextColor
eljárás:
A karakterszín beállítása. Szintaxisa: TextColor(Karakterszín);
A karakterszín beállításához használhatjuk a CRT unit beépített konstansai és
azok értékét is. Tehát TextColor(BLUE) és TextColor(1) egyenértékû. A
beállítás után a Write és Writeln eljárások a beállított karakterszínnel fogják
a képernyõre írni az adatokat.
TextMode
eljárás:
A képernyõ üzemmódjának (karakterfelbontás) beállítása. Szintaxisa:
TextMode(Mod);
Az uzemmod beállításához használhatjuk a CRT unit beépített konstansait és azok
értékét is. Tehát TextMode(Font8x8) és TextMode(256) egyenértékû. Az
üzemmód megváltoztatását automatikus képernyõtörlés elõzi meg
(mivel a karakteres videomemória mérete megváltozik).
Window
eljárás:
A szöveges képernyõablak kijelölése. Szintaxisa: Window(X1, Y1, X2, Y2);
Ahol X1 és Y1 a képernyõablak bal felsõ sarka, X2, Y2 a
képernyõablak jobb alsó sarka. A sarkok koordinátái mindig a teljes
képernyõre vontakozó abszolút koordináták.
A szöveges képernyõn kijelölt alapértelmezett ablak mindig - a
karakterfelbontáshoz igazodva - teljes méretû. Tehát, ha a
karakterfelbontás 80x25, akkor az ablak koordinátái: 1,1,80,25. Az ablak
méretét és helyzetét a Window eljárás segítségével megváltozathatjuk. A
szöveges képernyõn egyszerre csak egy ablakot használhatunk. Miután az
aktív ablak méretét módosítottuk a további eljárások ezen az ablakon belül
relatív koordinátákkal dolgoznak.
Be- és
kiviteli mûveletek:
A be- és kiviteli mûveletek csoportjába tartoznak azok az eljárások és
függvények, melyek segítségével az I/O egységek kezelését tudjuk megvalósítani.
Read
eljárás:
Egy vagy több változó értékének beolvasása a billentyûzetrõl.
Szintaxis: Read(VáltozóLista);
A változók értékeit ENTER választja el, tehát ha több változót olvasunk be
egyszerre (ami szerintem nem célszerû), akkor minden érték után le kell
ütni az ENTER-t.
Readln
eljárás:
Egy vagy több változó értékének beolvasása a billentyûzetrõl.
Szintaxis: Read(VáltozóLista);
A változók értékeit vesszõvel választhatjuk el egymástól.
ReadKey
függvény:
Egy karakter beolvasása a billentyûzetrõl. Szintaxisa: ch:=
Keypressed; vagy Keypressed;
A második esetben a beolvasott karakter értéke elvész.
Keypressed
függvény:
Billentyûlenyomás ellenõrzése. Szintaxisa: Log:= Keypressed vagy
Keypressed;
Visszatérési értéke logikai (Boolean) érték, amely True, ha történt
billentyûlenyomás, egyébként False;
Leggyakrabban ciklusfeltételben alkalmazzuk:
Repeat Until Keypressed;
Write
eljárás:
Adatok írása a képernyõre. Szintaxisa: Write(Adatlista);
Az adatlistában szerepelhetnek konstans értékek, konstans azonosítók, illetve
változóazonosítók. Megadhatjuk az egyes adatok után a mezõszélességet,
amely meghatározza, hogy az adat hosszúságától függetlenül hány karakterhelyet
foglalhat el a képernyõn. A mezõszélességet általában numerikus
adatok esetében határozzuk meg, mivel alapértelmezés szerint az eljárás normál
alakban írja a képernyõre a lebegõpontos számokat (változókat,
konstansokat egyaránt). A mezõszélességet egy számmal adjuk meg, és
kettõsponttal választjuk el az adattól. Pld: Writeln(A:10:2); ahol A
Real tipusú változó.
Writeln
eljárás:
Adatok írása a képernyõre. Szintaxisa: Writeln(Adatlista);
Használata hasonló az elõzõ eljáráshoz, közöttük a különbség,
hogy a Writeln eljárás az adatsor képernyõre írása után elvégzi a
soremelést, tehát a Writeln használata után a kurzor a következõ sor elejére
ugrik.
Képernyõkezelés:
Ebbe a csoportba soroljuk azokat az eljárásokat, függvényeket, amelyek a kurzor
mozgatásával, illetve a szöveges képernyõ sorainak, oszlopainak
kezelésével kapcsolatos feladatokat látják el.
ClrScr
eljárás:
A képernyõ törlése. Szintaxisa: ClrScr;
A képernyõ tartalmát törli, a kurzor az elsõ oszlop elsõ
sorába ugrik. Az eljárás figyelmebe veszi a beállított háttérszínt ("iylen
színûre törli a képernyõt").
ClrEol
eljárás:
Az eljárás törli az aktuális (a kurzort tartalmazó) sor tartalmát, a kurzor
pozíciójától a sor végéig. Szintaxisa: ClrEol;
WhereX
függvény:
A kurzort tartalmazó oszlop sorszáma. Szintaxisa: X:= WhereX;
A függvény visszatérési értéke Byte tipusú.
WhereY
függvény:
A kurzort tartalmazó sor sorszáma. Szintaxisa: Y:= WhereY;
A függvény visszatérési értéke Byte tipusú.
DelLine
eljárás:
A kurzort tartalmazó sor törlése. Szintaxisa: DelLine;
A kurzor sorától lentebb lévõ sorok felfelé mozdulnak. Hasonló a ClrEol
eljáráshoz, de a DelLine esetén a teljes sor törlére kerül, míg a ClrEol
eljárás csak a sor tartalmát módósítja.
InsLine
eljárás:
Üres sor beszúrása. Szintaxisa: InsLine;
A kurzort tartalmazó sor felé egy üres sort szúr be. A lentebb lévõ
sorok lefelé mozdulnak.
Egyéb
eljárások, függvények:
Ebbe a csoportba tartoznak a hangkeltéssel kapcsolatos, illetve a programfutás
felfüggesztését segítõ eljárások.
Delay
eljárás:
A program futásának felfüggesztése. Szintaxisa: Delay(Idotartam);
Az idõtartamot ezredmásodpercben kell megadni. Az Idotartam Word tipusú
változó vagy konstans.
Sound
eljárás:
A belsõ hangszóró bekapcsolása. Szintaxis: Sound(Frek);
A Frek egy Word tipusú változó vagy konstans, a hangmagasságot határozza meg.
NoSound
eljárás:
A belsõ hangszóró kikapcsolása. Szintaxisa: NoSound;
Ha a Sound eljárással a belsõ hangszórót bekapcsoltuk, minden esetben
alkalmazni kell a NoSound eljárást, mert a hangszóró mindaddig nem kapcsol ki,
amíg ezt az eljárást meg nem hívjuk (vagy a gépet ki nem kapcsoljuk).
:
1363