Otevřít hlavní menu

Změny

OutText

Přidáno 3 879 bajtů, 4. 10. 2012, 16:29
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]]

:[[OutTextXY]]

:[[SetTextJustify]]

:[[SetTextStyle]]

:[[SetUserCharSize]]

:[[TextHeight]]

:[[TextWidth]]


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.
[[Category:Graph]]
[[Category:Procedúry Graph]]