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

2.1.3. Внедренные и связанные эу

ЭУ OLE-контейнер - связывает или внедряет любой объект, позволяет выводить на экран и манипулировать данными из другого приложения для Windows. Используется для создания документо-центрированных приложений, в котором объединяются данные из различных приложений.

Основное различие между связанными и внедренными объектами опреде­ляется тем, где сохранены их данные. Например, данными, ассоциированны­ми со связанным объектом, управляет приложение, в котором эти данные созданы (приложение-сервер), и хранятся эти данные вне ЭУ OLE-контейне­ра; данные, ассоциированные со внедренным объектом, содержатся в OLE-контейнере и сохраняются вместе с приложением VB. Связанный объект в OLE-технологии - это linked object, а связь объекта с данными базы данных - bounded object.

Чтобы поместить объект в ЭУ OLE-контейнер, приложение-сервер долж­но быть зарегистрировано в системном реестре Windows. При установке приложения-сервера приложение должно зарегистрировать библиотеку объек­тных модулей в системе так, чтобы объекты приложения появились в окне диалога Insert Object. Просмотреть системный каталог можно с помощью Regedit.Exe.

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

Для создания внедренного объекта, кроме OLE-контейнера, можно до­бавить класс объекта к палитре объектов. Никакое другое приложение не имеет доступа к данным внедренного объекта. Данные внедренного объекта могут корректироваться только приложением-сервером.

Для создания внедренного объекта используется метод CreateEmbed:

OLE1.CreateEmbed “”, class.

Для создания связанного объекта используется метод CreateLink:

OLE1. CreateLink “источник_данных (имя_файла)”, “ссылка_на_область_в_объекте” (ссылкой могут быть, например, адреса ячеек).

Для копирования объекта в буфер обмена Copy, для вставки объекта из буфера Paste, для открытия объекта DoVerb, для закрытия объекта Close.

Для сохранения и чтения внедренных объектов методы SaveToFile и ReadFromFile. Объекты сохраняются только в открытых двоичных файлах.

2.2. Разработка форм

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

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

Основные свойства формы:

Caption определяет текст, выводимый в титульной строке формы;

Icon устанавливает пиктограмму минимизированной формы;

MaxButton и MinButton определяют, может ли форма быть максимизирована или минимизирована;

BorderStyle управляет режимом изменения размеров формы;

Left и Top определяют позицию формы относительно верхнего левого угла;

WindowState указывает, в каком состоянии будет запущена форма – в максимизированном, минимизированном или нормальном;

Height и Width определяют начальный размер формы;

Name содержит имя формы (по умолчанию Form1, Form2, и т.д.);

Wisible при значении True делает форму видимой.

Основные события формы:

Resize инициируется всякий раз, когда изменяются размеры формы;

Activate имеет место, когда форма становится активной;

Deactivate, имеет место, когда активной становится другая форма.

Метод Show делает форму видимой. Для работы с текстом и графикой используются методы Print, Line, Refresh и др.

По умолчанию, формой запуска назначается 1-я форма в проекте (первый код, который будет выполнен – это код процедуры события Form_Initialize этой формы). Для изменения формы запуска надо: 1) в меню Project выбрать Project Properties, 2) выбрать вкладку General, 3) в списке Startup Object выбрать форму, которая должна стать формой запуска, 4) нажать ОК.

Для запуска приложения без первоначальной загрузки какой-либо формы надо создать в стандартном модуле процедуру Sub под именем Main, которая, например, сначала загружает файл данных и лишь затем выводит на экран одну или несколько форм. Такая процедура не может располагаться в модуле формы. Для установки ее как объект запуска нужно выбрать Project Properties, открыть вкладку General, выбрать пункт Sub Main из списка Startup Object, дать имя проекту в окне Project Name и нажать ОК.

Событийно-управляемое приложение прекращает выполнение, когда все формы закрыты и не выполняется никакого кода. Однако после закрытия видимых форм может существовать скрытая, но не закрытая форма, т. е. приложение еще не завершено. Для выявления таких ситуаций можно использовать коллекцию Forms и оператор Unload, поместив, например в основную форму командную кнопку cmdQuit, которая будет правильно завершать приложение.

При наличии только одной формы процедура события Click может быть такой:

Private Sub cmdQuit_Click()

Unload Me

End Sub

где Мe – ключевое слов VB, неявно объявляемая переменная, доступная в любой процедуре модуля и предоставляющая текущий экземпляр класса (в данном случае – класса Form).

Процедура для выгрузки нескольких форм:

Private Sub Form_Unload

Dim i As integer

'выгрузка в цикле всех форм коллекции Forms

For i = 0 To Forms.Count - 1

Unload Forms(i)

Next

End Sub

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

Стили интерфейса:

1) однодокументный (SDI) – можно открыть только один документ, при этом нужно закрыть активный документ, чтобы открыть другой;

2) многодокументный (MDI) – поддерживает несколько форм внутри основной формы-контейнера; имеет в меню Window элементы для переключения между окнами или документами;

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

Для создания приложения MDI надо:

1) в меню File выбрать New Project;

2) в меню Project выбрать Add MDI Form, чтобы создать форму-контейнер (главную форму); создать подчиненную форму Form1 (создать новую форму или открыть существующую и установить ее свойство MDICHhild в True) и т. д.

Форма MDI (если была создана только одна подчиненная форма) представляет основной интерфейс приложения и порождает подчиненную форму, которая может служить, например, шаблоном для документа приложения. В период выполнения, когда пользователь открывает новый документ (это реализуется, как правило, командой File/New), приложение создает новый экземпляр подчиненной формы, что позволяет создавать столько подчиненных форм, сколько требуется создать документов.

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

Свойство ActiveControl возвращает активный ЭУ на активной подчиненной форме.

При загрузке подчиненной формы автоматически загружается и открывается главная форма. Однако при загрузке формы MDI подчиненные формы автоматически не загружаются.

Для выгрузки формы используется команда Close управляющего меню формы (кнопка слева от титульной строки) или команда File/Exit. При выгрузке формы вызывается событие QueryUnload (происходит до выгрузки формы).

Приложение MDI может иметь только одну форму MDI.

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

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

'пользовательский метод для формы Form1

Public Sub UserMethod()

. операторы

End Sub

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

Создание для формы нового свойства выполняется простым объявлением public переменной в модуле формы: Public FormNumber As Integer.

Устанавливать и возвращать значение FormNumber для Form1 из другого модуля можно следующими операторами:

Form1.FormNumber = 3

Text.Text = Form1.FormNumber

Для добавления к форме свойств можно также использовать процедуры Property, Let, Get, Set.

Разместив элементы в форме, надо задать порядок перехода от одно­го элемента к другому при нажатии Tab. Для этого: 1) открыть форму, дважды щелкнув по ее имени в окне проекта, 2) если требуемые элементы находятся в рамке, выбрать рамку, 3) выполнить ВИД-ПОСЛЕДОВАТЕЛЬНОСТЬ ПЕРЕХОДА (View-Tab Order) - появится диалоговое окно, 4) все элементы формы или выбранной рамки выводятся в списке - для задания порядка пе­рехода расставить требуемым образом названия элементов в списке, выде­лив имя объекта и нажав кнопку ВВЕРХ (Move Up) или ВНИЗ (Move Down),

5) нажать ОК и затем F5, 6) проверить, нажимая Tab.