21022

РАЗРАБОТКА МЕНЮ В VISUAL FOXPRO

Реферат

Информатика, кибернетика и программирование

Виды меню в Visual FoxPro и работа с ними В Visual FoxPro могут быть разработаны 2 основных вида меню: горизонтальное меню и всплывающее меню. Горизонтальное меню может создаваться для главного окна или форм верхнего уровня и представляет собой строку меню размещенную в верхней части окна или формы. Горизонтальное меню главного окна может заменять системное меню Visual FoxPro или сочетаться с ним.

Русский

2013-08-02

111 KB

49 чел.

РАЗРАБОТКА МЕНЮ В VISUAL FOXPRO

1. Виды меню в Visual FoxPro и работа с ними

В Visual FoxPro могут быть разработаны 2 основных вида меню: горизонтальное меню и всплывающее меню.

Горизонтальное меню может создаваться для главного окна или форм верхнего уровня и представляет собой строку меню, размещенную в верхней части окна или формы. Горизонтальное меню главного окна может заменять системное меню Visual FoxPro или сочетаться с ним. Горизонтальное меню главного окна служит для запуска основных задач приложения, горизонтальное меню формы используется для запуска задач, связанных с данной формой. При большом числе вызываемых из меню задач используется иерархическая структура меню, в которой некоторые пункты меню вызывают не задачи, а подменю нижележащего уровня.

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

По строению горизонтальное и всплывающее меню друг от друга принципиально не отличаются и основываются на единой иерархической структуре. В этой структуре  подменю являются ничем иным как всплывающими меню, горизонтальные строки и вертикальные списки могут произвольно чередоваться по уровням. В результате под горизонтальным меню в Visual FoxPro понимается иерархическая структура, начинающаяся с горизонтальной строки, а под всплывающим меню - структура, начинающаяся с вертикального списка.

Для обозначения элементов, образующих структуру меню, используются следующие обозначения:

MENU – горизонтальная строка меню,

PAD – пункт горизонтальной строки меню,

POPUP – вертикальный список меню (всплывающее меню, подменю),

BAR – пункт вертикального списка меню.

При проектировании для создания горизонтального меню и всплывающего меню используются соответствующие конструкторы меню. С их помощью создаются описания меню, сохраняемые в файлах с расширениями *.mnx  и  *.mnt. По разработанным описаниям меню генерируется программный код, помещаемый в файлы с расширением *.mpr. При компиляции программного кода, выполняемой явно по команде меню или неявно по запуску на выполнение, создается файл с расширением  *.mpx, собственно и исполняемый при работе.

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

2. Создание горизонтального меню

Горизонтальное меню при проектировании создается с помощью конструктора меню Menu Designer.

Запуск конструктора меню

Запуск конструктора меню может быть выполнен:

а) нажатием кнопки New окна проекта при выбранной группе Menus. Созданное меню будет автоматически добавлено в проект;

б) выполнением команды File /New главного меню Visual FoxPro с последующим выбором Menu/NewFile. Созданное меню будет независимым и при необходимости добавляется в проект выполнением операции Add. Аналогичный результат можно получить нажатием кнопки New стандартной панели Visual FoxPro.

В каждом случае открывается окно выбора вида меню: горизонтального (Menu) или всплывающего (Shortcut). После нажатия кнопки Menu открывается окно конструктора меню.

Основную часть окна конструктора занимает список пунктов меню. В каждой строке списка может быть помещено описание одного пункта меню. Отображаемые пункты относятся к некоторому уровню меню. Этот уровень указывается в правой части окна и может быть сменен на любой из вышестоящих уровней путем выбора из раскрывающегося списка Menu level. Кнопки в правой части окна позволяют: вставить в текущую позицию новый пункт (Insert), удалить текущий пункт (Delete), вставить в текущую позицию команду системного меню Visual FoxPro (Insert Bar), просмотреть на экране внешний вид меню (Preview).

При открытии окна конструктора изменяется главное меню Visual FoxPro: добавляется подменю Menu и изменяется состав подменю View. Подменю Menu содержит коменды, дублирующие кнопки окна конструктора, а также команду Quick Menu, создающую меню, эквивалентное системному меню Visual FoxPro, и команду Generate, генерирующую программный код по текущему описанию меню. Пункты Menu Options  и  General Options, добавляемые к подменю View, позволяют задать общие настройки для текущего уровня меню и всего меню в целом.

Создание пунктов меню

Для создания пункта меню заполняется новая строка в списке пунктов. При этом может использоваться пустая строка, находящаяся в конце списка или вставляемая в нужное место списка нажатием кнопки Insert. Для второго и нижестоящих уровней меню доступна также кнопка Insert Bar. По нажатию данной кнопки открывается список команд системного меню Visual FoxPro. После выбора команды в список пунктов вставляется строка пункта, выполняющая при работе вызов этой команды.

Описание пункта меню состоит из нескольких позиций.

а) Позиция Prompt предназначена для ввода заголовка пункта меню, отображаемого на экране.

В заголовке можно выделить одну из букв, поместив перед нею символы  \<. Для верхнего уровня меню при отсутствии такого выделения автоматически выделяется первый символ заголовка. При работе пункт с выделенным символом может быть выбран нажатием клавиши символа в сочетании с Alt (для главного уровня) или предварительным открытием подменю (для неглавного уровня).

Примечание: генератор Visual FoxPro некорректно обрабатывает выделение символов кириллицы. Поэтому необходимо исключить выделение кириллицы (например, задавая первыми символами нумерацию пунктов 1,2,3, … и выделяя их) или  вручную корректировать сгенерированный программный код.

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

б) Позиция Result позволяет задать с помощью раскрывающегося списка вид реакции на выбор пункта при работе. Имеются следующие варианты:

- Command. При выборе пункта выполняется связанная с ним команда. Команда задается в поле, следующем за позицией Result;

- Pad Name (для главного уровня меню). При выборе пункта никакое действие не выполняется;  

- Bar Name (для второго и нижестоящих уровней меню). При выборе пункта выполняется связанный с ним пункт системного меню Visual FoxPro. Системное имя пункта указывается в поле, следующем за позицией Result. Узнать имена пунктов можно из Help или выполнением команды Quick Menu. Данный вариант реакции можно задать также, используя кнопку  Insert Bar;  

- Submenu. При выборе пункта вызывается связанное с ним подменю. Для перехода к подменю используется кнопка, появляющаяся в поле, следующем за позицией Result. Если подменю еще не существует, то кнопка называется Create, иначе – Edit. При нажатии кнопки выполняется переход на нижележащий уровень к описанию подменю (возврат из подменю на вышележащий уровень выполняется с помощью раскрывающегося списка Menu level);  

- Procedure. При выборе пункта выполняется связанная с ним процедура. Для перехода к тексту процедуры используется кнопка, появляющаяся в поле, следующем за позицией Result. Если процедура еще не существует, то кнопка называется Create, иначе – Edit. При нажатии кнопки выполняется переход на редактирование процедуры. При генерации программного кода данная процедура получает уникальное имя и присоединяется к программному коду меню.

в) Позиция Options в текущей строке содержит кнопку вызова окна дополнительных настроек. В открывающемся по нажатию кнопки окне можно задать:

- клавиши быстрого вызова (область Shortcut). Для задания клавиш быстрого вызова в поле Key Label нажимается функциональная клавиша F1 – F10 или комбинация клавиши символа с Alt или Ctrl. Нажатая комбинация отображается в поле  Key Label и копируется в поле Key Text. Содержимое поля  Key Text  указывает подсказку, отображаемую при работе в пункте меню после его заголовка. Нажатие заданной функциональной клавиши или комбинации при работе меню  будут выполнять данный пункт меню;

- логическое условие блокировки пункта меню. Условие вводится в поле Skip for вручную или с помощью построителя выражений (кнопка рядом с полем). Пункт меню при работе блокируется, когда условие становится равным .T., и становится доступным, когда условие становится равным .F.;

- текстовую подсказку, выводимую при работе в строке состояния при активации данного пункта меню. Выводимое текстовое выражение задается в поле Message;

- имя или номер пункта меню, используемые в генерируемом программном коде. Имя задается в поле Pad Name (для пунктов верхнего уровня), номер задается в поле Bar# (для пунктов второго и нижележащих уровней). При незаданных именах Visual FoxPro генерирует для них уникальные значения, при незаданных номерах используются порядковые номера пунктов в подменю;

Дополнительная настройка меню

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

Для задания общих настроек меню используется пункт системного меню View/GeneralOptions. В открывающемся окне General Options можно задать:

- процедуру, исполняемую при выборе любого пункта меню, действие для которого не определено;

- программный код, выполняющийся перед созданием меню (Setup) и после создания меню (Cleanup);

- размещение пунктов создаваемого меню относительно пунктов системного меню Visual FoxPro: вместо пунктов системного меню (Replace), после пунктов системного меню (Append), до (Before) или после (After) заданного пункта системного меню;  

- возможность размещения меню в форме верхнего уровня. При установке флага Top-Level Form меню можно размещать в форме  верхнего уровня, в противном случае – только в главном окне Visual FoxPro.

Для задания настроек подменю используется пункт системного меню Visual FoxPro View/MenuOptions. В открывающемся окне Menu Options можно задать:

- имя подменю. Имя задается в поле Name. При отсутствии заданного имени подменю именуется по заголовку вызывающего его пункта;

- процедуру, исполняемую при выборе любого пункта подменю, действие для которого не определено.

Сохранение меню

Описание меню сохраняется с помощью команд меню File/Save и File/SaveAs. Запрос на сохранение выдается также при закрытии окна конструктора меню и при запуске генерации программного кода меню.  При первичном сохранении и при сохранении командой File/SaveAs для файла сохраняемого меню запрашивается имя. Это имя используется в дальнейшем при открытии описания меню для модификации и создании меню при работе.

Модификация меню

Меню открывается для модификации с помощью команды системного меню File/Open, с помощью кнопки Modify окна проекта или соответствующей команды контекстного меню. Также меню можно открыть для модификации двойным щелчком на нем в окне проекта.

Генерация программного кода меню

Генерация выполняется при открытом окне конструктора меню выполнением команды системного меню Menu/Generate. В открывшемся окне уточняется место размещения и имя генерируемого программного файла меню и нажимается кнопка генерации.

Запуск меню

Меню создается исполнением сгенерированного программного файла.

Запуск файла меню на выполнение может производится автономно в целях отладки и в составе приложения в рабочем режиме.

Автономный запуск меню может быть выполнен:

а) нажатием кнопки Run окна проекта при выбранном меню;

в) командой меню Program/Do с выбором нужного программного файла меню.

Запуск файла меню в составе приложения выполняется с помощью команды DO с указанием имени программного файла меню с расширением. При использовании меню как главного меню приложения команда помещается в главной программе приложения перед командой ожидания событий READ EVENTS. При использовании меню в форме верхнего уровня команда помещается в событии Init данной формы.

3. Создание всплывающего меню

Всплывающее меню при проектировании создается с помощью конструктора меню Shortcut Designer. Запуск конструктора отличается от запуска конструктора горизонтального меню лишь выбором вида меню (Shortcut вместо Menu). Работа по созданию всплывающего меню практически аналогична созданию горизонтального меню. Для вызова всплывающего меню в приложении команда DO помещается в код события объекта, с которым связывается меню (например, события  RightClick объекта  Form).   

4. Программное создание и модификация меню

В конечном итоге создание меню и работа с ним реализуется выполнением команд Visual FoxPro. Программная работа с меню может выполняться в 2 вариантах.

а) Непосредственная работа с программным кодом меню при проектировании.

Позволяет добавить возможности, имеющиеся в командах, но не реализованные в генераторе кода.

Выполняется путем модификации текста программного файла меню.

б) Программная работа с меню при работе приложения.

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

Выполняется путем введения команд создания меню и выполнения действий с меню в программный код приложения.

Ниже приведен перечень основных команд, позволяющих изменить описание элементов меню и выполнить действия с меню, а также набор информационных функций, предоставляющих информацию о состоянии меню и результате выполнения действия с ним. Как уже указывалось, термин MENU обозначает горизонтальную строку меню, PAD – пункт горизонтальной строки меню, POPUP – вертикальный список меню (всплывающее меню или подменю), а BAR – пункт вертикального списка меню.

Команды и функции

Назначение

ACTIVATE MENU

Отображает и активизирует строку меню

ACTIVATE POPUP

Отображает и активизирует всплывающее меню

BAR()

Возвращает номер пункта, выбранного во всплывающем меню

CLEAR MENUS

Освобождает память от всех меню и удаляет их с экрана или окна

CLEAR POPUPS

Освобождает память от всех всплывающих меню и удаляет действующее всплывающее меню с экрана

CNTBARQ

Возвращает число пунктов во всплывающем меню

CNTPADQ

Возвращает число пунктов в линейке меню

DEACTIVATE MENU

Удаляет меню с экрана, но оставляет в памяти

DEACTIVATE POPUP

Удаляет всплывающее меню с экрана, но оставляет в памяти

DEFINE BAR 

Определяет пункт всплывающего меню

DEFINE MENU

Создает строку меню

DEFINE PAD

Определяет пункт строки меню

DEFINE POPUP

Создает всплывающее меню

GETBAR()

Возвращает число пунктов во всплывающем меню

GETPADQ

Возвращает число пунктов в строке меню

MRKBAR()

Определяет, является ли помеченным пункт всплывающего меню

MRKPAD()

Определяет, является ли помеченным пункт строки меню

ON BAR

При выборе пункта всплывающего меню активизирует другое всплывающее меню или строку меню

ON PAD

Связывает строку меню со всплывающим меню

ON SELECTION BAR

Определяет действие для пункта всплывающего меню

ON SELECTION

MENU

Определяет действие для строки меню

ON SELECTION PAD

Определяет действие для пункта строки меню

ON SELECTION POPUP

Определяет действие для всплывающего меню

PAD()

Возвращает имя последнего выбранного пункта в строке меню

POPUP()

Возвращает имя активного всплывающего меню

PRMBARQ

Возвращает заголовок пункта всплывающего меню

PRMPAD()

Возвращает заголовок пункта строки меню

PROMPT()

Возвращает заголовок выбранного пункта всплывающего меню или строки меню

RELEASE BAR

Удаляет пункт из всплывающего меню

RELEASE MENUS

Удаляет меню из памяти и с экрана

RELEASE PAD

Удаляет пункт из строки меню

RELEASE POPUPS

Удаляет всплывающие меню из памяти и стирает активное всплывающее меню с экрана

SET MARK OF

Задает символ пометки для пунктов строки меню и всплывающего меню

SET SKIP OF

Устанавливает блокировку меню

SKPBAR()

Определяет доступность пункта всплывающего меню

SKPPAD()

Определяет доступность пункта строки меню

ЗАДАНИЕ НА ЛАБОРАТОРНУЮ РАБОТУ

1. Создание проекта

а) Создайте новый проект. Добавьте к проекту предоставленный программный файл и форму.

б) Создайте новую БД для проекта и добавьте к ней предоставленную таблицу сотрудников организации.

в) Создайте для формы среду окружения и добавьте к ней таблицу сотрудников. Подключите к табличному элементу формы таблицу сотрудников.

г) Сохраните созданный проект в личном каталоге.

2. Создание горизонтального меню

а) Создайте двухуровневое меню с указанным составом.

PAD

BAR

1.Отделы

Организационная структура

-------------Разделитель-------------

Организовать

Изменить данные

Расформировать

-------------Разделитель-------------

Выход

2.Сотрудники

Список сотрудников

-------------Разделитель-------------

Оформить

Внести изменения

Перевести

Уволить

3.Проекты

Текущие

Архив

Предложения

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

Вырезать

Копировать

Вставить

5.Сервис

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

-------------Разделитель-------------

Сжатие БД

-------------Разделитель-------------

Резервное копирование

Восстановление из копии

Для пунктов меню задайте имена и выводимые в строке состояния подсказки.

Для подменю задайте имена.

Проверьте правильность внешнего вида меню с помощью кнопки Preview.

б) Настройка пунктов меню

Для пункта «Выход» задайте реакцию в виде команды восстановления системного меню SET SYSMENU TO DEFAULT.

Пункты подменю редактирования настройте на исполнение соответствующих команд системного меню Visual FoxPro.

Для пункта «Список сотрудников» задайте реакцию в виде процедуры

kolform=_screen.formcount

nform=0

for n=1 to kolform

 if _screen.forms(n).name='FormSpis'

   nform=n

   exit

 endif

endfor

if nform<>0

 _screen.forms(nform).show

else

 do form spissotr

endif  

Данная процедура выполняет открытие имеющейся формы или переход на нее, если форма уже открыта.

Для пунктов «Выход» и «Список сотрудников» задайте клавиши быстрого вызова. Так как символы кириллицы не могут быть заданы, то задавайте латинские символы, но в подсказке для пользователя укажите русские варианты символов выбранных клавиш.

Для пункта «Сервис» задайте условие блокировки           

_screen.formcount>0

Данное условие блокирует сервисные операции, если есть открытые формы..

В качестве общей процедуры для подменю «Проекты» задайте системный вывод сообщения

wait  ‘Операция не реализована’ window          

Сохраните меню и выполните генерацию программного кода меню.

Выполните запуск меню и проверьте правильность работы пунктов. При неверном срабатывании вернитесь в Конструктор меню и исправьте ошибки.

в) Подключение меню к главной программе

В коде главной программы вставьте перед командой ожидания событий команду запуска меню. После  команды ожидания событий  поместите команду восстановления системного меню Visual FoxPro.

В описании меню замените команду, связанную с пунктом «Выход», на команду завершения ожидания событий.

После сохранения описания меню и генерации кода проверьте правильность работы главной программы с меню. При неверной работе исправьте ошибки.

г) Модификация программного кода при проектировании

Откройте программный файл меню и в конце основного блока вставьте команды

SET SKIP OF BAR 4 OF SOTR .T.

SET SKIP OF BAR 5 OF SOTR .T.

SET SKIP OF BAR 6 OF SOTR .T.,

блокирующие при начальном запуске 4,5 и 6 пункты подменю «Сотрудники».

Проверьте наличие блокировки, запустив приложение.

д) Изменение блокировки при работе программы

Откройте для модификации имеющуюся форму.

В событие инициализации Init формы введите команды, аналогичные вышеуказанным, но разблокирующие пункты меню. В событие уничтожения формы Destroy введите команды, снова блокирующие пункты меню. В результате операции «Внести изменения», «Перевести» и «Уволить» будут доступны только при открытом списке сотрудников, что позволяет контролировать обрабатываемую запись.

е) Установка/снятие пометки пункта меню

Откройте для модификации имеющуюся форму.

В событие инициализации Init формы введите команду  

SET MARK OF BAR 1 OF SOTR .T.,

устанавливающую пометку первого пункта подменю «Сотрудники».

В событие уничтожения формы Destroy введите команду, снимающую эту пометку

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

Дополнительные задания

3. Создание всплывающего меню

а) Создайте всплывающее меню, содержащее команды подменю редактирования, и сохраните его и сгенерируйте программный файл.

б) Поместите команду запуска всплывающего меню в событие RightClick имеющейся формы.

в) Запустите приложение и проверьте работоспособность всплывающего меню.

4) Динамическое изменение состава меню

а) переместите из программного файла горизонтального меню все команды, связанные с элементами подменю редактирования, в событие инициализации Init формы. В событие уничтожения Destroy формы введите команду RELEASE PAD, уничтожающую пункт «Редактирование». В результате подменю редактирования будет добавляться при открытии формы и уничтожаться при закрытии формы.

б)  Запустите приложение и проверьте правильность изменения меню.


 

А также другие работы, которые могут Вас заинтересовать

48346. Консульство Н. Бонапарта 31.5 KB
  Здійснивши державний переворот Наполеон зосередив у своїх руках таку виконавчу владу якої не мав навіть Людовік XVI за Конституцією 1791 р. Наполеон правив в інтересах великої буржуазії та користувався підтримкою селянвласників які сподівалися що він захистить країну від відновлення влади Бурбонів і забезпечить можливість користуватися одержаною в роки революції землею. Наполеон багато уваги приділяв розвиткові економіки державного управління та правової системи. Наполеон здійснив реформу фінансової системи в результаті якої з'явилася...
48348. Конституционное право Российской Федерации 95.5 KB
  Кафедра конституционного и муниципального права Контрольная работа по курсу Конституционное право Российской Федерации Избирательная система Российской Федерации: понятие характерные черты. Под избирательной системой в Российской Федерации понимается порядок выборов Президента Российской Федерации депутатов Государственной Думы Федерального собрания Российской Федерации порядок выборов в иные федеральные государственные органы предусмотренные Конституцией Российской...
48350. Методы формирования и классификация электронно-дырочных переходов 32 KB
  Электроннодырочный переход полученный методом вплавления в полупроводник металла или сплава содержащего донорные или акцепторные примеси называют сплавным переходом а переход полученный в результате диффузии атомов примеси в полупроводник – диффузионным. Диффузионный рппереход образованный в результате диффузии примеси сквозь отверстие в защитном слое нанесенном на поверхность полупроводника называют планарным рппереходом. Электроннодырочный переход образованный в результате конверсии полупроводника вызванной обратной диффузией...