Delphi XE2: переход на якорь в CHM?

в программе Delphi XE2, как перейти к якорю внутри раздела файла справки CHM? Якорь имеет следующий формат (извлеченный из источника страницы темы в HTML HelpViewer, показывающей файл CHM):

<a name="my_anchor_id"></a>

я попробовал следующий:

Application.HelpJump('MyTopicName.htm#my_anchor_id');

к сожалению, это не работает: он переходит к этой теме, но только к верхней части темы, а не к якорю, который несколько прокруток вниз по странице.

1 ответов


Прыжки на якорь в CHM
Протестировано с Delphi2010-DelphiXE2-Windows XP

как перейти к якорь в файле chm (скомпилированная HTML-справка) с Delphi.

да, можно с помощью команды HtmlHelp() перейти к якорю.
<a name="my_anchor"></a>

 HtmlHelp(0,hpPath+'::/Overview.htm#UsingtheMenus>main',HH_DISPLAY_TOPIC,DWORD(nil));

ссылка в: обзор.НТМ

  • Примечание: эта ссылка не нужны прыгать через программа delphi для
    якорь.(Только для тестирования).

обзор.НТМ

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
[...]
<BODY bgColor=#f7f8e2>
<H1>Overview</H1>
<A HREF="Overview.htm#UsingtheMenus">Using the Menus</A>
[...]

якорь в : обзор.НТМ

[...]
<A NAME="UsingtheMenus" </A>
<P><STRONG>Using the Menus and Toolbars</STRONG>
[...]

если кто-то хочет попробовать.

здесь больше информации и testprogram:

enter image description here

Запустить Project1.exe и выберите без :

enter image description here

Группы1.pas / the команда

procedure TForm1.Button2Click(Sender: TObject);
begin
    HtmlHelp(0,hpPath+'::/Overview.htm#UsingtheMenus>main',HH_DISPLAY_TOPIC,DWORD(nil));
end;
  • нажать на кнопку Overview.htm#UsingtheMenus

Результат:

открывается файл справки и overview.htm появляется. Это было прыгнул на якорь.

enter image description here


загрузить исходный Проект1.exe D2010 и XE2.
Загрузить исходный образец.проекта htmlhelp CHM-файл.

скачать


теперь давайте проверим другие 2 кнопки

procedure TForm1.HelpKeywordClick(Sender: TObject);
begin
  Application.HelpKeyword('UsingtheMenus');
end;

procedure TForm1.HelpContextClick(Sender: TObject);
begin
  Application.HelpContext(IDH_UsingtheMenus);
end;
  • Нажмите кнопку HelpKeyword('UsingtheMenus')

Результат:

открывается файл справки и FirstTopic.htm появляется. Текст UsingtheMenus вставляется в поле поиска. не прыгать на якорь!


  • Нажмите кнопку HelpContext(IDH_UsingtheMenus)')

тот же результат, за исключением пустого поля поиска.


в последние 2 клика демонстрируют здесь:
Есть нет секретных идентификаторов или ключевых слов в файле HelpFile2\sample.chm доступно.


теперь мы изменим файл справки так что кроме Overview.htm#UsingtheMenus два других метода приводят к успеху.

  • закройте проект приложения.exe'
  • Выполнить '.снова exe.
  • убедитесь, что with выбран.

теперь мы используем "образец.chm " в папке HelpFile\
со следующими настройками.

образец.h

#define IDH_Creating_Projects_and_Topics 1005
#define IDH_Overview 1003
#define IDH_UsingtheMenus 1009

образец.Али!--34-->

IDH_Overview=Overview.htm
IDH_welcom=FirstTopic.htm
IDH_UsingtheMenus=Overview.htm#UsingtheMenus

образец.hcc

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
[...]
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="Using the Menus">
            <param name="Local" value="Overview.htm#UsingtheMenus">
        </OBJECT>   
[...]
</HTML>

образец.hhk

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
[...]
    <LI> <OBJECT type="text/sitemap">
        <param name="Name" value="Using the Menus">
        <param name="Name" value="Using the Menus">
        <param name="Local" value="Overview.htm#UsingtheMenus">
        </OBJECT>   
[...]
</HTML>

если мы компилируем " образец.chm", мы получаем сообщение об ошибке.

HHC3015: Warning: An alias has been created to "Overview.htm#UsingtheMenus" but the file does not exist.

это нормально, потому что файл "Общее представление.htm#UsingtheMenus " на самом деле не существует !

попробуем

не забывайте ,что "окно справки" после попытки каждого из следующих, чтобы закрыть снова. В противном случае вы не можете отслеживать различные состояния.

  • Нажмите кнопку HelpKeyword('UsingtheMenus')

enter image description here

Результат:
Откроется файл справки и FirstTopic.htm появляется. Текст UsingtheMenus вставляется в поле поиска. Текст UsingtheMenus выбирается в списке
Если вы нажмете Show
Это было прыгнул на якорь.


  • Нажмите кнопку HelpContext(IDH_UsingtheMenus)')

Результат:

открывается файл справки и overview.htm появляется. Это было прыгнул на якорь.


  • нажать на кнопку Overview.htm#UsingtheMenus

Результат:

тот же результат, что и выше.
Откроется файл справки и overview.htm появляется. Это было прыгнул на якорь.


теперь мы можем использовать один из трех методов, чтобы перейти на нужную отметку.


если кто-то заинтересован в функционировании других кнопок, то читайте дальше и получить больше информации.

продолжение будет завтра.