![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
| Результаты опроса: Вашя отношение с Balloon Hints? | |||
| Не понимаю о чем речь |
|
1 | 6.67% |
| Это не актуально |
|
8 | 53.33% |
| Интересная идея, поглядим |
|
4 | 26.67% |
| Активно пользуюсь |
|
2 | 13.33% |
| Голосовавшие: 15. Вы еще не голосовали в этом опросе | |||
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте!
Когда-то в 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
|
|||
|
|||
|
Цитата:
|