|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
Результаты опроса: Вашя отношение с Balloon Hints? | |||
Не понимаю о чем речь | 1 | 6.67% | |
Это не актуально | 8 | 53.33% | |
Интересная идея, поглядим | 4 | 26.67% | |
Активно пользуюсь | 2 | 13.33% | |
Голосовавшие: 15. Вы еще не голосовали в этом опросе |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
"Balloon Tooltip" или "Диалоги в стиле помощников Office 2003"
Здравствуйте!
Когда-то в Windows (до 7ки) имелась замечательная технология MS Agent 2.0. С 7ке она более не поддерживается, хотя компоненты устанавливаются и их даже можно использовать, но с все персонажи (знакомые с Office 2000/2003 и Поиска WinXP) теперь отображаются на не прозрачном фоне. К сожалению, данная технология, по мнению Microsoft без перспективна и более не поддерживается. Пусть так, но у этой технологии был ещё весьма внушительный "+" - Balloon Hint-ы, т.е. диалоговые окна персонажей (Character) оформленные в стиле подсказок (Hints). Даже без использования персонажей эти Hints было удобно использовать для подсказок к полям с некорректными данными, уточняющих запросов, предоставления доступа к справке и т.д. Примеры MS Agent 2.0: Balloon Hint (представлены примеры DlgBalloon): Я пробовал сделать сделать свой Balloon Hint, самым простым способом (как мне показалось) - Tooltip: В связи с этим у меня пара вопросов, которые пока не могу раскурить сам:
|
#2
|
|||
|
|||
почему для изучения не посещаете мсдн?
|
#3
|
|||
|
|||
Цитата:
|
#4
|
||||
|
||||
а разве Microsoft Agent и Tooltip Controls как-то связаны?
а так да, по умолчанию персонажи Microsoft Agent в Windows 7 не работают, но если очень хочется, то можно скачать Hotfix. Программы, использующие технологии Microsoft Agent, могут не работать в Windows 7 что касается Tooltip Controls, то прекрасно работает на 7: Код:
unit Unit1; interface uses CommCtrl, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; Memo1: TMemo; procedure FormCreate(Sender: TObject); private { Private declarations } hwndTip: HWND; public { Public declarations } end; var Form1: TForm1; const TTI_NONE = 0; TTI_INFO = 1; TTI_WARNING = 2; TTI_ERROR = 3; TTS_ALWAYSTIP = $01; TTS_NOPREFIX = $02; TTS_NOANIMATE = $10; TTS_NOFADE = $20; TTS_BALLOON = $40; TTS_CLOSE = $80; TTM_SETTITLE = WM_USER+32; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var ti: TOOLINFO; begin hwndTip:=CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, nil, WS_POPUP or TTS_ALWAYSTIP or TTS_BALLOON, 0, 0, 0, 0, Handle, 0, HInstance, nil); SendMessage(hwndTip, TTM_SETTITLE, 1, LPARAM(PChar(Caption))); SendMessage(hwndTip, TTM_SETTIPBKCOLOR, clCream, 0); SendMessage(hwndTip, TTM_SETTIPTEXTCOLOR, clBlack, 0); ti.cbSize:=SizeOf(TOOLINFO); ti.uFlags:=TTF_SUBCLASS or TTF_CENTERTIP; ti.hwnd:=Edit1.Handle; ti.hInst:=0; ti.lpszText:='Edit1'; Windows.GetClientRect(ti.hwnd, ti.Rect); SendMessage(hwndTip, TTM_ADDTOOL, 0, LPARAM(@ti)); ti.cbSize:=SizeOf(TOOLINFO); ti.uFlags:=TTF_SUBCLASS or TTF_CENTERTIP; ti.hwnd:=Button1.Handle; ti.hInst:=0; ti.lpszText:='Button1'; Windows.GetClientRect(ti.hwnd, ti.Rect); SendMessage(hwndTip, TTM_ADDTOOL, 0, LPARAM(@ti)); ti.cbSize:=SizeOf(TOOLINFO); ti.uFlags:=TTF_SUBCLASS or TTF_CENTERTIP; ti.hwnd:=Memo1.Handle; ti.hInst:=0; ti.lpszText:='Memo1'; Windows.GetClientRect(ti.hwnd, ti.Rect); SendMessage(hwndTip, TTM_ADDTOOL, 0, LPARAM(@ti)); end; end. Пишу программы за еду. __________________ |
#5
|
|||
|
|||
Удивительная штука:
1) запускаю exe-шник из Вашего архива - подсказка есть, но в стиле Win 2k (левый рис) 2) пытаюсь перекомпилить Ваш проект - вообще подсказки нет 3) создаю новый проект с кодом из Вашего поста получаю диалог в заголовке которого только первая буква (рис правый) Мистика, ё, маё.... Видимо в Delphi 2010 как-то иначе нужно действовать... ---- PS Точно мистика... Поместил CommCtrl, в новом проекте, в конец uses заработало... вернул на первое место - опять только первая буква... Осталось добавить в этот hint компоненты и будет жизнь прекрасна! Последний раз редактировалось KiL0z, 23.05.2011 в 21:22. |
#6
|
||||
|
||||
по поводу стиля: это я манифест не включил (TXPManifest не положил на форму)
по поводу CommCtrl: какой-то из модулей "перебивает" что-то из CommCtrl, имхо Пишу программы за еду. __________________ |
#7
|
|||
|
|||
NumLock, спасибо
Осталось как-то всунуть в подсказку свои компоненты... |
#8
|
||||
|
||||
мне бы заставить персонажа говорить по-русски . на XP говорит и на русском и на английском, а на Seven только на английском, русские слова пропускает
Пишу программы за еду. __________________ |
#9
|
|||
|
|||
В 7ке же нет поддержки агента - нужно все компоненты же ставить самому, причем не факт что будут правильно работать. У меня, например, персонажи появляются в розовом квадрате - почему то прозрачность окна отрубается
PS Во вложении файл для русского языка (произношения и развознования): http://zalil.ru/31111466 - пакет синтез/заспознование; во вложении - синтез русской речи |
#10
|
||||
|
||||
для XP все тут взял: Agent 2.0 Setup. все работает (en, ru). не проверял только голосовые команды.
на 7 установил Microsoft Agent-enabled programs may not work in Windows 7. персонаж живет, но говорит только на en. установил TTS Engine и Language из пред. ссылки - эффекта ноль. пробовал с Speech SDK 5.1, как сказано в писании: Цитата:
к тому же: Цитата:
Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 25.05.2011 в 10:42. |
#11
|
|||
|
|||
Ну я ставил XP-шного агента - говорит по русски нормально, только отображается на розовом фоне и иногда ошибки при закрытии диалогов выдает (при своих работаешь, если заменяешь их своими - ошибки вот сыплятся у него) и закрывается.
Видимо в 7ке явное какие-то противодействие ему |
#12
|
||||
|
||||
извращение полное, конечно, но больше ничего сделать не получается в расчет самописные формы, похожие на Office 2000/2003, не беру.
это отображается объект Assistant из Office 2000/2003. естественно для этого должен быть установлен офис 2003 с его помощником. Код:
uses ComObj, ActiveX, var o: Variant; b: Variant; begin o:=CreateOleObject('Word.Application'); o.Assistant.Visible:=True; o.Assistant.FileName:='Merlin.acs'; b:=o.Assistant.NewBalloon; b.Icon:=4; b.Heading:='Вы не ответили на мой ответ.'; b.Text:='ДА НЕБЫЛО НИ ЕДИНОГО РАЗРЫВА!!! С НОЯБРЯ ПРОШЛОГО ГОДА! А СЕГОДНЯ ЦЕЛЫХ ЧЕТТТТЫЫРЕЕЕЕ РАЗРЫВА!!! ОТВЕЧАЙТЕ НА МОЙ КОНКРЕТНЫЙ ПОСТАВЛЕНЫЙ ВОПРОС!!!'; b.BalloonType:=0; b.Mode:=0; b.Button:=1; Tag:=b.Show; b.Close; o.Quit; end; Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 27.05.2011 в 15:29. |
#13
|
|||
|
|||
Ну с этим я и так работать умею...
Мне нужно именно диалоги похожие сделать, а агент, введу отказа его поддержки в 7ке мне не нужен, и любые его компоненты то же. В том то и идея, что бы сделать диалоги в стиле помощников Office 2003 - в стиле Ballon Hint (т.е. с хвостиком) или просто Ballon (т.е. без хвостика). Главное что бы стиль был тот же самый: заголовок, размещение текста, такие другие элементы. А помощник, хоть вещь и прикольная, но на его программирование очень много времени нужно, увы - если с ним вообще связываться. Как это сделать - это уже вопрос... Последний раз редактировалось KiL0z, 27.05.2011 в 19:21. |
#14
|
||||
|
||||
Ну возьмите вы компоненты которые умеют такие хинты рисовать, например девок или тмс.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#15
|
|||
|
|||
Цитата:
|