Delphi 2006, 2007 and 2009 Delphi 2006 is the first version of Delphi that has built-in support for both WinHelp and HTML Help. Delphi 2006 also does not include any help support into your application by default. The same applies to Delphi 2007 and 2009. The move to Unicode in Delphi 2009 makes no difference. Select Project|View Source in Delphi to open your application's .dpr file. If your help file is a WinHelp .hlp file, add the WinHelpViewer unit to the application's uses clause. Do so simply by typing in WinHelpViewer and the delimiting comma. Delphi will automatically find the unit. If your application in an HTML Help .chm file, add the HTMLHelpViewer unit instead of the WinHelpViewer unit. You should not add both units to the same application. In Delphi 2006 and 2007, both units are available in Win32 VCL applications and .NET VCL applications. Unlike .NET WinForms applications, .NET VCL applications can indeed use WinHelp files. C++Builder 2006, 2007 and 2009 Like Delphi 2006, C++Builder 2006 and later don't include any help support in your application by default. You'll need to add either the WinHelpViewer or HTMLHelpViewer unit to your application. To do so, you'll need to add an #include and a #pragma line to the C++ code of your application's main form: #include "HTMLHelpViewer.hpp" //------------------------------------ #pragma package(smart_init) #pragma link "HTMLHelpViewer" #pragma resource "*.dfm" WinHelp with Older Delphi Versions Delphi versions 1 through 8 have built-in support for WinHelp, which cannot be disabled. If your help file is a WinHelp .hlp file, you don't need to add any extra unit to your application. Delphi 2005 also supports WinHelp out of the box, but does not automatically add WinHelp support to your application. Select Project|View Source in Delphi to open your application's .dpr file. If your help file is a WinHelp .hlp file, add the WinHelpViewer unit to the application's uses clause. Do so simply by typing in WinHelpViewer and the delimiting comma. Delphi 2005 will automatically find the unit. HTML Help with Older Delphi Versions Delphi versions 1 through 8, as well as Delphi 2005, do not support HTML Help for VCL applications. Fortunately, the free UseHTMLHelp and HTMLHelpViewer units that you can download make sure that Delphi knows how to use HTML Help. The archive contains three units, each for specific Delphi versions. UseHTMLHelp supports Delphi 3, 4 and 5. HTMLHelpViewer supports Delphi 6 and 7. HTMLHelpViewer2005 supports Delphi 2005. Both UseHTMLHelp and HTMLHelpViewer were developed by Jan Goyvaerts, who also designed and developed HelpScribble. You may freely use these units in your software. Delphi 3, 4 and 5 To enable HTML Help support in applications developed with Delphi 3, 4 or 5, add the UseHTMLHelp unit to your application. In Delphi, select Project|Add to Project in the menu, and select the UseHTMLHelp unit you downloaded using the link above. HTML Help with Delphi 6 and 7 Delphi 6 has a totally new help architecture to enable an application to use more than one help system. Unfortunately, Borland did not make use of that architecture to support .chm help files. The HTMLHelpViewer.pas unit takes care of this. To add HTML Help support, use Project|Add to Project in Delphi to add the HTMLHelpViewer unit from the UseHTMLHelp download. Unlike some other source code that is freely available on the Internet to make Delphi 6 work with HTML Help, the HTMLHelpViewer unit you can download here does not disable WinHelp. Should you use a .hlp file rather than a .chm file after all, HTMLHelpViewer will detect this and stay inactive, letting the standard WinHelpViewer do its job. C++Builder 6 C++Builder 6 uses the same help system as Delphi 6. You can use the HTMLHelpViewer unit for Delphi 6 with C++Builder 6. You'll need to add an #include and a #pragma line to the C++ code of your application's main form: #include "HTMLHelpViewer.hpp" //------------------------------------ #pragma package(smart_init) #pragma link "HTMLHelpViewer" #pragma resource "*.dfm" You'll also need to link your application against hhctrl.ocx. First, run the command implib hhctrl.lib hhctrl.ocx. Then add the hhctrl.lib file to your project. The hhctrl.ocx file can be found in the Windows\System32 folder. It is included with Windows itself. Using a HLP or CHM Help File with Delphi 2005 With Delphi 2005, Borland decided to change things once again. Delphi 2005 still uses the help system introduced with Delphi 6, but no longer adds a help viewer to your application by default. To make your application work with WinHelp .hlp files, add the unit WinHelpViewer to the uses clause of your project's .dpr file. This unit ships with Delphi itself. To use .chm files, download the UseHTMLHelp package and add the HTMLHelpViewer2005 unit to your project's .dpr file. If you want your application to support both .hlp and .chm help files, you must add HTMLHelpViewer to the .dpr uses clause before WinHelpViewer. Due to a bug in Delphi 2005, if you list WinHelpViewer first, WinHelpViewer will try to open .chm files, which will result in an error. What About Kylix (Delphi for Linux) ? HelpScribble is only available for Windows, but it does run fine under Linux if you use VMware or Win4Lin. There is no standard help format on Linux like there is on Windows. Most Linux applications provide a bunch of HTML files as documentation. With HelpScribble's Project|Export to Web Help, you can easily create HTML files from your help project. If you do cross-platform development, you can use WinHelp files on Windows, and HTML files on Linux, all created from the same HelpScribble project. If you use Borland Kylix, you can create an integrated help system based on HTML files using the Simple HTML HelpViewer package from Just Great Software. If You Use Delphi or C++Builder, You Need HelpScribble |