Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

РЕАЛИЗАЦИЯ БАЗЫ ДАННЫХ В VISUAL FOXPRO




2.1 ФАЙЛЫ БАЗЫ ДАННЫХ VISUAL FOXPRO

База данных в Visual FoxPro состоит из набора файлов различного назначения. Главным файлом БД является файл, имеющий имя, соответствующее имени БД, и расширение *.dbc. Он дополняется файлом примечаний (расширение *.dct) и индексным файлом (расширение *. dcx), имеющими такое же имя. Главный файл и его файл примечаний содержат информацию о составе БД, требования к данным, хранимые процедуры БД и другую общую информацию о БД.

Файлы с расширениями *.dbf предназначены для хранения таблиц БД. В каждом таком файле хранится отдельная таблица. При наличии в таблице полей примечаний (полей типа memo) табличный файл дополняется файлом примечаний, имеющим такое же имя, но расширение *.fpt. В файле примечаний сохраняется текстовая информация memo-полей, разбитая на блоки заданного размера. Файл примечаний автоматически открывается при открытии своего табличного файла и закрывается вместе с ним.

Кроме файла примечаний, табличный файл может дополняться одним или несколькими файлами с расширениями *.cdx и *.idx, предназначенными для хранения созданных для таблицы индексов. Индексы создаются для упорядочивания данных, ускорения поиска и отбора информации по различным ключевым выражениям и установления связей между таблицами. Каждый индекс указывает последовательность следования записей таблицы в соответствии с заданным для него ключевым выражением. Индексный idx-файл использует устаревший формат и предназначен для хранения одного индекса. Имя idx-файла произвольно и определяется при создании индекса. Индексный cdx-файл используется для независимого хранения произвольного числа индексов. Индексы, хранящиеся в cdx-файле, называются тегами (tag) этого файла. Индексные cdx-файлы имеют две разновидности. Структурный cdx-файл имеет такое же имя, как табличный файл, и автоматически открывается и закрывается вместе с ним. Неструктурный cdx-файл имеет произвольное имя, определяемое при создании, и должен явно открываться и закрываться пользователем или программой.

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

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

Между отдельными таблицами в БД могут быть установлены отношения, отображающие связанность таблиц по общей для них информации. Описания отношений хранятся в главном файле БД и его файле примечаний. Там же хранятся правила поддержки отношений, образуя вместе с требованиями к данным набор ограничений целостности БД.

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

2.2 СОЗДАНИЕ БАЗЫ ДАННЫХ VISUAL FOXPRO

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

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

2.2.1 Создание БД с помощью конструктора базы данных

Для создания базы данных в диспетчере проектов нужно выбрать элемент Data/Databases дерева проекта и нажать кнопку New. В открывшемся окне выбирается New Database, затем в окне Create задаются имя и место размещения создаваемой базы данных. После нажатия кнопки Сохранить на экране откроется пустое окно конструктора базы данных, в котором и будет формироваться структура создаваемой БД (на рисунке 7 окно конструктора базы данных приведено для лучшего восприятия с уже добавленными таблицами).

При открытии окна конструктора БД в основное меню добавится пункт Database и откроется инструментальная панель Database Designer.

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

Подменю Database содержит набор команд работы с БД и ее элементами (таблица 2.1).

Рисунок 7 – Окно конструктора базы данных

Инструментальная панель Database Designer содержит набор кнопок, дублирующих команды New Table, Add Table, Remove Table, New Remote View, New Local View, Modify Table, Browse Table, Edit Stored Procedures и Connections подменю Database.

Таблица 2.1 - Команды подменю Database

Команда Назначение
New Table Создает новую таблицу БД
Add Table Добавляет существующую таблицу в базу данных
New Remote View Создает удаленное представление данных
New Local View Создает локальное представление данных
Modify Модифицирует структуру выбранной таблицы
Browse Показывает содержимое таблицы в режиме Browse
Remove Удаляет таблицу из БД и стирает, если задано, с диска
Find Object Находит заданный объект в окне конструктора БД
Продолжение таблицы 2.1
Rebuild Table Indexes Перестраивает индексы
Remove Deleted Records Физически удаляет помеченные для удаления записи
Edit Relationship Редактирует отношения между таблицами
Edit Referential Integrity Определяет условия ссылочной целостности данных
Edit Stored Procedures Вызывает на редактирование набор хранимых процедур
Connections Выводит на экран окно задания соединения Connections
Arrange Упорядочивает и выравнивает объекты БД
Refresh Обновляет отображение окна конструктора базы данных, повторно считывая информацию с диска
Clean Up Database Очищает базу данных от помеченных для удаления объектов
Properties Выводит на экран окно свойств Database Properties

Контекстное меню конструктора базы данных содержит наиболее часто используемые команды из подменю Database, команду Help, а также команды для раскрытия уровней вложенности объектов в окне конструктора базы данных (Expand All) и их свертывания (Collapse All).

С помощью данных средств далее будет выполняться создание таблиц БД и их индексов, определение постоянных отношений между таблицами.

2.2.2 Другие способы создания БД

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

а) Интерактивное создание с помощью пунктов меню File/New с последующим выбором опций Database/New file. Созданная БД будет независимой и для введения ее в проект необходимо выполнить операцию добавления к проекту.

б) Программное создание с помощью команды CREATE DATABASE.

2.3 СОЗДАНИЕ ТАБЛИЦЫ БАЗЫ ДАННЫХ

2.3.1 Создание таблицы с помощью конструктора таблицы

Создание таблицы обычно выполняется интерактивно с помощью конструктора таблицы. Для создания таблицы в этом случае запускается любым способом операция добавления новой таблицы (кнопка New диспетчера проекта или кнопка New Table инструментальной панели Database Designer, команда New Table подменю Database или контекстного меню). В открывшемся окне выбирается New Table, a затем в окне Create выбирается тип файла Table/DBF, задаются имя и место размещения создаваемой таблицы. После нажатия кнопки Сохранить на экране откроется пустое окно конструктора таблицы Table Designer, в котором будет определяться описание таблицы и ее индексов (на рисунке 8 окно конструктора таблицы приведено для лучшего понимания с уже введенными описаниями полей таблицы).

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

Рисунок 8 – Окно конструктора таблиц

Задание набора полей таблицы

В левой части вкладки Fields (рис.8) определяется набор полей (столбцов) таблицы. Каждая запись здесь описывает отдельное поле. Для описания поля задаются наименование, тип и ширина поля, для числовых полей с фиксированной точкой дополнительно задается количество десятичных знаков. Для типов данных, хранящихся в упакованном формате, ширина поля устанавливается автоматически в соответствии с типом.

Наименование поля задается в позиции Name. Наименование может содержать до 128 символов (буквы, цифры и знак подчеркивания) и должно быть уникальным в таблице. При задании наименований следует учесть, что использование символов кириллицы в наименованиях допустимо, но нецелесообразно из-за усложнения набора программного кода.

Тип данных поля выбирается в позиции Type из списка допустимых типов. Основными типами данных Visual FoxPro для полей таблиц являются типы, приведенные в таблице 2.2. Среди приведенных типов следует обратить внимание на тип Integer (Autoinc), позволяющий реализовать автоматическое создание уникальных идентификаторов для полей таблицы.

Таблица 2.2 – Типы полей таблиц Visual FoxPro

Тип Описание
Character Символьное поле заданной длины (до 254 символов)
Date Поле даты (содержит день, месяц и год)
DateTime Поле даты и времени (содержит день, месяц, год, часы, минуты, секунды)
Logical Логическое поле (содержит .T. или .F.)
Numeric Числовое поле с фиксированной точкой. Задается общая длина (до 20 позиций) и число знаков после точки.
Integer Целое число, размер 4 байта
Integer (Autoinc) Целое число, размер 4 байта. В отличие от Integer доступно только чтение, поле заполняется автоматически при создании новой записи путем увеличения достигнутого значения на заданный шаг
Double Число с плавающей точкой двойной точности, размер 8 байтов
Memo Текстовое поле произвольной длины. Значение хранится в файле примечаний *.fpt, а в таблице хранится лишь ссылка на место хранения

В позиции Width задается ширина поля, если она не фиксирована, в позиции Decimal - количество десятичных знаков для типа Numeric.

Добавление нового поля в таблицу выполняется путем заполнения новой строки в конце списка либо нажатием кнопки Insert с последующим заполнением вставленной строки. Удаление выбранного поля из таблицы производится нажатием кнопки Delete. Последовательность описаний полей в списке задает порядок расположения столбцов в таблице. Для изменения положения выбранного поля перетащите мышью двунаправленную стрелку, размещенную в левой позиции строки, в требуемую позицию списка полей.

Задание свойств полей таблицы

Требуемые свойства поля, выбранного в списке, задаются в следующих элементах вкладки Fields (рис.8).

а) Позиция NULL. Установка пометки разрешает использовать в поле значение NULL. Значение NULL в явном виде указывает отсутствие информации в поле, что позволяет отличать незаполненное поле от поля, заполненного пустым или нулевым значением. Значение NULL вводится в поле нажатием клавиш Ctrl+0 при интерактивном вводе данных или присвоением полю значения .NULL. при программной записи данных.

б) Позиция Index. Задается создание регулярного индекса по текущему полю (подробнее создание индексов будет описано ниже).

в) Поле Format. Задается формат отображения данных в формах, отчетах и окне Browse.

г) Поле Input Mask. Задается формат ввода данных.

д) Поле Caption. Задается заголовок поля, используемый при выводе заголовков в формах, отчетах и окне Browse.

е) Поле Rule. Задается логическое выражение, описывающее условие правильности введенных в поле данных. Проверка правильности данных выполняется при попытке выхода из поля. Если выражение условия принимает значение .T., то введенное значение считается верным и выход из поля разрешается.

ж) Поле Message. Задается текст сообщения, выводимого при обнаружении неправильного ввода данных.

з) Поле Default value. Задается значение по умолчанию, автоматически заносимое в поле при создании новой записи.

и) Поле Next Value. Задается начальное значение для поля типа Integer (Autoinc).

к) Поле Step. Задается шаг увеличения значения для поля типа Integer (Autoinc).

Поля области Map field type to classes предназначены для выбора библиотеки и имени класса, которые будут использоваться для автоматического создания объектов в форме при перетаскивании данного поля таблицы на форму. Поле Field Comment позволяет ввести текстовый комментарий для поля.

Задание свойств таблицы

На вкладке Table (рис.9) отображаются данные о таблице и задаются требуемые свойства таблицы. Для задания свойств таблицы используются следующие поля вкладки.

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

б) Поле Rule. Задается логическое выражение, описывающее условие правильности введенных в запись данных. Проверка правильности данных будет выполняться при попытке выхода из записи. Если выражение условия при проверке принимает значение .T., то введенные значения считаются верными и выход из записи разрешается.

в) Поле Message. Задается текст сообщения, выводимого при обнаружении неправильного ввода данных.

Рисунок 9 – Вкладка свойств таблицы

Кроме этого на вкладке имеются поля для задания триггеров операций добавления, изменения и удаления записей таблицы. Триггер представляет собой логическое выражение, автоматически вычисляющееся при попытке выполнения соответствующей операции с записью. Если вычисленное значение равно .T., то выполнение действия, инициировавшего триггер, разрешается, в противном случае – запрещается. В качестве выражения триггера можно использовать вызов функции или хранимой процедуры, возвращающей логическое значение. Это позволяет запрограммировать автоматическую реакцию на операции с записями таблицы. Основными функциями триггеров являются:

- контроль допустимости выполнения операций с записями;

- регистрация работы пользователя с записями;

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

Как будет описано далее, в Visual FoxPro триггеры могут автоматически создаваться при задании ограничений ссылочной целостности.

Создание индексов для таблицы

Вкладка Indexes (рис.10) позволяет создавать новые индексы, а также просматривать, изменять и удалять имеющиеся индексы. Все индексы, представленные в данном окне, сохраняются в структурном индексном файле. Создание idx-файлов или неструктурных cdx-файлов необходимо выполнять программ­ным путем.

Рисунок 10 – Вкладка задания индексов

 

На вкладке Indexes каждый индекс описывается в отдельной строке.

В позиции Name указывается имя индекса. Имя должно иметь длину не более 10 символов, начинаться с буквы или знака подчеркивания и быть уникальным в таблице.

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

В позиции Type выбирается тип индекса. В Visual FoxPro используются пять типов индексов, различающихся контролируемыми требованиями к значениям индексного выражения. В таблице 2.3 представлены три наиболее используемые типа индексов. Индексы типа Binary и Unique имеют специфическое применение и здесь не рассматриваются.

Таблица 2.3 – Типы индексов Visual FoxPro

Тип Описание
Primary Первичный индекс. Может быть создан только для таблицы, включенной в базу данных. Поля, входящие в первичный индекс, не должны допускать ввода пустых значений (NULL). Значения индексного выражения для всех записей должны различаться. Таблица может иметь только один первичный индекс.
Продолжение таблицы 2.3
Candidate Индекс-кандидат. Этот индекс обладает всеми качествами первичного индекса и не является им только по той причине, что таблица не может иметь более одного первичного индекса. Таблица может иметь не­сколько индексов-кандидатов
Regular Регулярный индекс. Хранит значения индексного выражения для всех записей таблицы, допуская их не уникальность. Поля, входящие в индексное выражение, могут быть пустыми. Таблица может иметь не­сколько регулярных индексов.

 

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

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

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

Создание свободных таблиц

Использование свободных таблиц может быть полезным:

- для совместного использования информации несколькими БД;

- для хранения данных в формате, доступном для различных версий БД;

- для хранения редко использующихся данных, загромождающих БД.

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

2.3.2 Другие способы создания таблиц и индексов

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

а) Интерактивное создание таблицы с помощью пункта меню File/New с последующим выбором опций Table/New file. Созданная таблица будет независимой от проекта и для введения ее в проект необходимо выполнить операцию добавления к проекту.

б) Программное создание таблицы с помощью команды CREATE TABLE.

в) Программное создание индекса с помощью команды INDEX ON. С помощью данной команды могут быть созданы как idx-файлы, так и cdx-файлы разного типа.

г) Программное создание таблиц и индексов по имеющемуся образцу. Используются команды COPY STRUCTURE, CREATE FROM, COPY FILE, COPY INDEXES, COPY TAG.

2.4 СОЗДАНИЕ ОТНОШЕНИЙ МЕЖДУ ТАБЛИЦАМИ БД

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

Установление отношения при проектировании БД

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

Установленные отношения между таблицами могут быть использованы для задания условий ссылочной целостности данных.

Задание условий ссылочной целостности

Для определения условий ссылочной целостности нужно выполнить команду Edit Referential Integrity, выбрав ее из системного меню Visual FoxPro или из контекстного меню конструктора базы данных. Команда также может быть выполнена из окна редактирования связи Edit Relationship, вызываемого двойным щелчком на линии связи или соответствующей командой системного меню. В результате откроется окно конструктора условий целостности данных Referential Integrity Builder, которое содержит перечень всех установленных отношений между таб­лицами (рис.11). Таблица описания условий ссылочной целостности содержит:

- наименования родительской и до­черней таблиц;

- наименования индексов (тегов), используемых для связи;

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

Рисунок 11 – Окно задания ссылочной целостности

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

Для поддержки отношения можно выбрать следующие правила.

а) Для попытки изменения в родительской таблице значения полей индекса, использующегося для связи (Rules for Updating) можно выбрать следующие реакции:

- Cascade. При изменении значений полей индекса в родительской таблице автоматически осуществля­ется каскадное изменение всех соответствующих значений в дочерней таблице;

- Restrict. Запрещается изменять значения полей индекса в родительской таблице, если в дочерней таб­лице имеется хотя бы одна запись, содержащая ссылку на из­меняемую запись;

- Ignore. Разрешается изменять значения полей индекса в родительской таблице, независимо от су­ществования связанных записей в дочерней таблице. Целостность связей в этом случае не поддерживается.

б) Для попытки удаления записи в родительской таблице (Rules for Deleting) можно выбрать следующие реакции:

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

- Restrict. Запрещается удалять записи в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на удаляемую запись;

- Ignore. Разрешается удалять записи в родительской таблице независимо от существования связанных записей в дочерней таблице. Целостность связей в этом случае не поддерживается.

в) Для попытки добавления новой записи в дочернюю таблицу или редактирования в дочерней таблице полей индекса, использующегося для связи (Rules for Inserting), можно выбрать следующие реакции:

- Restrict. Запрещается принимать запись, если значение индексного выра­жения связи дочерней таблицы не соответствует одной из записей в родительской таблице;

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

Таким образом, при выборе правила Cascade Visual FoxPro будет выполнять корректирующее действие, а при выборе правила Restrict - блокирующее действие для поддержки целостности связи. Для исполнения этих действий при выходе из окна конструктора условий целостности данных Visual FoxPro генерирует программный код (RI code) соответствующих триггеров. Данный код включается в состав хранимых процедур и может быть просмотрен с помощью операции Edit Stored Procedures, запускаемой из системного меню или инструментальной панели Visual FoxPro. Создание триггеров отобразится также появлением их вызовов в полях триггеров конструктора таблиц.

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

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

2.5 ВВОД И ОБНОВЛЕНИЕ ИНФОРМАЦИИ В БД

После создания БД, ее таблиц и отношений между таблицами можно переходить к заполнению БД информацией. В сущности, вся работа с данными БД сводится к выполнению операций:

- выборки данных из БД для их просмотра и обработки;

- редактирования записей таблиц БД для обновления информации;

- добавления записей в таблицы БД для ввода новой информации;

- удаления записей таблиц БД для стирания устаревшей информации.

Основная работа пользователей с данными БД осуществляется через приложения. В приложениях операции с данными БД реализуются с помощью интерфейсных элементов ввода-вывода (таких, как табличный элемент, поле ввода, список выбора и т.д.) и команд модификации данных (таких, как SELECT, APPEND BLANK, REPLACE, DELETE и т.д.), включаемых в программный код приложения. Вопросы разработки приложений для работы с данными БД будут рассматриваться в следующих разделах практикума.

Работа с данными БД может выполняться также непосредственно через интерфейс Visual FoxPro. Такой режим работы с информацией может использоваться для выполнения нештатной работы с данными, не предусмотренной в приложениях, для начального заполнения БД, для задания тестовых данных при разработке и отладке приложений.

Познакомимся с основными возможностями непосредственной работы с данными через интерфейс Visual FoxPro.

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

- с помощью окна Data Session, используя его кнопки Open и Browse;

- с помощью окна Project Manager, используя его кнопку Browse или соответствующий пункт его контекстного меню;

- с помощью окна конструктора БД, производя двойной щелчок на нужной таблице или выбирая пункт Browse ее контекстного меню;

- с помощью окна Command, вводя команды USE и BROWSE с необходимыми параметрами.

После выполнения любого из указанных действий открывается окно просмотра, отображающее данные выбранной таблицы, а в системном меню добавляется подменю Table и расширяется состав подменю View. В окне просмотра содержимое таблицы отображается в одной из двух форм: табличной или позаписной. Переключение вида отображения осуществляется с помощью пунктов системного меню View / Browse и View / Edit.

Открытие таблицы, кроме просмотра данных, позволяет выполнять их интерактивное изменение.

а) Изменение записей.

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

б) Добавление записей.

Добавление в таблицу пустой одиночной записи осуществляется выбором из системного меню Visual FoxPro пункта Table / Append New Record. Для ввода нескольких последовательных записей можно переключиться в режим потокового добавления выбором пункта системного меню View / Append Mode. Этот режим позволяет также вводить новые записи в условиях ограничений ссылочной целостности, не допускающих добавления пустых записей. Для завершения режима потокового добавления нужно закрыть окно просмотра.

в) Удаление записей. Удаление записей в Visual FoxPro выполняется в два этапа. На первом этапе осуществляется логическое удаление записей без их физического стирания. Для логического удаления одиночной записи из системного меню Visual FoxPro выбирается пункт Table / Toggle Deletion Mark, изменяющий пометку удаления текущей записи. Аналогичный результат можно получить щелчком мыши в столбце удаления, находящемся в левой части таблицы. Проставленная здесь пометка удаления соответствует логическому удалению записи. Для логического удаления по задаваемому условию группы записей используют пункт Table / Delete Records. Логически удаленные записи при установке SET DELETED ON не отображаются на экране и не используются при программной обработке (при установке SET DELETED OFF логическое удаление при просмотре и обработке игнорируется). На втором этапе выполняется физическое стирание записей, помеченных на удаление. Для физического удаления помеченных записей используйте пункт Table / Remove Deleted Records.

Действия по изменению данных в текущей таблице могут быть выполнены также программно путем ввода в окне Command команд REPLACE, APPEND BLANK, APPEND, INSERT, DELETE, PACK с необходимыми параметрами.

2.6 ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ ПОДГОТОВКИ

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

2.6.2 Создайте в рамках проекта новую базу данных.

2.6.3 Освойте создание таблиц и индексов.

2.6.3.1 Создайте таблицу отделов организации с полями, содержащими данные:

- название отдела;

- телефон;

- количество работников по штатному расписанию.

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

ПРИМЕЧАНИЕ: Системная проверка уникальности значений первичного индекса выполняется по всем записям таблицы, в том числе и по записям, помеченным как удаленные. Если записи с пометкой удаления мешают работе, то выполните их физическое удаление.

2.6.3.2 Создайте таблицу сотрудников отделов с полями, содержащими данные:

- табельный номер сотрудника;

- ф.и.о. сотрудника;

- название отдела;

- дата приема на работу;

- дата последней аттестации;

- прочие данные (в виде текста произвольной длины).

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

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

Запомните созданную таблицу. Откройте таблицу в режиме просмотра и с помощью пунктов системного меню Visual FoxPro заполните несколько строк (для отделов используйте названия, имеющиеся в таблице отделов). Меняя главный индекс (например, с помощью команды SET ORDER), убедитесь в правильности переключения упорядочивания данных.

2.6.4 Освойте задание ограничений целостности на уровне поля и уровне таблицы.

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

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

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

2.6.5 Освойте установление связи между таблицами

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

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

 


3 РАЗРАБОТКА ЭКРАННЫХ ФОРМ В VISUAL FOXPRO

3.1 ОБЪЕКТНАЯ ОРГАНИЗАЦИЯ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА

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

С каждой формой в Visual FoxPro связывается среда окружения, в которой можно описать часть БД, используемую в данной форме. Использование среды окружения позволяет:

- упростить связывание элементов формы с БД;

- задавать специфичные для формы свойства данных;

- изменять связи между таблицами на время работы в форме.

Для обеспечения работы пользователя на форме размещаются интерфейсные элементы различного типа, служащие для ввода-вывода данных и управления диалогом. Некоторые из типов элементов являются контейнерами, в которых можно размещать другие элементы. Более того, сама форма может размещаться в контейнере более высокого уровня (в наборе форм FormSet).

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

3.1.1 Объекты пользовательского интерфейса

Все составляющие в данных структурах рассматриваются как объекты. Для разработки интерфейса в Visual FoxPro основными являются следующие объекты (таблица 3.1).

Таблица 3.1 - Объекты пользовательского интерфейса

Тип объекта Описание
FormSet Объект - набор форм. Контейнер. Содержит объекты - формы
Form Объект - форма. Контейнер. Содержит объекты различного типа
DataEnvironment Объект - среда окружения. Контейнер. Связан с формой или набором форм. Содержит объекты курсоров и связей
Cursor Объект - курсор. Неконтейнерный элемент. Размещается в DataEnvironment. Позволяет определить или задать значения свойств таблиц и представлений, связанных с формой или набором форм
Relation Объект - связь. Неконтейнерный элемент. Размещается в DataEnvironment. Позволяет определить связи между объектами - курсорами
PageFrame Объект - блокнот. Контейнер. Содержит объекты - страницы
Page Объект - страница. Контейнер. Размещается в PageFrame. Содержит объекты различного типа
Grid Объект - таблица. Контейнер. Содержит объекты – столбцы
Продолжение таблицы 3.1
Column Объект - столбец. Контейнер. Размещается в Grid. Содержит объект - заголовок и один или несколько объектов для представления данных
Header Объект - заголовок столбца. Неконтейнерный элемент. Размещается в Column. Определяет вид и поведение заголовка столбца
CommandGroup Объект - набор командных кнопок. Контейнер. Содержит объекты - командные кнопки
CommandButton Объект - командная кнопка. Неконтейнерный элемент. Создает одиночную кнопку для активации определенного действия или входит в состав набора кнопок CommandGroup
OptionGroup Объект - набор кнопок выбора. Контейнер. Содержит объекты - кнопки выбора
OptionButton Объект - кнопка выбора. Неконтейнерный элемент. Размещается в наборе кнопок выбора. Создает одиночную кнопку выбора
Label Объект – текст. Неконтейнерный элемент. Создает текст, недоступный для непосредственного редактирования
CheckBox Объект-индикатор. Неконтейнерный элемент. Создает поле индикации, которое используется для переклю­чения между двумя состояниями
TextBox Объект – поле ввода. Неконтейнерный элемент. Создает текстовое поле, в котором можно редактировать значение переменной, элемента массива или поля
Продолжение таблицы 3.1
ListBox Объект – список. Неконтейнерный элемент. Создает развернутый список, в котором можно выбрать один или несколько пунктов
ComboBox Объект - комбинированный список. Неконтейнерный элемент. Создает поле ввода, дополненное раскрывающимся списком, из которого можно выбрать один пункт с занесением его в поле ввода. Сочетает возможности объектов ListBox и TextBox, так как помимо выбора из списка позволяет непосредственно вво­дить данные
EditBox Объект - область редактирования. Неконтейнерный элемент. Создает многострочную область, в которой можно редактировать символьные поля большой длины или поля примечаний (memo)
Image Объект - изображение. Неконтейнерный элемент. Создает область для отображения изобра­жения в формате BMP
Line Объект - линия. Неконтейнерный элемент. Создает горизонталь­ную, вертикальную или диагональную линию
Shape Объект - контур. Неконтейнерный элемент. Создает геометрическую фигуру (прямоугольник, круг или эллипс)
Spinner Объект - счетчик. Неконтейнерный элемент. Создает элемент для пошагового изменения числового значения

 

Каждый объект (набор форм, форма, среда окружения, интерфейсные элементы) обладает свойствами, событиями и методами.

3.1.2 Свойства объектов

Свойство – это параметр состояния объекта, например, цвет фона. Набор свойств используется для хранения значений, характеризующих текущее состояние объекта. Многие свойства не являются специфичными для определенного типа объекта и фигурируют в разных типах объектов. Наиболее часто используемые общие свойства приведены в таблице 3.2.

Таблица 3.2 – Общие свойства объектов

Свойство Описание
Autosize Включение/выключение автоподстройки размера объекта под текст, размещаемый на объекте
Alignment Вид выравнивания текста в объекте
BackColor Цвет фона объекта
BackStyle Включение/выключение прозрачности фона объекта
BorderColor Цвет рамки объекта
Caption Заголовок, размещаемый на объекте или вверху объекта
DisabledBackcolor Цвет фона объекта, недоступного для работы
DisabledForeColor Цвет символов объекта, недоступного для работы
FontBold Включение/выключение полужирного начертания шрифта для объекта
FontItalic Включение/выключение курсивного начертания шрифта для объекта
FontName Вид шрифта для объекта
FontSize Размер шрифта для объекта
FontStrikethru Включение/выключение перечеркнутого начертания шрифта для объекта
Продолжение таблицы 3.2
FontUnderline Включение/выключение подчеркнутого начертания шрифта для объекта
ForeColor Цвет выводимых символов.
Picture Задание файла в формате BMP или ICO для размещения изображения на объекте
SpecialEffect Включение/выключение объемности внешнего вида объекта
Height Высота объекта
Width Ширина объекта
Left Расстояние от левой границы объекта до левого края родительского объекта (или главного окна Visual FoxPro)
Top Расстояние от верхней границы объекта до верхнего края родительского объекта (или главного окна Visual FoxPro)
Value Значение данных, хранящихся в объекте или характеризующих текущее состояние объекта
ControlSource Указание переменной или поля таблицы, связанной с объектом
Enabled Включение/выключение доступности объекта для работы
ReadOnly Включение/выключение доступности редактирования данных в объекте
Visible Включение/выключение видимости объекта
Name Имя объекта
Parent Имя родительского объекта

Данные общие свойства устанавливаются в требуемые значения интерактивным путем при разработке интерфейса, а также программным или интерактивным путем при работе приложения. Остальные общие свойства мало влияют на вид интерфейса и обычно используют установки по умолчанию. Кроме свойств общего характера каждый тип объекта имеет набор специфичных свойств, отражающих его особенности (например, только объект PageFrame имеет свойство PageCount – число страниц в объекте).

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

3.1.3 События объектов

Событие - это автоматическая реакция на действие, связанное с объектом. Для задания требуемой реакции нужно написать программный код события, который будет выполняться при работе приложения в ответ на вызвавшее его действие. События используются для организации отклика на действия пользователя, выполняемые им при работе с интерфейсом. Если событие касается сразу нескольких объектов (интерфейсный элемент и иерархия включающих его контейнеров), то выполняется только первый, начиная с нижнего уровня, программно заданный отклик.

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

Прочие события, не приведенные в таблице 3.3, в основном ориентированы на специфическое использование или относятся лишь к отдельным типам объектов.

Таблица 3.3 – Общие события объектов

Событие Описание
Init Происходит однократно при создании объекта. Является первым событием в жизненном цикле объекта. Используется для получения параметров из вызываю­щей процедуры и выполнения установочных действий для объектов и данных. При вложенности создаваемых объектов событие выполняется сначала для объек­та, включенного в объект-контейнер, а затем для объекта-кон­тейнера. Если событие Init возвращает значение .F., то объект не будет со­здан
Destroy Происходит при уничтожении объекта. Является последним событием в жизненном цикле объекта. При вложенности уничтожаемых объектов событие выполняется сначала для объекта-кон­тейнера, а затем для объек­та, включенного в объект-контейнер. Использует­ся для выполнения завершающих действий с объектами
When Происходит при попытке интерактивной или программной активации объекта или перемещении в списке. Если событие возвращает .Т., то объект активизируется, в противном случае - не активизируется
Valid Выполняется при попытке интерактивной или программной деактивации объекта. Если событие возвращает .Т., то объект деактивируется, если .F. — объект остается ак­тивным
GotFocus Происходит при активации объекта
LostFocus Происходит при деактивации объекта
Продолжение таблицы 3.3
Activate Происходит при активации объекта-контейнера
Deactivate Происходит при деактивации объекта-контейнера
Click Происходит при щелчке левой кнопкой мыши на объекте либо при эквивалентных программных и клавиатурных действиях, зависящих от вида объекта. Может сопровождаться передачей активности объекту и изменением его состояния (например, сменой пометки для объекта-индикатора) и, соответственно, значения Value
DblClick Происходит при двойном щелчке левой кнопкой мыши на объекте или выборе пункта из списка с нажатием клавиши Enter
RightCick Происходит при щелчке правой кнопкой мыши на объекте
MiddleClick Происходит при щелчке средней кнопкой трехкнопочной мыши на объекте
MouseDown Происходит при нажатии кнопки мыши и передает 4 параметра, указывающие координаты указателя мыши и нажатые кнопки
MouseUp Происходит при отпускании кнопки мыши и передает 4 параметра, указывающие координаты указателя мыши и нажатые кнопки
KeyPress Происходит при нажатии и последующем отпускании клавиатурной клавиши и передает 2 параметра, указывающие нажатые клавиши
InteractiveChange Происходит при интерактивном изменении значения свойства Value объекта
Продолжение таблицы 3.3
Resize Происходит при интерактивном изменении размеров объекта или программном изме­нении значений свойств Height или Width объекта
Moved Происходит при интерактивном перемещении объекта или программном изменении зна­чений свойств Тор или Left объекта

 

3.1.4 Методы объектов

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

Наиболее часто используемые методы перечислены в таблице 3.4.

Таблица 3.4 – Общие методы объектов

SetFocus Активизация указанного объекта
Refresh Обновление указанного объекта на экране
SetAll Присвоение значения указанному свойству для всех объектов или объектов указанного класса в объекте-контейнере
AddObject Программное добавление подчиненного объекта в объект-контейнер
RemoveObject Удаление объекта из объекта-контейнера

Прочие методы связаны с более специфичными действиями пользователя или относятся к отдельным типам объектов.

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

3.1.5 Программная работа с объектами

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

Обращение к свойству объекта используется для считывания текущего значения свойства или записи нового значения свойства. Обращение выполняется в виде

Объект.Свойство

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

Объект.Метод[(Параметры)]

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

Контейнер1.Контейнер2. … .Объект,

начиная с некоторого объекта-контейнера, видимого из точки обращения и охватывающего адресуемый объект.

Для упрощения ссылок используются идентификаторы относительной ссылки:

а) THIS – ссылка на объект, в котором находится источник обращения (метод или событие). Применяется тогда, когда место обращения и адресуемый метод (или свойство) относятся к одному объекту.

б) THISFORM - ссылка на форму, в которой находится источник обращения. Применяется тогда, когда место обращения и адресуемый метод (или свойство) относятся к разным объектам, но к одной форме.

в) THISFORMSET – ссылка на набор форм, в котором находится источник обращения. Применяется тогда, когда место обращения и адресуемый метод (или свойство) относятся к разным формам, но к одному набору форм.

3.2 РАБОТА С ФОРМОЙ

При работе с формой выполняются следующие основные операции:

- создание формы;

- настройка формы;

- создание среды окружения формы;

- сохранение формы;

- модификация формы;

- запуск формы на выполнение.

Кроме вышеуказанных операций, при разработке формы производится создание и настройка объектов (интерфейсных элементов), размещаемых на форме. Операции с интерфейсными элементами рассматриваются далее отдельно.

Создание формы

Для быстрого построения типовых форм в Visual FoxPro можно использовать следующие средства:

а) построитель форм Form Builder. Для запуска построителя форм сначала нужно открыть конструктор форм Form Designer (см. ниже), а затем в появившемся подменю Form выбрать пункт Quick Form;

б) мастер форм Form Wizard. Для запуска мастера форм нужно выбрать пункт главного меню Tools / Wizards / Form или при создании новой формы в появившемся окне выбрать Form Wizard. Во всех указанных случаях открывается окно Wizard Selection, в котором окончательно выбирается Form Wizard.

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

Запуск конструктора форм для создания новой формы может быть выполнен:

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

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

Открывающееся окно конструктора форм содержит новую пустую форму (рис.12). Для работы с конструктором форм открываются вместе с ним (или вызываются при необходимости) следующие дополнительные средства:

- инструментальная панель конструктора форм Form Designer. Содержит кнопки вызова других панелей, окон и построителей;

- инструментальная панель элементов Form Controls. Содержит кнопки выбора объектов для размещения их на форме;

- инструментальная панель расположения элементов Layout. Содержит кнопки выравнивания объектов, выбранных на форме;

- инструментальная панель цветовой палитры элементов Color Palette. Содержит кнопки задания цвета текста и фона объектов, выбранных на форме;

- окно среды окружения Data Environment. Предназначено для задания среды окружения формы;

- окно свойств объектов Properties. Предназначено для задания значений свойств объектов, а также обращения к программным кодам событий и методов объектов;

- окно программного кода Code. Предназначено для задания программных кодов событий и методов объектов.

Рисунок 12 – Окно конструктора форм

Также при работе с конструктором форм изменяется системное меню Visual FoxPro: меняется состав подменю View и Format, добавляется подменю Format (если ранее отсутствовало) и подменю Form. Пункты подменю View и Format в основном повторяют возможности панелей Form Designer и Layout, а также предоставляют возможности управления разметочной сеткой. Подменю Form предоставляет дополнительные возможности работы с формами, в том числе возможность работы с наборами форм.

Настройка формы

Основными средствами настройки формы являются окна Properties и Code.

Окно свойств Properties приведено на рис.1.3.

Рисунок 13 – Окно свойств объектов

Данное окно открывается с помощью команды Properties подменю Window или контекстного меню или нажатием соответствующей кнопки панели Form Designer.

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

Основную часть окна занимает набор вкладок, содержащих информацию по выбранному объекту:

Data - свойства объекта, связанные с источником данных;

Layout - свойства объекта, определяющие его размещение и внешний вид;

Other - прочие свойства, не вошедшие во вкладки Data и Layout;

Methods - набор всех событий и методов объекта;

All - набор всех свойств, событий и методов объекта в алфавитном порядке.

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

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

- непосредственным вводом в поле;

- выбором из раскрывающего списка (при наличии стрелки раскрытия списка выбора);

- выбором в диалоговом окне (при наличии кнопки открытия диалогового окна).

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

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

При настройке формы наиболее часто редактируемыми свойствами являются:

- имя Name;

- заголовок окна Caption;

- свойства ControlBox, Closable, MaxButton и MinButton, задающие наличие и доступность управляющих элементов, размещаемых в заголовке окна;

- свойства положения и размера Top, Left, Width и Height, которые могут задаваться также интерактивно путем перетаскивания мышью окна и его границ;

- свойство центрирования окна при запуске AutoCenter;

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

- свойство стиля обрамления формы BorderStyle, позволяющее задать фиксированную рамку окна или оставить окно изменяемым по размеру (Sizable);

- свойства ShowWindow, WindowType и Desktop, определяющие характер поведения окна. Свойство подчиненности окна ShowWindow определяет независимость окна (As Top-Level Form), подчиненность окна главному окну Visual FoxPro (In Screen) или подчиненность окна независимому окну, активному на момент запуска (In Top-Level Form). Подчиненное окно свертывается и закрывается вместе с родительским окном и не может выходить за пределы родительского окна при Desktop=.F. Свойство WindowType определяет модальный (Modal) или немодальный (Modeless) тип окна. Модальность окна запрещает действия с другими открытыми окнами и меню приложения до закрытия данного окна. Окна, подчиненные модальному окну, также будут являться модальными;

- свойство AlwaysOnTop, задающее размещение открытого окна всегда поверх других окон, вне зависимости от состояния активности.

Для задания программного кода события или метода выполняется двойной щелчок мышью или нажатие Enter в нужной позиции вкладки Methods. В результате открывается окно Code для выбранного события или метода. Такой же результат можно получить вызовом окна Code из системного или контекстного меню или из инструментальной панели Form Designer с последующим выбором нужного объекта и события (метода) из развертывающихся списков окна Code. После задания программного кода события или метода его наличие будет индицироваться в соответствующей позиции окна Properties.

Наиболее используемыми для настройки формы являются указанные ранее события Init, Activate, Deactivate, Destroy и метод Refresh, а также методы:

- Hide (Скрыть). Метод делает форму невидимой и недоступной для пользователя;

- Show (Показать). Метод делает форму видимой и доступной для пользователя и позволяет изменить модальность формы;

- Release (Уничтожить). Метод уничтожает форму. Для повторного использования форма должна быть создана заново, например, с помощью команды DO FORM.

Создание среды окружения формы

Для создания среды окружения формы используется окно DataEnvironment.

Окно среды окружения создается при первом вызове, а в последующем открывается с помощью команды Data Environment подменю View или контекстного меню или нажатием соответствующей кнопки панели Form Designer. При создании предлагается сразу добавить таблицы в среду окружения. В открытом окне среды окружения отображаются добавленные таблицы и существующие связи между ними. При открытии окна среды окружения в меню Visual FoxPro добавляется подменю DataEnvironment.

При определении среды окружения можно выполнить следующие действия:

- изменить состав таблиц среды окружения с помощью команд Add и Remove подменю Data Environment и контекстного меню;

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

- задать свойства, события и методы объектов среды окружения с помощью окон Properties и Code. В основном здесь задаются свойства, определяющие действия с таблицами при создании и уничтожении формы (таблица 3.5).

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

Кроме того, включенные в среду окружения Data Environment табличные данные становятся видимыми при проектировании, что облегчает их подключение к интерфейсным элементам ввода-вывода, размещаемым на форме.

 

Таблица 3.5 – Свойства среды окружения DataEnvironment

Свойство Описание
AutoOpenTables объекта DataEnvironment Автоматическое открытие таблиц среды окружения при создании формы
AutoCloseTables объекта DataEnvironment Автоматическое закрытие таблиц среды окружения при уничтожении формы
InitialSelectedAlias объекта DataEnvironment Указание таблицы, становящейся текущей при создании формы
Filter объекта Cursor Задание выражения фильтра, включаемого для таблицы при создании формы
Order объекта Cursor Указание главного индекса для таблицы при создании формы

Сохранение формы

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

Модификация формы

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

Запуск формы на выполнение

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

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

а) командой Run Form подменю Form или контекстного меню при работе с конструктором форм;

б) нажатием кнопки Run окна проекта при выбранной форме или двойным щелчком на форме в окне проекта, если установлена соответствующая настройка проекта;

в) командой меню Program / Do с выбором нужной формы из имеющихся форм.







Дата добавления: 2014-11-10; просмотров: 1063. Нарушение авторских прав

codlug.info - Студопедия - 2014-2017 год . (0.044 сек.) русская версия | украинская версия