Delphi LiteHelp

LiteHelp For Delphi

LiteHelp is a lightweight portable context-sensitive help system for Windows desktop apps. You can read more about it in this post:

I also created a Delphi unit that allows to integrate LiteHelp into the context-sensitive help of Delphi VCL. It works pretty much the same way HTMLHelpViewer.pas works – just include it into your uses list and provide path to the folder where the help is located using Application.HelpFile. Also you will need to place LiteHelpViewer.exe in the same folder with your main executable. Now Delphi will run LiteHelpViewer.exe and browse to ContextID automatically. You can also locate keywords, execute search and switch languages using commands shown in the Delphi demo included into Delphi distributions that you can download from this link:

Here are some code samples

Sample No 1: LiteHelpViewer in your “uses” list:

unit uMain;


  LiteHelpViewer, Winapi.Windows, Winapi.Messages, System.SysUtils,
  System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

  TForm1 = class(TForm)

Sample No 2: Setting path to the help folder in the project source:

program LiteHelpViewerDemo;

  uMain in 'uMain.pas' {Form1};

{$R *.res}

  Application.MainFormOnTaskbar := True;
  // It's important to provide full path to the folder with LiteHelp files
  Application.HelpFile := IncludeTrailingBackSlash(ExtractFileDir(Application.Exename)) + 'help';
  Application.CreateForm(TForm1, Form1);

Sample No3: Executing some important help system commands:

// Open Table of Contents
procedure TForm1.btnOpenTableOfContentsClick(Sender: TObject);

// Execute search for a term in edtSearch TEdit
procedure TForm1.btnSearchClick(Sender: TObject);
  IHelpSystem3(Application.HelpSystem).ShowSearch(Trim(edtSearch.Text), Application.HelpFile);

// Locate keyword from edtKeyword TEdit
procedure TForm1.btnGoToKeywordClick(Sender: TObject);
  IHelpSystem3(Application.HelpSystem).ShowIndex(Trim(edtKeyword.Text), Application.HelpFile);


Introducing LiteHelp

LiteHelp is a lightweight non-HTML portable help system for Windows intended to be CHM (HTML Help) replacement, or, at least, alternative. I created it becuase my clients had numerous problems with online help in CHM format. It is long abandoned by Microsoft and ever since continues to grow security issues like a snowball.

I thought to myself: “What the hell, it’s 2019, we don’t need all those fancy HTML bells and whistles anymore. The content is what matters and markdown popularity shows it best”. So I decided to put together somewhat shelved help viewer project and my recent developments in Helpinator and create a help system of my dreams with just enough features and nothing more.

The viewer itself resembles that of HTML Help – a pane with 3 tabs on the left (Table of Contents, Index, Search) and content display area at the right. The only question was what component to use for content rendering but actually it was not much of a question since my code base is heavily dependent on excellent TRichView component from Sergei Tkachenko.

OK, yes, we do not need all that versatality, but we still need some cool things to let our users understand things we talk about faster. If you take a look at modern technical writing it’s not mostly about writing but about structured authoring. Specilized content items are what matters now, and I decided to follow that approach too. Helpinator was based on this approach from the start and in recent versions the number of content items even increased. So far we have:

  • Regular text items with basic formatting – nothing fancy here
  • Tables – OK, everybody need them
  • Figures – this is not just a picture, but a picture with a title and formatted in the output accordingly
  • Asides/admonitions – that colored paragraphs with title and icons intended to bring reader’s attention to.
  • Code samples – need to have syntax highlight
  • Step-by-step guides – not very common item, but it built into Helpinator for a long time already. Also DITA has a similar element.
  • Videos – both embeddable (Youtube/Vimeo) and local
  • FAQs. Though FAQs can be just plain formatted text it’s more convinient to render them as collapsible sections if the output format supports such dynamics.
  • Quizzes. Not that all necessary element, but learning assessment is important part of technical documentation nowdays.
  • Glossary of terms used in documentation.

I managed to implement them all in LiteHelp, so, yes, it’s a very cool help system.

Another feature to be noted is language support. LiteHelp format allows to store all content in one project, and it is possible to switch languages both programmatically and manually by user actions.

The viewer itself is a portable Windows executable with relatively (sic!) small footprint. I has a sort of API available via Windows messaging system, it allows to execute the following commands:

  • Open table of contents (default topic)
  • Open a topic with specified context ID
  • Open keyword index tab and locate a keyword
  • Open search tab and execute search
  • Select language

You can find more detailed description of methods in the readme file in the zip file of viewer.

Download the viewer:

Download sample:

Delphi help system integration:

A small GIF (created with GIFSteps) depicting LiteHelp features:

LiteHelp Features Overview
Product Updates

MiniKanban is now on ProductHunt

Business of Software

7 Countries My Most Notable Customers Come From

A long time ago (in a galaxy far far away) I started my own microISV business selling user manual writing tool named Helpinator. Initially I thought that doing business online was quite easy, but it proved to be wrong for many reasons. One of them is that culturual differences affect your business communications. I am a cosmopolite, but with time I started to divide customers into “good”, “bad” or “neutral” depending on the country of origin. I know I can’t call myself cosmopolite while doing it, but it is what it is 🙂

Here they are, 7 to 1, worst to best. Of course my experience is not limited to just 7 countries, these are the most notable ones.

7. China

Surprisingly chinese customers are demanding as hell. Every time I get a support or presales question from China I always feel like that order made me a slave. No matter it was with a serious discount. At some point I even thought to block all sales from China. I’m not very familiar with Chinese culture but I belive there must be some explanation to this. For example, the size of population is so tremendous that support lines of pure Chinese products are overloaded and to get your request fullfield you need to be offensive right from the start or the person on the other end of the line would just ignore you.

Well, it’s not all that completely bad. Once there was a funny case. Bugtracker reported that there were 100+ bug reports overnight. I was surprised, Helpinator was in stable condition by then, there were no serious updates. All reports were from one person, from China. He got a cracked version that was cracked improperly and caused an error after new project was created. And he clicked “Report” every funking time he got that error!!!

6. India

Customers from India are clearly polarized. They are extremely intelligent or extremely dull. Nothing in between. And there are no chances to know who you deal with beforehand 🙂 Thanks to “extremely dull” clients India holds it’s 6th place, I’ve had a really hard time with them, but extremely intelligent ones were a REAL pleasure to deal with. I belive it has something to do with Indian caste system, that severly affects cultural and educational level of a person, though I’m not sure about it.

5. Brazil

Brazilians do not bring in much money but they find bugs that no one can find. Sometimes they use Helpinator in such bizarre ways I could not even think of. But somehow it makes me feel related to them 🙂 And they almost always write me in Portuguese! I like this language (for example “developer” is “desenvolvedor”, sounds like a conquistador wielding a disintegrator gun :), but Google Translate sometimes fail at it miserably.

4. USA

Nothing personal, just business. We need this and that, we will pay N. No trickery or fakes, but nothing warm as well. Do what you have to do, or get out. It’s not that I dislike this approach, but certainly it’s not my favorite.
And also there’s one interesting notion about customers from USA – they are completely sure that the whole planet lives by american rules. No, without any aggression, like “Do what I told you to do”, no. Just because they truly believe, from the depth of the heart, that american way is the best possible choice. But from here I will slide into politics, and I don’t want to do that.

3. Canada

When I was a schoolboy, our Russian textbooks treated USA and Canada as it was the same country, geographically and socially. But in business terms USA and Canada are COMPLETELY different. It’s like to compare a small family restaurant to McDonalds. In a family restaurant you are treated like a family member, at a personal level, while McDonalds is faceless and cold, even if they meet you with a faked smile. That makes a huge difference to me, customers from Canada treat me like I own a family restaurant in their neighbourhood, and they visit me every Sunday, not to just eat but also to talk things over. Maybe that’s why Canadians prefer to deal with what they believe to be a small business (which I have), while Americans prefer large corporations.

2. Netherlands

When it comes to business, customers from Netherlands break all movie stereotypes associated with this contry. At times I even think “the business” itself was invented in Netherlands 🙂 (historically it’s not really untrue). Calm, focused people with clear tasks and plans. No rush, no worry, just steady progress. Thank you, guys, for being pillars of my business.

1. Australia and New Zealand

Oh my god, I LOVE Australians and New Zealanders!!! (or should I say Kiwis?). Always polite and gentle, with really smart and thoughtful suggestions, always ready to help. Never pinch me if a bug requires a long time to fix. And not a single offensive word, even if I funk things up.
Their sense of humour is just perfect, minimalistic and polished. A good joke always makes things much simpler 🙂
With each day I think more and more about relocating to New Zealand. It seems to me that the day for this is close, as Russia keeps on turning into North Korea.

Well, this list is just my personal point of view, I do not pretend to be The Great Source of Online Business Wisdom 🙂
May be your experience is different?


Blog Relaunch

Good news everyone! I decided to start from scratch and burn all previous posts. Literally. Printed them out and set on fire. Let the new life begin.