簡體   English   中英

Delphi XE2:跳轉到CHM中的錨點?

[英]Delphi XE2: Jumping to an anchor in CHM?

在Delphi XE2程序中,如何跳轉到CHM幫助文件主題中的錨點? 錨具有以下格式(從HTML HelpViewer中顯示CHM文件的主題頁面的源中提取):

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

我嘗試了以下方法:

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

不幸的是,這不起作用:它確實跳到了這個主題,但只是跳到主題的頂部,而不是主題,這是幾個向下滾動的頁面。

跳到CHM的錨點
使用Delphi2010測試 - DelphiXE2 - Windows XP

如何使用Delphi跳轉到chm文件(Compiled HTML Help)中的錨點

是的,可以使用HtmlHelp()命令跳轉到錨點。
<a name="my_anchor"></a>

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

鏈接: Overview.htm

  • 注意:通過delphi程序跳轉到不需要此鏈接
    錨點。(僅用於測試)。

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

ANCHOR在: 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;
  • 單擊Button HelpKeyword('UsingtheMenus')

結果:

將打開幫助文件並顯示FirstTopic.htm 文本UsingtheMenus插入searchfield。 沒有跳到錨!


  • 單擊Button HelpContext(IDH_UsingtheMenus)')

除搜索框外,相同的結果為空。


最后2次點擊演示如下:
HelpFile2 \\ sample.chm文件中沒有秘密ID或關鍵字可用。


現在我們更改幫助文件,以便除了Overview.htm#UsingtheMenus ,其他兩種方法也會成功。

  • 關閉App'Project.exe`
  • 再次運行'Project.exe`。
  • 確保with被選中。

現在我們在文件夾HelpFile中使用“sample.chm”
使用以下設置。

sample.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

sample.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>

sample.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#Using theMenus”並不存在!

我們來試試吧

不要忘記,嘗試以下各項后的“幫助窗口”,再次關閉。 否則您無法跟蹤不同的狀態。

  • 單擊Button HelpKeyword('UsingtheMenus')

在此輸入圖像描述

結果:
將打開幫助文件並顯示FirstTopic.htm 文本UsingtheMenus插入searchfield。 在列表框中選擇文本UsingtheMenus
如果單擊“ Show
它被跳到了錨點。


  • 單擊Button HelpContext(IDH_UsingtheMenus)')

結果:

將打開幫助文件並顯示overview.htm 它被跳到了錨點。


  • 單擊按鈕Overview.htm#UsingtheMenus

結果:

與上述結果相同。
將打開幫助文件並顯示overview.htm 它被跳到了錨點。


現在我們可以使用三種方法之一跳轉到所需的標記。


如果有人對其他按鈕的功能感興趣,請繼續閱讀並獲取更多信息。

將在明天繼續。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM