Вместо сообщения MsgBox$ вывести сообщение Ballon - VBA
Формулировка задачи:
Здравствуйте, подскажите по сабжу и чтобы оно, сообщение "висело" до нажатия любой\определённой кнопки
Решение задачи: «Вместо сообщения MsgBox$ вывести сообщение Ballon»
textual
Листинг программы
'отключаем дёргание экрана при выполнении кода
Application.ScreenUpdating = False
'четыре стандартные персонажа анимации
'джин Genie
'маг Merlin
'попугай Peedy
'робот Robby
'переменные для ссылок
Dim MSAgent As Object
Dim AgentChar As Object
'включаем обработчик ошибок
On Error Resume Next
'создаем объект
Set MSAgent = CreateObject("Agent.Control.2")
'здесь можно проверить, установлен ли Agent на компьютере
If Err.Number Then
MsgBox "Agent не найден на этом компьютере!"
Exit Sub
Else
'подключаемся к серверу Agent
MSAgent.Connected = True
'загружаем стандартного персонажа
MSAgent.Characters.Load "Default"
'ссылка на персонаж
Set AgentChar = MSAgent.Characters("Default")
'2 вариант
'загружаем персонаж
MSAgent.Characters.Load "InvisibleMan", "D:\Рабочая папка\Microsoft Agent\InvisibleMan.acs" 'должен быть по адресу: D:\Рабочая папка\Microsoft Agent файл с именем: InvisibleMan.acs
'ссылка на персонаж
Set AgentChar = MSAgent.Characters("InvisibleMan")
End If
'изменить размеры анимации, воспользоваться свойствами Height ширина и Width и высота
AgentChar.Height = 1 'если поставить 0 не сработает, можно эту строку писать до строки AgentChar.Show (0) и после неё
AgentChar.Width = 1 'если поставить 0 не сработает, можно эту строку писать до строки AgentChar.Show (0) и после неё
'звук появления персонажа будет иметь место !!!! как бы его убрать ????
'а вот как вывести Ballon персонажа в указанном месте ????
'метод ShowPopupMenu выводит всплывающее меню персонажа в указанном месте, например строка меню "Скрыть"
'данное меню автоматически всплывает при правом щелчке мыши на персонаже
AgentChar.ShowPopupMenu 100, 300
AgentChar.Left = 300 'место пояления персонажа от левого края экрана
AgentChar.Top = 800 'место пояления персонажа от верха экрана
'позиция на экране (в данном случае по центру)
AgentChar.Left = (((screen.Width / screen.TwipsPerPixelX) - AgentChar.Width) / 2)
AgentChar.Top = (((screen.Height / screen.TwipsPerPixelY) - AgentChar.Height) / 2)
2 вариант ??????
'позиция на экране (в данном случае по центру)
AgentChar.Left = ((System.HorizontalResolution - AgentChar.Width) / 2)
AgentChar.Top = ((System.VerticalResolution - AgentChar.Height) / 2)
'для отображения персонажа существует метод Show
'параметр метода Show логического типа и отвечает за вывод анимации при показе 0 - с анимацией, 1 - без анимации
AgentChar.Show 1 '0 - с анимацией, пишется так: AgentChar.Show (0), ноль в скобках, 1 - без анимации, пишется так: AgentChar.Show 1, единица без скобок
AgentChar.Think "Привет, я - " + AgentChar.Name 'или AgentChar.Description метод Think, выводит только слова персонажа в "облаке"
'Description это описание персонажа
'?????Application.Wait Now + TimeValue("0:00:05") 'метод Wait - ожидание, выжидание он и держит и убирает Balloon
'вариант как зависнуть Balloon
AgentChar.Show 1
With AgentChar
.Balloon.Style = 2 'почему именно 2 ВБА его знает ?????
.BackColor = Red 'цвет фона
.BorderColor = Yellow 'цвет рамки
.Enabled = True 'признак включения окна сообщений
.FontcnarSet 0 'номер набора таблицы символов, например:0 - ANSI
.FontName = Arial 'имя шрифта
.FontBold = True 'полужирное выделение шрифта
.FontItalic = True 'курсивное выделение шрифта
.Font Size = 22 'размер шрифта
.FontUnderline = True 'подчеркивание текста
.ForeColor = Blue 'цвет текста
.NumberOf Lines = 3 'количество строк для вывода текста
'?????.Style 'стиль окна сообщений
.Visible = True 'видимость окна сообщений
End With
AgentChar.Think "Привет"
Sleep 1000 'висит 1 секунду
'имя шрифта отображаемого сообщения
AgentChar.Balloon.FontName = "Times New Roman"
'размер шрифта отображаемого сообщения
AgentChar.Balloon.FontSize = 20
AgentChar.Think "Думаю, смена стиля заметна"
AgentChar.Balloon.Visible = False 'исчезает Balloon или AgentChar.Hide
'для скрытия персонажа существует метод Hide
'AgentChar.Hide
'изменить размеры аннимации, воспользоваться свойствами Height ширина и Width и высота
'уменьшить персонаж в полтора раза можно так:
AgentChar.Height = AgentChar.Height / 1.5
AgentChar.Width = AgentChar.Width / 1.5
AgentChar.MoveTo 200, 300 'переместить анимацию на ...
'MoveTo может перемещать персонаж с анимацией
'персонаж как бы перелетает на новое место
'у метода MoveTo есть необязательный параметр, показывающий скорость смены кадров анимации
'скорость его передвижения по экрану, по умолчанию он равен 1000
'усли нужно быстро переместить персонаж, то вызовите этот метод с параметром скорости равным 0
'это заставит пропустить анимацию и персонаж переместиться мгновенно
AgentChar.MoveTo 250, 350, 500
AgentChar.MoveTo 300, 400, 0
'для использования персонажа, который будет говорить, нужен ещё и Text-to-speech engine
'для соответствующего языка, для русского языка это модуль
'http://activex.microsoft.com/activex/controls/agent2/lhttsrur.exe
'только после его установки персонаж заговорит по-русски
'файл lhttsrur
'русский язык в Microsoft обычно числится под номером &H0419
AgentChar.LanguageID = &H419
'вот теперь всё готово к "разговорам"!
'устанавливаем женский голос
AgentChar.TTSModeID = "{06377F80-D48E-11d1-B17B-0020AFED142E}"
AgentChar.Speak "Я могу говорить женским голосом!"
'устанавливаем мужской голос
AgentChar.TTSModeID = "{06377F81-D48E-11d1-B17B-0020AFED142E}"
AgentChar.Speak "Я могу говорить мужским голосом!"
'управление параметрами чтения текстов в VBA функциями SpeechAPI [url]http://subritto.h1.ru/msagent/sapi_tags.php[/url]
AgentChar.Play "Greet" 'воспроизведем анимацию с именем ...
'пробежимся по всей анимации
Количество_аннимации = 0
For Each Animation In AgentChar.AnimationNames
Количество_аннимации = Количество_аннимации + 1
Имя_аннимации = Animation
AgentChar.Play Animation
Next
'отменяем отключенное ранее обновление - дёргание экрана при выполнении кода
Application.ScreenUpdating = True