OutText
Verze z 4. 10. 2012, 16:29, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (Created page with "Pošle řetězec do výstupního zařízení do místa ukazatele aktuální pozice (CP). ;Deklarace procedure OutText(TextString: string); ;Režim :Reálný, Chráněný ;...")
Pošle řetězec do výstupního zařízení do místa ukazatele aktuální pozice (CP).
- Deklarace
procedure OutText(TextString: string);
- Režim
- Reálný, Chráněný
- Poznámky
- Zobrazí TextString v místě CP za použití aktuálních zarovnávacích nastavení.
- TextString je odříznut na hranici výřezu, je-li příliš dlouhý.
- Pokud je aktivní některý vektorový (stroked) font, je TextString odříznut na kraji obrazovky, je-li příliš dlouhý.
- Pokud je aktivní implicitní (bitmapový) font a TextString je příliš dlouhý, než aby se vešel na obrazovku, nezobrazí se žádný text.
- OutText používá font nastavený pomocí SetTextStyle. Pro udržení kompatibility kódu při používání několika fontů použijte k určení rozměrů řetězce volání TextWidth a TextHeight.
- OutText používá výstupní volby, nastavené pomocí SetTextJustify (zarovnání, centrování, otočení o 90 stupňů atd.).
- Ukazatel aktuální pozice (CP) je aktualizován procedurou OutText pouze tehdy, je-li směr vodorovný se zarovnáním vlevo. Směr výstupu textu nastavuje procedura SetTextStyle (vodorovně nebo svisle); zarovnání textu nastavuje SetTextJustify (CP vlevo od řetězce, centrováno podle CP nebo CP vpravo od řetězce text nad CP, pod CP nebo svisle centrován podle CP). V následujícím příkladu blok #1 vypíše ABCDEF a přesune CP (protože text je vodorovný i zarovnán vlevo); blok #2 vypíše ABC, ale DEF jej přepíše (zarovnání doprava - CP zůstává na místě), podobně blok #3 vypíše ABC přepsané DEF, protože text je vypisován ve svislém směru a CP se tedy opět nemění.
Vzorový příklad
program CPupdate; uses Graph; var Driver, Mode: Integer; begin Driver := Detect; InitGraph(Driver, Mode, ); if GraphResult < 0 then Halt(1); { #1 } MoveTo(0, 0); SetTextStyle(DefaultFont, HorizDir, 1); { CharSize = 1 } SetTextJustify(LeftText, TopText); OutText('ABC'); { CP je aktualizován } OutText('DEF'); { CP je aktualizován } { #2 } MoveTo(100, 50); SetTextStyle(DefaultFont, HorizDir, 1); { CharSize = 1 } SetTextJustify(RightText, TopText); OutText('ABC'); { CP je aktualizován } OutText('DEF'); { CP je aktualizován } { #3 } MoveTo(100, 100); SetTextStyle(DefaultFont, VertDir, 1); { CharSize = 1 } SetTextJustify(LeftText, TopText); OutText('ABC'); { CP NENÍ aktualizován } OutText('DEF'); { CP NENÍ aktualizován } Readln; CloseGraph; end.
- CP není nikdy aktualizován procedurou OutTextXY.
- Implicitní font (8x8) není na kraji obrazovky ořezáván. Namísto toho, když by se některá část řetězce nevešla na obrazovku, nedojde k žádnému výstupu textu. Například tyto příkazy nebudou mít žádný efekt:
SetViewPort(0, 0, GetMaxX, GetMaxY, ClipOn); SetTextJustify(LeftText, TopText); OutTextXY(-5, 0); { -5,0 není na obrazovce } OutTextXY(GetMaxX - 1, 0, 'ABC'); { Část 'A', } { Vše z 'BC' mimo obrazovku }
- Vektorové fonty jsou na okrajích obrazovky ořezávány.
- Omezení
- Je nutno být v grafickém režimu.
- Viz také
- GetTextSettings
Vzorový příklad
{OutTxt.PAS} {Vzorový příklad pro proceduru OutText.} uses Graph; var Gd, Gm: Integer; begin Gd := Detect; InitGraph(Gd, Gm, ' '); if GraphResult <> grOk then Halt(1); OutText('Snadno použitelné'); Readln; CloseGraph; end.