Sign in Join
Wiki copytemporary

Creating IDE Help/ru: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11# Обзор
22
33Среда IDE может выполнять поиск справки по различным вещам, и существуют различные источники в разных форматах справки. Вот краткий список, чтобы понять сложность:
44
55- **FPC messages**: сообщение компилятора типа *Error: Illegal enum minimum-size specifier*. В IDE по умолчанию встроен поиск файла *FPCSrcDir/compiler/msg/errore.msg file*, поиск сообщения там и отображение соответствующего комментария. Комментарии содержат латексные теги, которые удалены. На данный момент отображается простой MessageDlg. Некоторые печально известные сообщения нуждаются в дополнительных пояснениях и вручную связаны с URL-адресами.
66- **IDE windows, dialogs and controls**:
77- **Pascal sources**:
88- **FPC keywords**:
99- **FPC directives**:
1010- **IDE directives**:
1111
1212# Демки и исследование
1313
1414Вы можете увидеть текущую установленную справку в разделе **View / IDE Internals / About IDE / Help**.
1515
1616В разделе **examples/idehelp/demoidehelp.lpk** находится тестовый и демонстрационный пакет. Он содержит пример кода, как вы можете добавить справку в IDE.
1717
1818Чтобы показать свою помощь в браузере пользователя, см. examples/helphtml/htmlhelp1.lpi.
1919
2020Чтобы просмотреть справку HTML в элементе управления LCL, см. examples/htmlhelp_ipro/htmlhelpsample.lpi.
2121
2222## Помощь для модулей LCL
2323
2424Всякий раз, когда пользователь нажимает клавишу F1 для свойства Object Inspector или для идентификатора в редакторе исходного кода, среда IDE выполняет поиск объявления и вызывает средство просмотра HTML для элемента fpdoc. Элементы можно легко редактировать с помощью инструмента [[FPDoc Editor/ru|FPDoc Editor]].
2525
2626Вы можете увидеть состояние документации LCL здесь: [[LCL Documentation Roadmap]].
2727
2828## Помощь для окон IDE
2929
3030Эта функция существует с 0.9.15.
3131
32-Справка для окон IDE (т.е. 'Object Inspector' или 'Compiler Options') описана в этой вики. В среде IDE есть файл сопоставления *docs/IDEWindowHelpTree.xml*, в котором содержатся пути от различных форм/элементов управления IDE до вики-страниц. Этот файл сопоставления редактируется с помощью редактора, который отображается в любом месте среды IDE с помощью <span class="kbd">Ctrl</span>+<span class="kbd">Shift</span>+<span class="kbd">F1</span>, за исключением элементов управления, которые перехватывают все ключи, \[такие\] как synedit. Вы можете установить быструю клавишу в editor options -\> key mapping.
32+Справка для окон IDE (т.е. 'Object Inspector' или 'Compiler Options') описана в этой вики. В среде IDE есть файл сопоставления *docs/IDEWindowHelpTree.xml*, в котором содержатся пути от различных форм/элементов управления IDE до вики-страниц. Этот файл сопоставления редактируется с помощью редактора, который отображается в любом месте среды IDE с помощью `Ctrl`+`Shift`+`F1`, за исключением элементов управления, которые перехватывают все ключи, \[такие\] как synedit. Вы можете установить быструю клавишу в editor options -\> key mapping.
3333
3434Корневой страницей документации окна IDE является [[Lazarus IDE]].
3535
3636### Пример
3737
3838- Откройте настройки проекта: Project / Project Options
39-- Откройте редактор справки: <span class="kbd">Shift</span>+<span class="kbd">Ctrl</span>+<span class="kbd">F1</span>
39+- Откройте редактор справки: `Shift`+`Ctrl`+`F1`
4040
41-<figure>
42-<img src="HelpEditor1.png" title="HelpEditor1.png" />
43-<figcaption>HelpEditor1.png</figcaption>
44-</figure>
41+![](/wiki-images/d/d3/HelpEditor1.png)
4542
4643- Слева вы можете увидеть все элементы управления диалогового окна параметров проекта. Вы можете видеть, что там есть также опции компилятора.
4744- Выберите **ProjectApplicationOptionsFrame**
4845- Нажмите **Create Help node** (Создать узел справки). Это создаст новый пункт справа.
4946- Отметьте **Has Help** (Имеет справку)
5047- Отметьте **Is a root control** (Корневой элемент управления). Все элементы управления на фрейме должны использовать справку на нашей новой странице справки.
5148- Смените путь на **Project_Options**
5249
53-<figure>
54-<img src="HelpEditorProjectOptions.png" title="HelpEditorProjectOptions.png" />
55-<figcaption>HelpEditorProjectOptions.png</figcaption>
56-</figure>
50+![](/wiki-images/1/11/HelpEditorProjectOptions.png)
5751
5852- Вы можете нажать кнопку **Test**, и в вашем браузере должно появиться [[IDE Window: Project Options/ru|IDE_Window:_Project_Options]].
5953
6054### Переадресация
6155
6256TreeView в диалоговом окне параметров IDE перенаправляет запрос в справку выбранного кадра:
6357
6458ide/ideoptionsdlg.pas
6559
6660``` pascal
6761procedure TIDEOptionsDialog.CategoryTreeKeyDown(Sender: TObject; var Key: Word;
6862 Shift: TShiftState);
6963var
7064 Command: Word;
7165begin
7266 Command := EditorOpts.KeyMap.TranslateKey(Key,Shift,nil);
7367 if (Command=ecContextHelp) and (PrevEditor <> nil) then begin
7468 Key:=VK_UNKNOWN;
7569 ShowContextHelpForIDE(PrevEditor);
7670 end;
7771end;
7872```
7973
8074## Справка по ключевым словам FPC
8175
8276Вы можете зарегистрировать справку по ключевым словам fpc.
8377
8478> **Note:** Одна база данных может обрабатывать несколько контекстов, например справку по ключевым словам fpc, справку по исходникам и справку по сообщениям.
8579
8680``` pascal
8781uses
8882 IDEHelpIntfs, HelpIntfs, LazHelpIntf, LazHelpHTML...
8983
9084 { TSimpleFPCKeywordHelpDatabase }
9185
9286 TSimpleFPCKeywordHelpDatabase = class(THTMLHelpDatabase) // Вы можете использовать любой тип базы данных, которая вам нравится
9387 private
9488 FKeywordPrefixNode: THelpNode;
9589 public
9690 function GetNodesForKeyword(const HelpKeyword: string;
9791 var ListOfNodes: THelpNodeQueryList; var ErrMsg: string
9892 ): TShowHelpResult; override;
9993 function ShowHelp(Query: THelpQuery; BaseNode, NewNode: THelpNode;
10094 QueryItem: THelpQueryItem;
10195 var ErrMsg: string): TShowHelpResult; override;
10296 end;
10397
10498function TSimpleFPCKeywordHelpDatabase.GetNodesForKeyword(
10599 const HelpKeyword: string; var ListOfNodes: THelpNodeQueryList;
106100 var ErrMsg: string): TShowHelpResult;
107101var
108102 KeyWord: String;
109103begin
110104 Result:=shrHelpNotFound;
111105 if (csDesigning in ComponentState) then exit;
112106 if (FPCKeyWordHelpPrefix<>'')
113107 and (LeftStr(HelpKeyword,length(FPCKeyWordHelpPrefix))=FPCKeyWordHelpPrefix) then begin
114108 // HelpKeyword начинается с KeywordPrefix
115109 KeyWord:=copy(HelpKeyword,length(FPCKeyWordHelpPrefix)+1,length(HelpKeyword));
116110 // test: testfcpkeyword
117111 if KeyWord='testfcpkeyword' then begin
118112 // эта справочная база данных знает это ключевое слово
119113 // => добавляем узел, чтобы при наличии нескольких возможностей среда IDE могла
120114 // показать пользователю диалог выбора
121115 // Примечание: в вашей собственной базе данных вы можете создать один фиктивный узел или
122116 // один узел на ключевое слово или один узел на группу ключевых слов
123117 // или как угодно.
124118 if FKeywordPrefixNode=nil then
125119 FKeywordPrefixNode:=THelpNode.CreateURL(Self,'','');
126120 FKeywordPrefixNode.Title:='Pascal keyword '+KeyWord;
127121 CreateNodeQueryListAndAdd(FKeywordPrefixNode,nil,ListOfNodes,true);
128122 Result:=shrSuccess;
129123 end;
130124 end;
131125end;
132126
133127function TSimpleFPCKeywordHelpDatabase.ShowHelp(Query: THelpQuery; BaseNode,
134128 NewNode: THelpNode; QueryItem: THelpQueryItem; var ErrMsg: string
135129 ): TShowHelpResult;
136130var
137131 KeywordQuery: THelpQueryKeyword;
138132 KeyWord: String;
139133begin
140134 Result:=shrHelpNotFound;
141135 if not (Query is THelpQueryKeyword) then exit;
142136 KeywordQuery:=THelpQueryKeyword(Query);
143137 KeyWord:=copy(KeywordQuery.Keyword,length(FPCKeyWordHelpPrefix)+1,length(KeywordQuery.Keyword));
144138 debugln(['TSimpleFPCKeywordHelpDatabase.ShowHelp Keyword=',Keyword]);
145139 // Показываем URL ...
146140end;
147141
148142procedure Register;
149143begin
150144 FPCKeywordsHelpDB:=HelpDatabases.CreateHelpDatabase('NameYourHelpDB',
151145 TSimpleFPCKeywordHelpDatabase,true);
152146end;
153147```
154148
155149## Справка для сообщений
156150
157151Эта функция существует с 0.9.15 и требует, чтобы исходники FPC были установлены локально.
158152
159153Она вызывается, когда пользователь нажимает клавишу F1 или использует пункт меню Help окна сообщения.
160154
161155Обычно среда IDE ищет файл errore.msg в исходниках FPC и показывает комментарий к сообщению. Но некоторые сообщения, такие как *unit not found* («устройство не найдено»), нуждаются в дополнительной справке. Ниже описано, как это сделать:
162156
163157Чтобы добавить вики-страницу справки для сообщения, сделайте следующее:
164158
165159- Создайте вики-страницу под [[Build messages]]
166160- Щелкните правой кнопкой мыши на окне сообщений / Edit help
167161- Это показывает редактор для добавления сообщений.
168162
169-<figure>
170-<img src="AdditionalHelpForMessages.png" title="AdditionalHelpForMessages.png" />
171-<figcaption>AdditionalHelpForMessages.png</figcaption>
172-</figure>
163+![](/wiki-images/6/69/AdditionalHelpForMessages.png)
173164
174165Пункты сохраняются в **\<lazarusdir\>/docs/additionalmsghelp.xml**.
175166
176167## Добавление справки Kylix
177168
178169Как использовать файлы справки Borland в редакторе IDE: [[Installing Help in the IDE|Adding Kylix Help]]
179170
180171---
181172*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](/wiki-contact).*
182173Category: Help and Docs/ru
183174Category: Russian

Back to history