Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_по_БД.doc
Скачиваний:
30
Добавлен:
14.02.2015
Размер:
897.54 Кб
Скачать

2.9. Организация dBase – меню

Общая структура dBase-меню: именованная линейка меню (BAR-меню), состоящая из заголовков (PAD-пунктов). Каждому заголовку может быть назначено POPUP-меню – именованное вертикальное меню, состоящее из BAR-строк (не путать с BAR-меню!).

BAR-меню и POPUP-меню можно использовать и отдельно. BAR-строке можно назначить выбор других BAR-меню или POPUP-меню, что позволяет создавать многоуровневые меню.

Основные операции при работе с dBase-меню:

  • описание ( DEFINE ),

  • определение реакций выбора (ON SELECTION, ON),

  • активация (ACTIVATE),

  • деактивация (DEACTIVATE) или удаление (CLEAR, RELEASE).

BAR-menu

PAD_1 PAD_2 PAD_3 ....... PAD_N

POPUP-menu

BAR_1

BAR_2 => BAR-menu_2

..............

BAR_N

Универсальные опции при описании меню:

IN WINDOW "имя окна" / IN SCREEN – вывести в окно или на экран,

KEY "метка клавиши" – клавиша активизации,

MARK <вырC1>] – поместить перед каждой опцией символьную метку (например, MARK CHR(254)),

MESSAGE "сообщение",

COLOR "список цв.пар"/ COLOR SCHEME "номер"

ПРИМЕР описания и активации горизонтального меню:

DEFINE MENU _main BAR AT LINE 1 KEY ALT+Z

DEFINE PAD _p1 OF _main PROMPT 'пункт_1'

DEFINE PAD _p2 OF _main PROMPT 'пункт_2'

DEFINE PAD _p3 OF _main PROMPT 'пункт_3'

DEFINE PAD quit OF _main PROMPT '\<Выход'

ON SELECTION MENU _main DO proc_1 WITH MENU(), PAD()

ACTIVATE MENU _main NOWAIT

PROCEDURE proc_1

PARAMETER mmenu, mpad ........... && текст процедуры

IF mpad = 'QUIT'

DEACTIVATE MENU _main

RELEASE MENU _main

ENDIF

RETURN

Пример описания и активации вертикального меню:

ON PAD _p1 OF _main ACTIVATE POPUP pop_1

DEFINE POPUP pop_1 FROM 4,1

DEFINE BAR 1 OF pop_1 PROMPT '\<1-я строка'

DEFINE BAR 2 OF pop_1 PROMPT '\<2-я строка'

DEFINE BAR 3 OF pop_1 PROMPT '\<3-я строка'

ON SELECTION POPUP pop_1 DO proc_1 WITH POPUP(), PROMPT()

ON SELECTION BAR 1 OF pop_1 DO proc_11

ON BAR 3 OF pop_1 ACTIVATE POPUP pop_21

*&& вызов меню 2-го уровня

Для организации повторного обращения к пунктам меню достаточно поставить в цикл (do while .t.) команду активизации меню ACTIVATE MENU _main.

2.10 Организация клавишных меню

К простейшим меню относят клавишные, представляющие собой просто набор клавишных назначений без какого-либо явного их отображения на экране. Такое отображение обычно организуют дополнительно в виде текстовой строки подсказки. Формат клавишных назначений:

ON KEY LABEL "метка клавиши" "команда"

Метка клавиши – это символ или цифра самой клавиши (или комбинации клавиш) или имя, присвоенное клавише. Например: LeftArrow, Backspace, F1, Ctrl-F1, Alt-0, Ctrl-RightArrow.

ПРИМЕР:

ON KEY LABEL Alt-F1 DO _help

ON KEY LABEL Alt-F2 DO _menu1

ON KEY LABEL Alt-F3 Browse

ON KEY LABEL Alt-F4 ? 'Нет операции'

2.11 Добавление записей таблицы в командном файле

Добавлять записи в таблицу из программы можно разными способами в зависимости от источника записей.

*Программа добавляет записи в таблицу и непосредственно обновляет значения полей

SELECT <таблица>

APPEND BLANK

*Вызываем предварительно созданную форму, в которую пользователь может вводить *значения полей

DO FillForm

Однако не всегда удобно непосредственно редактировать поля таблицы. В приведенном ниже примере программы из таблицы создается набор переменных памяти, которые после ввода их значений, сохраняются в таблице по запросу.

SELECT <таблица>

SCATTER MEMVAR MEMO

SAVE

Savelt = FillForm()

*Если пользователь кликнет на кнопке SAVE, то добавляется пустая запись и полям

*присваиваются значения соответствующих переменных памяти

IF Savelt

APPEND BLANK

GATHER MEMVAR MEMO

ENDIF

Второй фрагмент кода лучше первого, потому что в нем не добавляется новой записи в таблицу до тех пор, пока пользователь не решит сохранить данные.