В первой части этой статьи я рассмотрел простейшее применение форм Outlook при создании примера Help Desk приложения. В этой статье мы узнаем, как улучшить графический интерфейс форм и как использовать автоматизацию форм, для того чтобы сделать формы Outlook более доступными и полезными.
Если вы пропустили первую часть этой статьи, пожалуйста, прочтите Разработка форм Outlook (Часть 1)
Прокручивание элементов
В наши дни использование мыши стало настолько популярно, что лишь немногие используют клавиатуру, чтобы перемещаться по полям на форме, хотя это и быстрее.
Если вы тестировали форму, созданную в первой части, то вы могли легко убедиться, что использование Tab при прокручивании дает вам возможность перемещаться гораздо быстрее. Это происходит потому, что я не настроил порядок, в котором элементы должны прокручиваться.
За это отвечает свойство "TabIndex", и его можно увидеть среди Дополнительных Свойств (Advanced Properties) объекта.
Значение свойства "TabIndex" для поля Subject равно 1, что делает его первым элементов, когда вы пробегаете по форме. Теперь мы можем установить значение свойства "TabIndex" поля Room равным 2.
Подтверждение полей
Любая сложная форма имеет так называемое “Подтверждение полей”. Это значит, что форма проверяет, соответствуют ли поля стандартам. На пример, у вас есть форма для заказа расходных материалов для офиса. И вам, возможно, хочется ограничить максимальное количество, которое можно заказать. Или форма ввода пароля может потребовать ввести вас 6 или более символов.
Вы можете подтверждать поля в формах Outlook на вкладке Validation в свойствах полей.
Как Вы видите, я ввел простую формулу на имя поля, установив, что номер здания не должен быть больше 12. Вы можете установить и более сложные правила и добавить больше полей подтверждения и формул, используя кнопку "Edit".
Вы также можете ввести выводимое сообщение, как показано ниже.
После того, как вы войдете в форму, вы сможете увидеть работу подтверждений в действии:
Я выбрал простое сообщение, но Вы можете создать и более сложное и встроить в него поля таким же образом, как и в формулу подтверждения, используя скобки.
Поиски формы
Спроектировав форму, Вы гордо посмотрите на нее, опубликуете ее и затем начнете получать жалобы от пользователей, так как потребуется по меньше мере пять раз нажать на мышку, чтобы получить к ней доступ. Microsoft предоставляет несметное множество решений этой проблемы, ни одно из них правда не является легко применимым в предприятии.
Первое что Вы, возможно, захотите сделать, если у Вас есть несколько пользовательских форм – это добавить кнопку “Выбрать форму” на одну из инструментальных панелей Outlook.
Чтобы сделать это Вы должны зайти в Tools – Customize menu и перетащить "Choose Form" на одну из существующих у Вас панелей инструментов.
Конечно, это не самое лучшее решение для частого использования формы. Office Resource Kit (ORK) может делать это лучше, но этот инструмент, не смотря на кое-какие улучшения с годами, все же остается сложным и требует дополнительных знаний о своей работе и очень аккуратного использования. В больших компаниях, где уже установлен Office, применение ORK затрудняется тем, что он требует единой, специализируемой установки Office для своей работы.
Хотя все это может измениться в следующей версии Office, но в данное время Вы можете использовать для решения этой проблемы кое-какой программный код.
Первый шаг – это выяснить, как же называется Ваша форма. Outlook собирает формы по классам сообщений, которые начинаются с “IPM”, а затем следует иерархия создания формы.
На пример, наша форма была создана и использованием формы “Post” как ее модель, и поэтому будет называться "IPM.Post.Help Desk Call".
Теперь, когда мы знаем ее имя, мы можем создать макрос Outlook, который запустит нашу форму. Для того чтобы сделать это зайдите в меню Tools – Macros и создайте новый макрос. Имя макроса не может содержать пробелы и некоторые другие символы, так что лучше всего использовать простое имя.
Вот листинг программы:
Sub HelpDeskCall()
Set myFolder1 = Session.Folders("Public Folders")
Set myFolder2 = myFolder1.Folders("All Public Folders")
Set myFolder3 = myFolder2.Folders("Help Desk")
Set myItem = myFolder3.Items.Add("IPM.Post.Help Desk Call")
myItem.Display
End Sub
Как Вы видите, код достаточно прост. Он просто берет папку “Help Desk” и добавляет элемент help desk в нее, используя название нашей формы, и затем запускает ее.
Теперь Вы можете вручную добавить макрос в Вашу панель инструментов тем же способом, что мы добавили кнопку the “Choose Form”, используя Tool – Customize.
В режиме настройки Вы можете переименовать кнопку на что-то более понятное пользователям, щелкнув по ней правой кнопкой мыши. Вы также можете изменить ее картинку и внешний вид.
Это приближает нас к созданию дружелюбного приложения, но мы до сих пор далеки от возможности распространять его. Макросы VBA не могут распространяться так, как на то существуют технические причины, связанные с безопасностью. Вы можете запрограммировать макрос, используя среду программирования Visual Basic и создать встроенный в COM. Для этого Вам потребуются знания Visual Basic 6. Я видел программу, которая это делала, и поверьте мне, она была ужасна.
Поэтому, кажется самый простой выход – это запустить форму вне Outlook. Это покажется странным на первый взгляд, но это хорошо работает и это легко применить.
Первым делом Вам надо создать vbscript апплет, который запускает форму:
Set myOlApp = CreateObject("Outlook.Application")
Set myNameSpace = myOlApp.Application.GetNamespace("MAPI")
Set myfolder = myNameSpace.Folders("Public Folders").Folders("All Public folders").Folders("Help Desk")
Set myItem = myFolder.Items.Add("IPM.Post.Help Desk Call")
myItem.Display
На самом деле это более сложный VBA код, чем мы создали раньше. Сохраните этот код в “helpdeskcall.vbs”, и Вы можете распространять его среди всех своих пользователей. Для того чтобы его использовать создайте иконку быстрого запуска.
Для работы следующего скрипта я поместил “helpdeskcall.vbs” на сервер, доступный всем пользователям. Скрипт создает ярлык для скрипта запуска формы help desk.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("WScript.Shell")
Set colEnvironmentVariables = objShell.Environment("Volatile")
strQLFolder = colEnvironmentVariables.Item("APPDATA") & _
"\Microsoft\Internet Explorer\Quick Launch"
Set objShortcut = objShell.CreateShortcut(strQLFolder & "\HelpDesk.lnk")
objShortcut.TargetPath = "\\ex2003\netlogon\helpdeskcall.vbs" objShortcut.Save
Пожалуйста, заметьте, что вы можете поменять стандартную иконку vbscript на любую иконку, установив свойство IconLocation, как показано ниже:
objShortcut.
IconLocation = [path to icon], [icon number in icon library]
Заключение
Немного поиграв с графическим интерфейсом и применив пару строк кода, мы смогли улучшить доступность и используемость нашей простой формы. Форма сама до сих пор не содержит никакого кода, созданного нами, но она уже гораздо функциональней.
Добавить код в саму форму не сложно, так как VBA достаточно прост, и я покажу Вам как это делать в третье статье из этой серии, которая скоро выйдет.
Если вы пропустили первую часть этой статьи, пожалуйста прочтите , Разработка форм Outlook (Часть 1)



