# indicator

### Funkce

Zobrazení logické veličiny nebo výsledku logického výrazu s možností přiřazení výsledku do výstupního datového elementu.

### Syntax

      indicator indicator_name;
        rem = string;
        bubble = string;
        timer = timer_name;
        owner = owner_name;
        position = integer, integer, integer, integer;
        win_disable = [ identifier, . . . ];
        win_title = string;
        access = integer;
        tab_select = integer;
        send_same_data;
        expression = boolean_expression;
        blink = boolean_expression;
        blink_rate = identifier;
        true_icon = file_name;
        false_icon = file_name;
        font = font_identifier, integer, style_identifier;
        true_text = string;
        font = font_identifier, integer, style_identifier;
        true_text = string;
        font = font_identifier, integer, style_identifier;
        false_text = string;
        font = font_identifier, integer, style_identifier;
        false_text = string;
        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_indicator;

### Specifické parametry přístroje

- expression
  Obsahem tohoto parametru je logický výraz, jehož výsledek bude přístroj zobrazovat.
- true_icon a false_icon
  Jsou jména souborů s ikonami `*.ICO`. Ikony určují vzhled přístroje. Implicitně se zobrazí ikony zhasnuté žárovky pro stav false a rozsvícené žárovky pro indikaci stavu true:
- 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
- font
  Je parametr určující font písma při vypisování textů zadaných u parametrů true_text a false_text. Každý 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).
- true_text a false_text
  Jsou parametry obsahující libovolné řetězce znaků, jejichž význam bude odpovídat dané hodnotě. Text může mít několik řádků, a na každý z nich může být použit jiný font. Stačí několikrát po sobě uvést parametry font = ...; a true_text = ...; , kde každá položka bude představovat jeden řádek, např.:
- colors a blink_colors
  Seznam částí kresby přístroje, kterým lze měnit nastavení barvy:
  true_paper - povrch tlačítka při stavu true
  true_ink - písmo při stavu true
  true_tshadow - horní okraj při stavu true
  true_bshadow - dolní okraj při stavu true
  false_paper - povrch tlačítka při stavu false
  false_ink - písmo při stavu false
  false_tshadow - horní okraj při stavu false
  false_bshadow - dolní okraj při stavu false

### Poznámka

Přístroj nemá parametr mode, přesto může zobrazovat hodnotu boolean dvěma různými způsoby. Jsou–li definovány parametry true_text a false_text, mají přednost před zadanými ikonami a přístroj zobrazuje tyto texty. Nejsou–li texty zadány, zobrazují se ikony.
implicitně je nastaven pouze parametr:

      position = 0, 0;

### Příklad

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

    indicator žárovka;
      timer = 0.1;
      owner = background;
      position = 57, 7;
      expression = zapnuto;
    end_indicator;

### Nativní procedury přístroje indicator

    SetValue( Value : boolean )

Nastavení ovládacího prvku na novou hodnotu Value včetně zápisu této hodnoty do výstupního datového elementu.

    MoveTo( XPosition, YPosition : 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.

    Update()

Nastavení ovládacího prvku podle aktuálního stavu jeho výstupního datového elementu včetně překreslení přístroje v novém stavu.

    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.

    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 indicator

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

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

    OnOutputChanged( Output: boolean )

Procedura je zavolána jen při změně výsledku vyhodnocovaného logického výrazu oproti výsledku předchozímu. Proměnná Output je naplněna hodnotou, která bude přístrojem zobrazena a která bude případně po dokončení procedury zapsána do výstupního datového elementu. Tuto hodnotu je možno v proceduře změnit.