Premium

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

Úvod do jazyka OPL (14)

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

Menu

Menu definujeme bezprostředně před jeho zobrazením na displeji. Podobně jako při definici dialogu začíná definice menu příkazem mINIT (bez parametrů), po které následuje vlastní definice uživatelské nabídky (příkazy mCARD a mPOPUP). Po této definici vyvoláme příkaz MENU, který nabídku zobrazí a nechá uživatele vybrat. Poté vrátí příkaz MENU hodnotu odpovídající vybrané položce nebo nulu, pokud uživatel ukončil zobrazení menu klávesou Esc.

Ošetření klávesy Menu v našem programu je zcela v režii programátora. Aplikace používající uživatelskou nabídku by měla při stisknutí klávesy Menu (funkce GET vrátí kód klávesy KGetMenu%) inicializovat menu, vytvořit jednotlivé karty a zobrazit jej.

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

Příkazem mCARD definujeme jednu kartu uživatelské nabídky. Prvním parametrem příkazu je jméno karty, které je zobrazeno v liště nahoře, a po něm následují dvojice parametrů: text položky menu a numerická hodnota obsahující klávesovou zkratku k rychlému vyvolání položky menu a další vlastnosti. Počet těchto dvojic parametrů je omezen jedině velikostí displeje.

INCLUDE "Const.oph"

PROC menu:
  LOCAL k%, m%
  PRINT "Stiskni Menu pro nabídku Esc pro konec"
  WHILE 1
    k%=GET
    IF k%=KKeyEsc% 
      STOP
    ELSEIF k%=KGetMenu%
      mINIT
      mCARD "Soubor", "Nový", %n, "Otevřít", %o, "Konec", %e
      mCARD "Možnosti", "O programu", %O
      m%=MENU
      PRINT "Volba z menu byla "; m%; " (";CHR$(m%); ")"
      IF m%=%e : STOP : ENDIF
    ENDIF
  ENDWH
ENDP

Jak vidíme na uvedeném příkladu, numerická hodnota může být s výhodou uváděna jako znaková konstanta (uvozená znakem procento). Malá písmena uvozují klávesové zkratky tvaru Ctrl+písmeno, kapitálky slouží pro klávesové zkratky Ctrl+Shift+písmeno. Nechceme-li uvádět klávesovou zkratku, musíme u položky nabídky uvést číslo mezi 1 a 32.

Volání MENU pak vrátí písmeno nebo číslo spojené s položkou nabídky - pozor na rozlišení malých a velkých písmen - nebo hodnotu 0 (pokud uživatel ukončil zobrazení nabídky klávesou Esc). Asi nás nepřekvapí, že můžeme chování položek menu v širokém rozsahu modifikovat konstantami, které přičteme k hodnotě klávesové zkratky.

Je-li klávesová zkratka záporná (například -%a), bude od následující položky oddělena tenkou čarou; přičteme-li ke konstantě hodnotu $1000 (KMenuDimmed%) ,tak nebude tuto položku možné zvolit.

Zaškrtávací položky menu

U položky menu může být uveden symbol zaškrtnutí. V takovém případě uživatel očekává, že je možné stav položky měnit. Přičteme-li ke konstantě pro klávesovou zkratku hodnotu $0800 (KMenuCheckBox%), tak se položka menu bude chovat jako nezaškrtnutá a když ji uživatel zvolí, tak se vedle ní na krátkou dobu zobrazí symbol zaškrtnutí. Pokud k této konstantě ještě přičteme hodnotu $2000 (KMenuSymbolOn%), bude položka na počátku zaškrtnutá a uživatel zvolením zaškrtnutí zruší.

Stav přepínačů si náš program musí pamatovat zvlášť: při definici menu jej vhodně nastavit a podle hodnoty, kterou vrací příkaz MENU, jej měnit. Příklad možného ošetření zaškrtávacích položek je v následujícím rámečku. V globálních proměnných jsou uvedeny proměnné, které obsahují uživatelem zvolené nastavení.

INCLUDE "Const.oph"

PROC menu:
  GLOBAL stav_velke%, stav_male%
  LOCAL k%, m%, k_v%, k_m%
  PRINT "Stiskni Menu pro nabídku Esc pro konec"
  WHILE 1
    k%=GET
    IF k%=KKeyEsc% 
      STOP
    ELSEIF k%=KGetMenu%

      IF stav_velke% : k_v%=$2000 : ELSE : k_v%=0 : ENDIF
      IF stav_male% : k_m%=$2000 : ELSE : k_v%=0 : ENDIF
      
      mINIT
      mCARD "Soubor", "Nový", %n, "Otevřít", %o, "Konec", %e
      mCARD "Možnosti", "Nastavení", -%N, "Velké", %v+$0800+k_v%, "Malé", %m+$0800+k_m%
      mCARD "Nápověda", "O programu", -%O
      m%=MENU
	  
      PRINT "Volba z menu byla "; m%; " (";CHR$(m%); ")"
      
      IF m%=%v
        stav_velke%=NOT stav_velke%
      ELSEIF m%=%m
        stav_male%=NOT stav_male%
      ENDIF
      
      IF m%=%e : STOP : ENDIF
    ENDIF
  ENDWH
ENDP
  • Nejčtenější

Neomezená data dává O2 ještě levněji než dříve. S odměnou jsou za hubičku

15. dubna 2024  7:02

Základní datově neomezený tarif za cenu nižší, než standardně stojí tarif s 12 GB dat? U O2 na...

Doma si natáhnete neviditelné kabely k internetu. Huawei ukázal inovace

17. dubna 2024

Huawei na každoroční roadshow ukázal v Praze své inovace pro letošní rok. Vedle průmyslových...

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

K mobilu teď dostanete televizi zdarma a levnější jsou také iPhony

16. dubna 2024,  aktualizováno  10:12

Výrobci mobilních telefonů se už zase začínají předhánět ve výhodných nabídkách. Přímé slevy jsou...

Čínský smartphonový standard dorazil do Česka. Není co vytknout, ani cenu

17. dubna 2024  7:02

Motorola představila hned tři modely z top řady Edge. První se začne prodávat model Edge 50 Pro,...

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

Pošlete sportovní fotku a vyhrajte smartphone nebo dres Patrika Schicka

8. dubna 2024,  aktualizováno  18.4 13:04

Zachyťte na fotografii sportovní moment a vyhrajte úplnou novinku, smartphone vivo V40 SE s bohatou...

Mají dost kompromisů, sem tam něco navíc. Nejlevnější mobily známých značek

19. dubna 2024

Výrobci telefonů mají zpravidla řešení i pro ty zákazníky, kteří potřebují co možná nejlevnější...

Pošlete sportovní fotku a vyhrajte smartphone nebo dres Patrika Schicka

8. dubna 2024,  aktualizováno  18.4 13:04

Zachyťte na fotografii sportovní moment a vyhrajte úplnou novinku, smartphone vivo V40 SE s bohatou...

Tento podnik budou milovníci vína zbožňovat. Musí se ovšem vzdát mobilu

18. dubna 2024  12:33

Se zajímavým způsobem, jak strávníky přimět ke vzájemné komunikaci, přišel majitel restaurace v...

Ultra smartphone i odlehčená novinka. Motorola zahustila nabídku

18. dubna 2024

Společně s modelem Pro se na český trh chystají ještě další dvě novinky od Motoroly. Jednou je...

Kdy dát dětem první kapesné a kolik?
Kdy dát dětem první kapesné a kolik?

Kdy je vhodný čas dávat dětem kapesné a v jaké výši? To jsou otázky, které řeší snad každý rodič. Univerzální odpověď však neexistuje. Je ale...

Náhle zemřel zpěvák Maxim Turbulenc Daniel Vali, bylo mu 53 let

Ve věku 53 let zemřel zpěvák skupiny Maxim Turbulenc Daniel Vali. Letos by se svou kapelou oslavil 30 let na scéně....

Sexy Sandra Nováková pózovala pro Playboy. Focení schválil manžel

Herečka Sandra Nováková už několikrát při natáčení dokázala, že s odhalováním nemá problém. V minulosti přitom tvrdila,...

Charlotte spí na Hlaváku mezi feťáky, dluží spoustě lidí, říká matka Štikové

Charlotte Štiková (27) před rokem oznámila, že zhubla šedesát kilo. Na aktuálních fotkách, které sdílela na Instagramu...

Vykrojené trikoty budí emoce. Olympijská kolekce Nike je prý sexistická

Velkou kritiku vyvolala kolekce, kterou pro olympijský tým amerických atletek navrhla značka Nike. Pozornost vzbudily...

Rohlík pro dítě, nákup do kočárku. Co v obchodě projde a kdy už hrozí právník?

V obchodech platí pravidla, která občas zákazník nedodržuje. Někdy se navoní parfémem, aniž by použil tester, nebo...