Разработка приложения


В предыдущих главах мы познакомились с разработкой форм, основами языка программирования VBA и объектной моделью Outlook. Знание этих азов необходимо для создания приложений Outlook, но без хорошего практического примера, закрепляющего и подтверждающего теорию, все это теряет смысл.
Теперь пришла пора приступить к созданию своих собственных приложений на VBA с использованием Microsoft Outlook в качестве среды их разработки. Одним из наиболее простых и эффективных способов научиться программированию является знакомство с подходящими примерами — небольшими задачами, на которых видны основные приемы решения типичных проблем разработки приложений.
В этой главе мы познакомимся с таким примером — простым приложением для создания типовой задачи Outlook редактором издательства. Нам предстоит написать несколько программ на VBA. В то же время нам не придется программировать все необходимое для работы приложения "с нуля": окна, панели инструментов, отправку сообщений — это будет возложено на стандартные средства Outlook. Мы же продемонстрируем, как разрабатывается пользовательский интерфейс приложения — диалоговые окна, содержащие самые различные элементы управления: поля ввода, раскрывающиеся списки, кнопки и т. д.
Постановка задачи
Работая над задачей любой сложности, необходимо четко представлять ее условия, цель, а также возможные способы решения. Ибо несогласованность и абстрактность требований может привести к затягиванию сроков реализации проекта или просто его к невыполнению. Итак, обозначим наши условия
Условие. Есть редактор издательства, одной из частных задач которого является подписание договора с автором и отслеживание хода его работы над книгой. Помимо этого, известно, что существует четыре серии книг, причем их названия могут изменяться. Также известно, что для всех писателей имеются контакты, хранящиеся в папке "Писатели".
Цель. Автоматизировать процесс работы редактора.
Способы решения. Одним из возможных способов решения является использование задач Outlook, которые абсолютно вписываются в рамки поставленного условия. Но создание однотипных задач вручную ведет к появлению ошибок и неоднозначности. Таким образом, ограничивая, с одной стороны, редактирование задачи и беря контроль над ее созданием, мы, с другой стороны, унифицируем процедуру работы редактора.
На изображена панель задач с однотипными задачами, сгенерированными нашим приложением.

Итак, задача поставлена, и мы переходим к ее программной реализации. Начнем, с разработки формы (диалогового окна).
Проектирование диалогового окна
Для создания задачи и заполнения ее информационных полей необходимо открыть диалоговое окно, с помощью которого можно будет указать тип серии, выбрать автора, а также задать название книги и срок ее написания.
Для проектирования диалогового окна нам потребуется создать пользовательскую форму, на которую помещаются нужные элементы управления — раскрывающиеся списки, поля вода, кнопки, а затем написать процедуры обработки событий, связанных с этими элементами управления: что должно происходить при открытии окна, при вводе данных в поле ввода, при нажатии кнопки, при выборе элемента раскрывающегося списка и т. д.
В этом примере мы продемонстрируем создание и использование самых разных элементов управления: не только обычных полей ввода и кнопок, но и более сложных элементов, например раскрывающихся списков.
Начнем с того, что откроем проект VBA и вставим в него новую пользовательскую форму.
Создание пользовательской формы
> Сервис > Макрос > Редактор Visual Basic
{В окне VBE}
> Insert > UserForm
При этом открывается окно разработки пользовательской формы с пустой пока пользовательской формой. Теперь предстоит подобрать нужные размеры будущего диалогового окна и поместить на него нужные элементы управления. Для этого откройте соответствующую панель инструментов.
Открытие панели инструментов Too/box (Элементы управления)
> View > Toolbox
Дальнейший процесс проектирования пользовательского диалога состоит в том, что вы просто щелчком мыши выбираете кнопку нужного элемента управления на панели Toolbox, а затем "рисуете" этот элемент в пользовательской форме, используя технику "протаскивания" мыши. Надо установить указатель мыши на то место, где должен располагаться верхний левый угол создаваемого элемента управления, затем нажать левую кнопку мыши, и, удерживая ее нажатой, растянуть рамку до того места, где должен располагаться правый нижний угол, а затем отпустить кнопку мыши.
После того как элемент управления помещен в кадр диалога, вы можете перемещать его, изменять его размеры или даже удалить его. Щелчок по элементу управления выделяет его, после чего можно воздействовать на выделенный элемент. Если удерживать нажатой клавишу <Ctrl> во время выполнения щелчков по элементам управления, то таким образом можно будет выделить несколько элементов управления одновременно. Если же во время щелчков мышью вы будете удерживать нажатой клавишу <Shift>, то выделятся сразу все элементы управления, расположенные между теми двумя, по которым сделаны щелчки. Наконец, можно просто растянуть рамку выделения над теми элементами управления, которые вы хотите выделить.
Перетаскивание элемента управления (или сразу нескольких выделенных элементов) перемещает его в пределах пользовательской формы. Перетаскивание одного из маркеров выделения позволяет изменить размеры выделенного элемента или сразу нескольких выделенных элементов. Например, если выделить несколько элементов управления, а затем установить указатель мыши над правым маркером выделения и протащить его чуть дальше вправо, можно увеличить размеры всех выделенных элементов разом на одинаковую величину. Наконец, нажатие клавиши <Delete> удаляет все выделенные элементы.
Попробуйте подготовить представленную на рисунке пользовательскую форму для диалогового окна. Для этого надо поместить в диалоговое окно два раскрывающихся списка (comboBox), одно поле ввода (TextBox), один рисунок (image), одну кнопку(CommandButton) и наконец десяток текстовых надписей (Label), служащих для пояснения назначения активных элементов управления, на которые может воздействовать пользе-, ватель во время работы программы.

Для того чтобы ввести текст надписи, сначала щелкните по этой надписи, чтобы выделить ее, затем сделайте второй щелчок, чтобы войти в режим редактирования. Теперь удалите стандартный текст серия и введите нужный текст. Таким же образом можно задать значения по умолчанию для активных элементов диалогового окна, например для полей ввода.
Можно также изменить текст надписи с помощью панели свойств элементов управления — таким же образом, как и многие другие свойства этих элементов. Однако изменение свойств элементов управления с помощью панели свойств заслуживает особого разговора — мы посвятим этому следующий раздел.
Для четкой расстановки элементов управления можно воспользоваться как сеткой диалогового окна, так и командами меню Format. Например, в приведенном ниже примере мы выровняли все текстовые поля и поля редактирования по левому краю.
Форматирование элементов управления
Номер главы
<Ctrl> + Серия
<Ctrl> + Раскрывающийся список
<Ctrl> + Название
<Ctrl> + Длительность проекта
{Трое из элементов имеют черные маркеры выделения, а "Длительность" —
былые. Именно по этому полю будет происходить выравнивание}
> Format > Align > Lefts
Когда все будет готово, вы можете посмотреть на то, как разработанное вами диалоговое окно будет выглядеть во время выполнения программы: для этого нажмите клавишу <F5>. Завершить тестовый просмотр диалогового окна позволяет кнопка закрытия в правом верхнем углу диалога.