Premium

Získejte všechny články
jen za 89 Kč/měsíc

Ú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ší

Spotem s Trojanem na horách operátor popudil Poláky. Nerozuměli nadsázce

21. dubna 2024  8:01

Po dvojici Vojtěch Kotek a Lukáš Pavlásek, k níž později přibyl Jakub Kohák, vsadil T-Mobile ve...

Je to už spíš foťák s mobilem a opravdu se povedl. Test Xiaomi 14 Ultra

21. dubna 2024

Prémiový smartphone Xiaomi 14 Ultra působí mezi současnou nabídkou mobilů jako unikát. Jaký jiný...

{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...}

Toto zařízení mělo nahradit mobily. V recenzích se mu vysmáli

23. dubna 2024

Novinka s názvem Humane AI Pin se zdála být převratným zařízením. V mnoha ohledech měla nahradit...

Vodafone měl výpadek, někteří zákazníci se nemohli dovolat

25. dubna 2024  10:03,  aktualizováno  10:15

Síť mobilního operátora Vodafone postihl ráno výpadek. Týkal se části zákazníků, kteří se nemohli...

{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...}

Operátoři zahušťují pokrytí Česka signálem 5G. Máte ho doma? Podívejte se

20. dubna 2024

Premium V červenci to budou již čtyři roky, co byla v Česku spuštěna první komerční 5G síť. Zatímco v...

Dětem neprodáváme. Britské děti si dost možná už smartphone nekoupí

27. dubna 2024

Premium Britští ministři zvažují přijetí zákona, který by omezoval prodej smartphonů. Jsou totiž...

Váš iPhone může být hacknut, varuje Apple uživatele v desítkách zemích

27. dubna 2024

Jednotlivci z řad uživatelů iPhonů z více než devadesáti zemí světa obdrželi ve středu 10. dubna od...

Úřad chce zatočit se spoofingem. Podezřelé hovory operátoři nespojí

26. dubna 2024  16:02

Český telekomunikační úřad (ČTÚ) vydal novelu všeobecného opatření, která stanovuje nové podmínky,...

Hlasujte o nejlepší sportovní fotku. Vyberete tak vítěze smartphonu vivo

26. dubna 2024

Soutěž o úplnou novinku, smartphone vivo V40 SE s bohatou výbavou nebo podepsaný dres...

Akční letáky
Akční letáky

Všechny akční letáky na jednom místě!

Bývalý fitness trenér Kavalír zrušil asistovanou sebevraždu, manželka je těhotná

Bývalý fitness trenér Jan Kavalír (33) trpí osmým rokem amyotrofickou laterální sklerózou. 19. dubna tohoto roku měl ve...

Herečka Hunter Schaferová potvrdila románek se španělskou zpěvačkou

Americká herečka Hunter Schaferová potvrdila domněnky mnoha jejích fanoušků. A to sice, že před pěti lety opravdu...

Tenistka Markéta Vondroušová se po necelých dvou letech manželství rozvádí

Sedmá hráčka světa a aktuální vítězka nejprestižnějšího turnaje světa Wimbledonu, tenistka Markéta Vondroušová (24), se...

Horňáci versus dolňáci. Víme, čemu muži dávají přednost, a je to překvapení

Ženské tělo je pro muže celkově velmi atraktivní a nabízí jejich očím mnoho zajímavých partií. Největší pozornosti se...

Za vytlačení z linky do Brna musí Student Agency zaplatit náhradu 21 milionů

Společnost Student Agency provozující autobusy a vlaky pod označením RegioJet musí zaplatit bývalému konkurentovi 21...