# valve

### Funkce

Zobrazení symbolu ventilu pro sestavování technologických schémat. Přístroj nepřekresluje celou plochu své obdélníkové oblasti. Pro správnou činnost musí být umístěn v panelu, který zajistí správné kreslení pozadí. Díky této vlastnosti může být elegantně umístěn např. nad obrázek.

### Syntax

      valve valve_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;
        mode = identifier;
        colors
          border_ink = color;
          run = color;
          stop = color;
        end_colors;
        blink_colors
          border_ink = color;
          run = color;
          stop = color;
        end_blink_colors;
      end_valve;

### Specifické parametry přístroje

- expression
  Obsahem tohoto parametru je logický výraz, podle jehož výsledku bude přístroj aktivní (run barva) nebo neaktivní (stop barva). V případě, že expression nebude zadán, bude přístroj trvale neaktivním obrázkem.
- 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
  Určuje orientaci ventilu uvedením jednoho z názvů módu:
  valve_horizontal - vodorovný ventil
  valve_vertical - svislý ventil
- colors a blink_colors
  Seznam částí kresby přístroje, kterým lze měnit nastavení barvy:
  border_ink - okrajová linka
  run - ventil v aktivním stavu
  stop - ventil v neaktivním stavu

### Poznámka

1. mode = valve_horizontal
2. mode = valve_vertical

Implicitně jsou nastaveny parametry:

      position = 0, 0, 25, 25;
      access = 4294967295;
      tab_select = 4294967295;
      mode = knee_left_up;
      colors
        border_ink = black;
        run = lgreen;
        stop = lred;
      end_colors;

### Příklad

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

      valve id_1;
        timer = time_step;
        owner = panel_1;
        position = 57, 264, 35, 35;
        expression = is_flowing;
      end_valve;

### Nativní procedury přístroje valve

    SetValue( Value : boolean )

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

    MoveTo( XPosition, YPosition : real )

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

    Hide()

Skrytí viditelného přístroje

    Show()

Zobrazení skrytého přístroje.

    SetBorderColor( Red, Green, Blue : number )

Nastavení barvy orámování ventilu.

    SetRunColor( Red, Green, Blue : number )

Nastavení barvy ventilu v aktivním stavu.

    SetStopColor( Red, Green, Blue : number )

Nastavení barvy ventilu v pasivním stavu.

    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 valve

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 valve

    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.