Now that Lazarus 0.9.28 is officially out, try that and see if the example help project works any better.
I use the HelpUtil.pas unit from this project:
http://wiki.lazarus.freepascal.org/XDev_ToolkitHelpUtil creates a THelpManager descendant that has some conditionally compiled code to handle platform differences. You can see how easy it is to open an HTML file in the OS X Help Viewer. However, HelpUtil does not jump to a topic on OS X. I played around with doing that but never added it to HelpUtil.
Here is my test code for using the Apple Help AHGoToHelp function to jump to a topic in the help file (located in app bundle). You can probably adapt this code for use in HelpUtil's DoHelpCommand or something. I haven't tested this code in over 3 years but it should still work.
Thanks.
-Phil
program TestAH;
uses
SysUtils,
FPCMacOSAll;
const
DEFAULT_CFSTRING_ENCODING = kCFStringEncodingUTF8;
var
HtmlFileName : string;
AnchorName : string;
BundleRef : CFBundleRef;
BundleURL : CFURLRef;
BundFsRef : FSRef;
HbCFStrRef : CFStringRef;
FileCFStrRef : CFStringRef;
AnchorCFStrRef : CFStringRef;
Status : OSStatus;
begin
HtmlFileName := 'myhelp.html'; //Can be URL too
WriteLn(HtmlFileName);
AnchorName := '100';
BundleRef := nil;
BundleURL := nil;
BundleRef := CFBundleGetMainBundle;
if BundleRef = nil then
begin
WriteLn('Error: Bundle reference is nil.');
Exit;
end;
BundleURL := CFBundleCopyBundleURL(BundleRef);
if BundleURL = nil then
begin
WriteLn('Error: Bundle URL path is nil.');
Exit;
end;
if not CFURLGetFSRef(BundleURL, BundFsRef) then
begin
WriteLn('Unable to convert bundle URL path to file system reference.');
Exit;
end;
WriteLn(AHRegisterHelpBook(BundFsRef)); //-50 is user param error, -120 is dir not found
HbCFStrRef := CFBundleGetValueForInfoDictionaryKey(BundleRef,
CFSTR('CFBundleHelpBookName'));
FileCFStrRef := CFStringCreateWithCString(nil, Pointer(PChar(HtmlFileName)),
DEFAULT_CFSTRING_ENCODING);
AnchorCFStrRef := CFStringCreateWithCString(nil, Pointer(PChar(AnchorName)),
DEFAULT_CFSTRING_ENCODING);
Status := AHGotoPage(HbCFStrRef, FileCFStrRef, AnchorCFStrRef);
if Status = noErr then
WriteLn('Request sent to Help Viewer')
else
WriteLn('Error ', Status);
CFRelease(Pointer(FileCFStrRef));
CFRelease(Pointer(AnchorCFStrRef));
end.