# string_control

### Funkce

Zadání textu do výstupního datového elementu prostřednictvím editačního řádku.

### Syntax

      string_control string_control_name;
        rem = string;
        bubble = string;
        owner = owner_name;
        position = integer, integer, integer, integer;
        win_disable = [ identifier, . . . ];
        win_title = string;
        access = integer;
        tab_select = integer;
        send_same_data;
        output = string_dataelement;
        init_value = string;
        blink = boolean_expression;
        blink_rate = identifier;
        sound = file_name;
        history = integer;
        enter_button;
        receivers = [ identifier, . . . ];
        font = font_identifier, integer, style_identifier;
        colors
          top_shadow = color;
          bottom_shadow = color;
          ink = color;
          paper = color;
          selected_ink = color;
          selected_paper = color;
          border = color;
        end_colors;
        blink_colors
          top_shadow = color;
          bottom_shadow = color;
          ink = color;
          paper = color;
          selected_ink = color;
          selected_paper = color;
          border = color;
        end_blink_colors;
      end_string_control;

### Specifické parametry přístroje

- output
  Udává jméno výstupního datového elementu, kam se bude hodnota nastavená přístrojem string_control posílat.
- init_value
  Udává inicializační text.
- blink
  Parametr uvádí logický výraz, jehož výsledek rozhoduje o tom, bude-li přístroj blikat -- tedy periodicky se překreslovat se střídavým použitím barevných sad colors a blink_colors. Po zastavení blikání se přístroj vždy vrátí do základní barevné sady colors.
- blink_rate
  Určuje frekvenci blikání přístroje uvedením jednoho z identifikátorů:
  slow - blikání s periodou 2 sekundy
  normal - blikání s periodou 1 sekunda
  quick - blikání s periodou 0.5 sekundy
- sound
  Obsahuje jméno souboru `*.WAV` se zvukovým doprovodem. Není–li tento parametr zadán, nebude zadávání textu doprovázeno žádnými zvuky.
- history
  Počet pamatovaných textů. Z historického seznamu je možno vybírat klávesami <Up> a <Down>.
- enter_button
  Je příznak, který rozhoduje o zobrazení potvrzovacího tlačítka na konci řádku. Není–li umístěno tlačítko (implicitní stav, kdy není tento parametr uveden), lze hodnotu potvrdit pouze z klávesnice klávesou <Enter>. Je–li tlačítko uvedeno (enter_button;), pak je možno poslat hodnotu i pomocí myši. Rozdíl ukazují obrázky:
  - přístroj bez tlačítka potvrzení
  - s tlačítkem potvrzení (enter_button)
- receivers
  Obsahuje seznam všech přístrojů, kterým je posílána zpráva při změně stavu přístroje.
- font
  Je parametr určující font. Má vždy tři parametry. První z nich font_identifier určuje typ písma (např. TIMES, SYSTEM, aj.), druhý určuje jeho velikost v tiskových bodech a třetí parametr style_identifier rozhoduje o tom, zda bude písmo normální (normal), tučné (bold) nebo skloněné (italic).
- colors a blink_colors
  Seznam prvků přístroje, kterým lze měnit nastavení barvy:
  top_shadow - horní stín bottom_shadow - dolní stín ink - barva textu paper - pozadí textu selected_ink - text při zadávání hodnoty selected_paper - papír textu při zadávání border - papír tlačítka potvrzení

### Poznámka

Přístroj nemá parametr timer. Je aktivován stiskem klávesy <Enter>, popř. tlačítka přístroje (enter_button).
Implicitně jsou nastaveny parametry:

      position = 0, 0, 200, 18;
      access = 4294967295;
      tab_select = 4294967295;
      history = 20;
      font = SYSTEM, 10, bold;

### Příklad

Příklad nastavení parametrů přístroje string_control:

      window string_control display;
        owner = background;
        position = 100, 120, 200, 18;
        output = hlaseni;
      end_string_control;

### Nativní procedury přístroje string_control

    Update()

Nastavení přístroje podle stavu jeho výstupního datového elementu.

    Update( SetOutput : boolean )

Nastavení přístroje podle aktuálního stavu jeho výstupního datového elementu. Parametr SetOutput určuje, budou-li nová data zpětně zapsána do výstupního datového elementu.

    NewRect( x, y, width, depth : real )

Zavoláním metody je možné přístroji změnit současně jeho pozici a velikost. Velikosti hodnot x, y, width, a depth jsou v bodech obrazovky.

    MoveTo( x, y : real )

Posunutí přístroje na pozici x, y. Velikosti hodnot x a y jsou v bodech obrazovky.

    Show()

Zobrazení skrytého přístroje.

    Hide()

Skrytí viditelného přístroje.

    Select()

Vybrání přístroje. (Veškerá data např. z klávesnice jsou směrována do vybraného objektu)

    IsSelected( &Selected : boolean )

Vrací true, je-li přístroj zrovna vybrán, jinak vrací false.

    SetIgnoreChars( IgnoreChars : string )

Nastavení sady znaků, které budou editačním řádkem přístroje ignorovány.

    Blink( BlinkingActive : boolean )

Zapnutí a vypnutí blikání. Voláním procedury Blink s parametrem BlinkingActive nastaveným na true začne přístroj blikat (tj. střídavě se překreslovat s použitím barevných sad colors a blink_colors). Blikání je možno zastavit voláním procedury Blink s parametrem BlinkingActive nastaveném na hodnotu false. Frekvence blikání je dána parametrem přístroje blink_rate.

    ToggleBlink()

Přepnutí vzhledu přístroje do alternativní sady barev, tedy z colors do blink_colors nebo naopak podle okamžitého stavu. Po zastavení blikání se přístroj vždy vrátí do standardní barevné sady bez ohledu na předchozí volání procedury ToggleBlink.

### Událostní procedury přístroje string_control

Přístroj může volat standardní událostní procedury:

    OnActivate()
    OnMouseDown( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean )
    OnMouseDoubleClick( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean )
    OnMouseUp( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean )
    OnMouseMove( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean )
    OnKeyDown( Character : cardinal )
    OnKeyRepeat( Character : cardinal )
    OnKeyUp( Character : cardinal )
    OnSelect()
    OnDeselect()
    OnShow()
    OnHide()
    OnNewPosition( RectX, RectY, RectW, RectD : integer )
    OnWindowMinimize()
    OnWindowMaximize()
    OnWindowRestore( WasMinimized, WasMaximized : boolean )
    OnWindowClose()

### Specifické událostní procedury přístroje

    OnOutput( Output : string )

Procedura je zavolána před každým zápisem do výstupního datového elementu. V proměnné Output je hodnota, které bude bude po dokončení procedury zapsána do výstupního datového elementu. Toto hodnotu je možno v proceduře změnit.

    OnOutputChanged( Output: string )

Procedura je zavolána pouze před takovým zápisem do výstupního datového elementu, kdy se nová hodnota liší od hodnoty ve výstupním datovém elementu. Proměnná Output je naplněna hodnotou, která bude bude po dokončení procedury zapsána do výstupního datového elementu. Toto hodnotu je možno v proceduře změnit.