TApplication. Проблемы с HelpCommand в Delphi6Delphi , Синтаксис , Ошибки и ИсключенияTApplication. Проблемы с HelpCommand в Delphi6Автор: Александр Бесхлебный Описание: Если для формы включить biHelp в BorderIcons, то при вызове контекстной справки (при нажатии F1) должно появляться всплывающее окно. Такое поведение наблюдается в приложениях, созданных в Delphi5 и более ранних версиях. При тех же условиях в приложениях, созданных в Delphi6, открывается нормальное окно справочной системы Windows. Анализ: Видимо, для независимости от ОС была переработана система вызова справки. Если в Delphi5 в методе TApplication.InvokeHelp справочная система Windows вызывалась напрямую через WinHelp, то в Delphi6 вызывается метод Hook объекта, реализующего интерфейс IHelpSystem (свойство TApplication.HelpSystem). Таким объектом является объект класса THelpManager, описанный в файле ..\Source\Rtl\Common\HelpIntfs.pas. При вызове его метода Hook с параметром Command = HELP_CONTEXTPOPUP вызывается метод ShowContextHelp, как и в случае когда Command = HELP_CONTEXT. Если проследить дальнейшие вызовы, то будет видно, что в конце концов вызывается WinHelp с параметром Command = HELP_CONTEXT. ТИПОВЫЕ РЕШЕНИЯ. Вариант 1. Самостоятельно обрабатывать событие TApplication.OnHelp. Пример кода:
Вариант 2 (для ленивых :) Чтобы не писать в каждом приложении предыдущий код, необходимо подправить метод THelpManager.Hook в файле HelpIntfs.pas и закомментировать следующий участок:
Тогда вместо ShowContextHelp будет вызываться CallSpecialWinHelp. Т.к. править исходники VCL не рекомендуется (что правильно), то исправленный файл HelpIntfs.pas необходимо сохранить в каталоге, отличном от ..\Source\Rtl\Common. Не забудьте указать этот каталог в Project Options->Search path или Environment Option->Library path. Скачать тест и патч StoneTest_30.zip (8.5k) В статье описываются проблемы с вызовом контекстной справки в приложениях на Delphi 6, а также предлагаются два варианта решения этой проблемы. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Ошибки и Исключения ::
|
||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |