Примечание:
Поиграть с персонажем можно только, если у вас установлен MSAgent
v2.0, а проговорить при установленных голосовых функций. Все компоненты
можно скачать тут.
Подписка
MS
Agent и MS Balloon
Долгое время посетители сайта просили меня написать статью
о MS Balloon, о том как его подключить к Delphi и MSAgent, чтобы
в нем появлялись разные сообщения. Я и рад был бы скорее написать,
так как давно занимаюсь с MS Balloon, да все времени не было
(дописывал EasyTester v2.0).
Итак, для
тех, кто еще не догадался, MS Balloon - это воздушный шарик,
появлющийся у агента, когда он (или она или может быть оно)
пытается нам что-то сообщить. Обычно это какое-нибудь сообщение,
то что сейчас говорит персонаж. Но как мы видим в пакете MS
Office в шарике выводится и другая дополнительная информация.
Через него можно выдавать диалоги, просить пользователя ввести
что-нибудь и т.д. Так почему же нам с вами этому не научиться?
Вот когда-то
я тоже об этом подумал. MS Balloon это тоже ActiveX, своеобразная
примочка к MSAgent'у. Причем бывают разные баллоны (шарики),
их пишут разные люди. Например MsgBalloon,
BlnDialog6.5
(есть уже 7.1, но его еще не пробовал) ну и стандартный в WindowsXP.
Должен сразу
огорчить ни один из них не подключается в Delphi. Причем в любой
- 5,6,7. Один из них (MsgBalloon) вообще не дружит с MSAgent,
этот ActiveX куда-то теряется после установки. BlnDialog благополучно
устанавливается, работает, компилируется, но во время выполнения
благополучно падает так, что даже не показывает в чем ошибка,
а просто предлагает "позвонить разработчику". Так
что даже не знаешь кому, себе или автору ActiveX.
Поэтому
расскажу только как работать с MS Balloon в VB на примере VBScript,
хотя это не относится к теме сайта. Больше хотелось бы написать
о MSAgent и его примочках в Delphi, а не во всяких там VB и
VC++. Нет, я не противник VB и VC++, но обидно, что разработчики
примочек равняются на VBasic и VC++, а про Delphi забывают.
Поэтому я решил попробовать написать свой MSBalloon. Основа
есть, нужно просто технически описать все нужные функции. Надеюсь
в скором времени вы увидите первую версию моего "воздушного
шарика".
Итак, попробуем
создать простенький пример наподобии фотографии в начале этой
статьи. Писать будем с помощью BlnDialog. После скачивания ActiveX
установите его в систему обычным образом, нажав Установить
в контекстном меню на файле .inf.
После этого
можно непосредствено писать что-нибудь для MSBalloon. Где-нибудь
на странице нужно внедрить MSBalloon в виде ActiveX:
Здесь мы,
в основном, описываем различные, изначально заданные, параметры
шарика. Правда, все значения по умолчанию. Некоторые параметры
более-менее понятны, но отдельные поясню:
ForeColor - цвет текста BackColor - цвет фона шарика(обычно бледно желтый) TextBoxBColor - цвет области для ввода текста LineColor - обычно текст от кнопок в MSBalloon отделяется
тоненькой линией, так вот этот параметр и определяет цвет линии UserMove - если 0, то пользователь не может двигать шарик
мышкой, иначе может URLButtonPicture - адрес картинок для кнопок. Обычно
существует три состояния кнопок у шариков (Noraml, MouseOver,
MouseDown). Так вот картинки этих состояний должны располагаться
друг под другом, например:
URLOptionPicture
- картинки для кнопок выбора опций, например:
URLSuggestPicture
- картинка, которая будет появляться, когда агент желает обратить
на себя внимание, например в MSWord это лампочка.
А теперь
непосредственно напишем крохотную процедурку для появления шарика.
После объявления ActiveX вставим скрипт:
<SCRIPT language=VBScript>
Sub cmd1_onclick()
Balloon.MsgBalloon "Привет! Это простейшая функция MSBalloon c одной кнопкой!",
vbOKOnly + vbExclamation, "Привет!", char
End Sub
</SCRIPT>
Процедура выводит воздушный шарик около персонажа с именем
char (то есть около нашего главного персонажа, посомтрите это
в коде) с одной кнопкой и иконкой знака внимания.
Вот сам пример:
Далее, попробуем попросить агента ввести наше имя. Добавим
в существующий скрипт еще одну процедуру и соответствующую кнопку
уже с именем cmd2:
Sub
cmd2_onclick()
Balloon.InputBalloon("Привет,
давай познакомимся? Как тебя зовут?", "Второй
раз привет!") End
Sub
Теперь функция посложнее, но и поинтереснее! Помните, как в
MSWord агент, пытаясь вам что-нибудь предложить, показывает
окно с выбором опций. Так вот мы сейчас это и сделаем! Создадим
еще одну следующую по счету кнопку и прицепим к скрипту процедуру:
Sub cmd3_onclick() 'Добавляем кнопочки
Balloon.FormBalloon.Buttons.Add "&Да"
Balloon.FormBalloon.Buttons.Add "&Нет"
Balloon.FormBalloon.Buttons.Add "&Отстань" 'Иконку
Balloon.FormBalloon.Icon = 13 'Титл
Balloon.FormBalloon.Title = "Навигация
по сайту:" ' Само сообщение
Balloon.FormBalloon.Message = "Может
вы желаете перейти на какой-нибудь другой раздел?" 'Непосредственно опции
Balloon.FormBalloon.OptionButtons.Add "&На
раздел проектов."
Balloon.FormBalloon.OptionButtons.Add "&Хотелось
бы что-нибудь про музыку."
Balloon.FormBalloon.OptionButtons.Add "&Почитать
про MSBalloon." 'Текст по умолчанию
Balloon.FormBalloon.TextBox = True
Balloon.FormBalloon.TBoxText = "Вы
можете ввести сюда свое сообщение автору сайта." ' комментарий
Balloon.FormBalloon.Comment = "Ваше
пожелание." ' Указываем, что нужно отображать линию-разделитель
Balloon.FormBalloon.SepLine = True
' Показываем шарик
Balloon.ShowFormBalloon
'Получаем результаты If Balloon.FormBalloon.OptionPressed
= 0 Then
MsgBox "Вы выбрали кнопку: "
& Balloon.FormBalloon.ButtonPressed Else
MsgBox "Вы выбрали опцию:
" & Balloon.FormBalloon.OptionPressed End If
MsgBox "Ваше пожелание: "
& Balloon.FormBalloon.TBoxText End Sub
Ну и всякие другие процедуры и функции. Их вы можете посмотреть
в HTML-коде, а вот кнопочки:
*если
примеры не работают, попробуйте включить Разрешать выполнение
ActiveX,
не помечанных как безопасные в Свойствах обозревателя.