[Lazarus] Building help files: the nitty-gritty

Kostas Michalopoulos badsectoracula at gmail.com
Sat Jul 28 15:01:36 CEST 2012


I just noticed this (there is a lot of activity in the mailing list and 
i only browse it occasionally).

On 10/7/2012 6:39 μμ, Graeme Geldenhuys wrote:
> Hi,
> My question still stands though. I don't know what is the
> recommendation for "application help" with LCL based applications. eg:
> I create a new project which is a new Programming Editor. I want to
> supply a end-user help file with my binary - like all good software
> does. What help file format do I use (as the developer of that
> product), and how do I create/edit that help file?
>

Personally i have written a custom help system:

http://badsector.github.com/lazhelp/

It is made up of a bunch of components that can either provide the help 
content from inside the program (f.e. from a resource or just a string 
list) or from an external file. The help can be displayed as a 
popup/tooltip, inside a panel using a custom control or a separate 
window with back, forward, home and other optional buttons (like 
introduction, tutorial, etc). It can also be registered as a help 
provider for LCL (so you can use HelpContext etc in controls).

The viewer is written with LCL so it should be portable (although there 
are some inconsistencies, especially regarding scrollbars). There aren't 
many things supported by the language (which has a simple syntax) but it 
should be enough for simple applications. For larger help sites, it 
probably needs more stuff (f.e. there is no table support).

I have used it for Runtime World, my 3D world editor:

http://chiselapp.com/user/badsector/repository/rtworld/

and for LILCard, a hypercard-like program:

https://github.com/badsector/lilcard

(the latter shows how the help system can become part of the executable 
itself since lilcard is a single executable in all platforms)

The reason i made it is, as you have said in other threads, i find 
Lazarus current help situation to be inadequate at least. Additionally, 
i don't want to distribute a huge executable for viewing CHM files (in 
the case the user's computer do not have the ability to view CHM files) 
and i find the CHM viewer's user interface to be somewhat complex.

Kostas "Bad Sector" Michalopoulos





More information about the Lazarus mailing list