MS Agent в приложениях. Часть 1

7 минут на чтение

Здравствуйте, в этой статье хотел бы рассказать как очень легко и быстро добавить в Ваше приложение MS Agent. Давайте сначала поговорим вообще что такое MS Agent. Надеюсь большинство пользователей устанавливали пакет MS Office, так вот Вы могли заметить, что там есть персонажи: кот, собачка, джин, смайлик и так далее. Эти персонажи помогают Вам при работе с MS Office, то есть можно искать необходимую информацию, спрашивать у них, что Вас интересует и получать все на это ответы. Конечно в любое время Вы сможете скрыть Вашего персонажа, но все таки веселее когда он находится на Вашем экране. С помощью данных персонажей Вы сможете сделать свое приложение еще более красочным, а также сделать отличного помощника. В данной статье мы посмотрим как подключить нашего персонажа в свое приложение и самые примитивные способы при работе с «агентом». В последующих статьях мы рассмотрим как можно будет получать список анимаций персонажа, анимировать его, добавлять новые команды в меню персонажа, а также их обрабатывать.

Для начала нам необходимо добавить компонент, который отвечает за подключение к MS Agent Server. По умолчанию этого компонента нету, по крайней мере в Delphi 7 его точно нету. Поэтому нам необходимо его добавить.

Что нам необходимо для этого, а все просто, выполним команду Component-Import ActiveX Control… В списке находим Microsoft Agent Control 2.0, после чего нажимаем на кнопку «Install» и устанавливаем как обычный компонент. Далее наш новый, установленный компонент должен появиться во вкладке ActiveX. Он должен быть последним в списке (TAgent). Установим его на нашу форму, кроме этого я установил на форму TButton - 2 шт, почему 2, потому что хочу показать как можно 2-мя методами показать нашего персонажа. Теперь, что главное в первый момент, это подключиться к MS Agent Server, для этого выделим компонент TAgent и в свойстве Connected установим True, либо же по событию OnCreate напишем следующий код

procedure TForm1.FormCreate(Sender: TObject);
begin
   Agent1.Connected:=True;
end;

Ну что пол-дела сделано, подключены мы к серверу, далее нам необходимо как-то отобразить этот самый персонаж, который Вы выбрали. Кстати насчет выбора персонажей, в интернете очень полно различных персонажей, можно найти. Либо же, чтобы установить стандартные, достаточно залезть в установленную папке MS Office и поиском найти там файлы, расширения *.acs. После этого при приступаем к загрузке и отображению нашего персонажа. Итак на первую кнопку, событие OnClick напишем следующий код

procedure TForm1.Button1Click(Sender: TObject);
begin
   Req:=Agent1.Characters.Load('ROCKY','C:\ROCKY.ACS');
   Chrr:=Agent1.Characters.Character('ROCKY') as IAgentCtlCharacterEx;
   Req:=Chrr.Show(False);
   Req:=Chrr.Speak('Hello',EmptyParam);
end;

Ах да, чуть не забыл, необходимо же объявить переменные

var
  Chrr:IAgentCtlCharacterEx;
  Req:IAgentCtlRequest;

Очень легко и просто еще вызвать персонажа следующим образом

procedure TForm1.Button2Click(Sender: TObject);
begin
   Agent1.Characters.Load('ROCKY','C:\ROCKY.ACS');
   Agent1.Characters.Character('ROCKY').Show(False);
   Agent1.Characters.Character('ROCKY').Speak('Hello',EmptyParam);
end;

Chrr - отвечает за хранение персонажа, выбранного нами, для добавления необходимых нам программ, Req - отвечает за действия, выполняемые персонажем, то есть перемещение его, анимация, разговор и так далее, то есть за его действия. Что мы делаем в первую очередь загружаем файл ms agent и задаем ему имя, в данном случае — это ROCKY. Далее Chrr мы связываем с нашим именем персонажа. С помощью метода Show мы показываем нашего персонажа, а с помощью метода Speak мы указываем, что говорить нашему персонажу. Кроме этого мы можем перемещать нашего персонажа с помощью метода MoveTo

procedure TForm1.Button3Click(Sender: TObject);
begin
   Req:=Chrr.MoveTo(100,200,100);
end;

Задаем координаты (x,y) и скорость перемещения. Можно очень легко сделать перемещение на клавиша, точнее управление персонажем с помощью клавиш клавиатуры. Давай для начала объявим еще 2 переменные типа integer, они будут отвечать за хранение текущих координат нашего персонажа. Теперь установим компонент TActionList, который находится на вкладке Standard. Далее нажмем двойным щелчком мыши по данному компоненту и в появившемся окне создадим 4 Actions, можете их обозвать, я не буду, будут у меня они называться стандартно

  • Action1
  • Action2
  • Action3
  • Action4

Далее для каждого Action в свойстве ShortCut задайте клавишу, по нажатию на которую будет перемещаться наш персонаж, я сделал так

  • Action1 — W
  • Action2 — S
  • Action3 — D
  • Action4 — A

Теперь двойным щелчком по Action нажимаем и появляется процедура обработки и на каждую процедуру пишем перемещение нашего персонажа по определенном координатам.

procedure TForm1.Action1Execute(Sender: TObject);
begin
   Req:=Chrr.MoveTo(xx,yy-10,100);
end;
procedure TForm1.Action2Execute(Sender: TObject);
begin
   Req:=Chrr.MoveTo(xx,yy+10,100);
end;
procedure TForm1.Action3Execute(Sender: TObject);
begin
   Req:=Chrr.MoveTo(xx+10,yy,100);
end;
procedure TForm1.Action4Execute(Sender: TObject);
begin
   Req:=Chrr.MoveTo(xx-10,yy,100);
end;

Ну а теперь самое главное, мы же перемещаем нашего персонажа исходя из того, что мы знаем уже на каких он координатах находится, для этого выделим компонент TAgent и перейдем к списку событий данного компонента, находим там событие OnMove и на данное событие пишем следующий код

procedure TForm1.Agent1Move(ASender: TObject;
  const CharacterID: WideString; x, y, Cause: Smallint);
begin
   xx:=x;
   yy:=y;
end;

То есть, что мы делаем. Мы просто запоминаем текущие координаты нашего персонажа, а затем используем переменные с текущими координатами персонажа и перемещаем его потом в нужную нам точку, очень просто.

В следующей статье мы рассмотрим анимацию нашего персонажа, а также будем добавлять команды для нашего персонажа.

Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

Ну вот не так уж и много времени прошло после первой статьи про ms agent в Delphi. Как я бы хотел бы поговорить о продолжении. А точнее в этой статье хотел бы рассмотреть анимации своих персонажей, а также хотел рассказать как можно добавить в меню своему перс...
В этой статье я хотел бы рассказать как можно в своих приложениях БД использовать данные в Blob-полях. Этой статьей я хотел бы и закончить наш рассказ, про ADO технологию в Delphi для БД MS Access. Пойдем дальше и будем рассматривать другие БД и не много други...
Здравствуйте, в этой статье хотел бы рассказать как можно отобразить картинки в дереве рядом с узлами. Наверняка многие делали все возможные каталоги или применяли «деревья» в своих приложениях, где необходимо было именно размещать картинки, а например при рас...