unit ContextHelpUnit; {$mode objfpc} {$H+} interface uses IniFiles, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls; type { TContextHelpForm } TContextHelpForm = class(TForm) Button1: TButton; Memo1: TMemo; Panel1: TPanel; procedure Button1Click(Sender: TObject); private { private declarations } public { public declarations } procedure HelpMessage(lTag: integer); end; var ContextHelpForm: TContextHelpForm; implementation {$R *.lfm} function ReadIniFileTag(var lTag: Integer): string; //Read string with index lTag var lIniFile: TIniFile; lFileName,lLang: string; begin lFilename := ChangeFileExt(ParamStr(0), '.ini'); if (not FileExists(lFilename)) then begin Result := 'No contextual help: unable to find '+lFilename; exit; end; Result := 'No contextual help found for '+IntToStr(lTag); lIniFile := TIniFile.Create(lFilename); try lLang := lIniFile.ReadString('LANGUAGE', 'DEFAULT', ''); Result := lIniFile.ReadString(lLang, IntToStr(lTag), Result); Result := StringReplace(Result, '\n', LineEnding, [rfIgnoreCase, rfReplaceAll]); finally lIniFile.Free; end; end; procedure TContextHelpForm.Button1Click(Sender: TObject); begin Close; end; procedure TContextHelpForm.HelpMessage(lTag: integer); begin Memo1.Lines.Clear; Memo1.Lines.Text := ReadIniFileTag(lTag); Show; end; end.