Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы 2 / ЛекцБазы данных.doc
Скачиваний:
59
Добавлен:
26.04.2015
Размер:
1.08 Mб
Скачать

7.11. Построение меню

В FoxPro имеются две альтернативные технологии построения меню. концепция, продолжающаяся из предыдущей версии СУБД FoxBase и концеп­ция, позаимствованная из СУБД dBASE4. Главное отличие между ними может быть определено терминами «меню-программа» и «меню-объект». Fox-меню является частью программы. dBASE-меню остается независимым объектом, к которому можно обратиться из любого места прикладной системы, и даже в командном окне уже после завершения программы.

В Fox-меню для поддержания постоянного возврата в меню, оно или команда активации меню, помещается в цикл вида DO WHILE .T. ... ENDDO. В Fox-меню различают:

1. LIGHTBAR-меню - меню с подсветкой и произвольным расположением элементов.

69

2. POPUP- меню  вертикальное, всплывающее меню.

3.PULLDOWN-меню  двухуровневое меню.

Меню FoxPro

Fox-меню dBASE-меню

LIGHTBAR POPUP-меню

POPUP BAR-меню

PULLDOWN Комбинированное

Рис.7.10. Классификация типов меню

LIGHBAR-меню:

Используются команды :

@ Y,X PROMPT, MENU

@ Y,X PROMPT <выражение> [MASSAGE <выражение>]

Пример 7.6. Меню с подсветкой.

DO WHILE .T.

CLEAR

MENU n

@ 3,30 SAY "МЕНЮ СИСТЕМЫ"

@ 4,10 ТО 10,50 DOUBLE

@ 5,11 PROMPT "Ввод данных"

@ 6,11 PROMPT "Корректировка"

@ 7,11 PROMPT "Просмотр"

@ 8,11 PROMPT "Печать"

MENU TO N

DO CASE

CASE N = 0

EXIT

CASE N=1

DO VVOD CASE N=2

DO KORR CASE N=3

DO PROSM CASE N=4

DO PRINT ENDCASE ENDDO

70

POPUP-меню (вертикальное меню).

Здесь описание меню и активация разделены.

DIME <имя массива>

@ Y, X MENU <массив>, <выражение 1> [, <выражение 2>]

[TITLE <выражение>] READ MENU TO <переменная>

Выражение 1 - число элементов меню (до 128). Выражение 2 - число одновременно изображаемых строк на экране. TITLE - заголовок.

Пример 7.7.

CLEAR

D

МЕНЮ

IME A(3)

А

Ввод данных

Редактирование

Удаление

(1) == "Ввод данных"

А (2) = "Редактирование"

А (3) = "Удаление"

@ 5,10 MENU A, 3 TITLE ‘МЕНЮ’

READ MENU TO m

Двухуровневое PULLDOWN-меню. Такое меню состоит из главного го-ризонтального меню (меню заголовков) и нескольких вложенных в него вспо-могательных вертикальных меню.

Структура двухуровневого меню реализуется двумя командами: MENU BAR, MENU и командой активации:

READ MENU BAR TO

Главное меню определяется командой:

MENU BAR <массив>, <выражение N>

Здесь <выражение N>  общее число пунктов меню;

<массив>  двумерный символьный массив вида М (К,2). Первый столбец массива М (i, 1) содержит собственно пункты меню, второй столбец М (i, 2)  комментарии к позициям меню, располагаемые в строке по команде

SET MESSAGE TO <номер строки>

Команда

MENU <выражение Nl>, <массив>, <выражение N2>, [, <выражение N3>]

Здесь:

<выражение Nl>  номер элемента главного меню;

<массив>  одномерный символьный массив, содержащий пункты меню; <выражение N2>  число пунктов меню, обычно равно размерности массива; <выражение N3> - число одновременно показываемых пунктов меню.

Меню активирует команда:

READ MENU BAR ТО <переменная 1>, <переменная 2> [SAVE]

<переменная 1>  номер пункта главного меню;

<переменная 2>  номер пункта вспомогательного меню.

71

Пример.

ФАКУЛЬТЕТЫ КАФЕДРЫ ГРУППЫ КОНЕЦ

Сведения Преподаватели Специальности

Состав ИТР Группы

Дисциплины

SET TALK OFF

SET TALK OFF

DIMENSION a (4,2)

a (1,1)='ФАКУЛЬТЕТ'

a (2,1)='КАФЕДРА'

а (3,1)='ГРУППА'

а (4,1)='КОНЕЦ'

а (1,2)="

а (2,2) = ' '

а (3,2) = ' '

DIMENSION b(2)

b(l)= 'Сведения'

b (2) = 'Состав'

DIMENSION c(3)

с (1) = 'Преподаватели'

с (2) = 'ИТР'

с (3) = 'Дисциплины'

DIMENSION d(2)

d (1) = 'Специальности'

d (2) = 'Студенты'

Формирование образа меню:

MENU BAR a,4 && Главное меню

MENU 1,b,2 && Вспомогательное меню к пункту ФАКУЛЬТЕТЫ

MENU 2,c,3

MENU 3,d,2

g=2 && Исходное положение курсора в главном меню

v=1 && Положение курсора во вспомогательном меню

DO WHILE .T.

READ MENU BAR TO g, v && Активация меню

DO CASE

………

CASE g=4

СANCEL

ENDCASE

ENDDO

72

72

DBASE-меню.

Имеются два типа меню: горизонтальное, вертикальное.

BAR-меню

PAD-пункт ....... PAD-пункт

POPменю

BAR-пункт

…..

BAR - пункт

Рис.7.11. Типы DBASE-меню

1. Горизонтальное меню (BAR-меню).

DEFINE MENU <имя>  описание горизонтального меню.

DEFINE PAD <имя> OF <имя ВАR-меню> PROMPT <выражение> [AT Y,X]

Реакция меню:

ON SELECTION MENU <ВАR-меню> [<команда>]

ON SELECTION PAD <PAD-nyнкт> OF <ВАRменю> [<команда>]

Активация меню:

ACTIVATE MENU <имя>

•*»".

Подключение дополнительного меню к пунктам:

ON PAD <PAD-nyнкт> OF <ВАR-меню> [ACTIVATE POPUP <POPUP- меню>] [ACTIVATE MENU <ВАК-меню>]

Функции выбора из меню:

MENU() - возвращает имя активного BAR-меню.

PAD () - возвращает имя РAD-пункта.

PROMPT () - возвращает строку-предложение.

2. Вертикальное POPUP-меню.

DEFINE POPUP <имя>

[FROM Y1,X1][TO Y2,X2]

Описание элементов POPUP-меню:

DEFINE BAR <выpaжeниeNl> OF <РОРUР-меню> PROMPT <выражение>

Реакция меню:

ON SELECTION POPUP <РОРUР-меню> [<команда>]

Реакция на пункты меню:

ON SELECTION BAR <выражение N> OF <РОРUР-меню> [<команда>]

Активация меню:

ACTIVATE POPUP <имя РОРUР-меню>

Вызов другого POPUP-меню:

ON BAR <выражение N> OF <РОРUР-меню>

[ACTIVATE POPUP <РОРUР-меню> / ACTIVATE MENU <ВАР-меню>]

73

Функции выбора из меню: BAR() - возвращается номер ВАR-пункта, POPUP( ) возвращается имя POPUP-меню, PROMPT ( ) - возвращает строку

приглашение.

Двухуровневое PULLDOWN-меню.

Создается с помощью уже указанных команд. Командами DEFINE MENU и DEFINE PAD описывается главное горизонтальное меню. Командой

ON SELECTION PAD обычно описываются реакции тех пунктов, которые вызывают процедуры. Командой ON PAD с опцией ACTIVATE POPUP устанавливается связь горизонтального меню с вертикальным POPUP-меню, т. е. выход на второй уровень меню.

Командами DEFINE POPUP FIELD или DEFINE POPUP с командами DEFINE BAR описываются сами POPUP-меню, а их реакции – командой

ON SELECTION POPUP. Активация всей конструкции меню осуществляется командой ACTIVATE MENU.

Организация взаимодействия компонентов меню:

DEFINE MENU

DEFINE PAD DEFINE PAD DEFINE PAD

ON SELE CTION PAD ON PAD ACTIVATE POPUP

STRUCTURE

Меню

структуры

базы

ON [SELECTION]

Вызов процедуры / команды

обработки отдельных строк

POPUP – меню или нового

меню низшего уровня

Факультет(fac) Кафедра(kaf) Выход

Деканат

Группы

Студенты

Специальность

Дисциплины

Кадры

pfak

pkaf

Преподаватели и ИТР

Учебная деятельность

Научная деятельность

ON SELEC TION MENU

FIELD

Меню

из

записей

базы

FIELD

Меню

имен

файлов

DEFINE BAR

………………

DEFINE BAR

Меню

из заданных

строк

Вызов процедуры,

команды или нового

BAR меню

DEFINE POPUP PROMPT DEFINE

ON SELECTION POPUP

Вызов процедуры /

команды обработки

POPUP - меню

Соседние файлы в папке лабы 2