Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрыть Хинт (THintWindow) по клику, необходимо убирать Хинт по клику мышкой 
:(
    Опции темы
Мозгоносец
Дата 19.8.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 11.7.2009

Репутация: нет
Всего: нет



Уважаемые господа! Стоит такая несложная задача: имею наследника THintWindowExt = class (THintWindow), нужно показывать по определенному событию объект Хинт этого класса и проигрывать в это время звук. Во время показа Хинта пользователь может прервать показ Хинта и прослушивание музыки, кликнув по Хинту. Вроде бы все просто, делаю примерно так:
Код

============
type
  THintWindowExt = class (THintWindow)
  private
    procedure Kill(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
end;
============

constructor THintWindowExt.Create(AOwner: TComponent);
begin
  inherited;
  Self.OnClick := SElf.Kill; // пробовал обрабатывать message   WM_LBUTTONDOWN - та же проблема...
end;

procedure THintWindowExt.Kill(Sender: TObject);
begin
// СЮДА СООБЩЕНИЕ НЕ ДОХОДИТ
//  Self.Color := clRed; 
  Self.Hide;
end;
==============


Но не работает.
 Что я делаю не так? Да, Хинт создается в рантайме так:   hnt := THintWindowExt.Create(Form1);  hnt.Parent := Form1;
 Вызывается к показу так:   hnt.ActivateHint(rct, hnt.Text);

 В справке написано, что при таком показе нужно убирать так: hnt.ReleaseHandle. Так и делаю. А нужно - по клику по нему мышкой. Спасибо.

PM MAIL   Вверх
MetalFan
Дата 19.8.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Хинт - есть хинт... никаких кликов он не ловит, он для них "прозрачен"
причина:
Код

procedure THintWindow.WMNCHitTest(var Message: TWMNCHitTest);
begin
  Message.Result := HTTRANSPARENT;
end;

решение очевидно?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Мозгоносец
  Дата 20.8.2009, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 11.7.2009

Репутация: нет
Всего: нет



Цитата(MetalFan @ 19.8.2009,  17:48)
Хинт - есть хинт... никаких кликов он не ловит, он для них "прозрачен"
причина:
Код

procedure THintWindow.WMNCHitTest(var Message: TWMNCHitTest);
begin
  Message.Result := HTTRANSPARENT;
end;

решение очевидно?

Вроде бы... Получилось так:

Код

procedure THintWindowEx.WMNCHitTest(var Message: TWMNCHitTest);
begin
  Message.Result := HTCLIENT;
  Parent.SetFocus; // попробуйте без этого
end;

 В общем, спасибо!
PM MAIL   Вверх
MetalFan
Дата 20.8.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Мозгоносец, имхо достаточно было и просто ничего не трогать в обработчике этого сообщения.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Мозгоносец
Дата 20.8.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 11.7.2009

Репутация: нет
Всего: нет



Так если ничего не трогать, тогда и проблема возникает: на работает, как хочется... smile 
PM MAIL   Вверх
MetalFan
Дата 20.8.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Мозгоносец, я имел ввиду в методе наследника ничего не делать. т.е. не вызывать метод предка и не менять Message.Result


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.