21018

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

Контрольная

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

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

Русский

2013-08-02

297.5 KB

58 чел.

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

1.Объектная организация пользовательского интерфейса

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

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

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

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

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

Тип объекта

Описание

FormSet             

Объект - набор форм. Контейнер. Содержит объекты - формы.

Form                

Объект - форма. Контейнер. Содержит объекты различного типа.

DataEnvironment       

Объект - среда окружения. Контейнер. Связан с формой или набором форм. Содержит объекты курсоров и связей.

Cursor          

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

Relation            

Объект - связь. Неконтейнерный элемент. Размещается в DataEnvironment. Позволяет определить связи между объектами - курсорами.

PageFrame            

Многостраничный объект. Контейнер. Содержит объекты - страницы.  

Page                

Объект - страница. Контейнер. Размещается в блокноте. Содержит объекты различного типа.

Grid                

Табличный объект. Контейнер. Содержит объекты – столбцы.

Column              

Объект - столбец, Контейнер. Размещается в PageFrame. Содержит объект - заголовок и один или несколько объектов для представления данных.

Header              

Объект - заголовок столбца. Неконтейнерный элемент. Размещается в Column. Определяет вид и поведение заголовка столбца.

CommandGroup          

Объект - набор командных кнопок. Контейнер. Содержит объекты - командные кнопки.

CommandButton        

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

OptionGroup          

Объект - набор кнопок выбора. Контейнер. Содержит объекты – кнопки выбора.

OptionButton         

Объект - кнопка выбора. Неконтейнерный элемент. Размещается в наборе кнопок выбора. Создает одиночную кнопку выбора.

Label           

Объект – текст. Неконтейнерный элемент. Создает текст, недоступный для непосредственного редактирования.

Checkbox             

Объект-индикатор. Неконтейнерный элемент. Создает поле индикации, которое используется для переключения между двумя состояниями.

TextBox             

Объект – поле ввода. Неконтейнерный элемент.  Создает текстовое поле, в котором можно редактировать значение переменной, элемента массива или поля.

ListBox      

Объект – список. Неконтейнерный элемент. Создает развернутый список, в котором можно выбрать один или несколько пунктов.

ComboBox             

Объект - комбинированный список. Неконтейнерный элемент. Создает поле ввода, дополненное раскрывающимся списком, из которого можно выбрать один пункт с занесением его в поле ввода. Сочетает возможности объектов ListBox и TextBox, так как помимо выбора из списка позволяет непосредственно вводить данные.

EditBox             

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

Image               

Объект – изображение. Неконтейнерный элемент. Создает область для отображения изображения в формате BMP.

Line           

Объект – линия. Неконтейнерный элемент. Создает горизонтальную, вертикальную или диагональную линию.

Shape                

Объект – контур. Неконтейнерный элемент. Создает геометрическую фигуру (прямоугольник, круг или эллипс).

Spinner              

Объект – счетчик. Неконтейнерный элемент. Создает элемент для пошагового изменения числового значения.

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

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

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

Свойство

Описание

Autosize

Включение/выключение автоподстройки размера объекта под текст, размещаемый на объекте

Alignment

Вид выравнивания текста в объекте

BackColor 

Цвет фона объекта.

BackStyle 

Включение/выключение прозрачности фона объекта

Bordercolor 

Цвет рамки объекта

 Borderwidth 

Ширина рамки объекта

Caption 

Заголовок, размещаемый на объекте или вверху объекта

DisabledBackcolor

Цвет фона недоступного для работы объекта

DisabledForeColor 

Цвет символов недоступного для работы объекта

FontBold 

Включение/выключение полужирного начертания шрифта для объекта

FontItalic 

Включение/выключение курсивного начертания шрифта для объекта

FontName 

Вид шрифта для объекта

Fontsize 

Размер шрифта для объекта

FontStrikeThru

Включение/выключение перечеркнутого начертания шрифта для объекта

FontUnderline

Включение/выключение подчеркнутого начертания шрифта для объекта

ForeColor 

Цвет выводимых символов.

Picture 

Задание файла в формате BMP или ICO для размещения изображения на объекте

SpecialEffect 

Включение/выключение объемности внешнего вида объекта

Height 

Высота объекта

Width

Ширина объекта

Left 

Расстояние от левой границы объекта до левого края родительского объекта (или главного окна Visual FoxPro)

Top

Расстояние от верхней границы объекта до верхнего края родительского объекта (или главного окна Visual FoxPro)

Value

Значение данных, хранящихся в объекте или характеризующих текущее состояние объекта

ControlSource 

Указание переменной или поля таблицы, связанной с объектом

Enabled 

Включение/выключение доступности объекта для работы

ReadOnly 

Включение/выключение редактируемости данных в объекте

Visible 

Включение/выключение видимости объекта

Name

Имя объекта

Parent

Имя родительского объекта

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

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

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

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

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

Событие

Описание

Init

Происходит однократно при создании объекта. Является первым в жизненном цикле объекта. Используется для получения параметров из вызывающей процедуры и выполнения установочных действий для объектов и данных. При вложенности создаваемых объектов событие выполняется сначала для объекта, включенного в объект-контейнер, а затем для объекта-контейнера. Если событие Init возвращает значение .F., то объект не будет создан

Destroy

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

When

Происходит при попытке интерактивной или программной активизации объекта или перемещении в списке. Если событие возвращает .Т.,  то объект активизируется, в противном случае - не активизируется

Valid

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

GotFocus

Происходит при активации объекта

LostFocus

Происходит при деактивации объекта

Activate

Происходит при активации объекта-контейнера

Deactivate

Происходит при деактивации объекта-контейнера

Click

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

Dblclick

Происходит при двойном щелчке левой кнопкой мыши на объекте или выборе пункта из списка с нажатием клавиши Enter

RightCick

Происходит при щелчке правой кнопкой мыши на объекте

MiddleClick

Происходит при щелчке средней кнопкой трехкнопочной мыши на объекте

MouseDown

Происходит при нажатии кнопки мыши и передает 4 параметра, указывающие координаты мыши и нажатые кнопки

MouseUp

Происходит при отпускании кнопки мыши и передает 4 параметра, указывающие координаты мыши и нажатые кнопки

KeyPress

Происходит при нажатии и последующем отпускании клавиатурной клавиши и передает 2 параметра, указывающие и нажатые клавиши

Resize

Происходит при интерактивном изменении размеров объекта или программном изменении значений свойств Height или Width объекта

Moved

Происходит при интерактивном перемещении объекта или программном изменении значений свойств Тор или Left объекта

InteractiveChange

Происходит при интерактивном изменении значения свойства Value объекта

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

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

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

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

SetFocus

Активизация указанного объекта

Refresh

Обновление указанного объекта на экране

SetAll

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

AddObject 

Программное добавление подчиненного объекта в объект-контейнер.

RemoveObject 

Удаление объекта из объекта-контейнера.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2. Работа с формой

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

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

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

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

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

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

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

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

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

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

AutoForm Wizard  - Мастер Автоформы;

Form Wizard - Мастер Форм;

Form Builder - Построитель Формы;

Form Designer — Конструктор Форм.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Окно свойств Properties открывается с помощью команды Properties подменю View или контекстного меню или нажатием соответствующей кнопки панели 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 в нужной позиции вкладки Method. В результате открывается окно 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. В основном здесь задаются свойства, определяющие действия с таблицами при создании и уничтожении формы.

Свойство

Описание

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 с выбором нужной формы из имеющихся форм.

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

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

3. Работа с подчиненными объектами формы

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

- создание объектов формы;

- выделение объектов на форме;

- интерактивная работа с объектами на форме;

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

- удаление объектов формы.

Создание объектов формы

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

Выделение объектов на форме

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

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

Снятие выделения со всех объектов формы выполняется щелком вне выделенных объектов. Снятие выделения с отдельных объектов выполняется щелчками на них при нажатой клавише Shift.

Интерактивная работа с объектами на форме

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

а) Перемещение.

Перемещение выполняется путем перетаскивания мышью или нажатиями клавиш стрелок. При перетаскивании мышью выполняется выравнивание по линиям сетки, если в меню Format включена установка Snap to Grid. Нажатия клавиш стрелки выполняют перемещение на 1 пиксель в соответствующем направлении и применяются для точного позиционирования.

б) Изменение размеров и взаимного расположения объектов

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

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

Подменю Format/Align содержит набор команд

Команда

Описание

Align Left Sides  

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

Align Right Sides

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

Align Top Edges

Выравнивание объектов по верхнему краю самого верхнего объекта

Align Bottom Edges

Выравнивание объектов по нижнему краю самого нижнего объекта

Align Vertical Centers

Выравнивание объектов по вертикальной оси

Align Horizontal Centers

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

Center Vertically 

Центрирование объектов по вертикальному центру формы

Center Horizontally 

Центрирование объектов по горизонтальному центру формы

Подменю Format/ Size содержит набор команд

Команда

Описание

Size To Fit 

Выравнивание размера объекта по отображаемой информации

Size To Grid

Выравнивание размера объекта по шагу сетки

Size To Tallest

Выравнивание высоты объектов по высоте самого высокого объекта

Size To Shortest

Выравнивание высоты объектов по высоте самого низкого объекта

Size To Widest

Выравнивание длины объектов по длине самого длинного объекта

Size To Narrowest

Выравнивание длины объектов по длине самого короткого объекта

Подменю Format/ Horizontal Spacing и Format/ Vertical Spacing содержат команды горизонтального и вертикального выравнивания  

Команда

Описание

Make Equal 

Установка одинакового расстояния между объектами

Increase 

Увеличение расстояния между объектами

Decrease 

Уменьшение расстояния между объектами

в) Изменение последовательности обхода объектов

Для задания нужной последовательности перехода от объекта к объекту используется команда меню View/Tab Order. По данной команде в зависимости от настройки Tab ordering вкладки Forms окна настроек Options выполняется:

- отображение текущей последовательности обхода нумерацией объектов непосредственно на форме. Задание нужной последовательности обхода выполняется щелчками на объектах при нажатой клавише Shift;

- отображение текущей последовательности обхода в окне Tab Order. Здесь можно задать упорядочивание всех объектов по столбцам или строкам нажатием кнопок By Column (По столбцам) и By Row. Изменение позиции отдельного объекта выполняется перетаскиванием кнопки, находящейся слева от объекта, а нужную строку.

Задание свойств, событий и методов объектов

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

Объект PageFrame

Свойство PageCount

Количество страниц

Свойство ActivePage

Номер активной страницы

Свойство Pages

Ссылки на страницы

Свойство Tabs

Включение/выключение вывода ярлыков страниц

Свойство TabStretch

Допустимость вывода ярлыков в несколько строк

Объект Page

Свойство Caption

Текст ярлыка страницы

Объект Grid

Свойство ActiveColumn

Номер активного столбца

Свойство ActiveRow

Номер активной строки

Свойство ColumnCount

Количество столбцов

Свойство Columns

Ссылки на столбцы

Свойство DeleteMark

Вывод столбца пометок на удаление

Свойство RecordMark

Вывод указателя на текущую запись

Свойство RecordSourceType

Указание типа источника данных для таблицы

Свойство RecordSource

Указание данных для таблицы

Свойство ScrollBars

Включение/выключение полос вертикальной и горизонтальной прокрутки

Событие AfterRowColChange

Происходит перед переходом из текущей ячейки

Событие BeforeRowColChange

Происходит после перехода в текущую ячейку

Метод ActivateCell

Программный переход в заданную ячейку

Объект Column

Свойство Resizable

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

Свойства Dynamic

Динамическое определение значений свойств позиций столбца

Объект Header

Свойство Caption

Текст заголовка столбца

Объект CommandGroup

Свойство ButtonCount

Количество кнопок

Свойство Buttons

Ссылки на кнопки

Свойство Value

Номер нажатой кнопки

Событие Click

Происходит при нажатии одной из кнопок группы

Объект CommandButton

Свойство Caption

Текст названия кнопки

Событие Click

Происходит при нажатии кнопки

Объект OptionGroup

Свойство ButtonCount

Количество кнопок

Свойство Buttons

Ссылки на кнопки

Свойство Value

Номер выбранной кнопки

Событие Click

Происходит при выборе одной из кнопок группы

Событие InteractiveChange

Происходит при смене выбранной кнопки

Объект OptionButton

Событие Click

Происходит при выборе кнопки

Свойство Value

Состояние кнопки (0-не выбрана, 1-выбрана)

Свойство Caption

Текст подписи к кнопке

Объект Label

Свойство Caption

Текст надписи

Объект CheckBox

Свойство Caption

Текст подписи к индикатору

Свойство Value

Состояние индикатора (0-не установлен, 1-установлен)

Событие InteractiveChange

Происходит при интерактивной смене состояния

Событие ProgrammicalChange

Происходит при программной смене состояния

Объект TextBox

Свойство Format

Формат ввода-вывода

Свойство InputMask

Шаблон ввода

Свойство MaxLength

Максимальная длина вводимого значения

Свойство Value

Хранимое значение

Объект ListBox

Свойство IncrementalSearch

Включение/выключение инкрементного поиска

Свойство ListCount

Количество элементов в списке

Свойство List

Массив значений элементов

Свойство ListIndex

Номер текущего элемента

Свойство MultiSelect

Доступность множественного выделения

Свойство Selected

Признак выделенного элемента

Свойство RowSourceType

Указание типа источника данных для списка

Свойство RowSource

Указание данных для списка

Событие InteractiveChange

Происходит при интерактивном выборе элемента

Событие ProgrammicalChange

Происходит при программном выборе элемента

Метод AddItem

Программное добавление элемента к списку

Метод RemoveItem

Программное удаление элемента из списка

Метод Clear

Очистка списка

Объект ComboBox

Свойство IncrementalSearch

Включение/выключение инкрементного поиска

Свойство ListCount

Количество элементов в списке

Свойство List

Массив значений элементов

Свойство ListIndex

Номер текущего элемента

Свойство RowSourceType

Указание типа источника данных для списка

Свойство RowSource

Указание данных для списка

Свойство Style

Режим задания значения (0–ввод или выбор, 2–только выбор)

Событие InteractiveChange

Происходит при интерактивном выборе элемента

Событие ProgrammicalChange

Происходит при программном выборе элемента

Метод AddItem

Программное добавление элемента к списку

Метод RemoveItem

Программное удаление элемента из списка

Метод Clear

Очистка списка

Объект EditBox

Свойство MaxLength

Максимальная длина вводимого текста

Свойство ScrollBars

Включение/выключение вертикальной прокрутки

Свойство Margin

Ширина левого поля

Свойство Value

Хранимое значение

Объект Image

Свойство Picture

Указание  .bmp или .ico файла изображения

Свойство Stretch

Режим вписывания изображения в размер объекта

Объект Line

Свойство LineSlant

Ориентация линии

Объект Shape

Свойство Curvature

Закругленность углов контура

Свойство FillColor

Цвет заполнения контура

Свойство FillStyle

Вид заполнения контура (сплошное, диагональная штриховка и т.д.)

Объект Spinner

Свойство SpinnerHighValue

Верхнее допустимое значение

Свойство SpinnerLowValue

Нижнее допустимое значение

Свойство Increment

Шаг изменения

Удаление объектов формы

Удаление выделенных объектов выполняется командой вырезания Cut подменю Edit или контекстного меню, либо нажатием клавиши Del.

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

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

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

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

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

2. Создание главной формы приложения.

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

Создайте для проекта новую форму.

Задайте для формы:

- имя;

- заголовок;

- размеры (достаточные для размещения 3 кнопок);

- фиксированную рамку окна;

- автоматическое центрирование окна;

- выключение кнопок минимизации и максимизации окна.

Разместите на форме 3 кнопки с заголовками «Сотрудники», «Об авторе» и «Выход».

Задайте для кнопок имена, указывающие на их назначение.

Запишите в событие Click кнопки «Выход» команду уничтожения формы THISFORM.RELEASE.

Сохраните форму с удобным для использования именем.

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

3. Подключение главной формы к главной программе

Откройте главную программу и перед командой запуска ожидания событий READ EVENTS введите команду вызова главной формы DO FORM, используя в ней выбранное имя главной формы. В установочную часть  программы добавьте команду отключения системного меню SET SYSMENU OFF. После команды ожидания событий введите команду SET SYSMENU TO DEFAULT для возврата к системному меню при завершении программы. Сохраните программу.

Откройте главную форму и в событие уничтожения формы (DESTROY) введите команду завершения ожидания событий CLEAR EVENTS. Сохраните форму.

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

4. Создание формы для работы с таблицей

Создайте для проекта новую форму.

Сохраните форму с удобным для использования именем.

Задайте для формы имя и заголовок, отключите все системные элементы заголовка.

Разместите на форме табличный объект Grid и кнопки «Принять», «Исправить», «Уволить», «Выход». Зафиксируйте размер формы.

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

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

Для табличного объекта задайте:

- количество столбцов равно 2;

- столбец пометок на удаление отключен;

- прокрутка только по вертикали;

- доступно только чтение.

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

Используя свойства объектов Header, задайте заголовки столбцов (Таб.номер, Фамилия И.О.) и их центрирование.

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

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

5. Подключение вызываемой формы к вызывающей форме

Откройте для модификации главную форму и запрограммируйте нажатие кнопки «Сотрудники» на запуск формы, выводящей таблицу сотрудников. Закройте форму.

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

6. Создание формы для работы с записью

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

Сохраните форму с удобным для использования именем.

Задайте для формы имя и заголовок, отключите все системные элементы заголовка.

Сделайте форму модальной.

Разместите на форме текстовые поля (TextBox) для ввода табельного номера и фамилии сотрудника, комбинированный список (ComboBox) для ввода образования сотрудника, область редактирования (EditBox) для ввода характеристики сотрудника. Добавьте тексты (Label) для задания подписей к полям ввода и 2 кнопки: «Записать» и «Отменить».

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

Задайте имена объектов формы.

Для текстов задайте выводимый текст.

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

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

Для нажатий кнопок задайте код закрытия формы. Кроме того, учитывая назначение формы, запишите в событии инициализации формы команду добавления новой записи APPEND BLANK, а в событие нажатия кнопки «Отменить» введите команду стирания добавленной записи DELETE.

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

7. Подключение позаписной формы к табличной форме

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

Выполните запуск главной программы и проверьте правильность работы всех форм.

8. Создание окна сообщения

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

Откройте табличную форму и для события нажатия кнопки «Уволить» запишите следующий код:

otvet=messagebox('Уволить сотрудника '+chr(13)+alltrim(fio),36,'Запрос потверждения')

if otvet=6

  delete

  go top

  thisform.refresh

endif

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

9. Создание формы «Об авторе»

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

Подключите новую форму к главной форме и проверьте правильность работы.

ДОПОЛНИТЕЛЬНЫЕ ЗАДАНИЯ

1. Создание формы, использующей транзакцию.

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

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

Измените имя и заголовок формы.

В событии инициализации формы сотрите команду добавления записи и введите команду начала транзакции BEGIN TRANSACTION.

В событии нажатия кнопки «Записать» введите команду END TRANSACTION. По данной команде будут зафиксированы все изменения в БД, сделанные с начала транзакции.

В событии нажатия кнопки «Отменить» сотрите команду удаления записи и введите команду ROLLBACK. По данной команде будут отменены все изменения в БД, сделанные с начала транзакции.

Закройте вновь созданную форму и добавьте ее к проекту.

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

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

 

2. Управление доступностью объектов в рабочем режиме.

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

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

В событие инициализации формы введите команды, заполняющие значение нового свойства и использующие его для блокировки кнопок  «Исправить» и «Уволить» (при вводе используйте имена кнопок, заданные в вашем проекте, вместо cmdispr и cmduvol):

count to this.kolsotr

if this.kolsotr=0

 this.cmdispr.enabled=.f.

 this.cmduvol.enabled=.f.

endif

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

Запустите главную программу и проверьте правильность блокировки и разблокировки кнопок.


 

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

30906. Виды моторики пищеварительного тракта 49 KB
  Физиологические свойства и особенности гладкой мускулатуры пищеварительной трубки Гладкая мускулатура пищеварительной трубки состоит из гладкомышечных клеток ГМК. Межклеточные контакты ГМК пищеварительной трубки обеспечивает наличие нексусов. ГМК пищеварительной трубки обладают рядом физиологических свойств: возбудимостью проводимостью и сократимостью. Особенности возбудимости ГМК пищеварительной трубки: Возбудимость ГМК пищеварительной трубки ниже чем у миоцитов поперечнополосатой мускулатуры ППМ.
30907. Пищеварение в полости рта 27.5 KB
  Пищеварение в полости рта Секреция в ротовой полости В ротовой полости слюну вырабатывают 3 пары крупных и множество мелких слюнных желез. 1 Время нахождения пищи в ротовой полости в среднем 1618 секунд. Е нормальная микрофлора ротовой полости которая угнетает патологическую. В пределах ротовой полости ферменты слюны практически не оказывают влияния изза незначительного времени нахождения пищевого комка в ротовой полости.
30908. Пищеварении в желудке 38.5 KB
  Железы желудка состоят из трех видов клеток: Главные клетки – вырабатывают ферменты; Париетальные обкладочные НCl; Добавочные слизь. Клеточный состав желез изменяется в различных отделах желудка в антральном нет главных клеток в пилорическом нет обкладочных. Стимулирует секрецию желез желудка. Стимулирует моторику желудка.
30909. Пищеварение в 12-перстной кишке 27.5 KB
  За сутки 1525 л панкреатического сока рН 7588. Специфические вещества поджелудочного сока: 1. Ферменты панкреатического сока. Пищеварительные ферменты поджелудочного сока Протеазы поджелудочного сока эндо и экзопептидазы: а Эндопептидазы действуют на молекулу изнутри расщепляя внутренние пептидные связи.
30910. Роль печени в пищеварении 29 KB
  Состав желчи: 1. Специфические вещества: желчные кислоты и желчные пигменты: билирубин основной пигмент у человека придает коричневую окраску; биливердин в основном в желчи травоядных животных зеленый цвет. Роль желчи в пищеварении: 1.Желчные кислоты как компонент желчи играют в пищеварении ведущую роль: эмульгируют жиры активируют поджелудочную липазу обеспечивают всасывание нерастворимых в воде веществ образуя с ними комплексы жирные кислоты холестерин жирорастворимые витамины А D Е К и соли Са2...
30911. Состав и свойства кишечного сока 44.5 KB
  Состав и свойства кишечного сока Сок тонкой кишки Объем суточной секреции 25 л. Сахараза Лактаза Мальтаза Изомальтаза Гаммаамилаза фиксирована к стенке кишки. Фосфатазы Щелочная фосфатаза Кислая фосфатаза Сок толстой кишки рН сока 8590. К специфическим веществам сока толстой кишки относится слизь которая обеспечивает формирование каловых масс.
30912. Всасывание 28.5 KB
  Всасываются глюкоза алкоголь некоторые лекарственные вещества валидол нитроглицерин назначаются под язык . В желудке всасываются вода алкоголь некоторые соли и моносахариды в минимальных количествах вещества растворенные в спирте всасываются в больших количествах. Всасываются: продукты гидролиза жиров белков углеводов вода минеральные соли витамины. В норме всасываются только низкомолекулярные вещества лишенные видовой и индивидуальной специфичности.
30913. Принципы регуляции деятельности пищеварительной сис 33.5 KB
  Принципы регуляции деятельности пищеварительной системы Общие принципы регуляции пищеварения 1. Механизмы регуляции пищеварения: делятся на: нервные и гуморальные. Нервная регуляция пищеварения Нервная регуляция пищеварения осуществляется за счет безусловных и условных рефлексов. Рефлекторная регуляция пищеварения имеет ряд особенностей: 1.
30914. Пластическая и энергетическая роль углеводов, жиров и белков 28 KB
  Пластическая роль липидов состоит в том что они входят в состав клеточных мембран и в значительной мере определяют их свойства. Большая часть жиров в организме находится в жировой ткани меньшая часть входит в состав клеточных структур. Они входят в состав клеточных структур в частности клеточных мембран а также ядерного вещества и цитоплазмы. Это вещество входит в состав клеточных мембран; оно является источником образования желчных кислот а также гормонов коры надпочечников и половых желез.