Premium

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

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

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é...

O2 mění identitu. Vrací se 26 let starý legendární slogan předchůdce

30. dubna 2024  14:13

Operátor O2 se bude prezentovat trochu jinak než doteď. Změna je to spíš evoluční, ale rozdílů si...

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

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

Umělá inteligence na nových smartphonech od Huaweie svléká lidi

5. května 2024  7:02

Na poli smartphonů je současným trendem implementace umělé inteligence. Ta nabízí stále širší...

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

Huawei šokuje novým supersmartphonem s vysouvacím fotoaparátem

1. května 2024  7:02

Huawei představil novou řadu Pura, která nahrazuje dřívější řadu P. Mezi novinkami z nové řady je i...

Chybí vám jack konektor? Nový sluchátkový smartphone bude řešením

6. května 2024

Čínský výrobce sluchátek Moondrop představil svůj první smartphone, který zaujme audiofily. Bude...

Umělá inteligence na nových smartphonech od Huaweie svléká lidi

5. května 2024  7:02

Na poli smartphonů je současným trendem implementace umělé inteligence. Ta nabízí stále širší...

Parádní velký tablet, kterému chybí snaha výrobce. Test Honoru Pad 9

5. května 2024

Čínský Honor se po svém stále ještě relativně nedávném návratu na globální trhy snaží dobýt...

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é...

Chcete, aby vaše děti měli v dospělosti bohatství? Přečtěte si, jak na to!
Chcete, aby vaše děti měli v dospělosti bohatství? Přečtěte si, jak na to!

Správné finanční návyky a dovednosti vznikají právě v dětství. Mnoho dětí je přijímá přirozeně od svých rodičů, kteří jsou pro děti velkým vzorem....

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

Dara Rolins je po další plastice. Kritiku fanoušků nechápe, cítí se svěží

Zpěvačka Dara Rolins (51) se na čas stáhla z veřejného života. V tom období prodělala „estetický zákrok“ a na sociální...

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

Je to šílený, hodnotily firmy práci řemeslníků, kteří opravili střechu

Po zimě se často ukážou mnohé „vady na kráse“ domu, střechy nevyjímaje. Někdy nezbývá nic jiného než kompletní výměna....

Ostrov kanibalů. Stalinistický režim na Sibiři zrealizoval noční můru

Pochytali na moskevských ulicích tisíce lidí, zločince, straníky, dělníky, matky od rodin. Deportovali je na Sibiř....