уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Если Вы работаете в Windows 7 или выше и желаете написать программу, использующую MS Agent, то перед прочтением статьи обязательно ознакомьтесь с информацией на сайте Mcrosoft, касающейся использования MS Agent в этой операционной системе!

Продолжим разговоры по поводу MS Agent. Загружать персонаж мы научились, а что делать с ним дальше? Он, конечно, может висеть без дела как дополнительное украшательство рабочего стола, но лучше используем технологию на полную катушку. Рассмотрим простой пример работы с MS Agent Control с использованием установленного нами ActiveX компонента (процесс установки рассмотрен в этой статье).

Запускаем Delphi, создаем новый проект, и укладываем на главную форму компонент agent_pictogrammTAgent с закладки палитры компонентов ActiveX.

Теперь на событие onCreate у главной формы пишем следующий код:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Agent1.Characters.Load('MyAgent','merlin.acs') ;
  Agent1.Characters.Character('MyAgent').Show(0);
  Agent1.Characters.Character('MyAgent').Speak(Agent1.Characters.Character('MyAgent').Description, '')
end;

Написали? Теперь запускаем приложение и видим примерно следующее:

agent_speak

Думаю, что подробно описывать процедуру не стоит, в кратце скажу, что мы сейчас загрузили персонаж, показали его пользователю и при этом Мерлин прочитал то, что записано в его описании.

Теперь посмотрим, на что в принципе способен помощник при его использовании в программах. Рассмотрим более подробно события у компонента TAgent:

  1. onActivateInput — происходит, когда персонаж становится активным для ввода, например, когда персонаж получает щелчок мышью, пользователь называет имя персонажа, при скрытии персонажа другой программы и т.д.
  2. onDeactivateInput — соответственно, происходит, когда персонаж деактивируется для ввода, например, если методом Show вызывается другой персонаж
  3. onClick — происходит при щелчке мышью по персонажу. При этом, если персонаж был деактивирован, то вначале срабатывает событие onActivateInput, а затем onClick.
  4. onDragStart — вызывается, когда пользователь начинает перетаскивать персонаж мышью
  5. onDragComplete — запускается, когда пользователь отпускает кнопку мыши после перетаскивания персонажа
  6. onRequestStart — посылается сервером, когда он начинает обрабатывать запрос, поставленный в очередь.

Есть ещё масса других событий, обрабатываемых в процессе работы с персонажами, но мы, для ознакомления остановимся пока на рассмотренных выше. А теперь рассмотрим небольшой пример:

пусть при запуске программы персонаж скажет кто он и отреагирует на перетаскивание его мышью.

Код, реализующий поставленную задачу представлен ниже:

procedure TForm1.Agent1DragStart(ASender: TObject;
const CharacterID: WideString; Button, Shift, x, y: SmallInt);
begin
Agent1.Characters.Character('MyAgent').Speak('ээээ...поставь на место!!!', '')
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Agent1.Characters.Load('MyAgent','merlin.acs') ;
  Agent1.Characters.Character('MyAgent').Show(0);
  Agent1.Characters.Character('MyAgent').Speak(Agent1.Characters.Character('MyAgent').Description, '')
end;

Теперь откомпилируйте, запустите приложение и попробуйте перетащить персонаж в момент, когда он «представляется» Вам. Видите? Вроде как событие onDragStart должно работать и персонаж должен выкрикнуть другую фразу, но он продолжает начатую фразу. Очевидно, что первый запрос необходимо как-то прервать. Хотите узнать как? В следующей статье я рассмотрю вопросы по работе с запросами Request.

0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
1 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Natasha
Natasha
12/02/2012 19:08

Всем Здравствуйте! Увидела интересный сайт о Office Assisten(ами) для Delphi: http://www.delphiarea.com/products/delphi-packages/assistant/ Эти персонажи в формате aal. Скажите пожалуйста, ведь MS Agent Merlin имеет ‘acs’ формат и может читать текст в balloon используя SAP Speech Engine. Могут ли персонажи с форматом «aal» делать то же самое? Если да, то как? Для примера привожу чтение голосовым движком у Merlin Ms Agent: Agent1.Character(‘Merlin’).Speak (‘Hello!’, EmptyParam); Merlin произносит вслух и делает мимику, а «aal» — нет. Подскажите пожалуйста, голосовые движки стоят, имею SAP 5 + русскоязычные тоже. И второй вопрос, если можно: При запуске Merlin выходит на квадратном розовом фоне, а Джин на зелёном… Подробнее »