PDA

View Full Version : استفاده از فایل chm در دلفی



mohamad6
پنج شنبه 12 تیر 1382, 10:19 صبح
سلام delphiassistant جان
یکی دوبار این سئوال رو پرسیدم ولی کسی جواب نداد این بار از شما می‌پرسم :
در دلفی چطوری می‌شه از فایلهایی که با پسوند chm ایجاد کرده‌ایم برای help استفاده کنیم ؟
فایل chm رو در پنجره application ودر قسمت helpFile به پروژه اضافه می‌کنم ولی وقتی برنامه رو اجرا می‌کنم با زدن کلید F1 نمی‌توانم فایل help رو ببینم.

مهدی کرامتی
پنج شنبه 12 تیر 1382, 11:53 صبح
<div dir=ltr>
Problem/Question/Abstract:
Do you long to move from WinHelp to HTML Help in your programs? The unit below converts all WinHelp calls to HTML Help enabling you to upgrade with the minimum of effort.

Answer:

Save this unit to a directory on your Environment Options|Library|Library Path and add to your project uses clause, all WinHelp requests will now be translated to HTML Help. Specify your *.chm file in the Project Options|Application|Help file setting. Context sensitive help will work as normal, use TApplication.HelpCommand to send help commands. eg. Application.HelpCommand(HELP_KEY, DWORD(keyData))


unit dmHTMLHelp;
&#123;Unit to translate WinHelp requests into HTML Help and call the API.&#125;
&#123;Written by Dave Murray, October 2001. dmurray@worldmark.com&#125;
&#123;NOTES&#58;
This unit assigns its own handler to the Application.OnHelp event.
DO NOT assign your own handler to Application.OnHelp.
Also, this unit ignores any form's HelpFile property. &#40;Delphi 4+&#41;&#125;

interface

uses
Windows, Messages, SysUtils, Forms;

const
&#123;commands to pass to HtmlHelp&#40;&#41;, see HTML Help API Reference&#125;
HH_DISPLAY_TOPIC = $0000; &#123;open help topic&#125;
HH_HELP_FINDER = $0000; &#123;backwards compatibility,use HH_DISPLAY_TOPIC instead&#125;
HH_DISPLAY_TOC = $0001; &#123;select Contents tab in nav pane&#125;
HH_DISPLAY_INDEX = $0002; &#123;select Index tab + search for keyword&#125;
HH_DISPLAY_SEARCH = $0003; &#123;select Search tab in nav pane&#125;
HH_SET_WIN_TYPE = $0004;
HH_GET_WIN_TYPE = $0005;
HH_GET_WIN_HANDLE = $0006;
HH_ENUM_INFO_TYPE = $0007;
HH_SET_INFO_TYPE = $0008;
HH_SYNC = $0009;
HH_RESERVED1 = $000A; &#123;not currently implemented&#125;
HH_RESERVED2 = $000B; &#123;not currently implemented&#125;
HH_RESERVED3 = $000C; &#123;not currently implemented&#125;
HH_KEYWORD_LOOKUP = $000D;
HH_DISPLAY_TEXT_POPUP = $000E; &#123;display string resource/text in a popup&#125;
HH_HELP_CONTEXT = $000F; &#123;display topic for context number&#125;
HH_TP_HELP_CONTEXTMENU = $0010; &#123;text popup help, same as HELP_CONTEXTMENU&#125;
HH_TP_HELP_WM_HELP = $0011; &#123;text popup help, same as HELP_WM_HELP&#125;
HH_CLOSE_ALL = $0012; &#123;close all windows opened by caller&#125;
HH_ALINK_LOOKUP = $0013; &#123;ALink version of HH_KEYWORD_LOOKUP&#125;
HH_GET_LAST_ERROR = $0014; &#123;not currently implemented&#125;
HH_ENUM_CATEGORY = $0015;
HH_ENUM_CATEGORY_IT = $0016;
HH_RESET_IT_FILTER = $0017;
HH_SET_INCLUSIVE_FILTER = $0018;
HH_SET_EXCLUSIVE_FILTER = $0019;
HH_INITIALIZE = $001C;
HH_UNINITIALIZE = $001D;
HH_PRETRANSLATEMESSAGE = $00FD;
HH_SET_GLOBAL_PROPERTY = $00FC;

function HtmlHelp&#40;hwndCaller&#58; THandle; pszFile&#58; PChar; uCommand&#58; cardinal; dwData&#58;
longint&#41;&#58; THandle; stdcall;

implementation

function HtmlHelp&#40;hwndCaller&#58; THandle; pszFile&#58; PChar; uCommand&#58; cardinal; dwData&#58;
longint&#41;&#58; THandle; stdcall; external 'hhctrl.ocx' name 'HtmlHelpA'; &#123;external API call&#125;

type
TdmHTMLHelp = class&#40;TObject&#41; &#123;encapsulates function&#125;
function ApplicationHelp&#40;Command&#58; Word; Data&#58; Longint; var CallHelp&#58; Boolean&#41;&#58;
Boolean;
end; &#123;TdmHTMLHelp..&#125;

function TdmHTMLHelp.ApplicationHelp&#40;Command&#58; Word; Data&#58; Longint; var CallHelp&#58;
Boolean&#41;&#58; Boolean;
&#123;translates WinHelp commands to HTMLHelp commands + calls API&#125;
var
HCommand&#58; word;
begin
&#123;make sure VCL doesn't activate WinHelp + function succeeds&#125;
CallHelp &#58;= false;
result &#58;= true;
&#123;translate WinHelp > HTMLHelp&#125;
case Command of
HELP_CONTENTS&#58;
begin
HCommand &#58;= HH_DISPLAY_TOC;
Data &#58;= 0;
end; &#123;HELP_CONTENTS..&#125;
HELP_CONTEXT&#58; HCommand &#58;= HH_HELP_CONTEXT;
HELP_CONTEXTPOPUP&#58; HCommand &#58;= HH_HELP_CONTEXT;
HELP_FINDER&#58; HCommand &#58;= HH_DISPLAY_TOPIC;
HELP_KEY&#58; HCommand &#58;= HH_DISPLAY_INDEX;
HELP_QUIT&#58;
begin
HCommand &#58;= HH_CLOSE_ALL;
Data &#58;= 0;
end; &#123;HELP_QUIT..&#125;
else
begin &#123;default&#125;
HCommand &#58;= HH_DISPLAY_TOPIC;
Data &#58;= 0;
end; &#123;default..&#125;
end; &#123;case Command..&#125;
&#123;call HTML Help API&#125;
HtmlHelp&#40;Application.MainForm.Handle, PChar&#40;Application.HelpFile&#41;, HCommand, Data&#41;;
end; &#123;function TdmHTMLHelp.ApplicationHelp&#125;

var
HTMLHelper&#58; TdmHTMLHelp;

initialization
&#123;create object + assign event handler&#125;
HTMLHelper &#58;= TdmHTMLHelp.Create;
Application.OnHelp &#58;= HTMLHelper.ApplicationHelp;
finalization
&#123;free event handler + object&#125;
Application.OnHelp &#58;= nil;
HTMLHelper.Free;
end.</div>

mopaliz
پنج شنبه 21 بهمن 1389, 10:56 صبح
اضافه كردن فايل hlp خودم در كنار فايلهاي help دلفي 7
با سلام
من يك فايل help دارم ( مي تونه از نوع hlp.* و يا chm.* )
مي خوام اين فايلهاي ايجاد شده توسط من در كنار فايلهاي help دلفي 7 قرار بگيره و در زمان جستجوي‌ لغت توي محيط دلفي ( منظورم خوده محيط دلفي نه برنامه هاي كه با دلفي مي سازيم ) محتويات فايل من رو نيز جستجو كند.
(در ضمن اگر روزگاري مجددا دلفي 7 رو خواستم نصب كنم بتونم به راحتي فايلها مو اضافه كنم )
ممنون مي شم اگر راهنماي كنيد.
mopaliz_89_04_15

سلام delphiassistant جان
چند ماهي مي شه اين سوال رو پرسیدم ولی کسی تا بحال جواب نداده این بار از شما می‌پرسم :
mopaliz_89_11_15

Felony
جمعه 22 بهمن 1389, 06:27 صبح
اضافه كردن فايل hlp خودم در كنار فايلهاي help دلفي 7
با سلام
من يك فايل help دارم ( مي تونه از نوع hlp.* و يا chm.* )
مي خوام اين فايلهاي ايجاد شده توسط من در كنار فايلهاي help دلفي 7 قرار بگيره و در زمان جستجوي‌ لغت توي محيط دلفي ( منظورم خوده محيط دلفي نه برنامه هاي كه با دلفي مي سازيم ) محتويات فايل من رو نيز جستجو كند.
(در ضمن اگر روزگاري مجددا دلفي 7 رو خواستم نصب كنم بتونم به راحتي فايلها مو اضافه كنم )
ممنون مي شم اگر راهنماي كنيد.
mopaliz_89_04_15

سلام delphiassistant جان
چند ماهي مي شه اين سوال رو پرسیدم ولی کسی تا بحال جواب نداده این بار از شما می‌پرسم :
mopaliz_89_11_15

OpenToolsAPI رو در گوکل جست و جو کنید .