# switch

### Funkce

Nastavení logické hodnoty hodnoty do výstupního datového elementu pomocí tlačítka.

### Syntax

      switch switch_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 = boolean_dataelement;
        blink = boolean_expression;
        blink_rate = identifier;
        mode = identifier;
        init_value = boolean;
        change_icon = file_name;
        true_icon = file_name;
        false_icon = file_name;
        sound = file_name;
        true_text = string;
        false_text = string;
        logic = identifier;
        receivers = [ identifier, . . . ];
        font = font_identifier, integer, style_identifier;
        mono = real, boolean;
        colors
          true_paper = color;
          true_ink = color;
          true_tshadow = color;
          true_bshadow = color;
          false_paper = color;
          false_ink = color;
          false_tshadow = color;
          false_bshadow = color;
        end_colors;
        blink_colors
          true_paper = color;
          true_ink = color;
          true_tshadow = color;
          true_bshadow = color;
          false_paper = color;
          false_ink = color;
          false_tshadow = color;
          false_bshadow = color;
        end_blink_colors;
      end_switch;

### Specifické parametry přístroje

- output
  Udává jméno výstupního datového elementu, kam se bude hodnota nastavená přístrojem switch posílat.
- 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
- mode
  Přístroj switch má tři módy:
  1. mode = icon_button;
     Zobrazí tlačítko s libovolným obrázkem ve formě dvou ikon, jejichž soubory jsou definovány v parametrech true_icon a false_icon. Jedna ikona bude zobrazena pro hodnotu false, druhá pro hodnotu true. Velikost tlačítek se implicitně nastaví podle velikosti ikon. Nezadáte–li žádný soubor, tlačítko bude v obou polohách vypadat následovně:
  2. mode = text_button;
     Opět jde o zobrazení tlačítka, jehož vzhled bude dán nikoli ikonami, ale zadaným textem v parametrech true_text a false_text. U textu lze ovlivnit font písma (font) a jeho barvu (colors). Velikost tlačítka lze bez ohledu na velikost textu libovolně měnit. Implicitně se zobrazuje text 'FALSE' a 'TRUE'. Tlačítka se ovládají vždy stejným způsobem – myší nebo klávesou <Enter>, jak znázorňují obrázky:
     – > – > – >
  3. mode = change_box;
     Tento mód zvolí zadávání boolean hodnoty pomocí zvláštního okna. Přístroj switch v tomto módu pouze zobrazí ikonu zadanou parametrem change_icon. Implicitní ikona je:
     Pokud na ikonu kliknete, zobrazí se modální okno s možností výběru a informací právě aktuálním stavu proměnné pomocí textů definovaných parametry true_text a false_text.
- init_value
  Udává počáteční nastavení přístroje.
- change_icon
  Je parametr obsahující jméno souboru `ICO`. Tato ikona se zobrazí, zadáte–li mode = change_box (viz mode).
- true_icon a false_icon
  Jsou jména souborů ICO. Jde o definici obrázků na povrchu tlačítka při mode = icon_button. Implicitně se zobrazí předdefinované ikony dvoupolohového spínače (viz mode).
- sound
  Obsahuje název souboru WAV se zvukovým doprovodem stisku tlačítka. Není–li tento parametr zadán, nebude přepínání hodnoty doprovázeno žádnými zvuky.
- true_text a false_text
  Jsou parametry pro přepínání hodnoty pomocí mode = text_button a mode = change_box. Obsahují libovolné řetězce znaků, jejichž význam bude odpovídat zadané hodnotě.
- logic
  Logika nastavování výstupu:
  set_true - po puštění tlačítka se nastaví vždy true
  set_false - po puštění tlačítka se nastaví vždy false
  set_flip_flop - po puštění tlačítka se nastaví střídavě true a false
  set_true_on_press - pouze při stisknutém tlačítku ja nastaveno na true, jinak je false
  set_false_on_press - pouze při stisknutém tlačítku ja nastaveno na false, jinak je true
- receivers
  Obsahuje seznam všech přístrojů, kterým je zasílána zpráva při změnách stavu přístroje.
- font
  Je parametr určující font textů v tlačítkách. 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).
- mono
  Obsahuje dvě položky. První určuje dobu monostabilního taktu (udává s v sekundách) a druhá jeho logickou úroveň.
- colors a blink_colors
  Seznam částí kresby přístroje, kterým lze měnit nastavení barvy:
  true_paper - pozadí tlačítka při true
  true_ink - písmo při true
  true_tshadow - horní okraj při true
  true_bshadow - dolní okraj při true
  false_paper - pozadí tlačítka při false
  false_ink - písmo při false
  false_tshadow - horní okraj při false
  false_bshadow - dolní okraj při false

### Poznámka

Přístroj je vždy aktivován obsluhou stiskem klávesy <Enter> nebo levým tlačítkem myši na ovládacích prvcích. Navíc může být také aktivován také např. časovačem nebo jiným přístrojem, kdy se může automaticky nastavovat podle hodnoty ve svém výstupním datovém elementu nebo cokoliv realizovat ve své proceduře OnActivate().
Implicitně jsou nastaveny parametry:

       position = 0, 0, 40, 40;
       access = 4294967295;
       tab_select = 4294967295;
       win_disable = zoom, maximize;
       mode = icon_button;
       init_value = false;
       true_text = 'TRUE';
       false_text = 'FALSE';
       logic = set_flip_flop;
       font = SYSTEM, 10, bold;
       mono = 0, false;

### Příklad

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

      window switch id_4;
        owner = background;
        position = 11, 28, 48, 48;
        win_disable = zoom, maximize;
        output = start;
      end_switch;

### Nativní procedury přístroje switch

    Update()

Nastavení přístroje podle aktuálního 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.

    SetValue( Value : boolean )

Zápis nové hodnoty do přístroje včetně případného nastavení výstupního datového elementu.

    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.

    Disable()

Zablokování přístroje. Po zavolání této metody aktivní plocha ovládacího prvku sešedne (bude překryta 50% rastrem) a přístroj nebude reagovat na některé události od myši a klávesnice.

    Enable()

Odblokování přístroje dříve zablokovaného metodou Disable(). Objekt se překreslí do původního vzhledu.

    Select()

Přístroj je vybrán, takže do něj přichází všechny události od klávesnice. Přístroj má smysl vybrat, jen je-li ve viditelném panelu a je li sám viditelný. Má-li přístroj nastaven parametr tab_select, je možno jej ve vybraném stavu plně ovládat klávesnicí.

    AnimateClick( MiliSec : number )

Animace stisku tlačítka po nastavenou dobu, danou parametrem MiliSec v milisekundách.

    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 switch

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 )
    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: boolean )

Procedura je zavolána před každým zápisem do výstupního datového elementu při stisku tlačítka operátorem.