TextMode

Z Delphi & Pascal (česká wiki)
Verze z 1. 10. 2012, 14:14, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (1 revízia: Knihovna CRT)
Skočit na navigaci Skočit na vyhledávání

Zvolí určitý textový režim.


Deklarace
procedure TextMode(Mode: Integer);


Režim
Reálný, Chráněný


Poznámky
Při zavolání TextMode se aktuální okno nastaví na celou obrazovku, DirectVideo se nastaví na True, CheckSnow se nastaví na True, pokud se volí barevný režim, aktuální textový atribut se obnoví na normál, odpovídající volání NormVideo. Zároveň je dosavadní hodnota textového režimu uložena do proměnné LastMode (při startu programu dostane tato proměnná hodnotu textového režimu, za kterého byl program spuštěn).
Voláním TextMode(LastMode) se vrátíte k minulému textovému režimu, což může být užitečné zejména při ukončení grafického režimu.
Volání TextMode
TextMode(C80 + Font8x8)
nastaví na barevném monitoru zobrazovací režim s 43 řádkami a 80 sloupci (EGA) nebo s 50 řádkami a 80 sloupci (VGA). Pokud chcete vypnout 43- či 50-řádkový režim, ale jinak nechat režim nezměněný, použijte volání TextMode(Lo(LastMode)). Naopak
TextMode(Lo(LastMode) + Font8x8)
přepne na režim s větším počtem řádek bez změny ostatních parametrů.
Pokud je váš system v režimu s 43 nebo 50 řádkami již při startu programu, je tento režim startovacím kódem Crt zachován včetně správné inicializace proměnné WindMax, která obsahuje počet řádek.


Následující příklad ukazuje, jak by měl "dobře vychovaný" program zacházet s hodnotou původního textového režimu, aby dokázal při ukončení běhu vrátit uživatele do stejně nastaveného displeje, z jakého program zavolal:
program Video;
uses Crt;
var OrigMode: Integer;
begin
  OrigMode := LastMode;      { Zapamatování původního
   režimu }
  ...
  TextMode(OrigMode);
end.


Vzorový příklad

 { TxtMd.PAS }
 { Příklad na TextMode }
 program Video;

 { Přepíná barevný monitor do 40 sloupců na pozadí. Nepracuje na mono adaptéru. }
 uses Crt;
 var
   OrigMode: Integer;
 begin
   OrigMode := LastMode;
   TextMode(CO40);
   WriteLn('Velké znaky');
   ReadLn;
   TextMode(OrigMode);
 end.