# panel

### Funkce

Přístroj panel je určen ke shromažďování více přístrojů do jednoho objektu, který může být zobrazován, skrýván nebo minimalizován (je-li panel v okně) podle zadaných logických podmínek.

Pouze jméno přístroje panel se tedy může vyskytovat v parametru owner jiných viditelných přístrojů (s výjimkou klíčového slova background představujícího pracovní plochu -- desktop).

Přístroj panel může zobrazovat na svém podkladu jakékoliv DataView, které je podporováno systémem Control Web, např. bitmapové nebo vektorové obrázky, texty, grafy, tabulky, databáze, HTML dokumenty, animované 'FLC' a 'AVI' soubory apod.

Blíže se o panelech a DataView dočtete v kapitole Vzhled aplikace.

### Syntax

      panel panel_name;
        rem = string;
        bubble = string;
        timer = timer_name;
        owner = owner_name;
        position = integer, integer, integer, integer;
        win_disable = [ identifier, . . . ];
        win_title = string;
        access = integer;
        send_same_data;
        mode = normal | windw_less | off_screen;
        color = color;
        blink_color = color;
        blink_rate = slow | normal | quick;
        blink = boolean_expression;
        icon = file_name;
        dv_id = string;
        dv_file = file_name;
        dither_bitmaps;
        container;
        follow_scrollbars;
        disable_controls;
        disable_scrollbars;
        load_on_show;
        stay_on_top;
        minimize = boolean_expression;
        ascend = boolean_expression;
        descend = boolean_expression;
        visibility = boolean_expression;
        select = boolean_expression;
        dv_page = boolean_expression;
        dv_logpos_x = real_expression;
        dv_logpos_y = real_expression;
        item
          rect = integer, integer, integer, integer;
          output = boolean_dataelement;
        end_item;
        item
          ...
        end_item;
        receivers = [ identifier, ... ];
      end_panel;

### Specifické parametry přístroje

- color
  Parametr určuje barvu pozadí panelu. Tato barva se uplatní jen pokud v ploše panelu není vloženo DataView nebo podkladová ikona.
- blink_color
  Pokud je v panelu definována podmínka blikání blink, parametr blink_color určuje barvu, s níž bude podkladová barva střídána.
- blink_rate
  Určuje rychlost blikání -- výměny barev color a blink_color. Rychlost je možno volit ze tří systémem předdefinovaných hodnot:
  - slow -- perioda 2 s, každá barva bude zobrazena po dobu 1 s
  - normal -- perioda 1 s, každá barva bude zobrazena po dobu 0.5 s
  - quick -- perioda 0.5 s, každá barva bude zobrazena po dobu 0.25 s
- blink
  Logický výraz určující podmínku blikání. Je li výsledek true, barvy color a blink_color budou střídány s periodou definovanou parametrem blink_rate.
- icon
  Soubor s podkladovou ikonou panelu. Není-li zadáno žádné podkladové DataView, panel umístí ikonu jako svůj podklad. V souboru může být ikona dvou formátů: ikona kompatibilní se systémem Control Panel nebo ikona podle standardu systému Windows.
- dv_id
  Identifikace konkrétního typu DataView, které má být umístěno na pozadí panelu. Není-li tento parametr uveden, systém zvolí vhodný typ DataView podle zadaného souboru. Pokud by implicitně zvolený typ DataView nevyhovoval, uvedení tohoto parametru zabezpečí použití konkrétního typu DataView.
- dv_file
  Způsobí vytvoření DataView, které bude umístěno na pozadí panelu a zavede do něj určený soubor.
- dither_bitmaps
  Parametr povoluje ditrování bitových map. Tento parametr má význam jen pokud je použito DataView zobrazující bitové mapy. Ditrování sice výrazně zlepší vzhled mnohobarevného obrázku zobrazeného na grafickém adaptéru s malým množstvím barev, ale na druhé straně je poměrně časově náročná operace.
- container
  Je-li tento parametr přítomen, pak DataView na pozadí panelu bude zaregistrováno do kontejneru, který automaticky vytvoří ovládací prvky DataView (např. rolovací lišty, pravítka apod.).
- follow_scrollbars
  Přístroje vložené do panelu budou sledovat pohyb rolovacích lišt kontejneru DataView.
- disable_controls
  Pokud vložené DataView tvoří v kontejneru ovládací prvky (např. lišty s řádky a sloupci tabulky), bude tvorba těchto prvků zakázána.
- disable_scrollbars
  Pokud vložené DataView tvoří v kontejneru rolovací lišty, bude jejich tvorba zakázána.
- load_on_show
  Soubor bude do DataView nahrán až v okamžiku zobrazení panelu. Pokud je panel skryt, paměť obsazená obsahem DataView bude opět uvolněna.
- stay_on_top
  Nastavuje volbu StayOnTop, která způsobuje setrvání panelu, případně okna panelu nad ostatními okny. Pokud má současně více oken nastavenu tuto volbu, je jejich pořadí nedefinováno.
- minimize
  Podmínka minimalizace přístroje (jen je-li v okně).
- ascend
  Podmínka vystoupení nad ostatní okna nebo přístroje.
- descend
  Podmínka ponoření pod ostatní okna nebo přístroje.
- visibility
  Podmínka viditelnosti přístroje panel.
- select
  Podmínka výběru (získání vstupu z klávesnice) přístroje panel.
  Poznámka:
  Pokud je panel v okně, budou akce spojené s předchozími pěti parametry prováděny s celým oknem. Parametr minimize má význam jen pokud je panel v okně.
- dv_page
  Obsahuje numerický výraz, podle jehož hodnoty se nastavuje stránka DataView v panelu.
- dv_logpos_x a dv_logpos_y
  Oba parametry obsahují numerické výrazy, podle kterých se nastavují logické souřadnice zobrazených DataView. Např. v případě obrázků jsou to pixely, v případě tabulky řádky a sloupce apod.
- item a end_item
  Položka item dovoluje zadat v rámci panelu posloupnost aktivních obdélníků citlivých na kliknutí myší. Každá položka může obsahovat dvě klíčová slova:
  - rect -- souřadnice obdélníku v obrazových bodech relativně k počátku panelu. Najede-li kurzor myši nad aktivní obdélník, změní se na tvar ukazující ruky. Kliknutí nad aktivním obdélníkem způsobí nejprve nastavení logické hodnoty false na datové elementy spojené s ostatními obdélníky a poté nastavení logické hodnoty true na datový element spojený s vybraným obdélníkem. Poté jsou případně aktivovány přístroje uvedené v seznamu receivers.
  - output -- datový element typu boolean spojený s daným obdélníkem.
- receivers
  Obsahuje seznam všech přístrojů aktivovaných po zvolení aktivního obdélníku.

Implicitně jsou nastaveny parametry:

      window panel panel_1;
        timer = 1;
        owner = background;
        position = 0, 0, 320, 240;
      end_panel;

### Nativní procedury přístroje

    Move( dx : number, dy : number )

Přesune panel o zadané dx, dy relativně k současné pozici.

    MoveTo( x : number, y : number )

Přesune panel na souřadnice x, y absolutně vzhledem k vlastníkovi panelu.

    Size( w : number, d : number )

Změní velikost panelu na hodnoty w a d. Pozice levého horního rohu zůstane zachována.

    NewRect( x : number, y : number, w : number, d : number )

Změní celý obdélník obsazený panelem. Panel bude přesunut na souřadnice x, y a bude mu nastavena velikost w, d.

    Minimize()

Je-li panel v okně, minimalizuje toto okno do ikony.

    Maximize()

Je-li panel v okně, maximalizuje toto okno na celou plochu obrazovky.

    Restore()

Je-li panel v okně a toto okno je minimalizováno nebo maximalizováno, bude obnovena velikost okna před minimalizací nebo maximalizací.

    Select()

Způsobí vybrání panelu. Všechny následující akce uživatele (stisky kláves apod.) budou směřovány k vybranému panelu. Myší lze vybrat jiný objekt.

    Show()

Zobrazení skrytého panelu.

    Hide()

Skrytí viditelného panelu.

    Ascend()

Vynoření panelu nad ostatní okna a panely na pozadí.

    Descend()

Ponoření panelu pod ostatní okna a panely na pozadí.

    StayOnTop( f : boolean )

Na základě hodnoty argumentu f nastavuje případně ruší volbu StayOnTop, která způsobuje setrvání panelu případně okna panelu na povrchu, tedy i nad nově vybranými okny. Pokud má současně více oken nastavenu tuto volbu, je jejich pořadí nedefinováno.

    SetColor( n : number )

Pokud v panelu není přítomno DataView, změní barvu podkladu panelu. Barva je zadávána jako číslo 0 až 15 odpovídající základní paletě 16 barevného adaptéru IBM PC.

    SetColor( r : number, g : number, b : number )

Pokud v panelu není přítomno DataView, změní barvu podkladu panelu. Barva je definována třemi složkami pro červenou r, zelenou g a modrou b. Tímto způsobem je možno definovat libovolnou z 16 miliónů barev.

    Blink( BlinkOn : boolean )

Volání způsobí nastavení stavu blikání na hodnotu BlinkOn (překreslení barvou color nebo blink_color).

    ToggleBlink()

Volání způsobí záměnu stavu blikání -- překreslení barvou color, byl-li panel překreslen barvou blink_color nebo opačně.

    GetState( &Selected : boolean, &Minimized : boolean, &Maximized : boolean )

Procedura vrací ve třech logických parametrech je-li panel vybrán, je-li jeho okno minimalizováno a maximalizováno. Pokud panel není v okně, poslední dva argumenty jsou nastaveny na false.

Poslední dva parametry mohou mít současně hodnotu true. Pak je okno minimalizováno v ikoně a jeho obnovení způsobí obnovení maximalizovaného stavu, nikoliv "normální" velikosti.

    SetWinTitle( title : string )

Je-li panel v okně, titulek okna bude změněn na řetězec title.

    SetAccessLevel( level : number )

Přístupová práva panelu budou změněna na hodnotu level.

    Print()

Vytiskne grafickou podobu panelu na tiskárně, která je v systému Windows nastavena jako výchozí.

    DVNewFile( path : string )

Do DataView na pozadí panelu bude zaveden nový soubor uvedený jako argument procedury. Pokud v panelu DataView nebylo nebo pracovalo s jiným typem dat, bude vytvořeno nové DataView a případné původní DataView bude zrušeno.

    DVNewType( dvtype : string )

Pokud DataView na pozadí panelu neexistuje nebo neodpovídá zadanému typu, bude vytvořeno nové prázdné DataView zadaného typu a případné staré DataView bude zrušeno. Data je možno zavést nativní procedurou DVOpen.

    DVOpen( path : string )

Způsobí zavedení nového datového souboru do DataView na pozadí panelu. Tato funkce není schopna měnit typ DataView.

    DVClear()

Vymaže data z DataView na pozadí panelu.

    DVSetPos( x : number, y : number )

Nastaví logickou pozici DataView na souřadnice x, y. Pokud DataView není přítomno nebo nepodporuje logické souřadnice, volání nemá efekt.

    DVSetPage( page : number )

Nastaví DataView na stránku page. Pokud DataView není přítomno nebo nemá více stránek, volání nemá efekt.

    DVGetPos( &x : number, &y : number )

Vrátí logickou pozici DataView v proměnných x, y. Pokud DataView není přítomno nebo nepodporuje logické souřadnice, volání nemá efekt.

    DVGetPage( &page : number )

Vrátí stránku DataView v proměnné page. Pokud DataView není přítomno nebo nemá více stránek, volání nemá efekt.

    DVPlay( )

Pokud typ DataView dovoluje přehrávání, spustí přehrávání.

    DVPlayRepeat( )

Pokud typ DataView dovoluje přehrávání, spustí přehrávání v módu cyklického opakování.

    DVStop( )

Pokud typ DataView dovoluje přehrávání a přehrávání právě probíhá, bude zastaveno.

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

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()

Podrobnější informace k těmto procedurám lze nalézt v kapitole Programování a procedury.

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

    OnIndex( n : number )

Událostní procedura OnIndex je vyvolána vždy když uživatel zvolí myší některý definovaný aktivní obdélník panelu. Pořadové číslo obdélníku je předáno v parametru n.