6

Delphi XE2 プログラムで、CHM ヘルプ ファイルのトピック内のアンカーにジャンプするにはどうすればよいですか? アンカーの形式は次のとおりです (CHM ファイルを表示する HTML HelpViewer のトピック ページのソースから抽出)。

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

私は次のことを試しました:

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

残念ながら、これは機能しません。このトピックにジャンプしますが、ページを数回下にスクロールするアンカーではなく、トピックの先頭にのみジャンプします。

4

1 に答える 1

3

CHM でのアンカーへのジャンプDelphi2010 で
テスト済み - DelphiXE2 - Windows XP

Delphi で chm ファイル(コンパイル済み HTML ヘルプ)のアンカーにジャンプする方法。

はい、HtmlHelp() コマンドでアンカーにジャンプできます。
<a name="my_anchor"></a>

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

のリンク: Overview.htm

  • 注: このリンクは、Delphi プログラムを介してアンカーにジャンプする必要はありません
    (テスト用のみ)。

概要.htm

<!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>
[...]

アンカー: Overview.htm

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

やってみたい方はどうぞ。

詳細情報とテストプログラムは次のとおりです。

ここに画像の説明を入力

Project1.exe を実行し、なしで選択します。

ここに画像の説明を入力

Unit1.pas / コマンド

procedure TForm1.Button2Click(Sender: TObject);
begin
    HtmlHelp(0,hpPath+'::/Overview.htm#UsingtheMenus>main',HH_DISPLAY_TOPIC,DWORD(nil));
end;
  • ボタンをクリック Overview.htm#UsingtheMenus

結果:

ヘルプ ファイルが開き、 が表示されoverview.htmます。アンカーにジャンプしました。

ここに画像の説明を入力


ソース Project1.exe D2010 および XE2 をダウンロードします。
ソース sample.chm HtmlHelp プロジェクトをダウンロードします。

ダウンロード


次に、他の 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 ファイルには秘密の ID またはキーワード
はありません。


ここで、他の 2 つの方法に加えてOverview.htm#UsingtheMenus、成功につながるようにヘルプ ファイルを変更します。

  • アプリ「Project.exe」を閉じます
  • 「Project.exe」を再度実行します。
  • が選択されていることを確認しwithます。

ここでは、HelpFile\ フォルダーにある "sample.chm" を
次の設定で使用します。

サンプル.h

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

sample.ali

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>

「sample.chm」をコンパイルすると、エラー メッセージが表示されます。

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

ファイル「Overview.htm#UsingtheMenus」は実際には存在しないため、これは正常です。

試してみよう

以下の各操作を行った後、再度「ヘルプウィンドウ」を閉じることをお忘れなく。そうしないと、さまざまな状態を追跡できません。

  • ボタンをクリックHelpKeyword('UsingtheMenus')

ここに画像の説明を入力

結果:
ヘルプ ファイルが開き、 が表示されFirstTopic.htmます。テキストUsingtheMenusが検索フィールドに挿入されます。リストボックスでテキストUsingtheMenusを選択して
クリックすると アンカーShow
ジャンプしました。


  • ボタンをクリックHelpContext(IDH_UsingtheMenus)')

結果:

ヘルプ ファイルが開き、 が表示されoverview.htmます。アンカーにジャンプしました。


  • ボタンをクリック Overview.htm#UsingtheMenus

結果:

上記と同じ結果です。
ヘルプ ファイルが開き、 が表示されoverview.htmます。アンカーにジャンプしました。


これで、3 つの方法のいずれかを使用して目的のマークにジャンプできます。


他のボタンの機能に興味がある場合は、読み進めて詳細情報を入手してください。

明日につづく。

于 2013-03-15T03:01:31.103 に答える