Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL / L3_BD.RTF
Скачиваний:
21
Добавлен:
15.06.2014
Размер:
50.04 Кб
Скачать

Функции выбора из меню(для передачи параметров в процедуры):

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

PAD() - возвращает имя PAD-пункта, выбранного в BAR-меню;

PROMPT() - возвращает строку-приглашение, содержащуюся в PAD-элементе, выбранном в BAR-меню.

Отключение меню:

DEACTIVATE MENU - удаление активного BAR-меню с экрана/окна, но не из памяти.

RELEASE PAD <PAD-пункт> / ALL OF <имя BAR-меню> - удаляет указанный PAD-пункт BAR-меню из памяти и с экрана/окна. Можно удалить и все пункты PAD-меню (ALL) (кроме системного меню). Включение операнда EXTENDED удаляет также и все подчинённые меню следующего уровня.

Пример:

Построим горизонтальное меню с именем MAINMENU и содержащим “РЕДАКТИРОВАНИЕ”, “ПОИСК”, “КОНЕЦ”.

При выборе любого из пунктов меню вызывается процедура РРР, в которую передаются параметры MENU(), PAD(), где они и печатаются:

CLEAR

DEFINE MENU mainmenu

DEFINE PAD redak OF mainmenu PROMPT ‘\<РЕДАКТИРОВАНИЕ’ AT 1,10

DEFINE PAD poisk OF mainmenu PROMPT ‘\<ПОИСК’ AT 1,32

DEFINE PAD konec OF mainmenu PROMPT ‘\<КОНЕЦ’ AT 1,50

ON SELECTION PAD redak OF mainmenu DO ppp WITH MENU(),PAD()

ON SELECTION PAD poisk OF mainmenu DO ppp WITH MENU(),PAD()

ON SELECTION PAD konec OF mainmenu DO ppp WITH MENU(),PAD()

ACTIVATE MENU mainmenu

PROCEDURE ppp

PARAMETR mmenu, mpad

? mmenu, mpad

RETURN

Вызванная процедура после своего завершения возвращает управление в вызывающую программу на строку ACTIVATE mainmenu до нажатия клавиши Escape.

Замечание: поскольку во всех случаях идёт обращение к процедуре РРР, в данном примере можно использовать только одну команду ON SELECTION MENU mainmenu DO ppp WITH MENU(), PAD() вместо трёх ON SELECTION PAD.

Порядок выполнения:

1. Разработать управляющую программу для работы с БД, осуществляющую по выбору из меню:

- просмотр БД;

- пополнение БД;

- поиск с возможностью редактирования БД ( обновление и удаление);

- выход из БД.

Выполнить поиск по нескольким полям из каждого файла БД.

Пример программы

use fam.dbf

store space(20) to _fam

store space(2) to _nrab

set date british

clear

define popup menu1 from 18,2 shadow

define bar 1 of menu1 prompt 'Просмотр'

define bar 2 of menu1 prompt 'Поиск'

define bar 3 of menu1 prompt 'Создание'

define bar 4 of menu1 prompt 'Выход'

on selection bar 1 of menu1 do pmenu1 with popup(),prompt(),bar()

on selection bar 3 of menu1 do pmenu1 with popup(),prompt(),bar()

on selection bar 4 of menu1 do pmenu1 with popup(),prompt(),bar()

on bar 2 of menu1 activate popup menu2

activate popup menu1

define popup menu2 from 18,12 shadow

define bar 1 of menu2 prompt 'Фамилия'

define bar 2 of menu2 prompt 'Номер'

on selection popup menu2 do pmenu2 with popup(),prompt(),bar()

activate popup menu2

procedure pmenu1

parameter mpopup,mprompt,mbar

if bar()=4

deactivate popup

endif

if bar()=1

list

endif

if bar()=3

clear

append

endif

return

procedure pmenu2

parameter mpopup,mprompt,mbar

if bar()=1

clear

@ 4,19 to 6,70 doubl

@ 5,20 say 'Введите фамилию: ' get _fam

read

locate for fam=trim(_fam)

endif

if bar()=2

clear

@ 4,19 to 6,70 doubl

@ 5,20 say 'Введите номер: ' get _nrab

read

locate for nrab=trim(_nrab)

endif

clear

@4,30 say 'ДАHHЫЕ '

@5,9 TO 15,70 doubl

@5,51 say ' Сегодня '+dtoc(date())+' '

@6,11 say 'Фамилия : ' get fam

@7,11 say 'Имя: ' get im

@8,11 say 'Номер: ' get nrab

@11,10 to 11,69

@12,12 say 'Выход с сохр-м изм-ий - ^End, ...БЕЗ - Esc'

read cycle

return

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