Jednotka CRT, patří k prvkům, zpestřující výsledný program. Jednotky obsahují sadu příkazů, které vykonávají různé činnosti v programu. Může to být časová odezva, vyčištění plochy konzole či také práce s kurzorem. Nejprve si tedy ukážeme funkce poskytující jednotka CRT a následně si na to vytvoříme jednoduchý program, využívající této jednotky.
CRT se deklaruje pod názvem programu (uses crt;), zde v odkazu máte nápovědu kam tento řádek vložit.
ClrScr
- Slouží k vymazání obsahu v konzoli.
- Zakončit středníkem!
Delay(ms)
- Slouží k deklaraci odezvy.
- V závorkách se zadává hodnota v milisekundách, po kterou bude tento příkaz vykonáván.
- Zakončit středníkem!
- Využitelné, pro vyčkání na přečtení úseku textu nebo také časování.
DelLine
- Vymaže řádek, na kterém se nachází kurzor.
- Zakončit středníkem!
GotoXY(X,Y)
- Skok na zadané souřadnice (rozsah 0-255).
- Souřadnice X – sloupec.
- Souřadnice Y – řádek.
- Zakončit středníkem!
- Využití, pro skoky v programu. Možné přepisování dat a ukládání jich do souboru. Lze využít v kombinaci zápisu do souboru.
InsLine
- Vloží řádek na pozici kurzoru v konzoli.
- Zakončit středníkem!
ReadKey
- Čeká na stisk klávesy z klávesnice.
- Zakončit středníkem!
- Možno využít pro zadání hesla (v konzoli není vidět zadaný znak, jen pokud ho necháme vypsat).
TextBackground(barva)
- Deklarace pozadí barvy za textem.
- Barvy jsou deklarovány číslem v rozsahu 0-255.
- Zakončit středníkem!
- Využití u změny prostředí uživatelem.
TextColor(barva)
- Deklarace barvy textu v konzoli.
- Barvy deklarovány číselně v rozsahu 0-255.
- Zakončit středníkem!
- Využití u změny prostředí uživatelem.
WhereX
- Funkce vrací hodnotu souřadnice kurzoru (sloupec).
- Zakončit středníkem!
WhereY
- Funkce vrací hodnotu souřadnice kurzoru (řádek).
- Zakončit středníkem!
Příklad použití funkcí jednotky CRT:
Tento program demonstruje některé funkce jednotky CRT. Příklad je možno i si stáhnout přímo do vašeho počítače. ODKAZ
program jednotka; uses crt; var a,menu,volba:byte; var znak:char; procedure prvni(); begin writeln('Vitejte v prvni procedure testujici funkci ClrScr'); write('Tato funkce se zapisuje: '); writeln('ClrScr;'); writeln(); writeln('Stiskem klavesy ENTER vymazete aktualni obsah...'); readln(); ClrScr; writeln('Tento text byl smazan funkci ClrScr'); writeln('Tato procedura konci a vrati vas zpet do menu.'); writeln('Stiskem klavesy Enter pokracujte...'); readln(); ClrScr; end; procedure druha(); begin writeln('Vitejte v automaticke procedure s DELAY'); delay(1000); writeln('Nemusite nic delat, ono to pracuje samo, jen ctete'); writeln(); delay(500); writeln('Deklarace odezvy: Delay(pocet ms);'); delay(1000); writeln('Ten na rychlovku vypisu par cisel... s vyuzitim cyklu'); a := 0; while (a < 10) do begin write(a,' '); a := a + 1; delay(400); end; writeln('To je vse z teto procedury...'); writeln('Navratim vas do menu a smazu tuto patlanici'); delay(3000); ClrScr; end; procedure treti(); begin write('Treti procedura maze radek'); writeln('Tento radek je druhy, programove prvni'); writeln('Tohle je teprve druhy,protoze zaciname od nuly'); write('Tento radek necham smazat programem'); delay(2000); DelLine(); writeln(); writeln('Radek byl smazan a vlozil jsem zde dalsi...'); writeln('Ted ukoncim tuto proceduru a jdeme zpet do Menu'); delay(5000); ClrScr(); end; procedure ctvrty(); begin writeln('Ted jsme v ctvrte procedure'); // Prvni radek writeln('Nachazime se na druhem radku, ten predchozi byl nulty radek'); // Druhy radek writeln('Ted jsme na tretim radku a provedu skok na ten predchozi a pripisu za to text..'); // Treti radek writeln('Jeste jen mala 2 vterinova odezva. '); // Ctvrty radek delay(2000); GotoXY(28,1); // Skok na prvni radek za text write (':skok sem'); delay(2000); // Skok na paty radek zpet za psany text GotoXY(1,5); writeln('Skocil jsem zpet s kurzorem a ukoncim stiskem klavesy ENTER proceduru..'); readln(); ClrScr(); end; procedure paty(); begin writeln('Vitej v pate procedure, vysvetlime si cteni z klavesy'); writeln('Zadas znak, program ho precte a vypise na obrazovku'); write('Zadej znak: '); znak := readkey(); writeln(); delay(1000); writeln('Zadal jsi znak: ',znak); writeln('Pokracuj libovolnou klavesou...'); readkey(); ClrScr; end; procedure sesty(); begin writeln('Sesta procedura nam zmeni barvy.'); writeln('Muzeme pouzit barvy dle cisel a nebo normalne zapisem'); writeln('Zmenim barvu textu na cervenou a pozadi na bilou'); TextColor(red); TextBackground(white); writeln('Tento text by mel mit zmenenu barvu a pozadi'); delay(2000); TextColor(7); TextBackground(black); writeln('Ted uz je text v puvodni barve a pokracujeme zpet do menu...'); delay(2000); ClrScr; end; begin menu := 1; while (menu = 1) do begin writeln(' Program pro praci s jednotkou CRT '); writeln('------------------------------------------'); writeln(' [1] ClrScr - Mazani obrazovky'); writeln(' [2] Delay - Casova odezva'); writeln(' [3] DelLine - Mazani radku'); writeln(' [4] GotoXY - Skok na ... '); writeln(' [5] Readkey - Cteni klavesy'); writeln(' [6] Colors - Barva textu a pozadi'); writeln(''); writeln(' [7] Ukoncit program'); writeln('------------------------------------------'); write('Vase volba: '); readln(volba); if (volba = 1) then begin ClrScr; prvni; end else if (volba = 2) then begin ClrScr; druha; end else if (volba = 3) then begin ClrScr; treti; end else if (volba = 4) then begin ClrScr; ctvrty; end else if (volba = 5) then begin ClrScr; paty; end else if (volba = 6) then begin ClrScr; sesty(); end else if (volba = 7) then begin menu := 0; end else begin writeln('Spatne zadana volba! Opakujte akci...'); Delay(2000); ClrScr; end; end; end.