Лекция 1. Макрорекордер: начало автоматизации
Лекция 1. Макрорекордер: начало автоматизации
Макрорекордер — универсальный помощник
Для автоматического создания макросов служит макрорекордер. Мы рассмотрим работу с ним на примере Microsoft Office Word 2007. Если отвлечься от VBA и говорить об обычной работе в Word, то окажется, что с помощью макрорекордера можно записывать действия, которые мы выполняем в программе. Например, записывается ввод и удаление текста, нажатие на кнопки вкладок, форматирование текста и так далее.
Предположим, необходимо отформатировать довольно большой документ в кратчайшие сроки. А именно — выделить особыми стилями некоторые слова. Всего этих стилей было четыре, а это значит, что наиболее доступный метод офисной автоматизации — средство Формат по образцу — помогло бы не слишком сильно. Ручное форматирование (или создание новых стилей) так же казалось слишком медленным. Но на помощь пришли макросы, созданные с помощью макрорекордера. Назначив форматирование каждым из стилей собственному сочетанию клавиш, значительно ускорим работу. А именно — правой рукой управляем мышью, перемещаясь по тексту и выделяя нужные слова, а левой нажимаем необходимые сочетания клавиш.
Алгоритм работы с макрорекордером выглядит так:
1. Включить запись макроса, настроив некоторые параметры;
2. Выполнить действия, которые вы хотели бы автоматизировать;
3. Остановить запись;
4. Использовать записанный макрос по необходимости.
Макрорекордер, помимо написания макросов, поможет вам лучше изучить возможности VBA и тонкости объектных моделей приложений Office (мы поговорим о них ниже). Например, вы не знаете точно, как именно реализовать то или иное действие программно, но знаете, как это делается вручную. Просто запишите макрос с нужными вам действиями, а потом откройте его в редакторе VBA. Вы сможете проанализировать полученный код, а возможно и включить его фрагменты в свое приложение.
Форматирование текста в MS Word
Примечание. Если при попытке выполнить примеры этого курса вы, столкнетесь с ошибкой "Can't find project or library", перейдите в редактор Visual Basic, выполните команду Tools > References, в появившемся окне найдите те элементы списка, которые помечены как MISSING, снимите флаги напротив их имен, и если в списке имеются свежие версии отсутствующих библиотек, отметьте их, и нажмите ОК. После этого пример будет запускаться.
Задание
Создать макрос в Microsoft Word, который автоматически форматирует выделенный текст следующим образом:
· Шрифт: Times New Roman, 14-й, курсивный
· Цвет шрифта: красный
Назначить вызов макроса по нажатию комбинации клавиш Alt + Ctrl + Shift + A и по нажатию настраиваемой кнопки.
Решение
Выделим первый участок текста, который нужно отформатировать.
Прежде чем записывать макрос, важно очень точно спланировать свои действия. Если вы что-то сделаете не так во время записи, неправильные действия будут записаны в макрос. Например, выделять текст нужно до начала записи. Иначе в макрос попадет команда выделения текста и каждый раз после запуска программа будет выделять текст, а нам это не нужно.
Выберем вкладку ленты Вид и нажмем на ней направленную вниз треугольную стрелку под надписью Макросы. В открывшемся меню нам нужна команда Запись макроса. Появится окно для настройки свойств макроса . Рассмотрим поля этого диалога.
Имя макроса: в это поле нужно ввести имя макроса. Имена макросов должны начинаться с буквы, не должны содержать пробелов. Желательно давать макросам какие-нибудь осмысленные имена. Например, Формат_Times_Красный.
Назначить макрос кнопке: диалоговое окно назначения макроса настраиваемой кнопке.
Назначить макрос клавишам: диалоговое окно назначения макроса сочетанию клавиш на клавиатуре.
В поле Макрос доступен для надо выбрать место сохранения макроса, которое определяет его доступность для различных документов. По умолчанию здесь выбран параметр Всех документов ( Normal.dotm ).
Normal.dotm —это общий шаблон, доступный для всех документов Microsoft Word. Если макрос будет сохранен в Normal.dotm — вы сможете запустить его из любого Word-документа. Не следует сохранять все записываемые вами макросы в Normal.dotm. Делайте это лишь тогда, когда вы точно уверены в том, что макрос понадобится вам в различных документах. Мы выберем в этом поле значение Документ 1 (документ). Именно так здесь называются еще не сохраненные документы. Выбрав этот пункт, мы сохраняем макрос в текущем документе, то есть сможем вызывать макрос лишь из этого документа.
В поле Описаниесодержится описание макроса. Вы вполне можете оставить его пустым.
Кнопка OK начинает запись макроса. Но до начала записи воспользуемся кнопкой Назначить макрос клавишам. Появится окно настройки комбинации клавиш для запуска макроса (рис. 1.1.).
Чтобы назначить макросу сочетание клавиш, нужно установить курсор в поле Новое сочетание клавиш и нажать нужное сочетание на клавиатуре. В случае, если это сочетание не назначено ранее для быстрого вызова каких-либо команд, под полем Текущие сочетания вы увидите надпись Текущее назначение: [нет]. Если вы увидите здесь что-нибудь другое — лучше всего поискать свободное сочетание. Иначе вы можете столкнуться с неожиданным поведением знакомых вам горячих клавиш.
Рис. 1.1.Настройка сочетания клавиш для запуска макроса
В поле Сохранить изменения в выберем Документ 1 — то есть наш документ, который мы в данный момент редактируем. По умолчанию здесь установлен уже знакомый вам Normal.dotm. Сохранять привязку сочетаний клавиш к макросам в Normal.dotm следует лишь в том случае, если вы, во-первых, на предыдущем шаге сохранили макрос в Normal.dotm, а во-вторых, хотите, чтобы данное сочетание работало во всех остальных документах MS Word, а не только в текущем документе.
Теперь нажмем на кнопку Назначить. Выбранное сочетание клавиш переместится в поле Текущие сочетания. Нажав кнопку Закрыть, мы завершаем настройку горячих клавиш для нашего будущего макроса и начинаем его запись.
В процессе записи макроса указатель мыши дополняется значком с изображением кассеты. Щелчок правой кнопкой не действует. Поэтому нам нужно отформатировать текст, пользуясь вкладками ленты Microsoft Word. Так и поступим. Настроим необходимые параметры форматирования, снова перейдем на вкладку Вид и нажмем там на кнопку Остановить запись
Обратите внимание на кнопку Пауза. С ее помощью можно приостановить запись макроса, выполнить какие-нибудь действия, которые не войдут в него, после чего возобновить запись.
После записи макроса самое время его протестировать. Для этого выделим текст и нажмем Ctrl + Alt + Shift + A. Если все сделано правильно — текст будет отформатирован.
Но мы выполнили не все части задания. Как вы помните, нужно было настроить запуск макроса с помощью кнопки.
Для этого нажмите кнопку настройки панели быстрого доступа (она находится справа от панели) и в появившемся меню выберите пункт Другие команды. Появится окно для настройки команд Microsoft Word. В списке Выбрать команды из выберите Макросы.
В поле, которое расположено ниже, появятся ссылки на доступные макросы. Выделите нужный и нажмите на кнопку Добавить>>. Ссылка на него появится в поле Настройка панели быстрого доступа. В списке настройки этого поля выберем документ, который мы в данный момент редактируем — тем самым мы внесем изменения лишь в панель быстрого доступа этого документа.
Рис. 1.2.Назначение макроса кнопке панели быстрого доступа
На этом можно завершить настройку. Однако, кнопка макроса, которая появится на панели быстрого доступа, будет выглядеть не слишком привлекательно. Поэтому выделим строку макроса в окне Настройка быстрого доступа и нажмем на кнопку Изменить. Появится окно настройки свойств кнопки макроса.
Здесь вам нужно выбрать понравившийся значок для кнопки макроса и ввести в поле Отображаемое имя текст, который будет появляться при наведении на кнопку вызова макроса указателя мыши. Вот, что получилось в итоге (рис. 1.3.).
Рис. 1.3.Кнопка для быстрого вызова макроса на панели быстрого запуска
Сохраняя файл Microsoft Word, содержащий макросы, обязательно убедитесь в том, что вы сохраняете его в формате .docm (Документ Word с поддержкой макросов ). Дело в том, что используемый по умолчанию формат .docx (Документ Word) не поддерживает макросы. Если вы сохраните документ с макросами в таком формате, результаты работы будут утеряны.
Теперь вы научились созданию макросов с помощью макрорекордера. Уже сейчас вы можете автоматизировать некоторые часто выполняемые операции. Например, ввод с клавиатуры больших повторяющихся участков текста.
Чтобы использовать макросы — свои и тем более созданные другими — вам, возможно, понадобится изменить настройки безопасности Microsoft Office.
Макросы и безопасность
Microsoft Office снабжен собственной системой безопасности, основная задача которой — противодействие проникновению макровирусов — вредоносных программ на языке VBA.
Макровирусы — это основная проблема, которую породил язык программирования, встроенный в офисные программы. Безопасность работы с макросами сводится к очень простому правилу: не следует разрешать выполнение макросов, если вы не знаете точно, для чего нужны эти макросы.
Если вы открываете документ, который содержит подозрительный, с точки зрения системы, макрос, при настройках безопасности по умолчанию этот макрос блокируется. Если нажать на кнопку Параметры, которая находится в правой части панели сообщений, появится окно настройки свойств макроса. С помощью этого окна мы можем либо разрешить выполнение макросов в открытом документе, выбрав пункт Включить это содержимое, либо запретить, выбрав Установить защиту от неизвестного содержимого.
Для настройки системы безопасности в Microsoft Word нажмите на кнопку Microsoft Office, далее — на кнопку Параметры Word. В левой части появившегося окна выберите пункт Центр управления безопасностью. На странице центра управления безопасностью нажмите кнопку Параметры центра управления безопасностью. Появится окно настройки параметров макросов.
Практика показывает, что при интенсивном использовании собственных макросов, удобнее и безопаснее всего использовать пункт, установленный по умолчанию — Отключить все макросы с уведомлением. Даже если сообщения системы безопасности кажутся вам слишком назойливыми — не стоит поддаваться искушению и активировать пункт Включить все макросы. Ведь так вы ставите вашу систему под угрозу. Даже используя антивирусное ПО, нельзя забывать о потенциальной опасности макросов.
Особый интерес представляет пункт Отключить все макросы кроме макросов с цифровой подписью. Активировав его, вы сможете спокойно запускать макросы, которые вы создали и подписали сами.
Задание
Создать макрос в Microsoft Excel, который предназначен для копирования выделенной строки из одного листа (пусть это будет некий прайс-лист) в текущую строку (начиная с выделенной ячейки) другого листа книги Excel. После работы макроса на экране должен быть отображен лист, с которого осуществлялось копирование.
Назначить вызов макроса по нажатию комбинации клавиш Ctrl + Й
Это задание можно рассматривать как создание автоматической "записной книжки" емкостью в одну запись.
Решение
Перед записью макроса выделим ячейки, из которых будем копировать данные. Далее перейдем на вкладку Вид и запустим с нее запись макроса (рис. 1.4.).
Рис. 1.4.Начало записи макроса в MS Excel
Настроить быстрый вызов макроса можно в том же окне, где задается имя макроса и место сохранения. Имя Excel- макросов подчиняется тем же законам, что и в MS Word, а в качестве горячих клавиш предлагается использовать клавишу в комбинации с Ctrl.
После начала записи щелкнем правой кнопкой мыши по выделенной области и выберем в появившемся меню пункт Копировать. Перейдем на лист Записная книжка и вставим скопированное туда командой Вставить с вкладки Главная. Далее – вернемся на лист Price и остановим запись.
Сохраняя книгу Microsoft Excel, содержащую макросы, убедитесь в том, что сохраняете ее в формате "Книга Excel с поддержкой макросов", то есть итоговый файл имеет расширение .xlsm.
Если макрос MS Excel понадобится вам не только в одном документе — сохраните его в Личной книге макросов — эта опция доступна в окне записи макроса при выборе места сохранения.
Наш макрос работает. Но скажите, много ли от него пользы? "Записная книжка" емкостью в одну запись (ведь при копировании новых данных, старые попросту затираются) может найти практическое применение, но оно очень ограничено.
Для того, чтобы пользоваться возможностями приложений на полную мощность, не обойтись без полноценного программирования.
Управление макросами
Вкладка ленты Вид в Microsoft Word и Microsoft Excel содержит кнопку Макросы. Она расположена над раскрывающимся меню, которым мы пользовались до сих пор. Воспользуемся ею. Откройте один из документов MS Word, содержащий макросы, и нажмите на эту кнопку. Появится окно Макрос (рис. 1.5.), которое предназначено для управления макросами.
Рис. 1.5.Окно управления макросами в MS Word
В данном случае в окне Макрос отображается список макросов из открытого документа. Чтобы посмотреть макросы, находящиеся в других местах (например, в Normal.dotm ), воспользуйтесь списком Макросы из.
Имя выделенного макроса (это тот самый макрос, который мы записали выше) отображается в строке Имя. Именно с этим макросом мы можем совершать различные действия в данном окне. В частности, здесь доступны следующие варианты:
Выполнить — выполняет макрос. Вместо того, чтобы пользоваться кнопкой быстрого вызова макроса или настраиваемой комбинацией клавиш, для выполнения макроса можно воспользоваться этой кнопкой. Это удобно для запуска макросов, которые используются очень редко.
Изменить — нажав на эту кнопку, вы откроете редактор Visual Basic, который позволяет изменять макросы и создавать собственные программы.
Создать — наберите в строке Имя желаемое имя нового макроса и нажмите на эту кнопку — система создаст новый пустой макрос и откроет его в редакторе.
Удалить — удаление макроса.
Редактор Visual Basic
Задание
Записать в Microsoft Word макрос, который автоматически вводит в позицию курсора слово "Привет". Отредактировать макрос вручную таким образом, чтобы он выводил "До свидания".
Решение
Начнем запись макроса (Назовем его "Privet"), введем с клавиатуры слово "Привет", после чего остановим запись.
Откроем окно Макросынажатием соответствующей кнопки на панели Вид, выберем наш макрос и нажмем на кнопку Изменить. Перед нами откроется окно редактора Visual Basic с открытым в нем макросом
Окно редактора включает в себя несколько рабочих областей - окон, служащих для выполнения различных действий.
Code (Код) - это окно, в котором пишут тексты VBA-программ и редактируют макросы. Эта область расположена справа и занимает большую часть окна редактора.
Project Explorer (Проводник Проекта) - это окно обычно открыто в левой верхней части окна редактора. Оно отображает информацию о компонентах проекта, позволяет быстро перемещаться между компонентами.
Properties (Свойства) - отображает свойства выделенного объекта. Обычно располагается в левой нижней части рабочего окна.
Ниже перечислены другие рабочие области, которых мы коснемся в дальнейшем изложении.
UserForm (Форма) - служит для редактирования пользовательской формы в визуальном режиме.
Toolbox (Панель элементов управления) - содержит набор элементов управления (например - это кнопки, поля ввода и т.д.), которые можно добавлять на формы или в документы.
Object Browser (Обозреватель объектов) - служит для просмотра информации об объектах, доступных в данном приложении.
Watch, Locals, Immediate - окна, средства которых используются при отладке приложений.
Давайте изучим содержимое окна Code. Посмотрите на первую и последнюю строчку текста. Первая строчка выглядит так:
Sub Privet ()
Это - начало процедуры макроса. Процедура - это самостоятельный участок кода. Последняя строчка нашего макроса выглядит так:
End Sub
Получается, что все наши действия в ходе записи макроса описаны командами, находящимися между Sub и End Sub.
Сразу после первой строки макроса можно увидеть несколько строчек, начинающихся со значка ' (апостроф). Он указывает на то, что текст данной строки - это комментарий. Комментарии в текстах VBA-программ автоматически выделяются зеленым цветом. В нашем случае комментарии содержат информацию об имени макроса и тот текст, который мы вводили в качестве комментария к макросу.
Дальше начинается самое интересное - код, который автоматизирует ввод текста. В нашем случае полезная часть макроса состоит всего из одной строчки. Вот она:
Selection.TypeText Text:="Привет"
Попытаемся "перевести" текст этой программной строки на русский язык, учитывая, что Selection переводится как "выделение", Type - "печатать", Text - текст. Получается, что этой строкой мы даем компьютеру такую команду: "Напечатать в выделенной позиции текст "Привет"".
Как вы думаете, что нужно сделать с этой строчкой, чтобы программа вместо "Привет" вывела бы "До свидания"? Наверняка вы уже догадались, что для этого нужно лишь заменить текст, который расположен в кавычках.
В результате у нас получилась такая строка:
Selection.TypeText Text:="До свидания"
Многие начинающие программисты не придают значения точкам, запятым, скобкам и кавычкам, которые попадаются им в программе. Обычно это приводит к массе ошибок, которые вызывают у новичка недоумение. Поэтому будьте предельно внимательны, редактируя тексты программ.
Отредактируйте текст программы, закройте окно редактора (или, не закрывая его, перейдите в окно документа), и, установив курсор в желаемое место вставки текста, выполните макрос.
Лекция 3. VBA-редактор
Подробности об окне Project
Окно Project служит для навигации по проекту (рис. 3.1.).
Рис. 3.1.Окно Project
Каждый открытый документ представляет собой отдельный проект. На рис. 3.1. вы можете видеть окно Project для только что созданного документа MS Word. В проект добавлена форма.
Проект имеет иерархическую структуру. Так, в разделе Microsoft Word Objects (Объекты Microsoft Word) мы можем видеть объект ThisDocument (Этот документ), то есть документ, который мы создали. В разделе Forms (Формы) мы можем видеть объект UserForm1 — только что вставленную в проект форму.
Чтобы отобразить объект, достаточно сделать по нему двойной щелчок или нажать на кнопку View Object (вторая слева в верхней части окна Project ). Чтобы просмотреть код объекта надо нажать на кнопку View Code (крайняя левая кнопка).
Щелкнув правой кнопкой мыши по названию проекта, можно увидеть его контекстное меню. Это меню содержит наиболее часто используемые команды для работы с проектами. В частности, особый интерес представляет команда Project Properties (Свойства проекта).
В окне Project Properties обратите внимание на вкладку Protection (Защита). Она позволяет защитить проект от просмотра и закрыть его паролем.
Для защиты проекта от просмотра установите галочку в поле Lock project for viewing(Закрыть проект от просмотра), для закрытия проекта паролем, введите в поля Password(Пароль) и Confirm password(Подтвердить пароль) пароль.
Существует специальное ПО, которое позволяет восстанавливать забытые пароли к VBA-проектам. оно может помочь получить доступ в проект не только законным владельцам, но и злоумышленникам. Поэтому если вы, например, передаете кому-то ценный VBA-проект по слабо защищенным каналам связи — лучше зашифруйте весь файл с помощью какой-нибудь программы шифрования.
Еще одна полезная возможность, связанная с управлением проектами – подписывание проектов.
Прежде чем подписать проект, нужно создать цифровой сертификат для проектов VBA. Чтобы создать его, пройдите по пути Пуск • Все программы • Microsoft Office • Microsoft Office Tools • Digital Certificate for VBA Projects. Введите в появившемся окне имя для сертификата.
Чтобы теперь подписать проект, выделите его в окне Project и воспользуйтесь командой Tools • Digital Signature. В появившемся окне нажмите на кнопку Выбрать — появится окно для выбора сертификата. Выберите из этого окна интересующий вас сертификат. В нашем случае здесь присутствует лишь один, заранее созданный, сертификат. Вот как выглядит окно цифровой подписи после завершения выбора (рис. 3.2.)
Рис. 3.2.Цифровая подпись проектов
автоматически создаваемый сертификат считается надежным лишь на том компьютере, в хранилище сертификатов которого он находится. Если вы подпишите свои проекты, вы сможете один раз разрешить их использование, выбрав соответствующий пункт в окне настройки безопасности макросов. Это позволит, с одной стороны, не отвлекаться на постоянные запросы системы безопасности, а с другой — не понижать безопасность системы, разрешая выполнение всех макросов.
Формы и элементы управления
Создайте новый документ Microsoft Word и откройте редактор VBA. Вставьте в проект новую форму командой Insert • User Form (Вставка • Форма).
Форма — это пустая заготовка будущего диалогового окна вашего приложения.
По краям новой формы вы можете видеть маркеры выделения. С их помощью можно настраивать ее размеры.
Обратите внимание на окно Properties (Свойства). Для выбора объекта, свойства которого будут отображены в этом окне, нужно либо выделить объект, либо указать его в списке, который находится в верхней части окна Properties.
Окно Toolbox (Элементы управления) содержит элементы управления, которые можно добавлять на форму. Элементы управления — это все то, что служит для управления работой программ. Например: кнопки, поля ввода, полосы прокрутки и так далее.
Для того, чтобы добавить элемент управления на форму, нажмите в окне Toolbox кнопку с изображением этого элемента и выделите мышью ту область на форме, которую он должен занять
Нажмем на кнопку Toolbox'а с изображением кнопки и добавим новую кнопку на форму. Вот, что у нас получилось (рис. 3.3.).
Рис. 3.3.Кнопка, добавленная на форму
Вокруг кнопки вы можете видеть маркеры выделения, которые служат для изменения ее размера. "Схватив" элемент управления мышью, вы можете перемещать его по форме.
Панель инструментов
На панели инструментов Toolbox в редакторе VBA отображается лишь их малая часть. Для того чтобы просмотреть установленные в системе элементы и вывести кнопки для их вызова на панель инструментов, щелкните правой кнопкой мыши по панели и в появившемся меню выберите пункт Additional Control (Дополнительные элементы управления).
Даже если вы специально не устанавливали пакеты элементов – вы увидите большой список . Найдите в этом окне Календарь 12.0. Выделим его (для этого надо включить флажок напротив названия) и нажмем OK — на панели инструментов VBA появится новый элемент управления.
Теперь рассмотрим наиболее часто используемые элементы управления и особенности их применения.
Form
Вы уже знакомы с формами. Они содержат в себе другие элементы управления.
Среди событий форм можно отметить следующие.
Initialize (Инициализация) — возникает перед появлением формы. На этом этапе форма готовится к открытию и в обработчик этого события обычно включают операции для настройки элементов управления, открытия внешних файлов.
Error (Ошибка) — возникает при появлении ошибки в форме.
Terminate (Завершение) — возникает при обычном завершении работы формы. В обработчик этого события можно добавить команды записи протоколов работы приложений, удаления временных файлов, в которых нуждалось приложение.
Если вы сомневаетесь в том, когда именно происходит то или иное событие — проведите небольшой эксперимент. Создайте обработчик этого события и добавьте в него функцию MsgBox с какой-нибудь характерной фразой. Когда произойдет событие, вызывающее данный обработчик, появится окно сообщения и вы точно будете знать, на что именно реагирует обработчик.
Если в вашем проекте имеется несколько форм, вам понадобится работать с ними, показывая и скрывая их при необходимости. Чтобы отобразить форму, воспользуйтесь методом Show (Показать). Для скрытия формы используйте метод Hide (Скрыть).
Выполним небольшое упражнение. Создадим несколько форм и настроим навигацию между ними. Одна из форм будет служить главной — из нее вызываются остальные формы.
Создайте новый документ Microsoft Word, откройте редактор кода и добавьте в проект три формы. Настройте их свойства следующим образом (табл. 4.1.).
Таблица 4.1. Свойства форм | |||
Свойство | Форма №1 | Форма №2 | Форма №3 |
Name | frm_Main | frm_First | frm_Second |
Caption | Главная форма | Первая форма | Вторая форма |
Добавьте на форму frm_Main две кнопки. Одну из них назовите cmd_Call_F1 и подпишите ее "Вызвать первую форму", вторую – cmd_Call_F2 с подписью "Вызвать вторую форму". Эти кнопки должны скрывать форму frm_Main, и, соответственно, вызывать frm_First и frm_Second.
На форму frm_First добавьте кнопку cmd_First с надписью "На главную". Нажатие на эту кнопку должно скрывать frm_First и отображать frm_Main. Аналогичную кнопку (только с именем cmd_Second ) добавьте наfrm_Second.
Вот как (рис. 4.1.) выглядит окно проекта.
Рис. 4.1.Формы в окне проекта
Создадим обработчик события Initialize для формы frm_Main. Добавим в него команду вывода окна сообщения с надписью "Добро пожаловать в программу.
На рис. 4.2. вы можете видеть окно кода формы frm_Main после создания необходимых обработчиков событий.
Рис. 4.2.Обработчики событий в форме frm_Main
Обработчик события Click для кнопки cmd_First формы frm_First выглядит так (листинг 4.1, комментарии опущены).
frm_First.Hidefrm_Main.ShowЛистинг 4.1. Обработчик Click для cmd_First
Обработчик события Click кнопки cmd_Second формы frm_Second выглядит аналогично — главное отличие — он скрывает frm_Second
Поэкспериментируйте с этой программой, попробуйте назначить формам другие обработчики событий, выводящие сообщения и посмотрите, что из этого выйдет. Подобная схема работы с формами используется в реальных проектах — тогда, когда нужно организовать взаимодействие пользователя с несколькими формами.
Label
Элемент управления label (Метка) используется лишь для вывода подписей к другим элементам управления. Обычно ему не назначают никаких обработчиков событий
CommandButton
Элемент управления CommandButton (Кнопка) обычно используют для выполнения каких-либо команд. Основное событие кнопки — Click (Щелчок). Оно генерируется при щелчке по кнопке.
Кнопка может воспринимать и другие события — всего их больше десятка. Обычно об их предназначении можно узнать из их же названий. Например, очевидно, что название события MouseMove переводится как "Перемещение указателя мыши". Это событие будет генерироваться всякий раз, когда над кнопкой будет перемещаться указатель мыши. Ниже мы напишем программу, работа которой будет основана на этом событии.
TextBox
TextBox — текстовое поле. Обычно используется для ввода данных пользователем. Текст, который введен в текстовое поле, можно получить или изменить, воспользовавшись его свойством Text. Текстовым полям нечасто назначают события, однако, например, для проверки введенных данных сразу после ввода, можно использовать событие Change (Изменение). Оно генерируется всякий раз, когда содержимое поля меняется.
Рассмотрим пример. Создадим форму и добавим на нее два элемента управления — текстовое поле txt_First и надпись lbl_First. Установим у lbl_First свойство BorderStyle в fmBorderStyleSingle — благодаря этому вокруг надписи будет отображаться граница. Можете так же добавить пару пояснительных надписей к txt_First и lbl_First.
Сделаем двойной щелчок по текстовому полю. Откроется окно редактора кода с открытым обработчиком события Change. Добавим в обработчик такой код:
lbl_First.Caption = txt_First.TextLengthВам знакомы почти все элементы этого кода кроме свойства текстового поля TextLength. Это свойство позволяет узнать, сколько символов содержится в поле. Запустите программу. Попытайтесь ввести что-нибудь в поле с клавиатуры — по мере ввода символов в текстовое поле, их количество будет отображаться на lbl_First (рис. 4.43.).
Рис. 4.3.Работа с текстовым полем
ComboBox
ComboBox — поле со списком. Используется для хранения списков значений. Поле следует заполнить перед использованием. Для добавления новых значений используется метод AddItem (Добавить элемент). Обычно вызовы этого метода помещают в обработчик события Initialize формы, на которой расположено поле.
Для очистки поля можно использовать метод Clear (Очистить).
После того, как пользователь выбрал один из параметров поля, считать выбранное значение можно, воспользовавшись свойством Value.
После того, как пользователь сделал выбор из поля со списком, выбранное значение обрабатывается по нажатию какой-либо кнопки. Можно также воспользоваться событием Change (Изменение).
Рассмотрим пример использования элемента управления ComboBox. Заполним его списком фамилий, а при выборе фамилии из списка, будем выводить ее в окне сообщения.
Создадим форму frm_Main, расположим на ней поле со списком, назовем его cbo_First. Теперь создадим обработчик события Initialize для frm_Main и добавим туда такой код (листинг 4.2):
cbo_First.AddItem ("Иванов")cbo_First.AddItem ("Петров")cbo_First.AddItem ("Сидоров")cbo_First.AddItem ("Васильев")Листинг 4.2. Код обработчика события Initialize для frm_Main
Создадим обработчик события Change для cbo_First и добавим в него команду вывода сообщения:
MsgBox (cbo_First.Value)Теперь запустим форму (рис. 4.4.). При нажатии на кнопку с треугольником, поле раскрывается, при выборе одной из строк поля, ее значение отображается в окне сообщения.
Рис. 4.4.Работа с ComboBox
ListBox
ListBox — список. Обычно используется для представления списков данных.
Работа с ListBox аналогична работе с ComboBox. На рис. 4.5. вы можете видеть форму с расположенным на ней списком, реализующую ту же функциональность, что и в примере к полю со списком.
Рис. 4.5.Работа с ListBox
CheckBox
CheckBox — флажок. Используется для включения и отключения каких-либо опций. Элемент управления представляет собой поле, где можно устанавливать и снимать флажок и надпись, где обычно выводится название и назначение флажка.
Если флажок установлен — его свойство Value (Значение) устанавливается в True (Истина), если не установлен — в False (Ложь). Для того чтобы программно установить или снять флажок, можно воспользоваться его свойством Value, приравняв ему True или False, соответственно.
Еще одно важное свойство флажка — TripleState. Если оно включено — флажок помимо True или False может иметь значение Null, которое можно интерпретировать как "Пустой флажок". Null-флажок нельзя модифицировать — он закрашен серым цветом.
Сами по себе, без использования специальных конструкций языка, флажки приносят мало пользы. Эффективно работать с ними можно, используя операторы принятия решений.
С флажком можно сопоставить событие Change (Изменить). Оно выполняется всякий раз при установке или снятии флажка.
Рассмотрим пример работы с флажками. Создадим форму frm_First и разместим на ней три флажка – chk_1, chk_2 и chk_3. Добавим на форму пару кнопок – cmd_SetAll с надписью "Установить все флажки" и cmd_ClearAll с надписью "Снять все флажки". Точно так же, можно создать кнопку, которая устанавливает определенный набор флажков из всех, реализуя тем самым какую-нибудь особенную настройку программы.
Добавим обработчик события Click для cmd_SetAll (листинг 4.3). Если попытаться выразить обычным языком то, что должно произойти по нажатию этой кнопки, то получится следующее: "Установить все три флажка, то есть, сделать их параметр Value равным True".
chk_1.Value = Truechk_2.Value = Truechk_3.Value = TrueЛистинг 4.3. Обработчик события Click для cmd_SetAll
Рассуждая аналогично, пишем код для события Click кнопки cmd_ClearAll (листинг 4.4). Очевидно, что единственное его отличие от предыдущего кода заключается в смене True на False.
chk_1.Value = Falsechk_2.Value = Falsechk_3.Value = FalseЛистинг 4.4. Обработчик события Click для cmd_ClearAll
На рис. 4.76. вы можете видеть запущенную форму.
Рис. 4.6.Интерфейс с использованием CheckBox
OptionButton
OptionButton — радиокнопка. Радиокнопки обычно используются группами, а в группе может быть выбрана лишь одна кнопка. Это напоминает выбор одной радиостанции с помощью одной из кнопок на радиоприемнике.
Основное свойство радиокнопки — это Value (Значение) — если оно равно False (Ложь) — радиокнопка не выбрана, если True (Истина) — выбрана. Свойство TripleState позволяет присваивать элементу управления параметр Null, который, как в случае с флажками, блокирует элемент.
Все радиокнопки, расположенные на одной форме, автоматически объединяются в одну группу. Поэтому из всех этих кнопок выбрана может быть лишь одна. Как же быть, если на форме надо расположить несколько групп таких кнопок? Ответ на этот вопрос кроется в использовании так называемых фреймов или рамок (элемент управления Frame ). Радиокнопки, размещенные в пределах рамки, обрабатываются отдельно от кнопок на других рамках или на формах.
Frame
Frame — рамка. Рамки обычно используют для группировки объектов. Например, на форме может быть расположено несколько групп элементов управления, выполняющих различные функции. Логично будет сгруппировать их с помощью рамок. Для этого нужно создать на форм