Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие по VBA(Курица).docx
Скачиваний:
29
Добавлен:
17.11.2019
Размер:
2.71 Mб
Скачать

12.9. Графическое окно в качестве контейнера

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

Обыкновенно графическое окно в качестве контейнера используют для того, чтобы создать панель инструментов или строку состояния. Туда можно поместить элементы управления Image, чтобы они выступали в качестве кнопок, или добавить метки для отображения сообщений о состоянии. Устанавливая значение свойства Align (Выровнять) равным тор (Верх), Bottom (Низ), Left (Лево) или Right (Право) можно "прикрепить" графическое окно к соответствующему краю формы.

12.10. Элемент управления Image

Картинки загружаются в объект image: во время разработки - назначением имени файла и пути свойству picture, во Время выполнения - посредством функции LoadPicture.

При изменении размеров элементы управления Image и Picture ведут себя по-разному. Установка значения свойства Autosize объекта picture равным True приводит к тому, что размеры Графического окна изменяются в соответствии с размерами выводимой картинки; если значение этого свойства равно False, то картинка усекается (видна только ее часть). Объект Image не имеет свойства Autosize, а обладает свойством Stretch (Растягивание). Присвоение этому свойству значения False (значение по умолчанию) приводит к тому, что размеры элемента управления изменяются в соответствии с размерами картинки. Если свойство stretch равно True, то размеры картинки изменяются до размеров элемента управления Image, что может привести к искажению картинки при ее отображении.

Объект image распознает событие click, что предоставляет удобный способ создания кнопок с картинками вместо кнопок с надписями. Объединение нескольких элементов управления Image в горизонтальном направлении вверху экрана (обычно внутри графического окна) в группу позволяет создавать панели инструментов приложения.

12.11. Другие элементы управления

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

В приложениях VBA можно использовать элементы управления АсtiveX, называвшихся ранее элементами управления OLE, точно таким же образом, как используются и стандартные элементами управления. В версии VB Professional и Enterprise включены некоторые элементы управления ActiveX, а также возможность построения собственных элементов управления программиста. Дополнительные элементы управления ActiveX для любых вообразимых целей можно приобрести у многочисленных поставщиков этого продукта.

В VBA также включены некоторые другие полезные элементы управления, которые, однако, не относятся ни к одной из рассмотренных выше групп;

- Элемент управления Timer (Таймер) можно использовать для создания в приложении события через повторяющийся интервал времени. Это удобно для выполнения кода без взаимодействия с пользователем.

- Элемент управления OLE Container (Контейнер OLE) обеспечивает легкий способ добавления в приложение возможностей связывания (linking) и внедрения (embedding). Посредством этого элемента управления можно обеспечить доступ к выполняемым функциям любого приложения, поддерживающего OLE технологию, например Microsoft Excel, Word и многих других.

- Элемент управления Common dialog (Общий диалог) добавляет в приложение встроенные диалоговые оюна (built-in dialog boxes) для выбора файлов, цветов, шрифтов, функций печати.

Объект, имеющий фокус, может получать вводимую пользователем с помощью мыши и клавиатуры информацию. В системе Microsoft Windows одновременно могут выполняться несколько приложений, но только у приложения, имеющего фокус, будет активный заголовок окна (active title bar) (выделен повышенной яркостью), и только оно может взаимодействовать с пользователем. На форме приложения VBA с несколькими полями ввода только поле ввода, имеющее фокус, будет отображать вводимый с клавиатуры текст.

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

Объекту можно передать фокус несколькими способами:

- Выбрать объект с помощью мыши во время выполнения

- Выбрать объект с помощью клавиши доступа во время выполнения

- Из программного кода с помощью метода set Focus

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

Объект может получить фокус, только если его свойства Enabled (Разрешено) и visible (Видимый) установлены в True. Свойство Enabled (Разрешено) позволяет объекту реагировать на инициированные пользователем события, например, ввод с клавиатуры и нажатие кнопок мыши. Свойство visible (Видимый) определяет, виден ли объект на экране.

Событие Validate элементов управления

Элементы управления имеют событие validate (Проверка достоверности), которое происходит перед тем, как элемент управления теряет фокус. Однако это событие возникает, только если свойство CausesValidation элемента управления перед получением фокуса имеет значение True. Событие Validate происходит перед потерей фокуса, поэтому во многих случаях оно более подходит для проверки достоверности данных (data validation), чем событие LostFocus.

Элементы управления, которые не могут получить фокус

Некоторые элементы управления не могут получать фокус. К ним относятся облегченные графические элементы управления:

- Frame (Рамка)

- Image (Изображение)

- Label (Метка)

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

Установка последовательности перехода

Последовательность перехода (tab order) - это последовательность перехода от одного элемента управления к другому при нажатии клавиши ТаЬ. У каждой формы своя последовательность перехода. Обычно она соответствует последовательности создания элементов управления.

Пусть создаются два поля ввода, Textl и Text2, а затем - кнопка управления Commandl. При запуске приложения поле ввода Textl имеет фокус.

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

Для изменения последовательности перехода необходимо установить свойство TabIndex элемента управления, которое определяет его позицию в последовательности перехода при нажатии клавиши Таb. По умолчанию значение свойства Tabindex элемента управления, созданного на форме первым, равно 0, элемента, созданного вторым - 1 и т. д. При изменении позиции элемента управления в последовательности переходов VBA автоматически перенумеровывает позиции других элементов управления, отражая вставку в другую позицию или удаление из последовательности перехода элемента управления. Например, если кнопка управления command1 в предыдущем примере становится первой в последовательности переходов, то значения свойства TabIndex других элементов управления автоматически перенумеровываются.

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

Для организации Windows диалога следует проделать следующие действия:

1. Функция InputBox (для ввода строки текста в программу c помощью окна диалога Windows):

- формат вызова функции:

Dim s As String

S=InputBox («приглашение»,[«значение по умолчанию»])

- функции преобразования чисел в типы данных:

CInt(s) – Integer, CLng(s) – Long, CSng(s) – Single, CDbl(s) – Double, CDate(s) – Date, Cvar – Variant

2. Функция MsgBox (для организации диалога с пользователем):

- формат вызова функции:

response=MsgBox(«Текст сообщения»,флаги, «Заголовок»)

- аргументы функции:

- «Текст сообщения» – сообщение пользователю,

- флаги – комбинация системных констант VBA для вывода кнопок и пиктограммы к сообщению (vb…) (таблица 13.):

Системные константы

Таблица 13.

Константа

Назначение

vbOKOnly

кнопка «ОК»

vbOKCancel

кнопки «ОК», «Отмена»

VbAbortRetryIgnore

кнопки «Отменить», «Повторить»,

«Игнорировать»

VbYesNoCancel

кнопки «Да», «Нет», «Отмена»

VbYesNo

кнопки «Да», «Нет»

VbRetryCancel

кнопки «Повторить», «Отмена»

VbCritical

пиктограмма

VbQuestion

пиктограмма

VbExclamation

пиктограмма

vbInformation

пиктограмма

- при закрытии диалога в переменную response возвращается код нажатой кнопки (таблица 14.):

Коды кнопок

Таблица 14.

Кнопка

Код

«ОК»

vbOK

«Cancel»

vbCancel

«Отменить»

vbAbort

«Повторить»

vbRetry

«Игнорировать»

vbIgnore

«Да»

vbYes

«Нет»

vbNo

- ”Заголовок” – текст для заголовка окна (необязателен).

Пример 1. Функция MsgBox (рис 38.)

Сообщение в модуле - Insert / Module

Рисунок 38. Применение функции MsgBox.

Пример 2. Вычисление и вывод суммы (рис. 39.)

Рисунок 39. Применение функции MsgBox.

Пример 3. Функция InputBox (рис. 40.)

Рисунок 40. Применение функции IntBox.