Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Visual Basic и Visual Basic for Applications.doc
Скачиваний:
175
Добавлен:
01.05.2014
Размер:
579.07 Кб
Скачать

2.4. Окна диалога

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

Для открытия режимного ОД используется метод Show с параметром стиля vbModal:: (константа 1) frmAbout.Show vbModal. Для не режимного ОД этот же метод используется без параметра стиля: frmAbout.Show.

Стандартные ОД:

1) InputBox – вывод на экран окна приглашения к вводу информации и возвращение ввода пользователя; при этом можно изменять только текст в титульной строке, приглашение к вводу, умолчительное значение, позицию диалога и включать или нет кнопку Help

pwd=InputBox("Введите пароль:", "Регистрация",,,,"Help.hlp",10)

где "Регистрация" – титульная строка (название ОД); "Введите пароль" – приглашение.

2) MsgBox – отрывает окно сообщения и возвращает значение, указывающее командную кнопку, которую щелкнул пользователь; используется для получения от пользователя ответа ДА/НЕТ и для вывода кратких сообщений (ошибки, предупреждения)

MsgBox "Это сообщение VB", vbExclamation, "Приложение VB"

где "Приложение VB" – название ОД; "Это сообщение VB"– выводимый в окне текст.

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

Для создания нового ОД надо: 1) выполнить Project / Add Form и через вкладку New добавить к проекту новую форму; 2) настроить вид и компоновку формы; ввести ЭУ; 3) добавить код к процедурам событий формы и ЭУ.

Для настройки существующего ОД надо: 1) выполнить Project / Add Form; и, открыв вкладку Existing, добавить существующую форму к проекту; 2) выполнить команду File | Save As (новое имя файла); 3) настроить вид и компоновку формы; 4) в окне редактора кода настроить процедуры обработки событий формы и элементов управления.

Обычно используются две командные кнопки ОК и ОТМЕНА, при этом в свойстве Caption для этих кнопок устанавливаются значения: Default – True и Cancel – True.

При открытии формы фокус получает ЭУ с самым низким значением свойства Tabldex. Нажатие Enter вызывает событие Click либо для умолчительной кнопки, либо для кнопки, на которой установлен фокус. Установить на кнопку фокус при открытии формы можно либо присвоением свойству Tabldex значения 0, либо свойству TabStop значения True.

Для деактивирования ЭУ надо установить его свойство в False. Открытие и удаление ОД выполняется также как и для формы. Метод Show загружает форму и устанавливает свойство Visible в True. Для выхода из ОД используется кнопка ОК, Cansel, оператор Unload (удаляет из памяти ОД и все его ЭУ) или метод Hide (удаляет ОД только с экрана).

3. Классовое общество

3.1. Классы-формы

Класс - это шаблон или проект, из которого впоследствии будет соз­дан объект. Каждый объект является экземпляром класса.

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

Хранение данных в виде privat-переменных - единственный способ придания объекту свойств и поведения "черного ящика" (скрывания данных). Скрывание данных - критическое условие для многократного использования объекта и надежности приложения.

Класс, создаваемый из другого класса расширяет его. Общая концепция расширения базового (родительского) класса называется наследованием. Отношение наследования устанавливает специализацию объекта. Если класс А расширяет класс В, то он наследует его методы, но имеет больше воз­можностей. Это означает, что расширенный класс стартует со всеми свой­ствами родителя. Методы родительского класса можно переопределить. Объ­ектам-потомкам могут быть назначены новые методы и свойства, отсутству­ющие в классе-родителе.

В тоже время в VB процесс создания элемента управления из сущест­вующего элемента, хотя и выглядит как наследование, но таковым не явля­ется, т.к. между такими объектами не устанавливается никакого отношения родитель-потомок. Причина в том, что обычная версия наследования в ОПП всегда подразумевает конфликт между наследованием и инкапсуляцией. Если объект В наследует все свойства объекта А, и последний изменяется, то имеется опасность нарушить функциональные возможности объекта В (пробле­ма хрупкого базового класса). В VB проблема хрупкости при наследовании обходится с помощью концепции интерфейса. Интерфейсы (методы, свойства и события) предоставляют большинство, если не все, функциональные воз­можности без привлечения механизмов прямого наследования. Это, однако, приводит к написанию большего объема программного кода, чем было бы при использовании классического наследования.

Чтобы обратиться к объекту в коде, надо иметь объектную перемен­ную, а сам объект будет существовать до тех пор, пока имеется, по край­ней мере, одна объектная переменная , содержащая обращение к этому объ­екту. Объектные переменные 2-го и последующих экземпляров Form1, имеют значение только в момент вызова их методов Show. Затем эти переменные выходят из области видимости и получают значение Nothing. Но VB хранит специальную коллекцию Forms, которая содержит ссылку на каждую из заг­руженных форм в проекте, так, чтобы ее можно было найти и управлять ею.

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

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

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