Организация диалога. Объект Assistant
Методы объекта Assistant
В Office 2000 не произошло изменений в методах объекта Assistant. Он по-прежнему имеет следующие методы: StartWizard, ActivateWizard, EndWizard, Help, Move и ResetTips. Методы этого объекта используются реже, чем свойства и я ограничусь их кратким описанием.
Методы StartWizard, ActivateWizard, EndWizard применяются при создании пользовательских Мастеров. Первым должен быть запущен метод StartWizard, возвращающий идентификатор (длинное целое) Помощника. Этот идентификатор затем используется в методах ActivateWizard и EndWizard, соответственно активизирующих и деактивирующих Помощника.
Метод Help выводит стандартное сообщение Помощника справочной системы Office 2000 с заголовком "What would you like to do?"
Метод Move перемещает Помощника в указанную параметрами left и top позицию на экране
Метод ResetTips очищает журнал советов, в связи с чем могут вновь появляться уже данные советы.
В заключение рассказа о свойствах и методах объекта Assistant приведем пример, в котором поменяем образ объекта Assistant и некоторые его свойства:
Public Sub ChooseAss() With Assistant Debug.Print .FileName 'Задаем образ Помощника '.FileName = "dot.acs" .FileName = "Offcat.acs" '.FileName = "Rocky.acs" 'Его анимационное поведение .Animation = msoAnimationGreeting .Animation = msoAnimationGetAttentionMinor 'Другие свойства .AssistWithHelp = True .FeatureTips = True .GuessHelp = True .HighPriorityTips = True .Visible = True End With End SubЛистинг 7.1.
Взгляните на кошечку, которая будет сопровождать теперь выдачу советов и справок. Задавая свойство Animation, можно подобрать ее поведение, отвечающее данному моменту.
Обратите внимание, - на вопрос, заданный на естественном русском языке, выдана точная справка. Этого не было в предыдущей версии.
Объект Balloon
Можно изменить свойства объекта Assistant, но в каждый момент существует только один такой объект. C ним можно связать произвольное число объектов Balloon, которые я называю баллончиками. Поясним происхождение термина. Реплики рисованных персонажей комиксов или карикатур художники нередко помещают в кружок - "баллончик", выдуваемый изо рта.
У объекта Assistant нет коллекции объектов Balloon (а жаль), но можно создать необходимое число переменных этого класса или массив из таких объектов. Вот пример:
Public Sub Balls() Dim i As Integer 'Создание объектов Balloons Dim FirstBall As Balloon, LastBall As Balloon Dim ArrOfBall(3) As Balloon With Assistant .FileName = "OffCat.acs" Set FirstBall = .NewBalloon FirstBall.Show .FileName = "Rocky.acs" Set LastBall = .NewBalloon LastBall.Show For i = 1 To 3 Set ArrOfBall(i) = .NewBalloon ArrOfBall(i).Show Next i FirstBall.Show End With End Sub
Здесь созданы две переменные и массив из трех элементов класса Balloon. По ходу дела внешний вид объекта Assistant меняется, но все баллончики одинаковы, в момент рождения они пусты и имеют единственную кнопку "ОК". Рассмотрим, как можно наполнить содержанием эти объекты и задать их свойства.
Модальные и немодальные баллончики
Объекты Balloon предназначены для ведения диалога с пользователем и фактически являются специальным видом диалоговых окон. Любое диалоговое окно, а значит и объект Balloon может быть модальным и немодальным. Из модальных окон нельзя выйти, не закончив диалог. Обычно, для этого нужно щелкнуть одну из кнопок этого окна - Ok или Cancel. В модальном объекте Balloon эти кнопки, как правило, присутствуют, но их наличие не является обязательным. Если щелкнуть любую кнопку в модальном окне, то диалог оканчивается и окно закрывается. До тех пор, пока модальное окно не будет закрыто, нельзя начать работать с другим окном. Немодальные окна можно покидать, в этот момент они перестают быть активными, но остаются на экране и не закрываются. При необходимости в них можно вернуться и продолжить работу с ними. Позже мы рассмотрим механизм закрытия немодальных окон и специальный механизм CallBack функций, позволяющий организовать реакцию на выбор, сделанный пользователем в немодальном окне.
Объект Balloon имеет свойство Mode с тремя возможными значениями:
- MsoModeModal - в этом случае диалог с объектом Balloon является модальным. Его обычно используют для вывода предупреждений, требующих особого внимания или получения ответа от пользователя, без которого дальнейшая работа не может быть продолжена.
- MsoModeModeless - в этом случае окно становится немодальным и оно может оставаться открытым, в то время как продолжается работа над приложением в других его окнах. Такие объекты удобны, например, при выдаче справочной информации, которая должна быть все время под рукой.
- MsoModeAutoDown - задает специальный вид модального окна, в котором не обязательны кнопки. Окно закрывается автоматически, как только пользователь введет символ с клавиатуры или щелкнет кнопку мыши, где - либо вне модального окна. Такие окна полезны при выводе сообщений, не носящих критический характер, например советов.
Терминальные свойства объекта Balloon
С двумя свойствами этого объекта: Animation и Mode мы уже знакомы. Первое из них задает анимацию объекта Assistant при вызове его метода Show, в тот момент, когда показывается объект Balloon. Рассмотрим подробнее другие свойства
- Heading - позволяет прочесть или установить строку, задающую текст заголовка.
- Text - На вершине объекта Balloon сразу после заголовка может появляться некоторый текст. Его и устанавливает свойство Text. Оба элемента являются необязательными. Заметьте, что Heading и Text могут включать и графику. Последняя задается строкой, имеющей следующий синтаксис: {<type> <location> [<factor>]}. Первый параметр задает тип графического файла (bmp или wmf), второй - его расположение, третий позволяет согласовать размер wmf-файла (Windows metafile), но не bmp-файла.
- Icon - Слева от заголовка можно добавить специальный значок для привлечения внимания. Возможные значки задаются следующими константами: msoIconAlert, msoIconNone, или msoIconTip.
- Button - Внутрь баллончика можно поместить некоторое количество кнопок заранее предустановленного типа. К ним, конечно, относятся кнопки: Ok, Cancel, Next, Close, Retry и им подобные. Значениями свойства могут быть константы, задающие соответствующее подмножество кнопок.
Это не все свойства объекта Balloon. Есть еще несколько важных для понимания свойств, но мы расскажем о них чуть позднее. А сейчас небольшой пример конструирования объекта Balloon с некоторыми из рассмотренных свойств:
Public Sub OneBall() Dim Text1 As String, Text2 As String, Text3 As String Dim Text4 As String, Text5 As String Dim myPath As String myPath = ActiveDocument.Path 'Формирование свойства Text Text1 = "Хочешь знать, как перевезти с берега на берег" 'Вставка графики в середину текста Text2 ="{wmf " & myPath & "\wolf.wmf}"; & " Волка," & vbCrLf Text3 = "{wmf " & myPath & "\goat.wmf}" & " Козу" & " И " Text4 = "{wmf " & myPath & "\cabbage.wmf}" & " Капусту" & vbCrLf & vbCrLf Text5 = "Соблюдая 3 правила?" Dim FirstBall As Balloon Set FirstBall = Assistant.NewBalloon With FirstBall .Heading = "Волк, Коза и Капуста" .Icon = msoIconAlert .Text = Text1 & Text2 & Text3 & Text4 & Text5 .Button = msoButtonSetYesNo .Show End With End SubЛистинг 7.3.
Вот как выглядит это диалоговое окно баллончика с картинками, вставленными в текст:
Заметьте, следует быть внимательным при задании свойства Text, включающего картинки. При наличии ошибок диалоговое окно не будет открыто, но сообщений об ошибке не появится.