Лабораторная работа 9

Проектирование экранных форм

Цели работы:

Краткие теоретические сведения

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

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

Задание

  1. Выполните проектирование экрана на бумаге:

  1. Выполните конструирование экранной формы:

  1. Изучите формы экранов стандартного приложения. Данные файлы находятся в директории W:\FOXPROW\TUTORIAL.
  2. Создайте на экранной форме кнопки:

  1. Создайте в экранной форме поле редактирования, поле для ввода со списком, селекторные кнопки или контрольные индикаторы.
  2. Сохраните среду созданной экранной формы, через команду Экранñ Разметка.…
  3. Сохраните бланк экранной формы в виде файла с расширением SCX.
  4. Выполните генерацию программного кода экрана, через команду Программаñ Генерация.…
  5. Запустите программный файл экранной формы на выполнение.
  6. Протестируйте данную программу, выполнив следующие операции:

  1. После тестирования экранной формы, откройте на просмотр базу данных и проверьте правильность ее заполнения.
  2. Создайте экран для других баз данных.
  3. Создайте экранную форму для двух связанных баз данных.

Технология работы

Генератор экранных форм

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

Для создания новой экранной формы необходимо выбрать команду Файлñ Создать и в открывшемся диалоговом окне нажать селекторную кнопку Экран. После щелчка мышью на командной кнопке Создать, открывается пустое окно проектирования экранной формы с именем по умолчанию UNTITLED.SCX.

Распахните окно до полноэкранного размера, чтобы для ее оформления можно было использовать весь экран (рис. 9.1).

В этом окне проектируется внешний вид формы (строится ее макет), т.е. размещаются отдельные элементы, выбирается их оформление и т.д. Генератор Экранных форм, который автоматически активизируется при вызове окна проектирования, работает на заднем плане, формирует для всех встраиваемых в форму элементов xBase-директивы и генерирует соответствующие программные коды. При этом Генератор Экранных форм использует информацию о форме, сохраненную в SCX файле данных, чтобы изготовить программный файл (расширение SPR). Такой программный файл может быть впоследствии выполнен, чтобы активизировать спроектированную пользователем операционную среду.

Рис.9.1. Окно проектирования новой экранной формы

Размещение полей

Прежде всего нужно в окне проектирования экранной формы расположить поля из открытой базы данных Firma.dbf.

Рис.9.2. Конструирование стандартной экранной формы

Для этого необходимо выбрать команду Экранñ Стандартный экран. FoxPro откроет диалоговое окно конструирования стандартной экранной формы (рис. 9.2).

Данное диалоговое окно уже знакомо пользователю из предыдущих работ. При выборе контрольного индикатора Поля…, FoxPro откроет диалоговое окно Выбор полей (рис. 9.3).

Рис. 9.3. Выбор полей

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

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

Активизация координатных линеек и координатной сетки

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

Рис. 9.4. Диалоговое окно Линейка и сетка

FoxPro откроет диалоговое окно Линейка и сетка (рис. 9.4), где устанавливается, по желанию пользователя, сетка и размерная единица для линейки.

Перенос и изменение размера полей

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

Размещение экранной формы

Чтобы разместить проект экранной формы на экране, т.е. установить размер и позицию, а также задать некоторые специфические опции экрана, определяющие ее общий вид, нужно выбрать команду Экранñ Разметка….

FoxPro откроет диалоговое окно размещения экранной формы (рис. 9.5).

Рис. 9.5. Диалоговое окно размещения экранной формы

Здесь можно определить точные размеры экранной формы, а также координаты ее верхнего левого угла (горизонтальную и вертикальную позиции. в FoxPro-главном окне). Размеры задаются в пикселах. Это самый маленький шаг, доступный при работе с экраном. Вводя необходимые значения в счетчик Ширина и Высота, можно в зоне просмотра наблюдать как изменяется размер экрана.

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

Под зоной просмотра находятся два поля ввода Заголовок и Название. В поле Заголовок вводится текст, который должен появиться в строке заголовка окна экранной формы.

В поле Название экранной форме присваивается имя, которое может использоваться для ссылок на него из программ. Если конкретное имя не будет задано, FoxPro автоматически сгенерирует свое (но уникальное) имя. Рекомендуется использовать в качестве имени экрана имя базы данных, для обслуживания которой построена экранная форма.

Код экранной формы

В диалоговом окне Экранный код можно спроектировать программный код, обрабатывающий события, связанные целиком со всей экранной формой (а не с отдельными ее элементами).

Определение цвета экранной формы

Если в диалоговом окне Разметка экрана нажать командную кнопку Цвет..., FoxPro откроет диалоговое окно, в котором можно задать определенный цвет заднего плана (фона экрана).

Рис 9.6. Отображение экранной формы на фоне иллюстрации

Интересной является возможность выбора фоновой иллюстрации (иллюстрации заднего плана) вместо цветового тона фона. При этом под экран "подкладывается" иллюстрация из выбранного файла: полученный результат может превзойти все ожидания. Выполните щелчок мышью на командной кнопке Рисунок... и выберите один из файлов фоновых иллюстраций. Экранная форма будет отображена на фоне иллюстрации (рис. 9.6).

Определение вида шрифта

С помощью командной кнопки Шрифт... открывается стандартное диалоговое окно выбора шрифта среды Windows.

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

Определение стиля окна

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

Если в диалоговом окне Разметка экрана будет нажата командная кнопка Стиль окна…, FoxPro откроет следующее диалоговое окно (рис. 9.7), в котором можно установить стиль данного окна.

Рис.9.7. Окно выбора стиля окна

Сохранение среды

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

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

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

Ввод надписей

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

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

Рис. 9.8. Надписи в экранной форме

Форматирование текста

У введеного текста можно изменить тип шрифта, размер и начертание символов. Для этого нужно сначало маркировать поле с надписью, а затем выбрать команду Объектñ Шрифт.

Кроме того, у введеных надписей можно изменить цвет символов, через команду Объектñ Цвет линии….

Добавление поля базы данных

Во время работы, мы можем случайно удалить поле, через которое у нас осуществляется доступ к полям базы данных, например поле: 2:namefirm__ .

В FoxPro есть возможность данное поле занова создать.

Сначала нужно выполнить щелчок мышью на инструменте Поле редактирования в инструментальном меню и установить курсор возле надписи Название фирмы, начертив при этом мышью прямоугольник создаваемого поля. Отпустив кнопку мыши, появится диалоговое окно Поле (рис. 9.9).

Рис. 9.9. Диалоговое окно Поле

В FoxPro можно создавать два вида полей:

GET – поля ввода, через которые пользователь может заполнять и редактировать записи базы данных;

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

Создадим поле ввода, выбрав опцию Поле ввода (GET). Командная кнопка, расположенная справа, содержит надпись Ввод. С помощью данной командной кнопки пользователь может выбрать любое поле из активной базы данных. После нажатия командной кнопки Ввод откроется диалоговое окно Выбор поля или переменной (рис. 9.10).

Рис. 9.10. Окно выбора поля

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

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

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

Опция Изначально недоступно доступна только для полей ввода. При ее активизации соответствующее поле ввода в момент открытия экранной формы окажется заблокированным для использования и не сможет быть обработано. Блокировку можно снять с помощью xBase-директив SHOW GETS или SHOW OBJECT.

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

Области редактирования

Области редактирования обычно используются для обработки длинных Memo-полей.

В отличие от полей ввода, текст в областях редактирования может располагаться (и обрабатываться) в нескольких строках.

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

Рис. 9.11. Определение поля редактирования

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

Рис. 9.12. Экранная форма с полем редактирования

Определение командных кнопок

1. Создание навигационных кнопок

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

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

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

FoxPro откроет диалоговое окно Кнопка (рис. 9.13).

Здесь можно выбрать селекторную кнопку Рисунок, выполнив щелчок на командной кнопке Рисунок…. В директории FOXPROW \ TUTORIAL располагаются 4 файла иллюстрации навигационных кнопок:

ТОР.ВМР;

PRIOR. ВМР;

NEXT.gif;

ВОТТОМ.ВМР.

Откроем по очереди рисунки, щелкнув по командной кнопке Открыть.

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

Рис. 9.13. Определение группы командных кнопок

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

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

Имя этой переменной следует ввести в поле ввода рядом с командной кнопкой Переменная в левом нижнем углу диалогового окна.

Введите в это поле navigate имя переменной

Итак, командные кнопки интегрированы в экранную форму, но до тех пор пока с ними не связана никакая программа обслуживания они принесут не много пользы. Можно создать свою программу обслуживания, а можно взять одну из стандартных FoxPro-программ (в данном случае – controls.prg).

В области Предложения необходимо нажать командную кнопку VALID, чтобы ввести процедуру: DO controls.prg (данная процедура запускает на выполнение программный файл controls. prg)

Примечание:

Файлы иллюстраций, наносимых на навигационные кнопки (ТОР.ВМР, PRIOR.gif, NEXT.gif, ВОТТОМ.ВМР), и программу управления навигацией – CONTROLS.PRG, нужно переписать в директорию, где располагается файл экранной формы на вашем рабочем диске.

Создание кнопки ввода новой записи

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

FoxPro откроет диалоговое окно Кнопка.

Здесь выберем тип кнопки Нормальная и в поле области Текст, введем название кнопки Новый Клиент (рис. 9.14).

Рис. 9.14. Определение кнопки ввода новой записи в БД

Затем нужно ввести имя переменной: NEW.

После этого необходимо активизировать командную кнопку Valid для определения процедуры обслуживания кнопки. В диалоговом окне Фрагмент кода, введем следующую процедуру:

append blank [Enter] (добавить запись в конец БД)

show gets [Enter] (отобразить все объекты)

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

Создание кнопки выхода из экранной формы

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

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

В диалоговом окне Фрагмент кода, которое вызывается через командную кнопку Valid, нужно ввести процедуру:

1 вариант

2 вариант

Exit

Clear gets

Quiting = .T.

Clear gets

В завершение нужно отметить крестиком опцию Завершить READ при выборе в диалоговом окне настройки кнопки.

Сохранение среды

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

Поэтому необходимо для работы экранной формы выбрать команду Экранñ Разметка… и нажать в открывшемся диалоговом окне командную кнопку Среда.

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

Сохранение экранной формы

Завершив проектирование экранной формы и определив ее размещение, сохраните экран на жестком диске в отдельном файле, через команду Файлñ Сохранить как….

Генерация экранных форм

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

Для генерации кода необходимо активизировать диалоговое окно проектирования экранной формы и выбрать команду Программаñ Генерация...

FoxPro откроет диалоговое окно. Генерация экрана.

В области Набор экранов высвечивается имя данного экрана.

Рядом с кнопкой Выходной файл… стоит имя программного файла, в который будет записан код экрана. Программные файлы имеют расширение SPR.

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

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

Чтобы FoxPro сгенерировала программный код экранной формы нужно нажать командную кнопку Генерация.

Запуск экранных форм

Теперь можно выполнить программу экрана, вызывая команду Запускñ Экран или Программаñ Выполнить.

FoxPro открывает диалоговое окно выбора файла выполняемой программы, в котором следует выбрать подлежащий выполнению SPR-файл (программу экрана).

Закрытие экранной формы

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

Отчет по работе должен содержать:

  1. Проектные материалы (описание экранных форм).
  2. На диске Х:\ файлы содержащие проекты экранных форм, прошедших тестирование.

Контрольные вопросы

  1. Объяснить понятие экран, форма ввода.
  2. Технология формирования экранной формы.
  3. Объяснить назначение инструментов для создания экранной формы.
  4. Правила настройки кнопок.
  5. Возможности по размещению экранов.