Класс описывающий работу помощи - "T_Help"
Настроить отображение помощь можно двумя способами:
В списке модулей должны быть указаны
uses ... rHelp, fHelp ...
Для использования T_Help должна быть задана директива компилятора CHROM.
Пример функции, которая вызывает помощь состоящую из трех ссылок:
первая - это явно заданный HTML-текст, второй и третий являются ссылками на страницы WEB-сайта с документацией.
При формировании элемента списка в rlHelp.Add("Заголовок","URL","HTML","Показывать по умолчанию","Уровень доступа") указываются параметры:
"Заголовок", который будет отображаться в списке документов;
"URL" - ссылка на страницы WEB-сайта;
"HTML" - текст HTML-документа;
"Показывать по умолчанию" - страница, которая будет открыта по умолчанию. Если не указана, то будет открываться первая по списку;
"Уровень доступа" - предусмотрено три уровня:
i_LevelDeveloper - разработчик,
i_LevelAdmin - Администратор,
i_LevelUser - "Пользователь".
Для вычисления текущего уровня пользователя можно использовать <sxh Delphi> var
ilLevel:Integer;
begin
if DMForm.IsAgbis then
ilLevel:=i_LevelDeveloper
else
if DMForm.IsAdmin then
ilLevel:=i_LevelAdmin
else
ilLevel:=i_LevelUser;
</sxh>
На формах наследниках TUniForm, TUniListForm уже есть кнопка "Помощь" с которой связан action ActHelp в TActionList.
В этом случае достаточно добавить в обработчик ActHelp вызов справки и выставить свойства ActHelp.Visible и ActHelp.Enable в обработчик активации формы.
Можно просто добавить новую кнопку с вызовом справки
При создании объекта указывается текущий уровень доступа пользователя
rlHelp:=T_Help.Create(i_LevelAdmin)
а при формировании помощи лишние документы скрываются.
В нашем примере, реально будет показан только первый документ с уровнем "Пользователь".
<sxh Delphi> procedure TFormDB_Fields.ActHelpExecute(Sender: TObject); var
rlHelp:T_Help;
clTxt: string;
begin
clTxt:='<p>Список полей, которые необходимы для запуска Агента.<br /></p>';
rlHelp:=T_Help.Create(i_LevelAdmin);
try
rlHelp.Add('Форма "Обязательные поля для агента"','',clTxt,true,i_LevelUser);
rlHelp.Add('Обязательные поля для агента','https://doc.agb.is/internal/обязательные_поля_для_агента','',false,i_LevelDeveloper);
rlHelp.Add('DB_Tables_Fields','https://doc.agb.is/internal/db_tables_fields','',false,i_LevelDeveloper);
TFormHelp.FormOpen(rlHelp);//Форма "Помощь"
finally
rlHelp.Free;
end;
end; </sxh>
Сопоставление форм и WEB-страниц выполняется функцией T_Help.InitByAgbisRu. В "case ifMetaTag of" нужно добавить "tag" необходимого мета-объекта и добавить ссылку
<sxh Delphi> class function T_Help.InitByAgbisRu(rfHelp:T_Help; lfIsAgbis, lfIsAdmin:Boolean;
ifMetaTag:Integer;cfCaption:String; ffSetStatisticsAction:TSetStatisticsAction):T_Help;
var
llLevel:Integer;
clURL:String;
begin
result:=nil;
if lfIsAgbis then
llLevel:=i_LevelDeveloper
else
if lfIsAdmin then
llLevel:=i_LevelAdmin
else
llLevel:=i_LevelUser;
if assigned(rfHelp) then
begin
result:=rfHelp;
result.iUserLevel:=llLevel;
end
else
result:=T_Help.Create(llLevel);
result.fSetStatisticsAction:=ffSetStatisticsAction;
case ifMetaTag of
58: result.Add(cfCaption,'https://www.agbis.ru/learning/course/index.php?COURSE_ID=4&CHAPTER_ID=0452&LESSON_PATH=418.452','',true,i_LevelUser);//Склады/отделы
101: result.Add(cfCaption,'https://www.agbis.ru/learning/course/index.php?COURSE_ID=4&LESSON_ID=97&LESSON_PATH=418.451.97','',true,i_LevelUser); //Фирмы
end;
end; </sxh>