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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.11.2015, 20:49
Dreammaster Dreammaster вне форума
Прохожий
 
Регистрация: 11.06.2014
Сообщения: 36
Версия Delphi: RAD Studio XE3
Репутация: 10
По умолчанию Кликабельный Hint

Здравствуйте, уважаемые форумчане. У меня такое дело: Программа стартует сразу свернутая в трей и от туда выдает hint:
Код:
BalloonHint1.Description := label1.Caption +#13#10+ label2.Caption +#13#10+ label5.Caption+#13#10+ label3.Caption+#13#10+ label6.Caption+#13#10+ label4.Caption;
    point.X := 1010;   //label1.Width;
    point.Y := 990;   //label1.Height;
    balloonhint1.ShowHint(edit1.ClientToScreen(point));
end;
Hint показывается определенное время и исчезает (Hide After 5000). Всё отлично работает. Но вот никак не могу придумать, как сделать hint кликабельным, т.е. пока подсказку видно, на нее можно было бы нажать и тогда происходит определенное действие. Event'a у BalloonHint нет, и как его создать я ума не приложу. Подбросьте идеи.
Ответить с цитированием
  #2  
Старый 11.11.2015, 22:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,047
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Посмотри в MSDN, там при клике на этот хинт окну приложения посылается определенное сообщение, которое надо обработать самому. Я дописывал этот функционал в TCollTrayIcon и, если правильно помню, делал и при чистой WinAPI реализации. Главное, при создании иконки подсунуть правильный хэндл окна (то окно, в котором ты будешь потом обрабатывать это сообщение).
Ответить с цитированием
  #3  
Старый 12.11.2015, 03:46
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Event'a у BalloonHint нет, зато вероятно есть WindowProc что принимает все сообщения для балунхинтовой формы, заморские товарисчи советуют создать потомка и перекрыть у него эту процедуру примерно так
Код:
...
  private
    { Private declarations }
    FOnBalloonClick: TNotifyEvent;
  protected
    procedure WindowProc(var Message: TMessage); override;
  public
    { Public declarations }
  published
    property OnBalloonClick: TNotifyEvent read FOnBalloonClick write FOnBalloonClick;
  end;
...

procedure TMyBalloonHint.WindowProc(var Message: TMessage);
begin

  case Message.Msg of
    WM_SYSTEM_TRAY_MESSAGE:
      begin
         case Message.lParam of
           NIN_BALLOONUSERCLICK:
             begin
               FOnBalloonClick(Self);
             end
         else
           inherited;
         end;
      end;

  else
    Inherited;
  end;
end;
В D7 к сожалению, нет класса TBalloonHint, так что не могу проверить это в натуре
Ответить с цитированием
  #4  
Старый 12.11.2015, 19:32
Dreammaster Dreammaster вне форума
Прохожий
 
Регистрация: 11.06.2014
Сообщения: 36
Версия Delphi: RAD Studio XE3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Event'a у BalloonHint нет, зато вероятно есть WindowProc
Хм...Благодарю. Приду с работы (аж в воскресенье)- буду пробовать.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter