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

Delphi Sources



Вернуться   Форум по 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 Кбайт, 69 просмотров)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #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, имхо
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter