-Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в community_coding

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.12.2004
Записей:
Комментариев:
Написано: 536


Delphi [Msg on THintWindow]

Воскресенье, 18 Ноября 2007 г. 17:30 + в цитатник
livemask2 все записи автора Добрый день!
Подскажите пожалуйста. Как перехватывать сообщения, посланные классу THintWindow.

Он просто никак не реагирует на перехватчик.
Мой (нерабочий) код:

TMsgHint = class(THintWindow)
private
procedure WMNCMOUSEMOVE(var message: TMessage); message WM_NCMOUSEMOVE;
end;

...

Procedure TMsgHint.WMNCMOUSEMOVE(var message: TMessage);
begin
Beep; //По идее, должно пикать когда мышь над хинтом. Ан нет..
end;

Нет_я   обратиться по имени Воскресенье, 18 Ноября 2007 г. 20:29 (ссылка)

а как нсчет override?


TLС v.0.7.31c
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Воскресенье, 18 Ноября 2007 г. 20:34 (ссылка)
?

Так всё-таки можно прехватить хинтовые сообщения?
Пример можно? =)
Ответить С цитатой В цитатник
Нет_я   обратиться по имени Воскресенье, 18 Ноября 2007 г. 20:38 (ссылка)
Livemask, помница мы создавали собственные объекты на программировании. делали свои процедуры, веселились над стандартными компонентами... но это было так давно...
TLС v.0.7.31c
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Воскресенье, 18 Ноября 2007 г. 20:44 (ссылка)
Нет_я, А я вобще нигде не учился. Всё самостоятельно из учебников.
Если я не ошибаюсь, override - перекрывает всякие там родительские методы.
А что мне перекрыть в моём случае?
Loreleya
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Воскресенье, 18 Ноября 2007 г. 20:45 (ссылка)
Нет_я, а с хинтами вы баловались? Это, ведь, особый класс.
Loreleya
Ответить С цитатой В цитатник
Нет_я   обратиться по имени Воскресенье, 18 Ноября 2007 г. 20:46 (ссылка)

Livemask, давай меряться письками- я тоже учился из учебников, а они были еще больше учебнее чем твои учебники!



TMsgHint.WMNCMOUSEMOVE я думаю это перекрывать


TLС v.0.7.31c
Ответить С цитатой В цитатник
Нет_я   обратиться по имени Воскресенье, 18 Ноября 2007 г. 20:47 (ссылка)
Livemask: Нет_я, а с хинтами вы баловались? Это, ведь, особый класс.

Loreleya


какая разница, любой класс можно перекрывать


TLС v.0.7.31c
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Воскресенье, 18 Ноября 2007 г. 20:49 (ссылка)
Исходное сообщение Нет_я:
Livemask, давай меряться письками- я тоже учился из учебников, а они были еще больше учебнее чем твои учебники!
TMsgHint.WMNCMOUSEMOVE я думаю это перекрывать
TLС v.0.7.31c

Письками? Ну если письками, то давай =)))
Loreleya
Ответить С цитатой В цитатник
Нет_я   обратиться по имени Воскресенье, 18 Ноября 2007 г. 20:50 (ссылка)
Livemask, мою можешь найти в моем фотоальбоме
TLС v.0.7.31c
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Воскресенье, 18 Ноября 2007 г. 20:56 (ссылка)
Исходное сообщение Нет_я:
TMsgHint.WMNCMOUSEMOVE я думаю это перекрывать

Эту процедуру я сам создал в попытке перехватить сообщение WM_NCMOUSEMOVE. Как я её перекрою-то?
Loreleya
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Воскресенье, 18 Ноября 2007 г. 20:57 (ссылка)
Исходное сообщение Нет_я:
Livemask, мою можешь найти в моем фотоальбоме
TLС v.0.7.31c

Бугага!! =))
Loreleya
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Воскресенье, 18 Ноября 2007 г. 20:58 (ссылка)
Может сообщение не правильное?
Loreleya
Ответить С цитатой В цитатник
livemask2   обратиться по имени Комментарий к Delphi [Msg on THintWindow] Воскресенье, 18 Ноября 2007 г. 21:02 (ссылка)
Ну блин..
Попробовал WMMOUSEMOVE - тоже не получается.
Loreleya
Ответить С цитатой В цитатник
Нет_я   обратиться по имени Воскресенье, 18 Ноября 2007 г. 21:08 (ссылка)

Livemask, посмотри на сырцы класса. найди нужную процедурку и перекрой её.


если говорю бред - извини. под вечер мозг не работает и делфы под рукой нет.


TMsgHint.WMNCMOUSEMOVE


это событие при наведении на всплывающую подсказку "бла-бла"? например: label1.hint='блабла'


TLС v.0.7.31c
Ответить С цитатой В цитатник
Нет_я   обратиться по имени Воскресенье, 18 Ноября 2007 г. 21:17 (ссылка)

Livemask,


TMsgHint = class(THintWindow)

private

procedure WMNCMOUSEMOVE(var message: TMessage); Override; message WM_NCMOUSEMOVE;

end;



Procedure TMsgHint.WMNCMOUSEMOVE(var message: TMessage);

begin

Beep; //По идее, должно пикать когда мышь над хинтом. Ан нет..

end;


TLС v.0.7.31c
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Понедельник, 19 Ноября 2007 г. 00:01 (ссылка)
хм.. сейчас попробую =)
Loreleya
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Понедельник, 19 Ноября 2007 г. 00:06 (ссылка)
Нет. В родительском классе нет такого метода, чтобы его перекрыть.
По-моему нужно перекрывать WndProc и там уже разбирать сообщения. Верно?
Да, точно..
А таким способом - никак не получится.
Loreleya
Ответить С цитатой В цитатник
Нет_я   обратиться по имени Понедельник, 19 Ноября 2007 г. 00:15 (ссылка)

Livemask, мой девиз был таков:


нет в этом классе - ищи в предке


никогда не подводил))


Эхх... погрузился я в эти web-технологии и совсем забыл прекрасный Дельфи. Насыпал мне соль на рану. Теперь ставить буду...палюбому


TLС v.0.7.31c
Ответить С цитатой В цитатник
borisiq   обратиться по имени Понедельник, 19 Ноября 2007 г. 02:12 (ссылка)
Если внимательно посмотреть исходники THintWindow, то можно увидеть, что она передаёт все сообщения мыши лежащиму под ней окну. Т.е. при обработке сообщения WM_NCHITTEST возвращается константа HTTRANSPARENT - говорит о том, что сообщения от движеня мыши и нажатия её кнопок будут передаваться нижележащиму окну.
code:

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


Если мне не изменяет мой склероз и MSDN.
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Понедельник, 19 Ноября 2007 г. 02:15 (ссылка)
borisiq, а у меня нет низлежащего окна. У меня получается родитель - само приложение (TApplication).
Мне нужно перехватывать сообщения приложения?
Loreleya
Ответить С цитатой В цитатник
borisiq   обратиться по имени Понедельник, 19 Ноября 2007 г. 02:23 (ссылка)
Исходное сообщение Livemask
borisiq, а у меня нет низлежащего окна. У меня получается родитель - само приложение (TApplication).
Мне нужно перехватывать сообщения приложения?
Loreleya

Я же не знаю что ты там пишешь.
Можно попробовать создать обычную форму и вызывать поверх неё хинт. Перехватывать сообщения мыши этой формы и смотреть, будут ли ей передаваться сообщения когда мышь ползает по хинту.
Ответить С цитатой В цитатник
livemask2   обратиться по имени Ответ в community_coding; Delphi [Msg on THintWindow] Понедельник, 19 Ноября 2007 г. 02:47 (ссылка)
borisiq, спасибо! Вроде бы получилось=))
Loreleya
Ответить С цитатой В цитатник
Комментировать К дневнику Страницы: [1] [Новые]
 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку