Здравствуйте, в этой статье хотел бы рассказать как очень легко и быстро добавить в Ваше приложение 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;
То есть, что мы делаем. Мы просто запоминаем текущие координаты нашего персонажа, а затем используем переменные с текущими координатами персонажа и перемещаем его потом в нужную нам точку, очень просто.
В следующей статье мы рассмотрим анимацию нашего персонажа, а также будем добавлять команды для нашего персонажа.