📄 delphi程序与chm帮助关联的简单实现.htm
字号:
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt"><FONT
size=3><SPAN style="mso-spacerun: yes">
</SPAN>i:integer;<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt"><FONT
size=3>begin<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><FONT size=3><SPAN lang=EN-US
style="mso-bidi-font-size: 10.5pt"><SPAN style="mso-spacerun: yes">
</SPAN>//</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">检查帮助窗口是否已经存在</SPAN><SPAN
lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt"><FONT
size=3><SPAN style="mso-spacerun: yes">
</SPAN>HWndHelp:=FindWindow(nil,conHelpTitle);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><FONT size=3><SPAN lang=EN-US
style="mso-bidi-font-size: 10.5pt"><SPAN style="mso-spacerun: yes">
</SPAN>if HwndHelp<>0 then<SPAN style="mso-spacerun: yes"> </SPAN>//
</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如存在则关闭</SPAN><SPAN
lang=EN-US style="mso-bidi-font-size: 10.5pt"><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt"><FONT
size=3><SPAN
style="mso-spacerun: yes">
</SPAN>SendMessage(HwndHelp,WM_CLOSE,0,0);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt"><FONT
size=3><SPAN style="mso-spacerun: yes">
</SPAN>i:=ShellExecute(handle, 'open',Pchar(strCurExePath+'\help.chm''),nil,
nil, sw_ShowNormal);<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><SPAN lang=EN-US style="mso-bidi-font-size: 10.5pt"><FONT
size=3><SPAN style="mso-spacerun: yes"> </SPAN>if i<>42
then<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><FONT size=3><SPAN lang=EN-US
style="mso-bidi-font-size: 10.5pt"><SPAN
style="mso-spacerun: yes"> </SPAN>Showmessage('
help.chm </SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">帮助文件损坏!</SPAN><SPAN
lang=EN-US style="mso-bidi-font-size: 10.5pt">');<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><FONT size=3><SPAN lang=EN-US
style="mso-bidi-font-size: 10.5pt">end;</SPAN><SPAN lang=EN-US>
</SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0.75pt; TEXT-ALIGN: left; mso-char-indent-count: .07; mso-char-indent-size: 10.7pt"
align=left><SPAN lang=EN-US><FONT size=3> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><FONT size=3><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">二、上下文关联的</SPAN><SPAN
lang=EN-US>chm</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">帮助</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><FONT size=3><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在</SPAN><SPAN
lang=EN-US>Delphi</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中实现上下文关联的</SPAN><SPAN
lang=EN-US>chm</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">帮助,可以</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">调用</SPAN><SPAN
lang=EN-US style="mso-bidi-font-size: 10.5pt">Windows</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">系统目录</SPAN><SPAN
lang=EN-US style="mso-bidi-font-size: 10.5pt">System32</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下的</SPAN><SPAN
lang=EN-US style="mso-bidi-font-size: 10.5pt">HHCTRL.OCX</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控件中的</SPAN><SPAN
lang=EN-US style="mso-bidi-font-size: 10.5pt">HtmlHelpA</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数实现。</SPAN><SPAN
lang=EN-US style="mso-bidi-font-size: 10.5pt"> </SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">需要以下几个步骤:</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"><FONT size=3>
</FONT></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><FONT size=3><SPAN lang=EN-US>1 </SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设置相关控件的</SPAN><SPAN
lang=EN-US>HelpContext</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">属性。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><FONT size=3><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">
</SPAN></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">例,主窗体</SPAN><SPAN
lang=EN-US>frmMain:</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:</SPAN><SPAN
lang=EN-US>10100 </SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,其中的文本框</SPAN><SPAN
lang=EN-US> edtInput</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:</SPAN><SPAN
lang=EN-US>10101 </SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; TEXT-ALIGN: left; mso-char-indent-count: 3.0; mso-char-indent-size: 10.5pt"
align=left><FONT size=3><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对话框</SPAN><SPAN
lang=EN-US>dlgReport</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:</SPAN><SPAN
lang=EN-US>10200 </SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">,其中的组合列表框</SPAN><SPAN
lang=EN-US> cbReportEdit</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">:</SPAN><SPAN
lang=EN-US>10201</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><FONT size=3><SPAN lang=EN-US>2 </SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">声明</SPAN><SPAN
lang=EN-US>HtmlHelpA</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3>function HtmlHelpA (hwndcaller:Longint;
lpHelpFile:string; wCommand:Longint;dwData:string): HWND;stdcall; external
'hhctrl.ocx'</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><FONT size=3><SPAN lang=EN-US>3<SPAN style="mso-spacerun: yes">
</SPAN>F1</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">按键响应</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><FONT size=3><SPAN lang=EN-US>//</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">公用函数</SPAN><SPAN
lang=EN-US>ShowChmHelp</SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">显示不同帮助画面。</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3>procedure ShowChmHelp(sTopic:string);
</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3>var i:integer;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3>begin</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">
</SPAN>i:=HtmlHelpA(Application.Handle,Pchar(ExePath+'\help.chm’),HH_DISPLAY_TOPIC,sTopic);</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">
</SPAN>if i=0 then</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">
</SPAN>begin</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><FONT size=3><SPAN lang=EN-US><SPAN
style="mso-spacerun: yes"> </SPAN>Showmessage('
help.chm </SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">帮助文件损坏!</SPAN><SPAN
lang=EN-US>');</SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3><SPAN
style="mso-spacerun: yes">
</SPAN>exit;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left"
align=left><SPAN lang=EN-US><FONT size=3><SPAN style="mso-spacerun: yes">
</SPAN>end;</FONT></SPAN></P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -