Sign in Join
Wiki copytemporary

Creating IDE Help/ru: what changed

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

Title: Creating IDE Help/ru

OldNewLine
1+# Обзор
2+
3+Среда IDE может выполнять поиск справки по различным вещам, и существуют различные источники в разных форматах справки. Вот краткий список, чтобы понять сложность:
4+
5+- **FPC messages**: сообщение компилятора типа *Error: Illegal enum minimum-size specifier*. В IDE по умолчанию встроен поиск файла *FPCSrcDir/compiler/msg/errore.msg file*, поиск сообщения там и отображение соответствующего комментария. Комментарии содержат латексные теги, которые удалены. На данный момент отображается простой MessageDlg. Некоторые печально известные сообщения нуждаются в дополнительных пояснениях и вручную связаны с URL-адресами.
6+- **IDE windows, dialogs and controls**:
7+- **Pascal sources**:
8+- **FPC keywords**:
9+- **FPC directives**:
10+- **IDE directives**:
11+
12+# Демки и исследование
13+
14+Вы можете увидеть текущую установленную справку в разделе **View / IDE Internals / About IDE / Help**.
15+
16+В разделе **examples/idehelp/demoidehelp.lpk** находится тестовый и демонстрационный пакет. Он содержит пример кода, как вы можете добавить справку в IDE.
17+
18+Чтобы показать свою помощь в браузере пользователя, см. examples/helphtml/htmlhelp1.lpi.
19+
20+Чтобы просмотреть справку HTML в элементе управления LCL, см. examples/htmlhelp_ipro/htmlhelpsample.lpi.
21+
22+## Помощь для модулей LCL
23+
24+Всякий раз, когда пользователь нажимает клавишу F1 для свойства Object Inspector или для идентификатора в редакторе исходного кода, среда IDE выполняет поиск объявления и вызывает средство просмотра HTML для элемента fpdoc. Элементы можно легко редактировать с помощью инструмента [[FPDoc Editor/ru|FPDoc Editor]].
25+
26+Вы можете увидеть состояние документации LCL здесь: [[LCL Documentation Roadmap]].
27+
28+## Помощь для окон IDE
29+
30+Эта функция существует с 0.9.15.
31+
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.
33+
34+Корневой страницей документации окна IDE является [[Lazarus IDE]].
35+
36+### Пример
37+
38+- Откройте настройки проекта: Project / Project Options
39+- Откройте редактор справки: <span class="kbd">Shift</span>+<span class="kbd">Ctrl</span>+<span class="kbd">F1</span>
40+
41+<figure>
42+<img src="HelpEditor1.png" title="HelpEditor1.png" />
43+<figcaption>HelpEditor1.png</figcaption>
44+</figure>
45+
46+- Слева вы можете увидеть все элементы управления диалогового окна параметров проекта. Вы можете видеть, что там есть также опции компилятора.
47+- Выберите **ProjectApplicationOptionsFrame**
48+- Нажмите **Create Help node** (Создать узел справки). Это создаст новый пункт справа.
49+- Отметьте **Has Help** (Имеет справку)
50+- Отметьте **Is a root control** (Корневой элемент управления). Все элементы управления на фрейме должны использовать справку на нашей новой странице справки.
51+- Смените путь на **Project_Options**
52+
53+<figure>
54+<img src="HelpEditorProjectOptions.png" title="HelpEditorProjectOptions.png" />
55+<figcaption>HelpEditorProjectOptions.png</figcaption>
56+</figure>
57+
58+- Вы можете нажать кнопку **Test**, и в вашем браузере должно появиться [[IDE Window: Project Options/ru|IDE_Window:_Project_Options]].
59+
60+### Переадресация
61+
62+TreeView в диалоговом окне параметров IDE перенаправляет запрос в справку выбранного кадра:
63+
64+ide/ideoptionsdlg.pas
65+
66+``` pascal
67+procedure TIDEOptionsDialog.CategoryTreeKeyDown(Sender: TObject; var Key: Word;
68+ Shift: TShiftState);
69+var
70+ Command: Word;
71+begin
72+ Command := EditorOpts.KeyMap.TranslateKey(Key,Shift,nil);
73+ if (Command=ecContextHelp) and (PrevEditor <> nil) then begin
74+ Key:=VK_UNKNOWN;
75+ ShowContextHelpForIDE(PrevEditor);
76+ end;
77+end;
78+```
79+
80+## Справка по ключевым словам FPC
81+
82+Вы можете зарегистрировать справку по ключевым словам fpc.
83+
84+> **Note:** Одна база данных может обрабатывать несколько контекстов, например справку по ключевым словам fpc, справку по исходникам и справку по сообщениям.
85+
86+``` pascal
87+uses
88+ IDEHelpIntfs, HelpIntfs, LazHelpIntf, LazHelpHTML...
89+
90+ { TSimpleFPCKeywordHelpDatabase }
91+
92+ TSimpleFPCKeywordHelpDatabase = class(THTMLHelpDatabase) // Вы можете использовать любой тип базы данных, которая вам нравится
93+ private
94+ FKeywordPrefixNode: THelpNode;
95+ public
96+ function GetNodesForKeyword(const HelpKeyword: string;
97+ var ListOfNodes: THelpNodeQueryList; var ErrMsg: string
98+ ): TShowHelpResult; override;
99+ function ShowHelp(Query: THelpQuery; BaseNode, NewNode: THelpNode;
100+ QueryItem: THelpQueryItem;
101+ var ErrMsg: string): TShowHelpResult; override;
102+ end;
103+
104+function TSimpleFPCKeywordHelpDatabase.GetNodesForKeyword(
105+ const HelpKeyword: string; var ListOfNodes: THelpNodeQueryList;
106+ var ErrMsg: string): TShowHelpResult;
107+var
108+ KeyWord: String;
109+begin
110+ Result:=shrHelpNotFound;
111+ if (csDesigning in ComponentState) then exit;
112+ if (FPCKeyWordHelpPrefix<>'')
113+ and (LeftStr(HelpKeyword,length(FPCKeyWordHelpPrefix))=FPCKeyWordHelpPrefix) then begin
114+ // HelpKeyword начинается с KeywordPrefix
115+ KeyWord:=copy(HelpKeyword,length(FPCKeyWordHelpPrefix)+1,length(HelpKeyword));
116+ // test: testfcpkeyword
117+ if KeyWord='testfcpkeyword' then begin
118+ // эта справочная база данных знает это ключевое слово
119+ // => добавляем узел, чтобы при наличии нескольких возможностей среда IDE могла
120+ // показать пользователю диалог выбора
121+ // Примечание: в вашей собственной базе данных вы можете создать один фиктивный узел или
122+ // один узел на ключевое слово или один узел на группу ключевых слов
123+ // или как угодно.
124+ if FKeywordPrefixNode=nil then
125+ FKeywordPrefixNode:=THelpNode.CreateURL(Self,'','');
126+ FKeywordPrefixNode.Title:='Pascal keyword '+KeyWord;
127+ CreateNodeQueryListAndAdd(FKeywordPrefixNode,nil,ListOfNodes,true);
128+ Result:=shrSuccess;
129+ end;
130+ end;
131+end;
132+
133+function TSimpleFPCKeywordHelpDatabase.ShowHelp(Query: THelpQuery; BaseNode,
134+ NewNode: THelpNode; QueryItem: THelpQueryItem; var ErrMsg: string
135+ ): TShowHelpResult;
136+var
137+ KeywordQuery: THelpQueryKeyword;
138+ KeyWord: String;
139+begin
140+ Result:=shrHelpNotFound;
141+ if not (Query is THelpQueryKeyword) then exit;
142+ KeywordQuery:=THelpQueryKeyword(Query);
143+ KeyWord:=copy(KeywordQuery.Keyword,length(FPCKeyWordHelpPrefix)+1,length(KeywordQuery.Keyword));
144+ debugln(['TSimpleFPCKeywordHelpDatabase.ShowHelp Keyword=',Keyword]);
145+ // Показываем URL ...
146+end;
147+
148+procedure Register;
149+begin
150+ FPCKeywordsHelpDB:=HelpDatabases.CreateHelpDatabase('NameYourHelpDB',
151+ TSimpleFPCKeywordHelpDatabase,true);
152+end;
153+```
154+
155+## Справка для сообщений
156+
157+Эта функция существует с 0.9.15 и требует, чтобы исходники FPC были установлены локально.
158+
159+Она вызывается, когда пользователь нажимает клавишу F1 или использует пункт меню Help окна сообщения.
160+
161+Обычно среда IDE ищет файл errore.msg в исходниках FPC и показывает комментарий к сообщению. Но некоторые сообщения, такие как *unit not found* («устройство не найдено»), нуждаются в дополнительной справке. Ниже описано, как это сделать:
162+
163+Чтобы добавить вики-страницу справки для сообщения, сделайте следующее:
164+
165+- Создайте вики-страницу под [[Build messages]]
166+- Щелкните правой кнопкой мыши на окне сообщений / Edit help
167+- Это показывает редактор для добавления сообщений.
168+
169+<figure>
170+<img src="AdditionalHelpForMessages.png" title="AdditionalHelpForMessages.png" />
171+<figcaption>AdditionalHelpForMessages.png</figcaption>
172+</figure>
173+
174+Пункты сохраняются в **\<lazarusdir\>/docs/additionalmsghelp.xml**.
175+
176+## Добавление справки Kylix
177+
178+Как использовать файлы справки Borland в редакторе IDE: [[Installing Help in the IDE|Adding Kylix Help]]
179+
180+---
181+*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).*
182+Category: Help and Docs/ru
183+Category: Russian

Back to history