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