Продолжим разговоры по поводу MS Agent. Загружать персонаж мы научились, а что делать с ним дальше? Он, конечно, может висеть без дела как дополнительное украшательство рабочего стола, но лучше используем технологию на полную катушку. Рассмотрим простой пример работы с MS Agent Control с использованием установленного нами ActiveX компонента (процесс установки рассмотрен в этой статье).
Запускаем Delphi, создаем новый проект, и укладываем на главную форму компонент TAgent с закладки палитры компонентов 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;
Написали? Теперь запускаем приложение и видим примерно следующее:
Думаю, что подробно описывать процедуру не стоит, в кратце скажу, что мы сейчас загрузили персонаж, показали его пользователю и при этом Мерлин прочитал то, что записано в его описании.
Теперь посмотрим, на что в принципе способен помощник при его использовании в программах. Рассмотрим более подробно события у комонента TAgent:
- onActivateInput - происходит, когда персонаж становится активным для ввода, например, когда персонаж получает щелчок мышью, пользователь называет имя персонажа, при скрытии персонажа другой программы и т.д.
- onDeactivateInput - соответственно, происходит, когда персонаж деактивируется для ввода, например, если методом Show вызывается другой персонаж
- onClick - проиходит при щелчке мышью по персонажу. При этом, если персонаж был деактивирован, то вначале срабатывает событие onActivateInput, а затем onClick.
- onDragStart - вызывается, когда пользователь начинает перетаскивать персонаж мышью
- onDragComplete - запускается, когда пользователь отпускает кнопку мыши после перетаскивания персонажа
- 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.
В последнее время занялся раскруткой своего блога в поисковых системах и тут одной из проблем является - избежать попадания под фильты ПС. Где-то встречал ссылку на статью по фильтрам Гугла..потреял, а вот про фильтры Яндекса информация осталась. Думаю, Вам тоже будет полезно узнать про то как не попасть под фильтры ПС Яндекс, если Вы делаете свой сайт или блог.
Мой блог находят по следующим фразам
- Коды букв виртуальных клавиш
- lazarus ole variant
- объекты microsoft excel объекты
- ribbon глюк с панелью быстрого запуска
- константы формата ячейки excel
- работа со stringgrid в delphi
| Делись! | Загружай! | Плюсуй! |
| | |









Свежие комментарии