# multi_label

### Funkce

Zobrazení libovolných ikon nebo textů v závislosti na výsledcích vyhodnocení logických výrazů. Přístroj může podle stanovených podmínek měnit svůj vzhled i polohu. Výsledky vyhodnocení výrazů mohou být přiřazeny do výstupních datových elementů.

### Syntax

      multi_label multi_label_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;
        blink = boolean_expression;
        blink_rate = identifier;
        x_position = real_expression;
        y_position = real_expression;
        frame = integer;
        driver_exception = driver_name;
        item
          icon = file_name;
          font = font_identifier, integer, style_identifier;
          text = string;
          font = font_identifier, integer, style_identifier;
          text = string;
          expression = boolean_expression;
        end_item;
        item
          . . .
        end_item;
        colors
          paper = color;
          ink = color;
          top_shadow = color;
          buttom_shadow = color;
        end_colors;
        blink_colors
          paper = color;
          ink = color;
          top_shadow = color;
          buttom_shadow = color;
        end_blink_colors;
      end_multi_label;

### Specifické parametry přístroje

- x_position a y_position
  Oba parametry vyjadřují numerické výrazy. Podle jejich hodnoty se mění poloha přístroje (ikony nebo textu). Za pozici je považována celočíselná část výsledku. Hodnoty pozic představují vzdálenost levého horního rohu přístroje od stejného rohu jeho vlastníka (parametr owner).
- 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
- frame
  Určuje v kladných hodnotách hloubku a v záporných výšku rámečku. Pokud frame není zadán, zobrazí se ikona nebo text bez rámečku.
  - driver_exception
    Jméno ovladače, od kterého budou přijímány výjimky časování.
  - item a end_item
    Klíčová slova, která uzavírají parametry jedné z položek přístroje multi_label.
    - icon
      je parametr obsahující jméno (případně i s cestou) souboru `*.ICO`. Jde o soubor, v němž je uložena buď ikona systému Control Web nebo ikona podle standardu systému Windows. Ikonu kompatibilní se systémem Control Web lze také vytvořit z libovolné bitmapy pomocí programu Prohlížeč obrázků. Nejsou-li zadány žádné parametry určující vzhled, zobrazí se přístroj ve standardní podobě:
    - font
      Je parametr určující font při vypisování textu. 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_name rozhoduje o tom, zda bude písmo normální (normal), tučné (bold) nebo skloněné (italic).
    - text
      Obsahuje řetězec znaků, který se bude v daném stavu zobrazovat. Opakováním parametru text lze zadat libovolný počet řádků.
    - expression
      Obsahem tohoto parametru je výraz typu boolean. Je–li zadáno více položek item, budou se přepínat podle výsledků vyhodnocení výrazů. Bude–li expression = true u více položek, zvolí se první v pořadí, nebude–li u žádné, nezobrazí se nic a přístroj zmizí.
    - paper, blink_paper - barva papíru dané položky
    - ink, blink_ink - barva písma dané položky
  - colors
    Seznam částí kresby přístroje, kterým lze měnit nastavení barvy:
    paper - povrch tlačítka
    ink - písmo
    top_shadow - horní stín
    buttom_shadow - dolní stín

  ### Poznámka

  Implicitní jsou nastaveny parametry:

        position = 0, 0;
        win_disable = zoom, maximize;
        access = 4294967295;
        tab_select = 4294967295;
        frame = 0;

  ### Příklad

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

        multi_label MultiLabel2;
          timer = Sel100ms.MultiLabelPanel, 1;
          owner = MultiLabelPanel;
          position = 60, 160;
          win_disable = zoom, maximize;
          x_position = 70 + ( 60 * sin ( ( ( 100 - K4 ) / 50 ) * Pi ) );
          y_position = 110 + ( 60 * cos ( ( ( 100 - K4 ) / 50 ) * Pi ) );
          item
            icon = RRLEDOFF.ICO;
            expression = K2 <= 30;
          end_item;
          item
            icon = rgledoff.ico;
            expression = ( k2 > 30 ) and ( K2 < 70 );
          end_item;
          item
            icon = rbledoff.ico;
            expression = k2 >= 70;
          end_item;
        end_multi_label;

  ### Nativní procedury přístroje multi_label

      SetIndex( ItemIndex : real )

  Nastavení přístroje do stavu daného parametrem ItemIndex včetně případného zápisu do výstupního datového elementu. První definovaný item má Index = 1.

      SetLook( ItemIndex : real )

  Nastavení vzhledu přístroje do stavu daného parametrem Index bez zápisu hodnot do výstupních datových elementů.

      GetIndex( &ItemIndex : real )

  Přečtení aktuálního stavu přístroje.

      MoveTo( XPosition, YPosition : real )

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

      Hide()

  Skrytí viditelného přístroje.

      Show()

  Zobrazení skrytého přístroje.

      Update()

  Nastavení přístroje do stavu daného jeho výstupními datavými elementy.

      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.

      GetPosition( &XPosition, &YPosition : number )

  Zjištění aktuální pozice přístroje na obrazovce.

      GetPosition( &XPosition, &YPosition, &WPosition, &DPosition : number )

  Zjištění aktuální pozice a velikosti přístroje na obrazovce.

      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 multi_label

  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

      OnIndexOutput( Index : real; Output: boolean )

  Procedura je zavolána pro každou položku, která je identifikována hodnotou parametru Index (počínaje číslem 1). Má-li tedy multi_label např. 10 položek, bude procedura zavolána v každém časovém kroku desetkrát. V proměnné Output je hodnota, která bude bude po dokončení procedury zobrazena a případně zapsána do výstupního datového elementu. Tuto hodnotu je možno v proceduře změnit.