Сапа
Здесь может быть ваша реклама
|

 Глава 7. Элементы управления и пользовательская форма

Глава 7. Элементы управления и пользовательская форма

Элементы управления

VBA обладает встроенным набором элементов управления. Используя этот набор и редактор форм не трудно создать любой пользовательский интерфейс, который будет удовлетворять всем требованиям, предъявляемым к интерфейсу в среде Windows. В данной главе дан обзор встроенных элементов управления VBA. Элементы управления являются объектами. Поэтому, как любые объекты, они обладают свойствами, методами и событиями. Элементы управления создаются при помощи панели инструментов Элементы управления (Control Toolbox) (рис. 7.1). На этой панели представлены кнопки, позволяющие конструировать элементы управления, а также кнопки вызова окна свойств, перехода в режим конструктора и редактор кода.

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация

Рис. 7.1. Панель инструментов Элементы управления

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

Большинство элементов управления можно располагать как на рабочем листе, так и в форме. Но существуют такие элементы управления, как RefEdit, Набор страниц и Набор вкладок, которые можно располагать только в форме. В табл. 7.1 приведен список основных элементов управления и соответствующих кнопок панели инструментов Элементы управления (Control Toolbox).

Таблица 7.1. Панель инструментов Элементы управления

     
 

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

Имя

Кнопка для создания элемента

 
 

Поле Надпись

TextBox Label

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
  
 

Кнопка

CommandButton

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Список

ListBox

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Поле со списком

ComboBox

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Полоса прокрутки

ScrollBar

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Счетчик

SpinButton

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Переключатель

OptionButton

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Флажок

CheckBox

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Выключатель

ToggleButton

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Рамка

Frame

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Рисунок

Image

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

RefEdit

RefEdit

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Набор страниц

MultiPage

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
 

Набор вкладок

TabStrip

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация
 
     

Для размещения элемента управления на листе или в форме нажмите соответствующую кнопку панели инструментов Элементы управления (Control Toolbox) и с помощью мыши перетащите рамку элемента управления в нужное место. После этого элемент управления можно перемещать, изменять его размеры, копировать в буфер обмена и вставлять из буфера обмена.

Режим конструктора

Для удобства работы с элементами управления в период их конструирования в Excel введен режим конструктора, который активизируется нажатием кнопки

Режим конструктора (Design Mode) панели инструментов Элементыуправления (Control Toolbox). В режиме конструктора отключена реакция элемента управления на события. Поэтому при включенном режиме конструктора можно видоизменять элемент управления и задавать его свойства. На рис. 7.2 показано создание элемента управления CommandButton (кнопка) на рабочем листе. После того как пользователь решит, что созданный элемент управления имеет тот вид, который ему нужен, и все требуемые свойства элемента управления установлены, он должен отключить режим конструктора повторным нажатием кнопки Режим конструктора (Design Mode).

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация

Рис. 7.2. Создание элемента управления CommandButton на рабочем листе в режиме конструктора

Установка свойств элемента управления

Для установки свойств элемента управления вручную при его конструировании необходимо выделить элемент управления и нажать кнопку Свойства (Properties) панели инструментов Элементы управления (Control

ТоoolBох). На экране отобразится диалоговое окно Свойства (Properties) (рис. 7.3). Оно аналогично окну Свойства (Properties) редактора Visual Basic. Вручную при помощи этого окна обычно устанавливается свойство Caption, возвращающее отображаемый текст элемента управления. На рис. 7.3 значение свойства Caption элемента управление CommandButton изменено с установленного ПО умолчанию (CommandButtonl) на текст Нажми меня. Кроме

того, внесены изменения в параметры свойства Font, устанавливающее шрифт выводимого на поверхности кнопки текста, а именно, увеличен размер шрифта с 8 до 12, шрифт MS sans serif заменен на courier New и изменено начертание букв с обычного на полужирное. Также свойство shadow установлено равным True, вместо False, как это имеет место по умолчанию. Свойство shadow устанавливает, отображается ли элемент управления с тенью или без нее.
Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация

Рис. 7.3. Диалоговое окно Свойства и элемент управления CommandButton с измененными свойствами Caption, Font и Shadow

Редактор кода

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

    
 

Click

Щелчок

 
 

DblClick

Двойной щелчок

 
 

GotFocus

Кнопка в фокусе

 
 

LostFocus

С кнопки снят фокус

 
    

Код обработки события записывается на листе модуля. Для активизации модуля в том месте, где надо ввести код по обработке события, связанного с выделенным элементом управления, или отредактировать уже написанный код достаточно нажать кнопку Исходный текст (View Code) панели инструментов Элементы управления (Control Toolbox).

Нажатие на кнопку Исходный текст (View Code) активизирует модуль с именем лист1, т. е. модуль, относящийся к рабочему листу, на котором создана кнопка (рис. 7.4). Вся рабочая книга, а также каждый рабочий лист, диаграмма или форма имеют связанные с ними модули кода. Кроме того, можно создать модули кода для макросов и модули класса.

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация

Рис. 7.4. Модуль кода и окно Проект

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

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

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

Private Sub CoimiandButtonl_Click ()

MsgBox "Ты нажал на меня"

End Sub

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация

Рис. 7.5. Диалоговое окно, отображаемое на экране при нажатии кнопки Нажми меня

Пользовательская форма UserForm

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

Семейство userForms является семейством, компоненты которого представляют все загруженные формы UserForm в приложении. Как и все семейства, UserForms имеет свойства count (возвращает число компонентов в семействе) и item (возвращает определенный компонент семейства), а также метод Add (добавляет к семейству новый компонент).

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

    
 

Name

Возвращает имя пользовательской формы

 
 

Caption

Возвращает текст, отображаемый в строке заголовка формы

 
 

BackColor

Возвращает цвет фона формы

 
 

BorderStyle

Устанавливает тип границы

 
 

Picture

Указывает рисунок, отображаемый как фон формы

 
 

Left И Top

Возвращают местоположение верхнего левого угла формы в пунктах

 
 

Height И Width

Возвращают высоту и ширину формы в пунктах

 
 

StartUpPosition

Возвращает значение, определяющее положение формы при ее первом отображении на экране.

Допустимые значения:

  • Manual (начальное значение не устанавливается),
  • CenterOwner (выравнивание по центру объекта, к которому принадлежит форма)
  • CenterScreen (выравнивание по центру экрана)
  • windows Default (положение верхнего левого угла экрана)
 
    

Наиболее часто используемые методы объекта UserForm.

    
 

Show

Отображает форму на экране

 
 

Hide

Закрывает форму

 
 

Move

Изменяет положение и размер формы

 
 

PrintForm

Печатает изображение формы

 
    

 

Семейство Controls

Доступ к семейству всех элементов управления, расположенных в пользовательской форме UserForm, осуществляется с помощью семейства controls. Например, чтобы скрыть все элементы управления формы UserForm, можно использовать код, в котором свойству visible элемента управления, определяющему, отображается ли этот элемент на экране или нет, устанавливается значение False:

For Each Элемент in UserForml.Controls

Элемент.Visible = False Next Control

Создание пользовательской формы

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

    
 

Шаг 1

Выберите команду Сервис, Макрос, Редактор Visual Basic (Tools, Macro, Visual Basic) для того, чтобы перейти в редактор Visual Basic.

 
 

Шаг 2

Выберите команду Вставить User Form (Insert UserForm). В редакторе Visual Basic появятся:

  • Окно с пользовательской формой
  • Панель инструментов Панель элементов (Toolbox) (рис. 7.6).
 
    

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация

Рис. 7.6. Окно редактора Visual Basic с пользовательской формой и панелью элементов

    
 

ШагЗ

Используя диалоговое окно Свойства (Properties), отображаемое нажатием кнопки и Панель элементов (Toolbox), создайте из пользовательской формы диалоговое окно, показанное на рис. 7.7. Это окно состоит из трех кнопок и одного поля. Свойство Caption пользовательской формы определите равным Песнь о воробушке и бабочке, а кнопок — равными Первый акт, Второй акт и Третий акт.

 
 

Шаг 4

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

UserForml, в который введите Процедуру:

Private Sub CommandButtonl Click ()

TextBoxl .Text = "Воробышек за бабочкой прыг -прыг -прыг"

End Sub

для Обработки событий Нажатий кнопок

Второй акт и Третий акт в модуле UserForml введите следующие две процедуры:

Private Sub CommandButton2 Click () TextBoxl .Text = "Воробышек за бабочкой скок-скок-скок"

End Sub

Private Sub CommandButton3 Click () TextBoxl . Text = "Воробышек бабочку ням-ням-ням"

End Sub


 
    
Шаг 5Процесс создания диалогового окна и процедур, связанных с ним, завершен. Для того чтобы проверить, как работает созданная программа, нажмите кнопку Запуск подпрограммы/UserForm (Run). На экране на фоне рабочего листа отобразится диалоговое окно песнь о воробушке и бабочке. Для проверки функционирования кнопок нажмите, например, кнопку первый акт. В поле выведется сообщение Воробышек за бабочкой прыг-прыг-прыг (рис. 7.8). Для закрытия диалогового окна песнь о воробушке и бабочке нажмите системную кнопку, расположенную в верхней правой части строки заголовка диалогового окна.

 

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация

Рис. 7.7. Редактор Visual Basic с преобразованной пользовательской формой для создаваемого приложения

Visual Basic for Applications (VBA), программы, электронные книги, раскрутка, оптимизация

Рис. 7.8. Диалоговое окно Песнь о воробушке и бабочке

Общие свойства элементов управления

Приведем основные общие свойства элементов управления.

    
 

Name

Имя элемента управления

 
 

Caption

Надпись, отображаемая при элементе управления

 
 

AutoSize

Допустимые значения: True (устанавливает режим автоматического изменения размеров элемента управления так, чтобы на нем полностью помещался текст, присвоенный свойству Caption) и False (в противном случае)

 
 

Visible

Допустимые значения: True (элемент управления отображается во время выполнения программы) и False (в противном случае)

 
 

Enabled

Допустимые значения: True (пользователь вручную может управлять элементом управления) и False (в противном случае)

 
 

Height И Width

Устанавливают геометрические размеры объекта (высоту и ширину)

 
 

Left И Top

Устанавливают координаты верхнего левого угла элемента управления, определяющие его местоположение в форме

 
    
    
 

ControlTipText

Устанавливает текст в окне всплывающей подсказки, связанной с элементом управления. В следующем примере элементу управления CommandButtonl назначен текст всплывающей подсказки Это кнопка :

CommandButtonl . ControlTipText = "Это кнопка"

 
 

BackColor, ForeColor и BorderColor

Устанавливают цвет заднего и переднего плана элемента управления, также его границы

 
 

BackStyle

Устанавливает тип заднего фона

 
 

BorderStyle

Устанавливает тип границы. Допустимые значения:

  • fmBorderStyieSingle (граница в виде контура)
  • fmBorderStyieNone (граница невидима)
 
 

SpecialEf feet

Устанавливает тип границы. Отличается от свойства BorderStyle тем, что позволяет установить несколько типов, но одного цвета. BorderStyle позволяет установить только один тип, но различных цветов

 
 

Picture (создание картинки)

Внедряет картинку на элемент управления. Например, на поверхности кнопки картинка отображается с помощью следующей инструкции:

CommandButtonl . Picture = LoadPicture ( "с : my docKpyr . bmp" )

Функция LoadPicture (ПолноеИмяФайла) считывает графическое изображение. Аргумент ПолноеИмяФайла указывает полное имя графического файла

 
 

Picture (удаление картинки)

После того как картинка создана на элементе управления, иногда возникает необходимость ее удалить. Это легко достигается присвоением свойству Picture значения LoadPicture ("")

 
 

Tag

Используется для хранения дополнительной информации о форме или элементе управления, которая может быть в последующем востребована в программе. В следующем примере в пользовательской форме расположены три кнопки и одно поле. Свойство Tag каждого из этих элементов управления, за исключением второй
кнопки , установлено равным Показать. свойство Tag второй кнопки установлено равным спрятать. В цикле проверяется свойство Tag всех элементов управления и при инициализации диалогового окна отображаются только те элементы управления, у которых это свойство равно Показать . Private Sub UserForm Initialize)) Dim Элемент As Object CommandButtonl .Tag = "Показать"

 
    
    
 

ControlTipText

Устанавливает текст в окне всплывающей подсказки, связанной с элементом управления. В следующем примере элементу управления CommandButton1 назначен текст всплывающей подсказки это кнопка :

CommandButton1 .ControlTipText = "Это кнопка"

 
 

BackColor, ForeColor и BorderColor

Устанавливают цвет заднего и переднего плана элемента управления, также его границы

 
 

BackStyle

Устанавливает тип заднего фона

 
 

BorderStyle

Устанавливает тип границы. Допустимые значения:

  • fmBorderStyleSingle (граница в виде контура)
  • fmBorderstyieNone (граница невидима)
 
 

SpecialEf feet

Устанавливает тип границы. Отличается, от свойства BorderStyle тем, что позволяет установить несколько типов, но одного цвета. BorderStyle позволяет установить только один тип, но различных цветов

 
 

Picture

(создание картинки)

Внедряет картинку на элемент управления. Например, на поверхности кнопки картинка отображается с помощью следующей инструкции:

CommandButtoni . Picture = LoadPicture ( "с : my docKpyr . bmp" ) Функция LoadPicture (ПолноеИмяФайла) считывает графическое изображение. Аргумент ПолноеИмяФайла указывает полное имя графического файла

 
 

Picture

(удаление картинки)

После того как картинка создана на элементе управления, иногда возникает необходимость ее удалить. Это легко достигается присвоением свойству picture значения LoadPicture ("")

 
 

Tag

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

Private Sub UserForm Initialize ()

Dim Элемент As Object CommandButton1 . Tag = "Показать"

CommandButton2 .Tag = "Спрятать"

CommandButton3 .Tag = "Показать"

TextBoxl.Tag = "Показать"

For Each Элемент In Controls

If Элемент . Tag = "Показать" Then Элемент. Visible = True

Else Элемент .Visible = False

End If Next Элемент End Sub

 
    

Цвета, устанавливаемые свойствами BackColor, ForeColor и BorderColor, задаются шестнадцатеричными числами. Если эти свойства устанавливать не при помощи окна Свойства (Properties), а программно, вместо этих шестна-дцатеричных чисел удобнее использовать соответствующие постоянные, задающие цвета (табл. 7.2).

Таблица 7.2. Константы, задающие цвет

     
 

Константа

Значение

Цвет

 
 

vbBlack

0x0

Черный

 
 

vbRed

0xFF

Красный

 
 

vbGreen

0xFF00

Зеленый

 
 

vb Yellow

0xFFFF

 
MKPortal©2003-2008 mkportal.it
MultiBoard ©2007-2009 RusMKPortal