Programování menu

 

 

            Volby, nazývané též menu, patří mezi dialogové struktury. Slouží, povětšině, k řízení průběhu výpočtu uživatelem. Volby mají dvě základní části. Část nabídkovou a část rozhodovací. Nabídková čast je tvořena volbami (prompty)

 

 

Obecně platné příkazy

 

SET BORDER TO [SINGLE │ DOUBLE │ PANEL │ NONE │ <řetězec1>

[,<řetězec2>]]

 

Příkaz definuje okraje pro menu, popup, okna a rámečky vytvářené @  ... TO. PANEL = plný rámeček. NONE = bez rámečku. <řetězec1> znak = pro menu, popup, rámečky a aktivní okna. <řetězec2> znak = pro neaktivní okna (spodní rám).

 

SET MESSAGE TO [<výrazN> [LEFT │ CENTER │ RIGHT]]

 

Příkaz specifikuje řádku a umístění zpráv na obrazovce/okně. LEFT - umístění k levému kraji řádku. CENTER - umístění v centru řádky. RIGHT - umístění k pravému kraji řádku.

 

SET BORDER TO "+","-"

SET MESSAGE TO 24

 

Menu typu READ

 

@ <rd,sl> MENU <pole>, <výrazN1> [,<výrazN2>] [TITLE <výrazC>] [SHADOW]

 

Definuje POPUP menu, které se aktivuje příkazem READ MENU

 

READ MENU TO <proměnná> [SAVE]

 

Příkaz aktivuje popup menu inicializované @...MENU. Po ukončení výběru je menu zrušeno. Proměnná obsahuje pořadové číslo volby nebo 0, když byla stisknuta klávesa ESC. SAVE menu zůstane zobrazeno na obrazovce <rd,sl> = souřadnice levého horního rohu. <pole > = jednorozměrné pole voleb (řádek. max.50 znaků). <výrazN1> = max.počet voleb v poli. <výrazN2> = počet zobrazitelných voleb v rámečku. TITLE = záhlaví pro menu, vepsáno do horního ohraničení. SHADOW = stín rámečku.

 

SET TALK OFF

CLEAR

DIMENSION moznosti(3)

moznosti(1) = "   Lektoři   "

moznosti(2) = "  Zákazníci  "

moznosti(3) = "    Konec    "

volba = 1

@  5,25 MENU moznosti,3 TITLE " Vyberte "

READ MENU TO volba

DO CASE

CASE volba = 1

DO ....

CASE volba = 2

DO ....

CASE volba = 3

QUIT

ENDCASE

 

Kurzorové menu

 

@ <rd,sl> PROMPT <výrazC1> [MESSAGE <výrazC2>]

 

Příkaz slouží pro definici a řízení kurzorového MENU. Aktivaci provede příkaz MENU TO. Rozsah voleb v menu je určen v konfiguračním souboru (od 1 do 32K).

 

MENU TO <proměnná>

 

Příkaz aktivuje menu, vytvořené pomocí příkazu PROMPT. Do proměnné je uloženo pořadové číslo řádku s vybranou volbou. Použitelné klávesy : kurzorové pro pohyb v menu, počáteční písmena voleb, ENTER pro potvrzení volby. Všechny ostatní klávesy dosazují do proměnné hodnotu 0. <výrazC1> = text volby. MESSAGE <výrazC2> - slouží pro vysvětlující text jednotlivých voleb MENU na řádce, určené v SET MESSAGE TO.

 

SET TALK OFF

CLEAR

@  3,10 PROMPT "  Lektoři  " MESSAGE ;

"Evidence lektorů školícího střediska"

@  3,30 PROMPT " Zákazníci " MESSAGE ;

"Evidence zájemců o školení"

@  3,50 PROMPT "   Konec   " MESSAGE ;

"Ukončení programu"

SET MESSAGE TO 24

MENU TO volba

DO CASE

CASE volba = 1

DO ....

CASE volba = 2

DO ....

CASE volba = 3

QUIT

ENDCASE

 

Hlavní menu

Hlavní menu je takové, které dokáže aktivovat menu jiných typů, jako důsledek v něm provedené volby. Pro práci s nim se používají příkazy a funkce:

 

DEFINE MENU <menu_jméno> [MESSAGE <výrazC>]

 

Příkaz definuje hlavní menu a určí jeho označení (jméno). Jednotlivé volby definujte pomocí DEFINE PAD.

 

MENU()

 

Funkce vrací jméno právě aktivního hlavního menu. Jméno je přiřazeno příkazem DEFINE MENU a musí být aktivováno příkazem ACTIVATE MENU. Pokud není žádné menu aktivní, vrátí funkce prázdný řetězec.

 

DEFINE PAD <pad_jméno> OF <menu_jméno> PROMPT <výrazC1> [AT <rd,sl>]

[MESSAGE <výrazC2>]

 

Příkaz definuje volbu v řádce hlavního menu. PROMPT - text volby, musí být platným znakovým řetězcem. AT - dovoluje určit umístění volby na obrazovce. MESSAGE = doprovodná zpráva na SET MESSAGE TO řádce.

 

PAD()

 

Funkce vrací jméno PAD menu, které bylo naposledy vybráno z aktivního hlavního menu. Jméno je přiřazeno prostřednictvím příkazu DEFINE PAD. Pokud není aktivní žádné menu, vrátí funkce prázdný řetězec.

 

ON PAD <pad_jméno> OF <menu_jméno> [ACTIVATE POPUP <pop_jméno>]

 

Definice POPUP menu k určené volbě hlavního menu. Přiřazené POPUP menu musí být dříve definováno příkazem DEFINE POPUP. K oddělení POPUP menu od příslušné volby slouží ON PAD bez doplňku ACTIVATE POPUP. Nelze použít s ON SELECTION PAD.

 

ON SELECTION PAD <pad_jméno> OF <menu_jméno> [<příkaz>]

 

Po výběru určené volby hlavního menu provede určený příkaz. Když je příkaz vynechán, potom je rutina oddělena od menu. Jestliže bylo dříve připojeno POPUP menu pomocí ON PAD, pak již nesmíte přiřadit rutinu ON SELECTION PAD.

 

ACTIVATE MENU <jméno> [PAD <jméno>]

 

Příkaz zobrazí a aktivuje hlavní menu. Pracuje pouze ve spojení s příkazy DEFINE MENU a DEFINE PAD. Po aktivaci lze provádět volby pomocí kurzorových kláves a PgDn a PgUp. Potvrzení je ENTER nebo myší na volbě. Deaktivace bez volby je pomocí klávesy ESC nebo aktivací jiného menu. PAD určí nastavení inicializační volby (implic. první).

 

HIDE MENU <jméno_menu1> [,<jméno_menu2>...] │ ALL [SAVE]

 

Příkaz odstraní hlavní menu z obrazovky nebo okna, ale ne z paměti. ALL odstraní všechna hlavní menu. SAVE zachová na obrazovce zobrazení hlavního menu.

 

SHOW MENU <menu_jméno1> [,<menu_jméno2>...] │ ALL [PAD <pad_jméno>]

 

Příkaz zobrazí menu hlavní na obrazovce nebo okně bez jeho aktivace. Zobrazené menu nemůže být použito. PAD - určuje vysvícenou volbu. ALL - všechna definovaná menu jsou zobrazena. SAVE - obraz menu bude na obrazovce zachován, zrušit jen CLEAR

 

DEACTIVATE MENU

 

Příkaz deaktivuje menu hlavní menu odstraní ho z obrazovky nebo okna, v paměti však zůstává. Nemá účinek z příkazového okna.

 

RELEASE MENU [<seznam_menu>

 

Zruší hlavní menu.

 

CLEAR MENU

 

Příkaz ruší na obrazovce a v paměti všechny definice uživatelských menu.

 

CLEAR

DEFINE MENU hlavni

DEFINE PAD lektor OF hlavni PROMPT "Lektoři" AT 3,10

DEFINE PAD zakaznik OF hlavni PROMPT "Zákazníci" AT 3,30

DEFINE PAD konec OF hlavni PROMPT "Konec" AT 3,50

ON SELECTION PAD lektor OF hlavni;

DO Zvoleno WITH PAD(),MENU(),.F.

ON SELECTION PAD zakaznik OF hlavni;

DO Zvoleno WITH PAD(),MENU(),.F.

ON SELECTION PAD konec OF hlavni;

DO Zvoleno WITH PAD(),MENU(),.T.

ACTIVATE MENU hlavni

 

PROCEDURE Zvoleno

PARAMETERS volba,menu,konec

IF konec

QUIT

ELSE

? "Vybrána volba " + volba + " z menu " + menu

ENDIF

DEACTIVATE MENU hlavni

RETURN

 

POP-UP menu

Pop-up menu je univerzální nástroj pro tvorbu složitých menu, ochotně spolupracujících s nadřízeným menu. K jeho programování se používají příkazy a funkce:

 

DEFINE POPUP <popup_jméno> FROM <rd1,sl1> [TO <rd2,sl2>] [PROMPT FIELD <položka> │ PROMPT FILES [LIKE <maska> │ PROMPT STRUCTURE] [MESSAGE

<výrazC>] [SHADOW] [COLOR <stand> [,<zvýš>] │ COLOR SCHEME <výrazN>]

 

Příkaz vytvoří POPUP menu, lze specifikovat jeho velikost. Volby v menu specifikujte buď pomocí DEFINE BAR nebo jednou ze tří možností. Volba může mít max. 76 znaků. TO - pravý dolní roh menu, není-li udán automaticky. PROMPT FIELD - jméno položky v databázi, hodnoty ve větách určují jednotlivé volby. PROMPT FILES - volby jsou jména souborů, která vyhoví dané podmínce LIKE. PROMPT STRUCTURE -volby jsou jména položek aktuální databáze. MESSAGE - doprovodná zpráva na SET MESSAGE TO řádce. COLOR - určení barvy při zobrazení menu. SHADOW - vytváření stínu k rámečku menu.

 

DEFINE BAR <výrazN> OF <popup_jméno> PROMPT <výrazC1>

[MESSAGE <výrazC2> [SKIP [FOR <výrazL>]]

 

Příkaz definuje volby v seznamu POPUP menu, které bylo dříve určeno příkazem DEFINE POPUP. <výrazN> určuje řádek, na kterém je volba zobrazována. PROMPT - text volby. MESSAGE - doprovodná zpráva volby podle SET MESSAGE TO. SKIP - příslušná volba nemůže být aktivována. FOR - aktivace volby možná, jen je-li <výrazL> nepravdivý.

 

ON SELECTION POPUP <pop_jméno> │ ALL [<procedura>]

 

Příkaz, který po výběru určené volby v POPUP menu provede zadanou proceduru. Procedura může být umístěna mezi DEFINE POPUP a ACTIVATE POPUP. Doplněk ALL zajistí, že pro všechny volby se vykoná stejná procedura.

 

POPUP()

 

Funkce vrací jméno právě aktivního POPUP menu. Jméno je přiřazeno příkazem DEFINE POPUP a musí být aktivováno příkazem ACTIVATE POPUP. Pokud není žádné POPUP menu aktivní, vrátí funkce prázdný řetězec.

 

PROMPT()

 

Funkce vrací řetězcově volbu vybranou z aktivního PAD menu nebo popup menu. Jestliže je při definici příkazem DEFINE POPUP použit parametr PROMPT FIELD, vrátí funkce obsah zvolené položky. Pokud je POPUP menu definováno s parametrem PROMPT FILES, vrátí funkce kompletní jméno zvoleného souboru. Definice s parametrem PROMPT STRUCTURE způsobí to, že funkce bude vracet jméno zvolené položky databáze. Jestliže byl výběr ukončen klávesou Esc nebo není žádné menu aktivní, vrací funkce prázdný řetězec.

 

ACTIVATE POPUP <jméno>

 

Funkce zobrazí a aktivuje menu POPUP. Pracuje pouze ve spojení s příkazy DEFINE POPUP a DEFINE BAR. Po aktivaci lze provádět volby pomocí kurzorových kláves a PgDn a PgUp. Potvrzení je ENTER nebo myší na volbě. Deaktivace bez volby je pomocí klávesy ESC nebo příkazem DEACTIVATE POPUP.

 

BAR()

 

Funkce vrací číslo parametru, který byl naposledy vybrán z POPUP menu. Čísla jsou parametrům přiřazována prostřednictvím příkazu DEFINE BAR. Pokud neexistuje žádné aktivní pop-up menu, nebo pokud při posledním výběru byla stisknuta klávesa Esc, vrátí funkce nulu.

 

HIDE POPUP <jméno_pop1> [,<jméno_pop2>...] │ ALL [SAVE]

 

Příkaz odstraní POPUP menu z obrazovky nebo okna, ale ne z paměti. ALL - odstraní všechna menu POPUP. SAVE - na obrazovce se zachová zobrazení menu POPUP.

 

SHOW POPUP <pop_jméno1> [,<pop_jméno2>...] │ ALL [SAVE]

 

Funkce zobrazí menu POPUP na obrazovce nebo v okně bez jeho aktivace ALL všechna definovaná menu jsou zobrazena. SAVE - obraz menu bude na obrazovce zachován, zrušit lze jen příkazem CLEAR.

 

DEACTIVATE POPUP

 

Příkaz deaktivuje POPUP menu a odstraní ho z obrazovky nebo okna, v paměti však zůstává. Nemá účinek z příkazového okna.

 

RELEASE POPUPS [<seznam_pop>]

 

Příkaz zruší POPUP menu z paměti i obrazovky.

 

CLEAR POPUPS

 

Příkaz ruší na obrazovce a v paměti všechny definice uživatelských POPUP menu.

 

CLEAR

DEFINE MENU hlavni

DEFINE PAD jmena OF hlavni PROMPT " Zákazníci " AT  0, 0

DEFINE PAD podniky OF hlavni PROMPT " Podniky " AT  0,20

ON SELECTION PAD jmena OF hlavni ACTIVATE POPUP jmenpop

ON SELECTION PAD podniky OF hlavni ACTIVATE POPUP podnpop

DEFINE POPUP jmenpop FROM  2, 1

DEFINE BAR 1 OF jmenpop PROMPT "Jednotlivý zákazník"

DEFINE BAR 2 OF jmenpop PROMPT "Seznam zákazníků"

DEFINE BAR 3 OF jmenpop PROMPT "Tiskové přehledy"

ON SELECTION POPUP jmenpop DO Ukazka WITH BAR(), PROMPT()

DEFINE POPUP podnpop FROM  2,21

DEFINE BAR 1 OF podnpop PROMPT "Jednotlivý podnik"

DEFINE BAR 2 OF podnpop PROMPT "Seznam podniků"

ON SELECTION POPUP podnpop DO Ukazka WITH BAR(), PROMPT()

ACTIVATE MENU hlavni

 

PROCEDURE Ukazka

PARAMETERS volba,hlaseni

CLEAR

@ 10,10 SAY "Volba : " + hlaseni

@ 12,10 SAY "Číslo : " + LTRIM(STR(volba))

DEACTIVATE MENU hlavni

RETURN