3 1. ЦЕЛЬ РАБОТЫ При работе с базами данных (БД), для взаимодействия прикладной программы с пользователем используются экранные формы. Методические указания рассматривают основные правила создания экранных форм. В процессе лабораторной работы студент должен изучить способы создания и корректировки экранных форм в системе Visual FoxPro. 2. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ 1.Изучение теоретических вопросов. 2.Создание экранной формы в Visual FoxPro 3.ЭКРАННАЯ ФОРМА Любое приложение, созданное в среде Visual FoxPro должно иметь, как минимум одну экранную форму. Экранная форма, как программный объект представляет собой класс контейнера, который может содержать любое количество объектов – элементов управления, таких как текстовые поля, командные кнопки, списки и, а также другие контейнеры. Экранная форма поддерживает все возможности объектно-ориентированной технологии программирования. Базовый класс формы имеет около 100 свойств и свыше 60 методов. В Visual FoxPro форма сохраняется в файлах с расширением .scx и .sct, структура которых аналогична структуре файлов библиотек классов. Поэтому экранная форма не нуждается в дополнительной процедуре формирования программного кода – это полноценный программный класс. 4.ОСНОВНЫЕ ЭЛЕМЕНТЫ УПРАВЛЕНИЯ Функции представления и редактирования данных возлагаются на отдельные элементы управления, включенные в форму, как в контейнер. В систему Visual FoxPro включен широкий набор различных элементов управления и поддержка компонентов ActiveX. Далее представлены основные элементы управления и их краткое описание. Текстовое поле (Text box) – элемент управления для ввода значения в виде текстовой строки. Введенное значение может интерпретироваться системой как текст, число или дата. 4 Командная кнопка (Command button) – кнопка на которой пользователь может щелкнуть мышью, инициируя таким образом некоторое событие в программе. Надпись (Label) – элемент управления, выводящий на экран статический текст. Список (ListBox) – окно в котором отображается список из нескольких элементов. Комбинированный список (ComboBox) – список, в окне которого в нормальном состоянии отображается только текущий выбранный элемент. При желании пользователь может развернуть весь список и выбрать в нем другой элемент. В некоторых случаях возможно включение нового элемента в список непосредственным вводом его в поле индикации. Контрольный индикатор (CheckBox) – элемент управления, который моделирует объект с двумя состояниями – включено/выключено (On/Off). Группа переключателей (OptionGroup) – элемент управления отображающий группу опций из которых пользователь может выбрать одну. Сетка (Grid) – элемент управления, отображающий данные в виде таблицы. Для того чтобы включить элементы управления в электронную таблицу используется специальная панель FormControls. Для отображения этой панели необходимо выбрать пункт Form Controls Toolbar из меню View. Внешний вид панели показан на рис.1. Рис. 1 Панель инструментов Form Controls 5. СОБЫТИЯ, СВОЙСТВА И МЕТОДЫ ВИЗУАЛЬНЫХ ОБЪЕКТОВ Форма и элементы управления являются визуальными объектами и имеют такие характеристики как свойства, события и методы. Событие представляет собой изменение, происходящее в программе, на которое объект должен среагировать. Событие может возникнуть по инициативе пользователя или в результате действий программы. Далее представлены основные события и условия их возникновения. Activate – событие происходит, когда объект становится активным. Click – пользователь щелкнул на объекте первичной (как правило, левой) кнопкой мыши. 5 DblClick – пользователь дважды щелкнул на объекте первичной кнопкой мыши. RightClick – пользователь щелкнул на объекте вторичной (как правило, правой) кнопкой мыши. InteractiveChange – состояние или значение объекта изменилось по воле пользователя. ProgrammaticChange – состояние или значение объекта изменилось программой. Свойства – это переменные памяти, которые присоединены к объекту и определяют внешний вид и характеристики объекта. Ниже перечислены общие свойства объектов Visual FoxPro. Caption – текст, выводимый на поле объекта. ControlSource – источник данных для объекта. Это может быть поле таблицы или переменная памяти. Enabled – свойство, определяющее, имеет ли пользователь доступ к объекту или он заблокирован. Name – имя объекта, которое используется для ссылки на него из программы. Value – соответствует значению, присвоенному элементу управления. Visible – логическое свойство, которое определяет, выводится ли данный объект на экран. Помимо свойств и событий, объект включает в себя и действия, которые он способен выполнять. Соответствующий программный код представляет собой процедуры, присоединенные к объекту. Эти процедуры называются методами объектов. Вызов метода состоит из имени объекта, разделителя – точки – и имени метода. Например, следующий оператор иллюстрирует вызов метода refresh объекта form1: Form1.refresh 6.СОЗДАНИЕ ЭКРАННОЙ ФОРМЫ Необходимо разработать набор экранных форм для заполнения таблиц Workers и Sections созданных в лабораторной работе №2. Создайте форму с именем Employee.В окне Date Environment необходимо установить две таблицы Workers и Sections и связать их по полю id_section. Внешний вид окна Date Environment показан на рис.2. Установите следующие свойства формы: Caption – Сотрудники, Name – Empl. В методе Activate введите следующее: Select workers Public m.id_section 6 Это означает, что при активизации формы, таблица Worker становится текущей, а переменная памяти m.id_section объявляется глобальной. Рис. 2 Окно Date Environment Для отображения списка сотрудников из таблицы Worker поместите на форму объект управления Сетка(Grid). Для формирования внешнего вида объекта необходимо запустить автоматический построитель построитель (Builder). На вкладке Grid Items выбрать таблицу Workers и добавить поля: Name, Birthday, Marital, Money. Эти поля будут отображаться на экране. Окно построителя сетки представлено на рис.3. Рис. 3 Окно построителя сетки На вкладке Layout установите необходимую ширину столбцов, для всех столбцов введите соответствующие заголовки (Caption). Для поля Marytal, 7 указать тип объекта (Control Type) – Check-box. Таким образом на форме появится объект управления Сетка. В методе AfterRowColChange добавить строчку: thisform.refresh Это означает, что форма будет обновляться после перемещения курсора по столбцам или по строчкам. Выполните команду Run Form и посмотрите результат. Эту команду выполняйте после добавления каждого объекта управления. Способом Drag-and-Drop перенесите на форму поле Comment из таблицы Workers. Аналогично поместить на форму поле Section из таблицы Sections. Поместите на поле три командных кнопки: «Добавить», «Удалить», «Выход». Для кнопки «Добавить» поместите в метод Click следующее: scatter memvar memo blank employee.inp.show Это означает, что переменные памяти, соответствующие полям таблицы Workers, будут обнулены и форма с именем Inp, которая будет создана в дальнейшем, появится на экране. Для кнопки «Удалить» поместите в метод Click: Delete Thisform.refresh С помощью команды Delete записи помечаются как удаленные. Для кнопки «Выход» поместите в метод Click: employee.inp.release thisform.release Эти команды закрывают работающие формы. После выполнения форма будет выполняться с ошибками, потому что не существует форма Inp. Примерный внешний вид формы Empl изображен на рис.4. 8 Рис. 4 Форма Empl Приступим к созданию второй формы с именем Inp для ввода данных. Из меню Form выполните команду Creat Form Set (Создать набор форм), и далее команду Add New Form. Установить следующие свойства формы: Caption – Ввод новых сотрудников,Name – Inp, Visible - .F. Последнее свойство означает, что при запуске набора форм, форма Inp будет невидима. На форме Inp создайте три текстовых поля с именами (свойство Name): txtName, txtBirthday, txtMoney. В свойство ControlSource поместите соответственно значения: m.name, m.birthday, m.money. Таким образом, в этих полях будут отображаться не значения, находящиеся в таблице базы данных, а значения соответствующих переменных. Для ввода семейного положения на форму поместите контрольный индикатор (check-box). Установите ему следующие свойства: Name – chkMarytal, Caption – Семейное положение, Control Source – m.marytal. Для ввода названия отдела поместите на форму комбинированный список (combo-box).Установите ему следующие свойства:Name – cmbSection, RowSourceType – 6-Fields, RowSource - sections.section, Style – 2 (DropdownList). Таким образом источником данных для этого объекта будет поле section из таблицы sections. Внешне комбинированный список будет выглядеть как выпадающее окно. В методе Click для этого объекта введите следующее: select sections scatter fields id_section memvar Таким образом в переменную m.id_section будет помещено значение соответствующее выбранному пользователем. С помощью способа Drag-and-Drop поместите на форму поле Comment.Измените значение ControlSource на m.comment. 9 Поместите на форму две командные кнопки: Ok и Отмена. В метод Click введите для кнопки Ok: select workers calculate max(workers.id_worker) to m.id_worker m.id_worker=m.id_worker+1 append blank gather memvar memo Thisform.Hide() employee.empl.refresh Для кнопки Отмена: Thisform.visible=.F. Форма Inp появляется на экране при нажатии на клавишу «Добавить», расположенную на форме Empl.Внешний вид формы должен быть примерно такой, как показан на рис.5. Рис. 5 Форма Inp Запустите форму на выполнение и поработайте с ней. 7.ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ Доработайте набор созданных форм таким образом, чтобы можно было осуществлять редактирование таблицы Workers. Разработайте форму для заполнения таблицы Sections. 10 8. СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ 1.Базиян, Менахем, и др. Использование Visual FoxPro 6. Специальное издание.: Пер. с англ. – К.; М.; СПб,: Издательский дом «Вильямс», 1999. 2.Курс по основам FoxPro. Fox Holding Inc. 1991 г. 3. Руководство разработчика по системе FoxPro. Fox Holding Inc. 1991 г. 4. Руководство пользователя FoxPro. Fox Holding Inc. 1991 г. ОГЛАВЛЕНИЕ 1. ЦЕЛЬ РАБОТЫ ............................................................................................................ 3 2. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ ...................................................................... 3 3.ЭКРАННАЯ ФОРМА.................................................................................................... 3 4.ОСНОВНЫЕ ЭЛЕМЕНТЫ УПРАВЛЕНИЯ .............................................................. 3 5. СОБЫТИЯ, СВОЙСТВА И МЕТОДЫ ВИЗУАЛЬНЫХ ОБЪЕКТОВ ...................... 4 6.СОЗДАНИЕ ЭКРАННОЙ ФОРМЫ ............................................................................ 5 7.ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ ................................................... 9 8. СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ ................................................... 10