Otevřít hlavní menu

OutText

Verze z 4. 10. 2012, 17:01, kterou vytvořil Zdeno Sekerák (diskuse | příspěvky) (1 revízia: Unit Graph)

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.