Sign in Join
Wiki copytemporary

Creating IDE Help/ru

Deutsch · English · Русский · 日本語

Обзор

Среда IDE может выполнять поиск справки по различным вещам, и существуют различные источники в разных форматах справки. Вот краткий список, чтобы понять сложность:

Демки и исследование

Вы можете увидеть текущую установленную справку в разделе View / IDE Internals / About IDE / Help.

В разделе examples/idehelp/demoidehelp.lpk находится тестовый и демонстрационный пакет. Он содержит пример кода, как вы можете добавить справку в IDE.

Чтобы показать свою помощь в браузере пользователя, см. examples/helphtml/htmlhelp1.lpi.

Чтобы просмотреть справку HTML в элементе управления LCL, см. examples/htmlhelp_ipro/htmlhelpsample.lpi.

Помощь для модулей LCL

Всякий раз, когда пользователь нажимает клавишу F1 для свойства Object Inspector или для идентификатора в редакторе исходного кода, среда IDE выполняет поиск объявления и вызывает средство просмотра HTML для элемента fpdoc. Элементы можно легко редактировать с помощью инструмента FPDoc Editor.

Вы можете увидеть состояние документации LCL здесь: LCL Documentation Roadmap.

Помощь для окон IDE

Эта функция существует с 0.9.15.

Справка для окон IDE (т.е. 'Object Inspector' или 'Compiler Options') описана в этой вики. В среде IDE есть файл сопоставления docs/IDEWindowHelpTree.xml, в котором содержатся пути от различных форм/элементов управления IDE до вики-страниц. Этот файл сопоставления редактируется с помощью редактора, который отображается в любом месте среды IDE с помощью Ctrl+Shift+F1, за исключением элементов управления, которые перехватывают все ключи, [такие] как synedit. Вы можете установить быструю клавишу в editor options -> key mapping.

Корневой страницей документации окна IDE является Lazarus IDE.

Пример

Переадресация

TreeView в диалоговом окне параметров IDE перенаправляет запрос в справку выбранного кадра:

ide/ideoptionsdlg.pas

pascal
procedure TIDEOptionsDialog.CategoryTreeKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Command: Word;
begin
  Command := EditorOpts.KeyMap.TranslateKey(Key,Shift,nil);
  if (Command=ecContextHelp) and (PrevEditor <> nil) then begin
    Key:=VK_UNKNOWN;
    ShowContextHelpForIDE(PrevEditor);
  end;
end;

Справка по ключевым словам FPC

Вы можете зарегистрировать справку по ключевым словам fpc.

Note: Одна база данных может обрабатывать несколько контекстов, например справку по ключевым словам fpc, справку по исходникам и справку по сообщениям.

pascal
uses
  IDEHelpIntfs, HelpIntfs, LazHelpIntf, LazHelpHTML...

  { TSimpleFPCKeywordHelpDatabase }

  TSimpleFPCKeywordHelpDatabase = class(THTMLHelpDatabase) // Вы можете использовать любой тип базы данных, которая вам нравится
  private
    FKeywordPrefixNode: THelpNode;
  public
    function GetNodesForKeyword(const HelpKeyword: string;
                        var ListOfNodes: THelpNodeQueryList; var ErrMsg: string
                        ): TShowHelpResult; override;
    function ShowHelp(Query: THelpQuery; BaseNode, NewNode: THelpNode;
                      QueryItem: THelpQueryItem;
                      var ErrMsg: string): TShowHelpResult; override;
  end;

function TSimpleFPCKeywordHelpDatabase.GetNodesForKeyword(
  const HelpKeyword: string; var ListOfNodes: THelpNodeQueryList;
  var ErrMsg: string): TShowHelpResult;
var
  KeyWord: String;
begin
  Result:=shrHelpNotFound;
  if (csDesigning in ComponentState) then exit;
  if (FPCKeyWordHelpPrefix<>'')
  and (LeftStr(HelpKeyword,length(FPCKeyWordHelpPrefix))=FPCKeyWordHelpPrefix) then begin
    // HelpKeyword начинается с KeywordPrefix
    KeyWord:=copy(HelpKeyword,length(FPCKeyWordHelpPrefix)+1,length(HelpKeyword));
    // test: testfcpkeyword
    if KeyWord='testfcpkeyword' then begin
      // эта справочная база данных знает это ключевое слово
      // => добавляем узел, чтобы при наличии нескольких возможностей среда IDE могла
      //    показать пользователю диалог выбора
      // Примечание: в вашей собственной базе данных вы можете создать один фиктивный узел или
      // один узел на ключевое слово или один узел на группу ключевых слов
      // или как угодно.
      if FKeywordPrefixNode=nil then
        FKeywordPrefixNode:=THelpNode.CreateURL(Self,'','');
      FKeywordPrefixNode.Title:='Pascal keyword '+KeyWord;
      CreateNodeQueryListAndAdd(FKeywordPrefixNode,nil,ListOfNodes,true);
      Result:=shrSuccess;
    end;
  end;
end;

function TSimpleFPCKeywordHelpDatabase.ShowHelp(Query: THelpQuery; BaseNode,
  NewNode: THelpNode; QueryItem: THelpQueryItem; var ErrMsg: string
  ): TShowHelpResult;
var
  KeywordQuery: THelpQueryKeyword;
  KeyWord: String;
begin
  Result:=shrHelpNotFound;
  if not (Query is THelpQueryKeyword) then exit;
  KeywordQuery:=THelpQueryKeyword(Query);
  KeyWord:=copy(KeywordQuery.Keyword,length(FPCKeyWordHelpPrefix)+1,length(KeywordQuery.Keyword));
  debugln(['TSimpleFPCKeywordHelpDatabase.ShowHelp Keyword=',Keyword]);
  // Показываем URL ...
end;

procedure Register;
begin
 FPCKeywordsHelpDB:=HelpDatabases.CreateHelpDatabase('NameYourHelpDB',
                                            TSimpleFPCKeywordHelpDatabase,true);
end;

Справка для сообщений

Эта функция существует с 0.9.15 и требует, чтобы исходники FPC были установлены локально.

Она вызывается, когда пользователь нажимает клавишу F1 или использует пункт меню Help окна сообщения.

Обычно среда IDE ищет файл errore.msg в исходниках FPC и показывает комментарий к сообщению. Но некоторые сообщения, такие как unit not found («устройство не найдено»), нуждаются в дополнительной справке. Ниже описано, как это сделать:

Чтобы добавить вики-страницу справки для сообщения, сделайте следующее:

Пункты сохраняются в <lazarusdir>/docs/additionalmsghelp.xml.

Добавление справки Kylix

Как использовать файлы справки Borland в редакторе IDE: Adding Kylix Help


From the Free Pascal wiki, page "Creating IDE Help/ru", as it stood on 2020-01-29 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 2, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.