mauar

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Это хендл окна, а не процесса. Процесс у тебя выполняется в Chars.Play. Т.к. тип этого объекта (Chars) не известен, то разговор слепого с глухим о красоте заката я вести не буду. | К форме подключен MS Agent Джин, Мерлин, Собачка, Скрепка и т.д. Может помнишь раньше автоматически с советами и диалогами вылазил в MS Office 97 при загрузке ворда или экселя!? Так -вот, этот агент ходит по моей форме и проводит виртуалную экскурсию, показывая возможности программы, на форме установлен PageControl с 4-мя вкладками. Агент, вернее код должен по окончания рассказывания агента переключить на следующую вкладку. Код private , кстати тут по моему тоже ошибка в прописывании комманды персонажа, при прописывании комманды Chars компилятор выдает ошибку, я написал Char но вроде все работает нормально. Код: private { Private declarations } Req: IAgentCtlRequest;{Будет хранить текущее действие персонажа} Chars: IAgentCtlCharacterEx;{Хранит сам персонаж для обращения к нему} Char: IAgentCtlCommandsEx; {Хранит комманды персонажа} | Код FormShow формы: Код: procedure TBase.FormShow(Sender: TObject); begin Application.OnHint:=ShowHint; {----------------------------Загружаем агента---------------------------------------} Agent1.Characters.Load('MyAgent', 'Genie.acs'); Chars:= Agent1.Characters.Character('MyAgent') as IAgentCtlCharacterEx; {-----------------------------------------------------------------------------------} Chars.Set_LanguageID($419); // Выбираем язык агента - Русский {----------------Сюда задаем команды меню советника ---------------------------------} Chars.Commands.Add('Test', '&Test', 1, 1, True); Chars.Commands.Add('Экскурсия', '&Экскурсия', 4, 1, True); Chars.Commands.Add('Выход из программы', '&Выход из программы', 1, 1, True); {--------------------При загрузке формы агент появляется и произносит вступительную речь---------------------------------------------------------------} Req:=Chars.MoveTo(1150,620,1); Req:=Chars.Show(0); Chars.Play('RestPose'); // кстати, пытаюсь тут прописать "Reg:=" возникает ошибка, скорее всего я не правильно прописал Private Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=86\ что то говорит',''); Chars.Play('Blink'); Chars.Play('Blink'); Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=86\ опять что то говорит' ,'') Chars.Play('Greet'); Chars.Speak ('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=86\Благодарю Вас, за внимание. '+ ' Жду Ваших приказаний...!!!', ''); Chars.Stop(Req); end; {----------------------------действия при ннажатии Экскурсия-----------------------------------------} begin If Cmd.Name = 'Экскурсия' Then begin Chars.MoveTo(400,550,1); end; end; begin If Cmd.Name = 'Экскурсия' Then begin PageControl1.ActivePage:= TabSheet2 ; // Вот тут должно ити на вкладку 2, в конце прописан такой же код, но с переходом на вкладку 4 end; end; // он вместо этой команды переходит на последнюю вкладку и выполняет все следующие действия begin If Cmd.Name = 'Экскурсия' Then begin // переидя на TabSheet 4, вместо верхней команды TabSheet2 Chars.Stop(Req); // он начинает выполнять это и все ниже следующие действия end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\что то сказал',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('GestureRight'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\опять что то сказал',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.MoveTo(340,550,1); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('GestureLeft'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\сказал',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.MoveTo(360,150,1); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('Explain'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\сказал',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('GestureRight'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\сказал',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('GestureLeft'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\сказал..',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.MoveTo(800,150,1); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('GestureLeft'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\сказал',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.MoveTo(300,45,1); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('GestureRight'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\ говорит',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.MoveTo(300,45,1); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('GestureLeft'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\говорит',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.MoveTo(500,45,1); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('GestureLeft'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\говорит',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.MoveTo(500,45,1); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('GestureLeft'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\говорит',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Play('Greet'); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\ '+ ' К которой и относится Ваш покорный слуга "Джин" ...',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin Chars.Speak('\Chr="Normal"\\Ctx="Unknown"\\Spd=130\\Pit=88\ '+ ' А сейчас, я, переиду, к следующей под программе" ...',''); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin // тут он спускается к вкладке Chars.MoveTo(300,670,1); end; end; Begin If Cmd.Name = 'Экскурсия' Then begin // тыкает рукой, делая вид что переключает вкладку Chars.Play('GestureRight'); end; end; // в принципе если в этом месте прописать sleep (5000) то он будет делать все верхние действия, а переключиться только через 5000 мл.сек. // может в этом месте прописать команду white и указать в ней ожидания выполнения пред последней команды (верхней команды от этого текста)? Begin If Cmd.Name = 'Экскурсия' Then begin // вот она эта роковая команда переключающая вкладку 4 PageControl1.ActivePage:= TabSheet4; // которая переключается в самом начале end; end; end; end. | |