Premium

Získejte všechny články mimořádně
jen za 49 Kč/3 měsíce

Úvod do jazyka OPL (15)

Pokračujeme v pokročilejším programování v OPL.

Seznam možností v menu

Dalším rozšířením uživatelské nabídky je uvedení seznamu možností, ze kterého může být aktivní pouze jedna položka. Možnosti seznamu musí být všechny na jedné kartě a musí následovat za sebou. Ke konstantě pro klávesovou zkratku první z možností je potřeba přičíst hodnotu $0900 (KMenuOptionStart%), u poslední z možností konstantu $0B00 (KMenuOptionEnd%) a ke všem zbývajícím mezi nimi konstantu $0A00 (KMenuOptionMiddle%). Ke konstantě u zvolené položky menu musíme pak přičíst hodnotu $2000 (KMenuSymbolOn%).

INCLUDE "Const.oph"

PROC menu:
  GLOBAL polozka%
  LOCAL k%, m%, k_1%, k_2%, k_3%
  PRINT "Stiskni Menu pro nabídku Esc pro konec"
  WHILE 1
    k%=GET
    IF k%=KKeyEsc% 
      STOP
    ELSEIF k%=KGetMenu%
      
      k_1%=0 : k_2%=0 : k_3%=0 
      IF polozka%=3
        k_3%=KMenuSymbolOn%
      ELSEIF polozka%=2
        k_2%=KMenuSymbolOn%
      ELSE
        k_1%=KMenuSymbolOn%
      ENDIF
      
      mINIT
      mCARD "Soubor", "Nový", %n, "Otevřít", %o, "Konec", %e
      mCARD "Velikost", "1x", 1+$0900+k_1%, "2x", 2+$0A00+k_2%, "3x", 3+$0B00+k_3%
      m%=MENU
      PRINT "Volba z menu byla "; m%; " (";CHR$(m%); ")"
      
      IF m%=1 OR m%=2 OR m%=3
        polozka%=m%
      ENDIF
 
      IF m%=%e : STOP : ENDIF
    ENDIF
  ENDWH
ENDP

Kaskádová menu

mCASC jmeno$, text_1$, klavesa_1%, text_2$, klavesa_2%, ...

Pokud je menu příliš komplexní a všechny položky by se nevešly na displej, tak je možné vytvářet kaskádová menu - po zvolení jedné položky menu, která je většinou označena šipkou, se zobrazí další nabídka. Tyto podřízené nabídky definujeme pomocí příkazu mCASC.

Příkaz mCASC má stejnou strukturu i parametry jako mCARD - začíná jménem kaskádového menu a pokračuje definicí položek. I ve vnořených nabídkách můžeme používat zaškrtnutí nebo seznamy možností.

Definice vnořeného menu musí předcházet definici karty menu, ve které je kaskádové menu použito. V definici hlavního menu uvedeme jméno kaskádového menu, za kterým bude uveden znak ">". Můžeme uvést i konstantu pro klávesovou zkratku - v takovém případě bude tato kombinace kláves cyklicky přepínat položky kaskádového menu. Většinou však tuto možnost nevyužijeme a místo kódu klávesy použijeme číslo mezi 1 a 32.

INCLUDE "Const.oph"

PROC kaskada:
  LOCAL k%, m%
  PRINT "Stiskni Menu pro nabídku Esc pro konec"
  WHILE 1
    k%=GET
    IF k%=KKeyEsc% 
      STOP
    ELSEIF k%=KGetMenu%
      mINIT
      mCASC "Tisk", "Prohlédnout", %p, "Tisk", %t
      mCASC "Infračervené", "Pošli", %P, "Příjem", %R
      mCARD "Soubor", "Nový", %n, "Otevřít", -%o, "Tisk>", 1, "Infračervené>", 2, "Konec", %e
      mCASC "Velikost", "1x", $2900+21, "2x", $0A00+22, "3x", $0B00+23
      mCARD "Možnosti", "Velikost>", -3, "Nastavení", %N
      mCASC "Téma", "Soubory", 10, "Tisk", 11, "Infračervené", 12, "Zobrazení", 13
      mCARD "Nápověda", "O programu", -%O, "Téma>", 4
      m%=MENU
      PRINT "Volba z menu byla "; m%; " (";CHR$(m%); ")"
      IF m%=%e : STOP : ENDIF
    ENDIF
  ENDWH
ENDP

Nesmíme zapomenout uvést u každé položky nabídky včetně položek kaskádových menu jinou klávesovou zkratku (nebo jinou číselnou hodnotu). Pokud tuto podmínku nedodržíme, nebude možné podle hodnoty vrácené příkazem MENU rozlišit, která položka byla stisknutá.


Nyní již umíme doplnit naše programy o důležité prvky uživatelského rozhraní. Zatím však neumí ukládat ani číst žádná data. V příštím dílu budeme psát o souborech, databázích, knihovnách OPX a obecně o všem, co souvisí se vstupem a výstupem dat.

  • Nejčtenější

Ukradené auto s AirTagem si našel, ale od policie dostal vynadáno

4. května 2024  7:02

Vyjít ráno před dům a nenajít tam svůj vůz je noční můrou každého majitele. Do takové...

Tento levný tarif T-Mobilu nemá díky ceně na českém trhu konkurenci

8. května 2024

U T-Mobilu jde již o jakousi tradici, že s příchodem nového měsíce obmění svou akviziční nabídku....

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Továrny na iPhony zejí prázdnotou, Apple z nich utekl

7. května 2024

Čínské továrny Foxconnu, kde se ještě donedávna vyráběly iPhony, nyní připomínají „města duchů“....

Nový vědecký objev zdvojnásobí životnost baterií. Klíč je v nabíjení

4. května 2024

Premium Nový způsob nabíjení lithium-iontových baterií může podle studie německých vědců zdvojnásobit...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Kulturní ikona. Slavná nokia se po 25 letech vrací v novém provedení

10. května 2024  7:02

Zanedlouho se do prodeje dostane reinkarnace legendární nokie, která měla velký podíl na rozvoji...

Vypadá jako ohebný iPhone, ale stojí pět stovek. Tušíte, v čem je háček?

11. května 2024

Během našeho dlouhodobého průzkumu zajímavostí z čínských obchodů jsme narazili na další mobilovou...

Zákazníkům Vodafonu dřív propadne kredit, konkurence zvyky měnit nechce

11. května 2024

Premium Zákazníci Vodafonu využívající jeho předplacené služby se musí připravit na plánovanou změnu, o níž...

Kulturní ikona. Slavná nokia se po 25 letech vrací v novém provedení

10. května 2024  7:02

Zanedlouho se do prodeje dostane reinkarnace legendární nokie, která měla velký podíl na rozvoji...

Měl by to být hit českého trhu. Nadchne foťákem a funkcemi

10. května 2024

Google začíná v Česku prodávat smartphony Pixel. Firma k tomu v Praze uspořádala vlastní akci, na...

Jak předejít syndromu náhlého úmrtí kojence?
Jak předejít syndromu náhlého úmrtí kojence?

Syndrom náhlého úmrtí kojence (SIDS – sudden infant death syndrome) je doslova noční můrou všech rodičů. V současné době lze tomuto zbytečnému...

V 59 letech zemřela herečka Simona Postlerová, ještě v sobotu zkoušela

Zemřela divadelní a filmová herečka Simona Postlerová, bylo jí 59 let. Zprávu o úmrtí potvrdil nadační fond Dvojka...

Titěrné sukně i míčky na podpatcích. Zendaya vzkřísila trend tenniscore

S nadsázkou bychom mohli říct, že největší tenisovou událostí tohoto roku je premiéra snímku Rivalové. Aspoň co se módy...

Zpěvačka Tereza Kerndlová měla autonehodu. Poslala vzkaz ze záchranky

Tereza Kerndlová (37) a její manžel René Mayer (53) měli v úterý ráno autonehodu. Na mokré vozovce do nich zezadu...

Kamion před nehodou vůbec nebrzdil, moderní tahač by tragédii zabránil

Policie obvinila řidiče za smrtelnou nehodu na D1. Litevský kamioňák narazil do osobního auta a natlačil ho na tahač s...

První světová válka zničila část Francie natolik, že tu stále řádí smrt

Řídkým rozvolněným lesem pokrytá pahorkatina u francouzského Soissons, Compiégne, Lens či Cambrai přirozeně svádí k...