Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Результаты опроса: Вашя отношение с Balloon Hints?
Не понимаю о чем речь 1 6.67%
Это не актуально 8 53.33%
Интересная идея, поглядим 4 26.67%
Активно пользуюсь 2 13.33%
Голосовавшие: 15. Вы еще не голосовали в этом опросе

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.05.2011, 16:30
KiL0z KiL0z вне форума
Прохожий
 
Регистрация: 27.05.2010
Сообщения: 23
Репутация: 10
Вопрос "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:
В связи с этим у меня пара вопросов, которые пока не могу раскурить сам:
  1. Как сделать так что бы текст Title выводился полностью в созданном Balloon Hint, а не только первая буква?
  2. Как добавить компоненты в новосотворенный Balloon Hint (например, кнопку или флажок)?
Ответить с цитированием
  #2  
Старый 21.05.2011, 18:50
einstein einstein вне форума
Начинающий
 
Регистрация: 02.09.2010
Адрес: Город
Сообщения: 143
Репутация: -4653
По умолчанию

почему для изучения не посещаете мсдн?
Ответить с цитированием
  #3  
Старый 22.05.2011, 15:58
KiL0z KiL0z вне форума
Прохожий
 
Регистрация: 27.05.2010
Сообщения: 23
Репутация: 10
По умолчанию

Цитата:
Сообщение от einstein
почему для изучения не посещаете мсдн?
К сожалению не получилось найти ответы на мои вопросы с помощью MSDN
Ответить с цитированием
  #4  
Старый 23.05.2011, 18:29
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а разве 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.
Вложения
Тип файла: rar CreateToolTip.rar (152.7 Кбайт, 67 просмотров)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 23.05.2011, 20:56
KiL0z KiL0z вне форума
Прохожий
 
Регистрация: 27.05.2010
Сообщения: 23
Репутация: 10
По умолчанию

Удивительная штука:

1) запускаю exe-шник из Вашего архива - подсказка есть, но в стиле Win 2k (левый рис)
2) пытаюсь перекомпилить Ваш проект - вообще подсказки нет
3) создаю новый проект с кодом из Вашего поста получаю диалог в заголовке которого только первая буква (рис правый)


Мистика, ё, маё....
Видимо в Delphi 2010 как-то иначе нужно действовать...

----
PS Точно мистика...
Поместил CommCtrl, в новом проекте, в конец uses заработало...
вернул на первое место - опять только первая буква...



Осталось добавить в этот hint компоненты и будет жизнь прекрасна!

Последний раз редактировалось KiL0z, 23.05.2011 в 21:22.
Ответить с цитированием
  #6  
Старый 23.05.2011, 22:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

по поводу стиля: это я манифест не включил (TXPManifest не положил на форму)
по поводу CommCtrl: какой-то из модулей "перебивает" что-то из CommCtrl, имхо
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 24.05.2011, 14:01
KiL0z KiL0z вне форума
Прохожий
 
Регистрация: 27.05.2010
Сообщения: 23
Репутация: 10
Смущение

NumLock, спасибо
Осталось как-то всунуть в подсказку свои компоненты...
Ответить с цитированием
  #8  
Старый 24.05.2011, 19:32
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

мне бы заставить персонажа говорить по-русски . на XP говорит и на русском и на английском, а на Seven только на английском, русские слова пропускает
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 24.05.2011, 21:06
KiL0z KiL0z вне форума
Прохожий
 
Регистрация: 27.05.2010
Сообщения: 23
Репутация: 10
По умолчанию

В 7ке же нет поддержки агента - нужно все компоненты же ставить самому, причем не факт что будут правильно работать. У меня, например, персонажи появляются в розовом квадрате - почему то прозрачность окна отрубается

PS Во вложении файл для русского языка (произношения и развознования): http://zalil.ru/31111466 - пакет синтез/заспознование;
во вложении - синтез русской речи
Вложения
Тип файла: zip AgtX0419.zip (86.9 Кбайт, 10 просмотров)
Ответить с цитированием
  #10  
Старый 25.05.2011, 10:37
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

для 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, как сказано в писании:
Цитата:
Microsoft Agent now supports SAPI 5 Text-to-Speech and Speech Recognition components.
, вообще болтать перестал.

к тому же:
Цитата:
Agent no longer includes support for multiple languages. The language used by Agent is always assumed to be the user's current language, as registered with the operating system. The LanguageID property of the Agent object is still writable, but its value is ignored by Agent on Vista. For example if the user's language is set to US English (&H0409), and he or she uses a program that sets the LanguageID to French (&H040C), then the voice tip text, and Advanced Character Options dialogs will still appear in English.
но при смене LanguageID вообще происходит AV (на XP и 7)
__________________
Пишу программы за еду.
__________________

Последний раз редактировалось NumLock, 25.05.2011 в 10:42.
Ответить с цитированием
  #11  
Старый 25.05.2011, 10:58
KiL0z KiL0z вне форума
Прохожий
 
Регистрация: 27.05.2010
Сообщения: 23
Репутация: 10
Печаль

Ну я ставил XP-шного агента - говорит по русски нормально, только отображается на розовом фоне и иногда ошибки при закрытии диалогов выдает (при своих работаешь, если заменяешь их своими - ошибки вот сыплятся у него) и закрывается.
Видимо в 7ке явное какие-то противодействие ему
Ответить с цитированием
  #12  
Старый 27.05.2011, 15:27
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

извращение полное, конечно, но больше ничего сделать не получается в расчет самописные формы, похожие на 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  
Старый 27.05.2011, 19:19
KiL0z KiL0z вне форума
Прохожий
 
Регистрация: 27.05.2010
Сообщения: 23
Репутация: 10
По умолчанию

Ну с этим я и так работать умею...
Мне нужно именно диалоги похожие сделать, а агент, введу отказа его поддержки в 7ке мне не нужен, и любые его компоненты то же.
В том то и идея, что бы сделать диалоги в стиле помощников Office 2003 - в стиле Ballon Hint (т.е. с хвостиком) или просто Ballon (т.е. без хвостика). Главное что бы стиль был тот же самый: заголовок, размещение текста, такие другие элементы. А помощник, хоть вещь и прикольная, но на его программирование очень много времени нужно, увы - если с ним вообще связываться.
Как это сделать - это уже вопрос...

Последний раз редактировалось KiL0z, 27.05.2011 в 19:21.
Ответить с цитированием
  #14  
Старый 27.05.2011, 20:25
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,718
Репутация: 52347
По умолчанию

Ну возьмите вы компоненты которые умеют такие хинты рисовать, например девок или тмс.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #15  
Старый 27.05.2011, 21:04
KiL0z KiL0z вне форума
Прохожий
 
Регистрация: 27.05.2010
Сообщения: 23
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
девок или тмс.
А оригинальное название можно?
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter   Ссылка на Telegram