IDE: fpdoc editor: added button to add seealso link to inherited entry

git-svn-id: trunk@14180 -
This commit is contained in:
mattias 2008-02-18 11:05:52 +00:00
parent 2c82246914
commit 17d85fb7e3
6 changed files with 718 additions and 414 deletions

View File

@ -28,7 +28,7 @@ unit CodeHelp;
{$mode objfpc}{$H+}
{off $DEFINE VerboseLazDoc}
{$DEFINE VerboseLazDoc}
interface
@ -41,7 +41,8 @@ uses
// IDEIntf
MacroIntf, PackageIntf, LazHelpIntf, ProjectIntf, IDEDialogs, LazIDEIntf,
// IDE
CompilerOptions, IDEProcs, PackageDefs, EnvironmentOpts, DialogProcs;
LazarusIDEStrConsts, CompilerOptions, IDEProcs, PackageDefs, EnvironmentOpts,
PackageSystem, DialogProcs;
type
TFPDocItem = (
@ -116,6 +117,9 @@ type
public
CodeContext: TFindContext;
CodeXYPos: TCodeXYPosition;
ElementModuleName: string;
ElementUnitName: string;
ElementUnitFileName: string;
ElementName: string;
ElementNode: TDOMNode;
ElementNodeValid: boolean;
@ -174,7 +178,8 @@ type
const AMethod: TMethod);
procedure CallDocChangeEvents(HandlerType: TCodeHelpManagerHandler;
Doc: TLazFPDocFile);
function DoCreateFPDocFileForSource(const SrcFilename: string): string;
function DoCreateFPDocFileForSource(const SrcFilename: string;
out NewOwner: TObject): string;
function CreateFPDocFile(const ExpandedFilename, PackageName,
ModuleName: string): TCodeBuffer;
public
@ -195,7 +200,14 @@ type
function GetFPDocFilenameForSource(SrcFilename: string;
ResolveIncludeFiles: Boolean;
out CacheWasUsed: boolean;
out AnOwner: TObject;// package or project
CreateIfNotExists: boolean = false): string;
function FindModuleOwner(const Modulename: string): TObject;
function GetOwnerModuleName(TheOwner: TObject): string;
function ExpandFPDocLinkID(const LinkID, DefaultUnitName,
DefaultModule: string): string;
function ExpandFPDocLinkID(const LinkID, DefaultUnitName: string;
TheOwner: TObject): string;
function CodeNodeToElementName(Tool: TFindDeclarationTool;
CodeNode: TCodeTreeNode): string;
function GetFPDocNode(Tool: TCodeTool; CodeNode: TCodeTreeNode; Complete: boolean;
@ -700,8 +712,8 @@ begin
TCodeHelpChangeEvent(FHandlers[HandlerType].Items[i])(Self,Doc);
end;
function TCodeHelpManager.DoCreateFPDocFileForSource(const SrcFilename: string
): string;
function TCodeHelpManager.DoCreateFPDocFileForSource(const SrcFilename: string;
out NewOwner: TObject): string;
procedure CleanUpPkgList(var PkgList: TFPList);
var
@ -740,7 +752,6 @@ function TCodeHelpManager.DoCreateFPDocFileForSource(const SrcFilename: string
var
PkgList: TFPList;
NewOwner: TObject;
AProject: TLazProject;
APackage: TLazPackage;
p: Integer;
@ -753,6 +764,7 @@ var
AVLNode: TAvgLvlTreeNode;
begin
Result:='';
NewOwner:=nil;
DebugLn(['TCodeHelpManager.DoCreateFPDocFileForSource ',SrcFilename]);
if not FilenameIsAbsolute(SrcFilename) then begin
DebugLn(['TCodeHelpManager.DoCreateFPDocFileForSource failed, because file no absolute: ',SrcFilename]);
@ -765,15 +777,15 @@ begin
PkgList:=PackageEditingInterface.GetOwnersOfUnit(SrcFilename);
CleanUpPkgList(PkgList);
if (PkgList=nil) then begin
PkgList:=PackageEditingInterface.GetOwnersOfUnit(SrcFilename);
PkgList:=PackageEditingInterface.GetPossibleOwnersOfUnit(SrcFilename,
[piosfIncludeSourceDirectories]);
CleanUpPkgList(PkgList);
end;
if PkgList=nil then begin
// no package/project found
MessageDlg('Package not found',
'The unit '+SrcFilename+' is not owned be any package or project.'#13
+'Please add the unit to a package or project.'#13
+'Unable to create the fpdoc file.',mtError,[mbCancel],0);
MessageDlg(lisProjAddPackageNotFound,
Format(lisLDTheUnitIsNotOwnedBeAnyPackageOrProjectPleaseAddThe, [
SrcFilename, #13, #13]), mtError, [mbCancel], 0);
exit;
end;
@ -784,16 +796,17 @@ begin
if AProject.LazDocPaths='' then
AProject.LazDocPaths:=SelectNewLazDocPaths(AProject.ShortDescription,BaseDir);
LazDocPaths:=AProject.LazDocPaths;
LazDocPackageName:=ExtractFileNameOnly(AProject.ProjectInfoFile);
LazDocPackageName:=GetOwnerModuleName(AProject);
end else if NewOwner is TLazPackage then begin
APackage:=TLazPackage(NewOwner);
BaseDir:=APackage.Directory;
if APackage.LazDocPaths='' then
APackage.LazDocPaths:=SelectNewLazDocPaths(APackage.Name,BaseDir);
LazDocPaths:=APackage.LazDocPaths;
LazDocPackageName:=APackage.Name;
LazDocPackageName:=GetOwnerModuleName(APackage);
end else begin
DebugLn(['TCodeHelpManager.DoCreateFPDocFileForSource unknown owner type ',dbgsName(NewOwner)]);
NewOwner:=nil;
exit;
end;
@ -824,9 +837,9 @@ begin
// no valid directory found
DebugLn(['TCodeHelpManager.DoCreateFPDocFileForSource LazDocModul="',LazDocPackageName,'" LazDocPaths="',LazDocPaths,'" ']);
MessageDlg('No valid lazdoc path',
LazDocPackageName+' does not have any valid lazdoc path.'#13
+'Unable to create the fpdoc file for '+SrcFilename,mtError,[mbCancel],0);
MessageDlg(lisLDNoValidLazDocPath,
Format(lisLDDoesNotHaveAnyValidLazDocPathUnableToCreateTheFpdo, [
LazDocPackageName, #13, SrcFilename]), mtError, [mbCancel], 0);
finally
PkgList.Free;
end;
@ -1027,6 +1040,7 @@ function TCodeHelpManager.GetFPDocFilenameForHelpContext(
var
i: Integer;
SrcFilename: String;
AnOwner: TObject;
begin
Result:='';
CacheWasUsed:=true;
@ -1034,27 +1048,47 @@ begin
for i:=0 to Context.Count-1 do begin
if Context.Items[i].Descriptor<>pihcFilename then continue;
SrcFilename:=Context.Items[i].Context;
Result:=GetFPDocFilenameForSource(SrcFilename,true,CacheWasUsed);
Result:=GetFPDocFilenameForSource(SrcFilename,true,CacheWasUsed,AnOwner);
exit;
end;
end;
function TCodeHelpManager.GetFPDocFilenameForSource(SrcFilename: string;
ResolveIncludeFiles: Boolean; out CacheWasUsed: boolean;
CreateIfNotExists: boolean): string;
out AnOwner: TObject; CreateIfNotExists: boolean): string;
var
FPDocName: String;
SearchPath: String;
SearchedPaths: string;
procedure AddSearchPath(Paths: string; const BaseDir: string);
function SearchInPath(Paths: string; const BaseDir: string;
out Filename: string): boolean;
var
CurPath: String;
p: Integer;
begin
if Paths='' then exit;
if not IDEMacros.CreateAbsoluteSearchPath(Paths,BaseDir) then exit;
//DebugLn(['SearchInPath START ',Paths]);
if Paths='' then exit;
SearchPath:=SearchPath+';'+Paths;
p:=1;
repeat
CurPath:=GetNextDirectoryInSearchPath(Paths,p);
if CurPath<>'' then begin
CurPath:=CleanAndExpandDirectory(CurPath);
if SearchDirectoryInSearchPath(SearchedPaths,CurPath)<1 then begin
// not yet searched in this directory
SearchedPaths:=SearchedPaths+';'+CurPath;
Filename:=AppendPathDelim(CurPath)+FPDocName;
if FileExistsCached(Filename) then exit(true);
end;
end;
until p>length(Paths);
Filename:='';
Result:=false;
end;
procedure CheckUnitOwners(CheckSourceDirectories: boolean);
function CheckUnitOwners(CheckSourceDirectories: boolean;
out Filename: string): boolean;
var
PkgList: TFPList;
i: Integer;
@ -1062,6 +1096,8 @@ var
BaseDir: String;
AProject: TLazProject;
begin
Result:=false;
Filename:='';
if not FilenameIsAbsolute(SrcFilename) then exit;
if CheckSourceDirectories then begin
@ -1079,14 +1115,20 @@ var
BaseDir:=ExtractFilePath(AProject.ProjectInfoFile);
if BaseDir='' then continue;
// add lazdoc paths of project
AddSearchPath(AProject.LazDocPaths,BaseDir);
if SearchInPath(AProject.LazDocPaths,BaseDir,Filename) then begin
AnOwner:=AProject;
exit(true);
end;
end else if TObject(PkgList[i]) is TLazPackage then begin
APackage:=TLazPackage(PkgList[i]);
if APackage.LazDocPaths='' then continue;
BaseDir:=APackage.Directory;
if BaseDir='' then continue;
// add lazdoc paths of package
AddSearchPath(APackage.LazDocPaths,BaseDir);
if SearchInPath(APackage.LazDocPaths,BaseDir,Filename) then begin
AnOwner:=APackage;
exit(true);
end;
end;
end;
finally
@ -1094,15 +1136,28 @@ var
end;
end;
procedure CheckIfInLazarus;
function CheckIfInLazarus(out Filename: string): boolean;
var
LazDir: String;
LCLPackage: TLazPackage;
begin
Result:=false;
Filename:='';
if not FilenameIsAbsolute(SrcFilename) then exit;
LazDir:=AppendPathDelim(EnvironmentOptions.LazarusDirectory);
// check LCL
if FileIsInPath(SrcFilename,LazDir+'lcl') then begin
AddSearchPath(SetDirSeparators('docs/xml/lcl'),LazDir);
LCLPackage:=PackageGraph.LCLPackage;
if SearchInPath(LCLPackage.LazDocPaths,'',Filename) then
begin
AnOwner:=LCLPackage;
exit(true);
end;
end;
if SearchInPath(EnvironmentOptions.LazDocPaths,'',Filename) then
begin
AnOwner:=nil;
exit(true);
end;
end;
@ -1113,7 +1168,8 @@ var
begin
Result:='';
CacheWasUsed:=true;
AnOwner:=nil;
if ResolveIncludeFiles then begin
CodeBuf:=CodeToolBoss.FindFile(SrcFilename);
if CodeBuf<>nil then begin
@ -1149,18 +1205,14 @@ begin
{$ENDIF}
// first check if the file is owned by any project/package
SearchPath:='';
CheckUnitOwners(false);// first check if file is owned by a package/project
CheckUnitOwners(true);// then check if the file is in a source directory of a package/project
CheckIfInLazarus;
// finally add the default paths
AddSearchPath(EnvironmentOptions.LazDocPaths,'');
SearchedPaths:='';
FPDocName:=lowercase(ExtractFileNameOnly(SrcFilename))+'.xml';
{$IFDEF VerboseLazDoc}
DebugLn(['TCodeHelpManager.GetFPDocFilenameForSource Search ',FPDocName,' in "',SearchPath,'"']);
{$ENDIF}
Result:=SearchFileInPath(FPDocName,'',SearchPath,';',ctsfcAllCase);
if (not CheckUnitOwners(false,Result)) // first check if file is owned by a package/project
and (not CheckUnitOwners(true,Result))// then check if the file is in a source directory of a package/project
and (not CheckIfInLazarus(Result))
then begin
// not found
end;
// save to cache
if MapEntry=nil then begin
@ -1173,7 +1225,7 @@ begin
MapEntry.FilesTimeStamp:=FileStateCache.TimeStamp;
finally
if (Result='') and CreateIfNotExists then begin
Result:=DoCreateFPDocFileForSource(SrcFilename);
Result:=DoCreateFPDocFileForSource(SrcFilename,AnOwner);
end;
{$IFDEF VerboseLazDoc}
DebugLn(['TCodeHelpManager.GetFPDocFilenameForSource SrcFilename="',SrcFilename,'" Result="',Result,'"']);
@ -1181,6 +1233,104 @@ begin
end;
end;
function TCodeHelpManager.FindModuleOwner(const Modulename: string): TObject;
var
AProject: TLazProject;
begin
Result:=PackageGraph.FindAPackageWithName(Modulename,nil);
if Result<>nil then exit;
AProject:=LazarusIDE.ActiveProject;
if (AProject<>nil)
and (SysUtils.CompareText(GetOwnerModuleName(AProject),Modulename)=0)
then begin
Result:=AProject;
exit;
end;
Result:=nil;
end;
function TCodeHelpManager.GetOwnerModuleName(TheOwner: TObject): string;
begin
if TheOwner is TLazPackage then
Result:=TLazPackage(TheOwner).Name
else if TheOwner is TLazProject then
Result:=ExtractFileNameOnly(TLazProject(TheOwner).ProjectInfoFile)
else
Result:='';
end;
function TCodeHelpManager.ExpandFPDocLinkID(const LinkID, DefaultUnitName,
DefaultModule: string): string;
begin
Result:=LinkID;
if (LinkID='') or (LinkID[1]='#') then exit;
Result:=ExpandFPDocLinkID(LinkId,DefaultUnitName,FindModuleOwner(DefaultModule));
end;
function TCodeHelpManager.ExpandFPDocLinkID(const LinkID,
DefaultUnitName: string; TheOwner: TObject): string;
function SearchLazDocFile(SearchPath: string;
const BaseDir, Unitname: string): string;
var
FPDocFilename: String;
begin
Result:='';
if BaseDir='' then exit;
if not IDEMacros.CreateAbsoluteSearchPath(SearchPath,BaseDir) then exit;
FPDocFilename:=lowercase(UnitName)+'.xml';
Result:=SearchFileInPath(FPDocFilename,'',SearchPath,';',ctsfcDefault);
end;
var
FirstPointPos: LongInt;
APackage: TLazPackage;
FirstIdentifier: String;
AddUnit: Boolean;
AProject: TLazProject;
begin
Result:=LinkID;
if (LinkID='') or (LinkID[1]='#') then exit;
FirstPointPos:=System.Pos(LinkID,'.');
FirstIdentifier:=copy(LinkID,1,FirstPointPos);
if (FirstIdentifier<>'')
and (SysUtils.CompareText(FirstIdentifier,DefaultUnitName)<>0) then
begin
// the LinkID has sub identifiers, so the first identifier could be a unit
// But it is not the DefaultUnitName
// => check if it is another unitname of the Owner
AddUnit:=false;
if TheOwner is TLazPackage then begin
APackage:=TLazPackage(TheOwner);
if (APackage.FindUnit(FirstIdentifier)=nil) then begin
// the unit is not owned.
if SearchLazDocFile(APackage.LazDocPaths,APackage.Directory,
FirstIdentifier)='' then
begin
// and there is no fpdoc file for this identifier
// => not a unit
AddUnit:=true;
end;
end;
end else if TheOwner is TLazProject then begin
AProject:=TLazProject(TheOwner);
if SearchLazDocFile(AProject.LazDocPaths,
ExtractFilePath(AProject.ProjectInfoFile),FirstIdentifier)='' then
begin
// there is no fpdoc file for this identifier
// => not a unit
AddUnit:=true;
end;
end else begin
// unknown owner type
exit;
end;
if AddUnit then
Result:=DefaultUnitName+'.'+Result;
end;
Result:='#'+GetOwnerModuleName(TheOwner)+'.'+Result;
end;
function TCodeHelpManager.CodeNodeToElementName(Tool: TFindDeclarationTool;
CodeNode: TCodeTreeNode): string;
var
@ -1213,6 +1363,7 @@ var
SrcFilename: String;
FPDocFilename: String;
ElementName: String;
AnOwner: TObject;
begin
FPDocFile:=nil;
DOMNode:=nil;
@ -1220,7 +1371,7 @@ begin
// find corresponding FPDoc file
SrcFilename:=Tool.MainFilename;
FPDocFilename:=GetFPDocFilenameForSource(SrcFilename,false,CacheWasUsed);
FPDocFilename:=GetFPDocFilenameForSource(SrcFilename,false,CacheWasUsed,AnOwner);
if FPDocFilename='' then exit(chprFailed);
if (not CacheWasUsed) and (not Complete) then exit(chprParsing);
@ -1317,9 +1468,9 @@ var
i: Integer;
CodePos: PCodeXYPosition;
LDElement: TCodeHelpElement;
SrcFilename: String;
FPDocFilename: String;
FindContext: TFindContext;
AnOwner: TObject;
begin
Chain:=nil;
ListOfPCodeXYPosition:=nil;
@ -1360,8 +1511,11 @@ begin
//DebugLn(['TCodeHelpManager.GetElementChain i=',i,' CodeContext=',FindContextToString(LDElement.CodeContext)]);
// find corresponding FPDoc file
SrcFilename:=LDElement.CodeContext.Tool.MainFilename;
FPDocFilename:=GetFPDocFilenameForSource(SrcFilename,false,CacheWasUsed);
LDElement.ElementUnitFileName:=LDElement.CodeContext.Tool.MainFilename;
LDElement.ElementUnitName:=LDElement.CodeContext.Tool.GetSourceName(false);
FPDocFilename:=GetFPDocFilenameForSource(LDElement.ElementUnitFileName,
false,CacheWasUsed,AnOwner);
LDElement.ElementModuleName:=GetOwnerModuleName(AnOwner);
//DebugLn(['TCodeHelpManager.GetElementChain FPDocFilename=',FPDocFilename]);
if (not CacheWasUsed) and (not Complete) then exit(chprParsing);
@ -1553,8 +1707,8 @@ function TCodeHelpManager.CreateElement(Code: TCodeBuffer; X, Y: integer;
out Element: TCodeHelpElement): Boolean;
var
CacheWasUsed: boolean;
SrcFilename: String;
FPDocFilename: String;
AnOwner: TObject;
begin
Result:=false;
Element:=nil;
@ -1581,8 +1735,10 @@ begin
DebugLn(['TCodeHelpManager.CreateElement Element.ElementName=',Element.ElementName]);
// find / create fpdoc file
SrcFilename:=Element.CodeContext.Tool.MainFilename;
FPDocFilename:=GetFPDocFilenameForSource(SrcFilename,false,CacheWasUsed,true);
Element.ElementUnitFileName:=Element.CodeContext.Tool.MainFilename;
Element.ElementUnitName:=Element.CodeContext.Tool.GetSourceName(false);
FPDocFilename:=GetFPDocFilenameForSource(Element.ElementUnitFileName,false,
CacheWasUsed,AnOwner,true);
if FPDocFilename='' then begin
// no fpdoc file
DebugLn(['TCodeHelpManager.CreateElement unable to create fpdoc file for ',FPDocFilename]);

View File

@ -5,7 +5,7 @@ object FPDocEditor: TFPDocEditor
Width = 753
HorzScrollBar.Page = 752
VertScrollBar.Page = 119
ActiveControl = DescrMemo
ActiveControl = LinkTextEdit
Caption = 'FPDoc editor'
ClientHeight = 120
ClientWidth = 753
@ -16,9 +16,9 @@ object FPDocEditor: TFPDocEditor
Left = 40
Height = 120
Width = 713
ActivePage = DescrTabSheet
ActivePage = SeeAlsoTabSheet
Align = alClient
TabIndex = 1
TabIndex = 3
TabOrder = 0
TabPosition = tpBottom
OnChange = PageControlChange
@ -159,11 +159,10 @@ object FPDocEditor: TFPDocEditor
Text = 'LinkTextEdit'
end
object LinkIdComboBox: TComboBox
Height = 27
Height = 29
Top = 1
Width = 225
AutoCompleteText = [cbactEndOfLineComplete, cbactSearchAscending]
AutoSize = True
MaxLength = 0
OnChange = LinkChange
TabOrder = 4
@ -250,6 +249,20 @@ object FPDocEditor: TFPDocEditor
OnClick = CopyFromInheritedButtonClick
TabOrder = 2
end
object AddLinkToInheritedButton: TButton
AnchorSideLeft.Control = CopyFromInheritedButton
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = CopyFromInheritedButton
Left = 353
Height = 25
Top = 54
Width = 75
AutoSize = True
BorderSpacing.Left = 10
Caption = 'AddLinkToInheritedButton'
OnClick = AddLinkToInheritedButtonClick
TabOrder = 3
end
end
end
object LeftBtnPanel: TPanel

View File

@ -3,232 +3,271 @@
LazarusResources.Add('TFPDocEditor','FORMDATA',[
'TPF0'#12'TFPDocEditor'#11'FPDocEditor'#4'Left'#3'/'#1#6'Height'#2'x'#3'Top'#3
+'$'#2#5'Width'#3#241#2#18'HorzScrollBar.Page'#3#240#2#18'VertScrollBar.Page'
+#2'w'#13'ActiveControl'#7#9'DescrMemo'#7'Caption'#6#12'FPDoc editor'#12'Clie'
+'ntHeight'#2'x'#11'ClientWidth'#3#241#2#8'OnCreate'#7#10'FormCreate'#9'OnDes'
+'troy'#7#11'FormDestroy'#8'OnResize'#7#10'FormResize'#0#12'TPageControl'#11
+'PageControl'#4'Left'#2'('#6'Height'#2'x'#5'Width'#3#201#2#10'ActivePage'#7
+#13'DescrTabSheet'#5'Align'#7#8'alClient'#8'TabIndex'#2#1#8'TabOrder'#2#0#11
+'TabPosition'#7#8'tpBottom'#8'OnChange'#7#17'PageControlChange'#0#9'TTabShee'
+'t'#13'ShortTabSheet'#7'Caption'#6#13'ShortTabSheet'#12'ClientHeight'#2'Y'#11
+'ClientWidth'#3#197#2#0#5'TEdit'#9'ShortEdit'#6'Height'#2#23#5'Width'#3#195#2
+#5'Align'#7#5'alTop'#19'BorderSpacing.Right'#2#2#8'OnChange'#7#20'ShortEditE'
+'ditingDone'#13'OnEditingDone'#7#20'ShortEditEditingDone'#8'TabOrder'#2#0#4
+'Text'#6#9'ShortEdit'#0#0#7'TButton'#12'CreateButton'#21'AnchorSideTop.Contr'
+'ol'#7#9'ShortEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6'Heig'
+'ht'#2#29#3'Top'#2#29#5'Width'#2'b'#8'AutoSize'#9#20'BorderSpacing.Around'#2
+#6#7'Caption'#6#12'CreateButton'#7'OnClick'#7#17'CreateButtonClick'#8'TabOrd'
+'er'#2#1#0#0#7'TButton'#10'SaveButton'#22'AnchorSideLeft.Control'#7#12'Creat'
+'eButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7
+#12'CreateButton'#4'Left'#2'n'#6'Height'#2#29#3'Top'#2#29#5'Width'#2'W'#8'Au'
+'toSize'#9#18'BorderSpacing.Left'#2#6#7'Caption'#6#10'SaveButton'#7'OnClick'
+#7#15'SaveButtonClick'#8'TabOrder'#2#2#0#0#0#9'TTabSheet'#13'DescrTabSheet'#7
+'Caption'#6#13'DescrTabSheet'#12'ClientHeight'#2'Y'#11'ClientWidth'#3#197#2#0
+#5'TMemo'#9'DescrMemo'#6'Height'#2'U'#5'Width'#3#195#2#5'Align'#7#8'alClient'
+#19'BorderSpacing.Right'#2#2#20'BorderSpacing.Bottom'#2#4#13'Lines.Strings'#1
+#6#9'DescrMemo'#0#8'OnChange'#7#15'DescrMemoChange'#8'TabOrder'#2#0#0#0#0#9
+'TTabSheet'#14'ErrorsTabSheet'#7'Caption'#6#14'ErrorsTabSheet'#12'ClientHeig'
+'ht'#2'Y'#11'ClientWidth'#3#197#2#0#5'TMemo'#10'ErrorsMemo'#6'Height'#2'U'#5
+'Width'#3#195#2#5'Align'#7#8'alClient'#19'BorderSpacing.Right'#2#2#20'Border'
+'Spacing.Bottom'#2#4#13'Lines.Strings'#1#6#10'ErrorsMemo'#0#8'OnChange'#7#16
+'ErrorsMemoChange'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#15'SeeAlsoTabSheet'#7
+'Caption'#6#15'SeeAlsoTabSheet'#12'ClientHeight'#2'Y'#11'ClientWidth'#3#197#2
+#0#8'TListBox'#11'LinkListBox'#21'AnchorSideTop.Control'#7#13'AddLinkButton'
+#18'AnchorSideTop.Side'#7#9'asrBottom'#6'Height'#2'4'#3'Top'#2'!'#5'Width'#3
+#195#2#5'Align'#7#8'alBottom'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8
+'akBottom'#0#17'BorderSpacing.Top'#2#4#19'BorderSpacing.Right'#2#2#20'Border'
+'Spacing.Bottom'#2#4#7'OnClick'#7#16'LinkListBoxClick'#8'TabOrder'#2#0#8'Top'
+'Index'#2#255#0#0#7'TButton'#13'AddLinkButton'#23'AnchorSideRight.Control'#7
+#16'DeleteLinkButton'#4'Left'#3#218#1#6'Height'#2#29#5'Width'#2'i'#7'Anchors'
+#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#19'BorderSpacing.Right'#2#6#7'Captio'
+'n'#6#13'AddLinkButton'#7'OnClick'#7#18'AddLinkButtonClick'#8'TabOrder'#2#1#0
+#0#7'TButton'#16'DeleteLinkButton'#23'AnchorSideRight.Control'#7#15'SeeAlsoT'
+'abSheet'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'I'#2#6'Height'#2
+#29#5'Width'#2'z'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#19'Borde'
+'rSpacing.Right'#2#2#7'Caption'#6#16'DeleteLinkButton'#7'OnClick'#7#21'Delet'
+'eLinkButtonClick'#8'TabOrder'#2#2#0#0#5'TEdit'#12'LinkTextEdit'#22'AnchorSi'
+'deLeft.Control'#7#14'LinkIdComboBox'#19'AnchorSideLeft.Side'#7#9'asrBottom'
+#23'AnchorSideRight.Control'#7#13'AddLinkButton'#4'Left'#3#229#0#6'Height'#2
+#27#3'Top'#2#1#5'Width'#3#241#0#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0
+#8'AutoSize'#9#18'BorderSpacing.Left'#2#4#19'BorderSpacing.Right'#2#4#8'OnCh'
+'ange'#7#10'LinkChange'#8'TabOrder'#2#3#4'Text'#6#12'LinkTextEdit'#0#0#9'TCo'
+'mboBox'#14'LinkIdComboBox'#6'Height'#2#27#3'Top'#2#1#5'Width'#3#225#0#16'Au'
+'toCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscending'#0#8
+'AutoSize'#9#9'MaxLength'#2#0#8'OnChange'#7#10'LinkChange'#8'TabOrder'#2#4#4
+'Text'#6#14'LinkIdComboBox'#0#0#0#9'TTabSheet'#15'ExampleTabSheet'#7'Caption'
+#6#15'ExampleTabSheet'#12'ClientHeight'#2'Y'#11'ClientWidth'#3#197#2#0#5'TEd'
+'it'#11'ExampleEdit'#6'Height'#2#23#5'Width'#3#195#2#5'Align'#7#5'alTop'#19
+'BorderSpacing.Right'#2#2#8'OnChange'#7#17'ExampleEditChange'#8'TabOrder'#2#0
+#4'Text'#6#11'ExampleEdit'#0#0#7'TButton'#19'BrowseExampleButton'#23'AnchorS'
+'ideRight.Control'#7#15'ExampleTabSheet'#20'AnchorSideRight.Side'#7#9'asrBot'
+'tom'#4'Left'#3''''#2#6'Height'#2#29#3'Top'#2#28#5'Width'#3#156#0#7'Anchors'
+#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#19'BorderSpacing.Right'#2#2#7'Captio'
+'n'#6#19'BrowseExampleButton'#7'OnClick'#7#24'BrowseExampleButtonClick'#8'Ta'
+'bOrder'#2#1#0#0#0#9'TTabSheet'#17'InheritedTabSheet'#7'Caption'#6#17'Inheri'
+'tedTabSheet'#12'ClientHeight'#2'Y'#11'ClientWidth'#3#197#2#0#6'TLabel'#19'I'
,'nheritedShortLabel'#6'Height'#2#20#3'Top'#2#2#5'Width'#3#197#2#5'Align'#7#5
+'alTop'#17'BorderSpacing.Top'#2#2#7'Caption'#6#19'InheritedShortLabel'#11'Pa'
+'rentColor'#8#0#0#5'TEdit'#18'InheritedShortEdit'#22'AnchorSideLeft.Control'
+#7#17'InheritedTabSheet'#21'AnchorSideTop.Control'#7#19'InheritedShortLabel'
+#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#17'Inhe'
+'ritedTabSheet'#20'AnchorSideRight.Side'#7#9'asrBottom'#6'Height'#2#23#3'Top'
+#2#24#5'Width'#3#197#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'Bord'
+'erSpacing.Top'#2#2#8'ReadOnly'#9#8'TabOrder'#2#0#4'Text'#6#18'InheritedShor'
+'tEdit'#0#0#7'TButton'#21'MoveToInheritedButton'#6'Height'#2#29#3'Top'#2'6'#5
+'Width'#3#158#0#8'AutoSize'#9#7'Caption'#6#21'MoveToInheritedButton'#7'OnCli'
+'ck'#7#26'MoveToInheritedButtonClick'#8'TabOrder'#2#1#0#0#7'TButton'#23'Copy'
+'FromInheritedButton'#22'AnchorSideLeft.Control'#7#21'MoveToInheritedButton'
+#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#21'MoveT'
+'oInheritedButton'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#3#168#0#6'H'
+'eight'#2#29#3'Top'#2'6'#5'Width'#3#175#0#8'AutoSize'#9#18'BorderSpacing.Lef'
+'t'#2#10#7'Caption'#6#23'CopyFromInheritedButton'#7'OnClick'#7#28'CopyFromIn'
+'heritedButtonClick'#8'TabOrder'#2#2#0#0#0#0#6'TPanel'#12'LeftBtnPanel'#6'He'
+'ight'#2'x'#5'Width'#2#20#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6'bvNone'#12
+'ClientHeight'#2'x'#11'ClientWidth'#2#20#11'FullRepaint'#8#14'ParentShowHint'
+#8#8'ShowHint'#9#8'TabOrder'#2#1#0#12'TSpeedButton'#16'BoldFormatButton'#6'H'
+'eight'#2#23#5'Width'#2#20#5'Align'#7#5'alTop'#5'Color'#7#9'clBtnFace'#10'Gl'
+'yph.Data'#10#190#4#0#0#186#4#0#0'BM'#186#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#17
+#0#0#0#17#0#0#0#1#0' '#0#0#0#0#0#132#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0
+#0#255#255#0#219#152' '#0#0#14#165#0#243#165#13#0#0#0'g'#0#250#226'c'#0#0#255
+#0#0#0#0#0#0#0#255#255#0#255#255#0#0#0#0#0#0#221#255#255#0#0#2'|'#0#250#205
+'R'#0#0#0#0#0#0#0#0#0#136#4#0#0#0#0#0#0#0#0#0#0'h'#3#0#0#0'|'#167#0#5'9'#178
+#0#0#0#0#0#0#0#0#0#0#255#255#0#255#255#255#0#0'L'#218#0#221'W'#255#0#0#255
+#255#0#255#255#255#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#236'M'#0' '#161
+#255#0#0#138'v'#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0'#p'
+#226#0#0#151#168#0#19#171#150#0#0'n'#204#0#4#29#151#0#0#255#0#0#0#0#0#0#0#0#0
+#0#0#0'd'#0#0#232#31#0#0'!'#231#0#0#222'-'#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#8#0#0#0#0#224#13#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#251#255#0#255#255#254#0#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0#0#255#0#0
+#0#0#0#0#0#255#0#0#255#255#255#0#0#0#0#0'~'#0#0#0#0#255#0#0#0#0#0#0#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#23#0#0#252#3#0#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#231' '#0#0'!'#230#0#0#221'-'#0#0#0#0#0#0#255#255
+#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#0#0#255#0#0#0#0#0#0#0'8'#194#0#0#0#0#0#0'}'#185#0#13#154#152#0#0#0
+#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#8#246#0#0#0#0#0#0#0#0#255#0#0#0
+#255#0#0#0#255#0#255#0#0#4'0'#191#0#0#255#0#0#0#0#4#0#0#0#0#0#0'z'#133#0#0
+#255#0#0#0#0#0#0#0#255#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#242#161#11#0#0
+#0'd'#0#249#224'b'#0#0#255#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0
+#0#3#133#0#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0#0#0#163#0#7's'#189
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0
+#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#23#0#0#255#0#0#0#0
+'d'#0#0#12#163#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#5'0'#189#0#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#255#255#255#0#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#255#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#255#255#255#0#0#255#255
+#0#251#222#136#0#0#255#255#0#218#151' '#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#2'w'#13'ActiveControl'#7#12'LinkTextEdit'#7'Caption'#6#12'FPDoc editor'#12
+'ClientHeight'#2'x'#11'ClientWidth'#3#241#2#8'OnCreate'#7#10'FormCreate'#9'O'
+'nDestroy'#7#11'FormDestroy'#8'OnResize'#7#10'FormResize'#0#12'TPageControl'
+#11'PageControl'#4'Left'#2'('#6'Height'#2'x'#5'Width'#3#201#2#10'ActivePage'
+#7#15'SeeAlsoTabSheet'#5'Align'#7#8'alClient'#8'TabIndex'#2#3#8'TabOrder'#2#0
+#11'TabPosition'#7#8'tpBottom'#8'OnChange'#7#17'PageControlChange'#0#9'TTabS'
+'heet'#13'ShortTabSheet'#7'Caption'#6#13'ShortTabSheet'#12'ClientHeight'#2'Y'
+#11'ClientWidth'#3#197#2#0#5'TEdit'#9'ShortEdit'#6'Height'#2#23#5'Width'#3
+#195#2#5'Align'#7#5'alTop'#19'BorderSpacing.Right'#2#2#8'OnChange'#7#20'Shor'
+'tEditEditingDone'#13'OnEditingDone'#7#20'ShortEditEditingDone'#8'TabOrder'#2
+#0#4'Text'#6#9'ShortEdit'#0#0#7'TButton'#12'CreateButton'#21'AnchorSideTop.C'
+'ontrol'#7#9'ShortEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6
+'Height'#2#29#3'Top'#2#29#5'Width'#2'b'#8'AutoSize'#9#20'BorderSpacing.Aroun'
+'d'#2#6#7'Caption'#6#12'CreateButton'#7'OnClick'#7#17'CreateButtonClick'#8'T'
+'abOrder'#2#1#0#0#7'TButton'#10'SaveButton'#22'AnchorSideLeft.Control'#7#12
+'CreateButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Contr'
+'ol'#7#12'CreateButton'#4'Left'#2'n'#6'Height'#2#29#3'Top'#2#29#5'Width'#2'W'
+#8'AutoSize'#9#18'BorderSpacing.Left'#2#6#7'Caption'#6#10'SaveButton'#7'OnCl'
+'ick'#7#15'SaveButtonClick'#8'TabOrder'#2#2#0#0#0#9'TTabSheet'#13'DescrTabSh'
+'eet'#7'Caption'#6#13'DescrTabSheet'#12'ClientHeight'#2'Y'#11'ClientWidth'#3
+#197#2#0#5'TMemo'#9'DescrMemo'#6'Height'#2'U'#5'Width'#3#195#2#5'Align'#7#8
+'alClient'#19'BorderSpacing.Right'#2#2#20'BorderSpacing.Bottom'#2#4#13'Lines'
+'.Strings'#1#6#9'DescrMemo'#0#8'OnChange'#7#15'DescrMemoChange'#8'TabOrder'#2
+#0#0#0#0#9'TTabSheet'#14'ErrorsTabSheet'#7'Caption'#6#14'ErrorsTabSheet'#12
+'ClientHeight'#2'Y'#11'ClientWidth'#3#197#2#0#5'TMemo'#10'ErrorsMemo'#6'Heig'
+'ht'#2'U'#5'Width'#3#195#2#5'Align'#7#8'alClient'#19'BorderSpacing.Right'#2#2
+#20'BorderSpacing.Bottom'#2#4#13'Lines.Strings'#1#6#10'ErrorsMemo'#0#8'OnCha'
+'nge'#7#16'ErrorsMemoChange'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#15'SeeAlsoTa'
+'bSheet'#7'Caption'#6#15'SeeAlsoTabSheet'#12'ClientHeight'#2'Y'#11'ClientWid'
+'th'#3#197#2#0#8'TListBox'#11'LinkListBox'#21'AnchorSideTop.Control'#7#13'Ad'
+'dLinkButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#6'Height'#2'4'#3'Top'#2
+'!'#5'Width'#3#195#2#5'Align'#7#8'alBottom'#7'Anchors'#11#5'akTop'#6'akLeft'
+#7'akRight'#8'akBottom'#0#17'BorderSpacing.Top'#2#4#19'BorderSpacing.Right'#2
+#2#20'BorderSpacing.Bottom'#2#4#7'OnClick'#7#16'LinkListBoxClick'#8'TabOrder'
+#2#0#8'TopIndex'#2#255#0#0#7'TButton'#13'AddLinkButton'#23'AnchorSideRight.C'
+'ontrol'#7#16'DeleteLinkButton'#4'Left'#3#218#1#6'Height'#2#29#5'Width'#2'i'
+#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#19'BorderSpacing.Right'#2
+#6#7'Caption'#6#13'AddLinkButton'#7'OnClick'#7#18'AddLinkButtonClick'#8'TabO'
+'rder'#2#1#0#0#7'TButton'#16'DeleteLinkButton'#23'AnchorSideRight.Control'#7
+#15'SeeAlsoTabSheet'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'I'#2#6
+'Height'#2#29#5'Width'#2'z'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9
+#19'BorderSpacing.Right'#2#2#7'Caption'#6#16'DeleteLinkButton'#7'OnClick'#7
+#21'DeleteLinkButtonClick'#8'TabOrder'#2#2#0#0#5'TEdit'#12'LinkTextEdit'#22
+'AnchorSideLeft.Control'#7#14'LinkIdComboBox'#19'AnchorSideLeft.Side'#7#9'as'
+'rBottom'#23'AnchorSideRight.Control'#7#13'AddLinkButton'#4'Left'#3#229#0#6
+'Height'#2#27#3'Top'#2#1#5'Width'#3#241#0#7'Anchors'#11#5'akTop'#6'akLeft'#7
+'akRight'#0#8'AutoSize'#9#18'BorderSpacing.Left'#2#4#19'BorderSpacing.Right'
+#2#4#8'OnChange'#7#10'LinkChange'#8'TabOrder'#2#3#4'Text'#6#12'LinkTextEdit'
+#0#0#9'TComboBox'#14'LinkIdComboBox'#6'Height'#2#29#3'Top'#2#1#5'Width'#3#225
+#0#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'#20'cbactSearchAscendin'
+'g'#0#9'MaxLength'#2#0#8'OnChange'#7#10'LinkChange'#8'TabOrder'#2#4#4'Text'#6
+#14'LinkIdComboBox'#0#0#0#9'TTabSheet'#15'ExampleTabSheet'#7'Caption'#6#15'E'
+'xampleTabSheet'#12'ClientHeight'#2'Y'#11'ClientWidth'#3#197#2#0#5'TEdit'#11
+'ExampleEdit'#6'Height'#2#23#5'Width'#3#195#2#5'Align'#7#5'alTop'#19'BorderS'
+'pacing.Right'#2#2#8'OnChange'#7#17'ExampleEditChange'#8'TabOrder'#2#0#4'Tex'
+'t'#6#11'ExampleEdit'#0#0#7'TButton'#19'BrowseExampleButton'#23'AnchorSideRi'
+'ght.Control'#7#15'ExampleTabSheet'#20'AnchorSideRight.Side'#7#9'asrBottom'#4
+'Left'#3''''#2#6'Height'#2#29#3'Top'#2#28#5'Width'#3#156#0#7'Anchors'#11#5'a'
+'kTop'#7'akRight'#0#8'AutoSize'#9#19'BorderSpacing.Right'#2#2#7'Caption'#6#19
+'BrowseExampleButton'#7'OnClick'#7#24'BrowseExampleButtonClick'#8'TabOrder'#2
+#1#0#0#0#9'TTabSheet'#17'InheritedTabSheet'#7'Caption'#6#17'InheritedTabShee'
+'t'#12'ClientHeight'#2'Y'#11'ClientWidth'#3#197#2#0#6'TLabel'#19'InheritedSh'
,'ortLabel'#6'Height'#2#20#3'Top'#2#2#5'Width'#3#197#2#5'Align'#7#5'alTop'#17
+'BorderSpacing.Top'#2#2#7'Caption'#6#19'InheritedShortLabel'#11'ParentColor'
+#8#0#0#5'TEdit'#18'InheritedShortEdit'#22'AnchorSideLeft.Control'#7#17'Inher'
+'itedTabSheet'#21'AnchorSideTop.Control'#7#19'InheritedShortLabel'#18'Anchor'
+'SideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#17'InheritedTabS'
+'heet'#20'AnchorSideRight.Side'#7#9'asrBottom'#6'Height'#2#23#3'Top'#2#24#5
+'Width'#3#197#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpaci'
+'ng.Top'#2#2#8'ReadOnly'#9#8'TabOrder'#2#0#4'Text'#6#18'InheritedShortEdit'#0
+#0#7'TButton'#21'MoveToInheritedButton'#6'Height'#2#29#3'Top'#2'6'#5'Width'#3
+#158#0#8'AutoSize'#9#7'Caption'#6#21'MoveToInheritedButton'#7'OnClick'#7#26
+'MoveToInheritedButtonClick'#8'TabOrder'#2#1#0#0#7'TButton'#23'CopyFromInher'
+'itedButton'#22'AnchorSideLeft.Control'#7#21'MoveToInheritedButton'#19'Ancho'
+'rSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#21'MoveToInherit'
+'edButton'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#3#168#0#6'Height'#2
+#29#3'Top'#2'6'#5'Width'#3#175#0#8'AutoSize'#9#18'BorderSpacing.Left'#2#10#7
+'Caption'#6#23'CopyFromInheritedButton'#7'OnClick'#7#28'CopyFromInheritedBut'
+'tonClick'#8'TabOrder'#2#2#0#0#7'TButton'#24'AddLinkToInheritedButton'#22'An'
+'chorSideLeft.Control'#7#23'CopyFromInheritedButton'#19'AnchorSideLeft.Side'
+#7#9'asrBottom'#21'AnchorSideTop.Control'#7#23'CopyFromInheritedButton'#4'Le'
+'ft'#3'a'#1#6'Height'#2#25#3'Top'#2'6'#5'Width'#2'K'#8'AutoSize'#9#18'Border'
+'Spacing.Left'#2#10#7'Caption'#6#24'AddLinkToInheritedButton'#7'OnClick'#7#29
+'AddLinkToInheritedButtonClick'#8'TabOrder'#2#3#0#0#0#0#6'TPanel'#12'LeftBtn'
+'Panel'#6'Height'#2'x'#5'Width'#2#20#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6
+'bvNone'#12'ClientHeight'#2'x'#11'ClientWidth'#2#20#11'FullRepaint'#8#14'Par'
+'entShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#1#0#12'TSpeedButton'#16'BoldForm'
+'atButton'#6'Height'#2#23#5'Width'#2#20#5'Align'#7#5'alTop'#5'Color'#7#9'clB'
+'tnFace'#10'Glyph.Data'#10#190#4#0#0#186#4#0#0'BM'#186#4#0#0#0#0#0#0'6'#0#0#0
+'('#0#0#0#17#0#0#0#17#0#0#0#1#0' '#0#0#0#0#0#132#4#0#0'd'#0#0#0'd'#0#0#0#0#0
+#0#0#0#0#0#0#0#255#255#0#219#152' '#0#0#14#165#0#243#165#13#0#0#0'g'#0#250
+#226'c'#0#0#255#0#0#0#0#0#0#0#255#255#0#255#255#0#0#0#0#0#0#221#255#255#0#0#2
+'|'#0#250#205'R'#0#0#0#0#0#0#0#0#0#136#4#0#0#0#0#0#0#0#0#0#0'h'#3#0#0#0'|'
+#167#0#5'9'#178#0#0#0#0#0#0#0#0#0#0#255#255#0#255#255#255#0#0'L'#218#0#221'W'
+#255#0#0#255#255#0#255#255#255#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#236'M'
+#0' '#161#255#0#0#138'v'#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255
+#0#0'#p'#226#0#0#151#168#0#19#171#150#0#0'n'#204#0#4#29#151#0#0#255#0#0#0#0#0
+#0#0#0#0#0#0#0'd'#0#0#232#31#0#0'!'#231#0#0#222'-'#0#0#0#0#0#0#255#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#8#0#0#0#0#224#13#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#251#255#0#255#255#254#0#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0#0
+#255#0#0#0#0#0#0#0#255#0#0#255#255#255#0#0#0#0#0'~'#0#0#0#0#255#0#0#0#0#0#0#0
+#0#0#255#0#0#0#255#0#0#0#255#0#0#23#0#0#252#3#0#0#0#0#255#0#0#0#255#0#0#0#255
+#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#231' '#0#0'!'#230#0#0#221'-'#0#0#0#0#0#0
+#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#0#0#255#0#0#0#0#0#0#0'8'#194#0#0#0#0#0#0'}'#185#0#13#154#152
+#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#8#246#0#0#0#0#0#0#0#0#255
+#0#0#0#255#0#0#0#255#0#255#0#0#4'0'#191#0#0#255#0#0#0#0#4#0#0#0#0#0#0'z'#133
+#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#242#161#11
+#0#0#0'd'#0#249#224'b'#0#0#255#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#0#0#3#133#0#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0#0#0#163#0#7's'
+#189#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#255#0#0#0#255#0#0#0
+#255#0#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#23#0#0#255#0
+#0#0#0'd'#0#0#12#163#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#5'0'#189#0#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#255#255#255#0#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0
+#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#255#255#255#0
+#0#255#255#0#251#222#136#0#0#255#255#0#218#151' '#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#184#163#18#0#152#28#241#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#184#163#18#0#152#28#241#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#9'NumGlyphs'#2#0#7'OnClick'#7#17'FormatButtonClick'#0
+#0#12'TSpeedButton'#18'ItalicFormatButton'#3'Tag'#2#1#6'Height'#2#23#3'Top'#2
+'.'#5'Width'#2#20#5'Align'#7#5'alTop'#5'Color'#7#9'clBtnFace'#10'Glyph.Data'
+#10#190#4#0#0#186#4#0#0'BM'#186#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#17#0#0#0#17#0
+#0#0#1#0' '#0#0#0#0#0#132#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
,#0#0#25#0#0#0#0#0#0#0'd'#253'F'#0#0#0#1#0#239#239#136#0#255#255#255#0#0#0#0#0
+#4#0#0#0#0#4#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#136#4#0#0#197'}N'#0
+#8#4#0#0#128#0#0#0#1#0#24#0#230#2#224#0#0#0#0#0#16#0#16#0#152'N$'#0'H'#129'j'
+#0#0#0#0#0'@'#0#0#0#136#228'D'#0#244#167#18#0#0#0#0#0#0#0#0#0#0#0#0#0#8#168
+#18#0#251#224#201#0#197'}N'#0' '#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#212'l'#187#0#0
+#0'h'#0#26#26#198#0#0#0#0#0#0#0#156#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0
+#197'}N'#0#197'}N'#0#252#226#206#0#251#224#201#0#197'}N'#0#255#0#0#0#0#0#0#0
+'O'#7'"'#0#174#133'j'#0#181#142'v'#0#188#153#129#0#195#162#142#0#211#139'h'#0
+#225#143'p'#0#195'}C'#0#251#224#201#0#251#224#201#0#251#224#201#0#251#224#201
+#0#228#157'X'#0#228#157'X'#0#250#223#199#0#197'}N'#0#162#0#0#0#0#0#0#0#164'u'
+'V'#0#171'c'#0#177#137'o'#0#198#131'U'#0#239#206#186#0#221#255#255#0#135#238
+#199#0#228#174'z'#0#228#157'X'#0#229#157'\'#0#228#174'z'#0#228#157'X'#0#228
+#174'z'#0#250#223#199#0#246#218#189#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#195'Q'#0#239#182#154#0#234#243#232#0#228#157'X'#0#228
+#157'X'#0#254#232#214#0#253#231#214#0#252#227#207#0#252#228#207#0#250#225#202
+#0#246#217#188#0#247#242#236#0#197'}N'#0#0#0#0#255#0#0#0#255#175#150#150#255
+#164'tV'#0#170'~b'#0#177#137'n'#0#234#182#151#0#243#243#234#0#237#241#230#0
+#228#174'z'#0#228#157'X'#0#197'}N'#0#250#224#199#0#251#226#201#0#249#223#197
+#0#244#214#184#0#246#216#180#0#175#150#150#255#0#0#0#255#0#0#0#255#154'eB'#0
+#160'oO'#0#167'y\'#0#201#139'a'#0#230#181#146#0#226#167#129#0#225#167#129#0
+#197'}N'#0#254#252#251#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0
+#197'}N'#0#0#0#0#255#0#0#0#255#175#150#150#255#150'_<'#0#157'jH'#0#224#187
+#155#0#202#141'e'#0#234#184#153#0#221#165'~'#0#221#166#128#0#208#169#140#0
+#204#147'n'#0#255#255#255#0#255#255#255#0#255#251#247#0#255#248#241#0#228#175
+#140#0#175#150#150#255#0#0#0#255#0#0#0#255#205#145'i'#0#236#178#147#0#204#150
+'o'#0#214#181#144#0#200#136']'#0#239#191#161#0#253#252#250#0#255#255#255#0
+#197'}N'#0#227#199#179#0#255#255#255#0#255#255#255#0#255#255#255#0#197'}N'#0
+#197'}N'#0#0#0#0#255#0#0#0#255#175#150#150#255#197'}N'#0#197'}N'#0#197'}N'#0
+#197'}N'#0#197'}N'#0#197'}N'#0#158#158#158#0#158#158#158#0#197'}N'#0#214#164
+#130#0#205#142'h'#0#205#144'i'#0#197'}N'#0#197'}N'#0#175#150#150#255#0#0#0
+#255#0#0#0#255#197'}N'#0#245#245#244#0#245#245#244#0#158#158#158#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#197'}N'#0#255
+#255#255#0#251#246#242#0#197'}N'#0#197'}N'#0#197'}N'#0#0#0#0#255#0#0#0#255
+#175#150#150#255#197'}N'#0#228#157'X'#0#228#157'X'#0#158#158#158#0#158#158
+#158#0#158#158#158#0#158#158#158#0#158#158#158#0#158#158#158#0#197'}N'#0#211
+#158'{'#0#211#159'{'#0#209#154't'#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
+#0#0#255#197'}N'#0#245#245#244#0#245#245#244#0#158#158#158#0#245#245#244#0
+#245#245#244#0#245#245#244#0#245#245#244#0#245#245#244#0#197'}N'#0#254#253
+#252#0#238#204#180#0#211#160''#0#197'}N'#0#197'}N'#0#197'}N'#0#0#255#0#0#11
+'1'#145#0#197'}N'#0#228#157'X'#0#228#157'X'#0#226#179#140#0#226#179#140#0#226
+#179#140#0#226#179#139#0#225#178#139#0#225#178#139#0#197'}N'#0#218#172#141#0
+#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#0#0#255#0#255#255#255#0#0#0#0#0#197
+'}N'#0#245#245#244#0#184'S'#239#0#152#28#241#0#0#0#0#0#0#0#0#0#197'}N'#0#197
+'}N'#0#197'}N'#0#208#169#140#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#255#0#0#255#255#0#241#207#136#0#197'}N'#0#9'NumGlyphs'#2#0#7'OnClick'#7#17
+'FormatButtonClick'#0#0#12'TSpeedButton'#21'UnderlineFormatButton'#3'Tag'#2#2
+#6'Height'#2#23#3'Top'#2#23#5'Width'#2#20#5'Align'#7#5'alTop'#5'Color'#7#9'c'
+'lBtnFace'#10'Glyph.Data'#10#190#4#0#0#186#4#0#0'BM'#186#4#0#0#0#0#0#0'6'#0#0
+#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0' '#0#0#0#0#0#132#4#0#0'd'#0#0#0'd'#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#25#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
+#255#255#0#0#0#0#0#4#0#0#0#0#4#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#136#4#0#0#197'}N'#0#8#4#0#0#128#0#0#0#1#0#24#0#218#2#224#0#0#0#0#0#16#0#16#0
+#152'N$'#0'@'#129'j'#0#0#0#0#0'@'#0#0#0#192#163#18#0#212' '#241#0#0#0#0#0#0#0
+#0#0#0#0#0#0#232' '#241#0#166'_.'#0#197'}N'#0'$n'#177#0'.'#133#210#0'1'#134
+#210#0'2'#135#211#0'2'#135#210#0'2'#135#210#0'2'#135#211#0'2'#135#211#0'2'
+#135#211#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#221
+#162#133#0#171'j>'#0#197'}N'#0'2'#140#214#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#218#139'm'#0#215#138
+'n'#0#205#139'l'#0#171'mD'#0#228#244#233#0#221#156'{'#0#170'i:'#0#197'}N'#0
+'7'#145#213#0#239#250#254#0#164'uV'#0#171'c'#0#177#137'o'#0#198#131'U'#0#239
+#206#186#0#221#255#255#0#135#238#199#0#162#244#215#0#162#246#215#0#140#238
+#199#0#224#255#255#0#237#241#229#0#243#245#237#0#213#156'y'#0#176'pD'#0#197
+'}N'#0':'#154#215#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#239#182
+#154#0#234#243#232#0'Q'#191#132#0'o'#201#152#0'q'#201#153#0'T'#191#132#0#220
,#161'{'#0#219#159'y'#0#217#158'w'#0#212#154's'#0#187'~W'#0#0#0#0#255#0#0#0
+#255#132#132#132#255#158'jJ'#0#132#132#132#255#0#0#0#255#0#0#0#255#234#182
+#151#0#243#243#234#0#237#241#230#0#239#241#230#0#239#240#230#0#219#163'|'#0
+#217#160'z'#0#217#160'y'#0#216#159'x'#0#216#158'x'#0#0#0#0#255#0#0#0#255':'
+#166#216#0#207#145'h'#0#202#138'_'#0#0#0#0#255#0#0#0#255#201#139'a'#0#230#181
+#146#0#226#167#129#0#225#167#129#0#222#163'}'#0#254#252#251#0#254#253#253#0
+#254#253#252#0#253#251#250#0#253#252#251#0#0#0#0#255#0#0#0#255#204#131'U'#0
+'8'#171#216#0#207#147'k'#0#0#0#0#255#0#0#0#255#224#187#155#0#202#141'e'#0#234
+#184#153#0#221#165'~'#0#221#166#128#0#255#255#255#0#204#147'n'#0#255#255#255
+#0#255#255#255#0#255#251#247#0#0#0#0#255#0#0#0#255#199#138'a'#0#203#133'U'#0
+'>'#169#213#0#0#0#0#255#0#0#0#255#204#150'o'#0#214#181#144#0#200#136']'#0#239
+#191#161#0#253#252#250#0#243#205#176#0#255#255#255#0#227#199#179#0#255#255
+#255#0#255#255#255#0#0#0#0#255#0#0#0#255#234#191#161#0#201#137'`'#0#204#134
+'V'#0#0#0#0#255#0#0#0#255#232#178#145#0#206#152's'#0#234#190#160#0#199#134'['
+#0#239#192#158#0#212#151'n'#0#212#158'{'#0#208#152'q'#0#214#164#130#0#205#142
+'h'#0#0#0#0#255#0#0#0#255#209#153's'#0#200#139'b'#0#197'}N'#0#0#0#0#255#0#0#0
+#255#210#156'v'#0#230#178#141#0#202#139'a'#0#237#187#157#0#204#141'e'#0#244
+#211#185#0#254#252#251#0#231#206#188#0#255#255#254#0#255#255#255#0#0#0#0#255
+#0#0#0#255#236#196#168#0#207#149'p'#0#197'}N'#0#0#0#0#255#0#0#0#255#197'}N'#0
+#211#158'{'#0#233#180#147#0#202#139'b'#0#237#190#157#0#218#165#129#0#212#160
+'~'#0#212#163''#0#219#176#145#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#206
+#151'r'#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#197'}N'#0#210#154't'#0#237
+#187#154#0#210#156'x'#0#241#198#166#0#255#254#253#0#233#210#193#0#243#231#222
+#0#254#252#251#0#254#252#251#0#254#253#252#0#238#204#180#0#211#160''#0#197
+'}N'#0#197'}N'#0#197'}N'#0#236#193#147#0'rI+'#0#197'}N'#0#209#153't'#0#237
+#187#152#0#219#166#131#0#219#172#141#0#218#173#142#0#223#182#154#0#216#165
+#134#0#215#166#134#0#217#172#142#0#218#172#141#0#212#163#129#0#197'}N'#0#197
+'}N'#0#197'}N'#0#234#187#136#0#167'lF'#0#0#0#0#0#197'}N'#0#213#158'|'#0#184
+'S'#239#0'0'#233'j'#0'('#202#252#0#128#228'D'#0#197'}N'#0#197'}N'#0#197'}N'#0
+#208#169#140#0#228#187#146#0#228#187#146#0#209#159'k'#0#207#156'k'#0#190#138
+'V'#0#0#0#0#0#0' '#160#0#250#214'Z'#0#197'}N'#0#9'NumGlyphs'#2#0#7'OnClick'#7
+#17'FormatButtonClick'#0#0#12'TSpeedButton'#18'InsertVarTagButton'#3'Tag'#2#5
+#6'Height'#2#23#3'Top'#2'\'#5'Width'#2#20#5'Align'#7#5'alTop'#5'Color'#7#9'c'
+'lBtnFace'#10'Glyph.Data'#10#174#3#0#0#170#3#0#0'BM'#170#3#0#0#0#0#0#0'6'#0#0
+#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0#24#0#0#0#0#0't'#3#0#0'd'#0#0#0'd'#0#0#0#0#0
+#0#0#0#0#0#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#9'NumGlyphs'#2#0#7'OnClick'#7#17'FormatButt'
+'onClick'#0#0#12'TSpeedButton'#18'ItalicFormatButton'#3'Tag'#2#1#6'Height'#2
+#23#3'Top'#2'.'#5'Width'#2#20#5'Align'#7#5'alTop'#5'Color'#7#9'clBtnFace'#10
+'Glyph.Data'#10#190#4#0#0#186#4#0#0'BM'#186#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0
+#17#0#0#0#17#0#0#0#1#0' '#0#0#0#0#0#132#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#25#0#0#0#0#0#0#0'd'#253'F'#0#0#0#1#0#239#239#136#0#255#255
+#255#0#0#0#0#0#4#0#0#0#0#4#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#136#4
+#0#0#197'}N'#0#8#4#0#0#128#0#0#0#1#0#24#0#230#2#224#0#0#0#0#0#16#0#16#0#152
+'N$'#0'H'#129'j'#0#0#0#0#0'@'#0#0#0#136#228'D'#0#244#167#18#0#0#0#0#0#0#0#0#0
+#0#0#0#0#8#168#18#0#251#224#201#0#197'}N'#0' '#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
+#212'l'#187#0#0#0'h'#0#26#26#198#0#0#0#0#0#0#0#156#0#197'}N'#0#197'}N'#0#197
+'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#252#226#206#0#251#224#201#0#197'}N'#0
+#255#0#0#0#0#0#0#0'O'#7'"'#0#174#133'j'#0#181#142'v'#0#188#153#129#0#195#162
+#142#0#211#139'h'#0#225#143'p'#0#195'}C'#0#251#224#201#0#251#224#201#0#251
+#224#201#0#251#224#201#0#228#157'X'#0#228#157'X'#0#250#223#199#0#197'}N'#0
+#162#0#0#0#0#0#0#0#164'uV'#0#171'c'#0#177#137'o'#0#198#131'U'#0#239#206#186
+#0#221#255#255#0#135#238#199#0#228#174'z'#0#228#157'X'#0#229#157'\'#0#228#174
+'z'#0#228#157'X'#0#228#174'z'#0#250#223#199#0#246#218#189#0#0#0#0#255#0#0#0
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#195'Q'#0#239#182#154#0#234#243
+#232#0#228#157'X'#0#228#157'X'#0#254#232#214#0#253#231#214#0#252#227#207#0
+#252#228#207#0#250#225#202#0#246#217#188#0#247#242#236#0#197'}N'#0#0#0#0#255
+#0#0#0#255#175#150#150#255#164'tV'#0#170'~b'#0#177#137'n'#0#234#182#151#0#243
+#243#234#0#237#241#230#0#228#174'z'#0#228#157'X'#0#197'}N'#0#250#224#199#0
+#251#226#201#0#249#223#197#0#244#214#184#0#246#216#180#0#175#150#150#255#0#0
+#0#255#0#0#0#255#154'eB'#0#160'oO'#0#167'y\'#0#201#139'a'#0#230#181#146#0#226
+#167#129#0#225#167#129#0#197'}N'#0#254#252#251#0#197'}N'#0#197'}N'#0#197'}N'
+#0#197'}N'#0#197'}N'#0#197'}N'#0#0#0#0#255#0#0#0#255#175#150#150#255#150'_<'
+#0#157'jH'#0#224#187#155#0#202#141'e'#0#234#184#153#0#221#165'~'#0#221#166
+#128#0#208#169#140#0#204#147'n'#0#255#255#255#0#255#255#255#0#255#251#247#0
+#255#248#241#0#228#175#140#0#175#150#150#255#0#0#0#255#0#0#0#255#205#145'i'#0
+#236#178#147#0#204#150'o'#0#214#181#144#0#200#136']'#0#239#191#161#0#253#252
+#250#0#255#255#255#0#197'}N'#0#227#199#179#0#255#255#255#0#255#255#255#0#255
+#255#255#0#197'}N'#0#197'}N'#0#0#0#0#255#0#0#0#255#175#150#150#255#197'}N'#0
+#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#158#158#158#0#158#158#158
+#0#197'}N'#0#214#164#130#0#205#142'h'#0#205#144'i'#0#197'}N'#0#197'}N'#0#175
+#150#150#255#0#0#0#255#0#0#0#255#197'}N'#0#245#245#244#0#245#245#244#0#158
+#158#158#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#197'}N'#0#255#255#255#0#251#246#242#0#197'}N'#0#197'}N'#0#197'}N'#0#0
+#0#0#255#0#0#0#255#175#150#150#255#197'}N'#0#228#157'X'#0#228#157'X'#0#158
+#158#158#0#158#158#158#0#158#158#158#0#158#158#158#0#158#158#158#0#158#158
+#158#0#197'}N'#0#211#158'{'#0#211#159'{'#0#209#154't'#0#0#0#0#255#0#0#0#255#0
+#0#0#255#0#0#0#255#0#0#0#255#197'}N'#0#245#245#244#0#245#245#244#0#158#158
+#158#0#245#245#244#0#245#245#244#0#245#245#244#0#245#245#244#0#245#245#244#0
+#197'}N'#0#254#253#252#0#238#204#180#0#211#160''#0#197'}N'#0#197'}N'#0#197
+'}N'#0#0#255#0#0#11'1'#145#0#197'}N'#0#228#157'X'#0#228#157'X'#0#226#179#140
+#0#226#179#140#0#226#179#140#0#226#179#139#0#225#178#139#0#225#178#139#0#197
+'}N'#0#218#172#141#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#0#0#255#0#255
+#255#255#0#0#0#0#0#197'}N'#0#245#245#244#0#184'S'#239#0#152#28#241#0#0#0#0#0
+#0#0#0#0#197'}N'#0#197'}N'#0#197'}N'#0#208#169#140#0#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#0#0#255#0#0#255#255#0#241#207#136#0#197'}N'#0#9'NumGlyphs'#2
+#0#7'OnClick'#7#17'FormatButtonClick'#0#0#12'TSpeedButton'#21'UnderlineForma'
+'tButton'#3'Tag'#2#2#6'Height'#2#23#3'Top'#2#23#5'Width'#2#20#5'Align'#7#5'a'
+'lTop'#5'Color'#7#9'clBtnFace'#10'Glyph.Data'#10#190#4#0#0#186#4#0#0'BM'#186
+#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0' '#0#0#0#0#0#132#4#0#0
+'d'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#25#0#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#255#255#255#0#0#0#0#0#4#0#0#0#0#4#0#0#1#0#0#0#0#0#0#0#0#0#0#0
+#0#0#0#0#0#0#0#0#136#4#0#0#197'}N'#0#8#4#0#0#128#0#0#0#1#0#24#0#218#2#224#0#0
+#0#0#0#16#0#16#0#152'N$'#0'@'#129'j'#0#0#0#0#0'@'#0#0#0#192#163#18#0#212' '
+#241#0#0#0#0#0#0#0#0#0#0#0#0#0#232' '#241#0#166'_.'#0#197'}N'#0'$n'#177#0'.'
+#133#210#0'1'#134#210#0'2'#135#211#0'2'#135#210#0'2'#135#210#0'2'#135#211#0
+'2'#135#211#0'2'#135#211#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0
+#197'}N'#0#221#162#133#0#171'j>'#0#197'}N'#0'2'#140#214#0#0#0#0#255#0#0#0#255
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#218
+#139'm'#0#215#138'n'#0#205#139'l'#0#171'mD'#0#228#244#233#0#221#156'{'#0#170
,'i:'#0#197'}N'#0'7'#145#213#0#239#250#254#0#164'uV'#0#171'c'#0#177#137'o'#0
+#198#131'U'#0#239#206#186#0#221#255#255#0#135#238#199#0#162#244#215#0#162#246
+#215#0#140#238#199#0#224#255#255#0#237#241#229#0#243#245#237#0#213#156'y'#0
+#176'pD'#0#197'}N'#0':'#154#215#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0
+#0#255#239#182#154#0#234#243#232#0'Q'#191#132#0'o'#201#152#0'q'#201#153#0'T'
+#191#132#0#220#161'{'#0#219#159'y'#0#217#158'w'#0#212#154's'#0#187'~W'#0#0#0
+#0#255#0#0#0#255#132#132#132#255#158'jJ'#0#132#132#132#255#0#0#0#255#0#0#0
+#255#234#182#151#0#243#243#234#0#237#241#230#0#239#241#230#0#239#240#230#0
+#219#163'|'#0#217#160'z'#0#217#160'y'#0#216#159'x'#0#216#158'x'#0#0#0#0#255#0
+#0#0#255':'#166#216#0#207#145'h'#0#202#138'_'#0#0#0#0#255#0#0#0#255#201#139
+'a'#0#230#181#146#0#226#167#129#0#225#167#129#0#222#163'}'#0#254#252#251#0
+#254#253#253#0#254#253#252#0#253#251#250#0#253#252#251#0#0#0#0#255#0#0#0#255
+#204#131'U'#0'8'#171#216#0#207#147'k'#0#0#0#0#255#0#0#0#255#224#187#155#0#202
+#141'e'#0#234#184#153#0#221#165'~'#0#221#166#128#0#255#255#255#0#204#147'n'#0
+#255#255#255#0#255#255#255#0#255#251#247#0#0#0#0#255#0#0#0#255#199#138'a'#0
+#203#133'U'#0'>'#169#213#0#0#0#0#255#0#0#0#255#204#150'o'#0#214#181#144#0#200
+#136']'#0#239#191#161#0#253#252#250#0#243#205#176#0#255#255#255#0#227#199#179
+#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#234#191#161#0#201#137'`'#0
+#204#134'V'#0#0#0#0#255#0#0#0#255#232#178#145#0#206#152's'#0#234#190#160#0
+#199#134'['#0#239#192#158#0#212#151'n'#0#212#158'{'#0#208#152'q'#0#214#164
+#130#0#205#142'h'#0#0#0#0#255#0#0#0#255#209#153's'#0#200#139'b'#0#197'}N'#0#0
+#0#0#255#0#0#0#255#210#156'v'#0#230#178#141#0#202#139'a'#0#237#187#157#0#204
+#141'e'#0#244#211#185#0#254#252#251#0#231#206#188#0#255#255#254#0#255#255#255
+#0#0#0#0#255#0#0#0#255#236#196#168#0#207#149'p'#0#197'}N'#0#0#0#0#255#0#0#0
+#255#197'}N'#0#211#158'{'#0#233#180#147#0#202#139'b'#0#237#190#157#0#218#165
+#129#0#212#160'~'#0#212#163''#0#219#176#145#0#0#0#0#255#0#0#0#255#0#0#0#255
+#0#0#0#255#206#151'r'#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#197'}N'#0#210
+#154't'#0#237#187#154#0#210#156'x'#0#241#198#166#0#255#254#253#0#233#210#193
+#0#243#231#222#0#254#252#251#0#254#252#251#0#254#253#252#0#238#204#180#0#211
+#160''#0#197'}N'#0#197'}N'#0#197'}N'#0#236#193#147#0'rI+'#0#197'}N'#0#209
+#153't'#0#237#187#152#0#219#166#131#0#219#172#141#0#218#173#142#0#223#182#154
+#0#216#165#134#0#215#166#134#0#217#172#142#0#218#172#141#0#212#163#129#0#197
+'}N'#0#197'}N'#0#197'}N'#0#234#187#136#0#167'lF'#0#0#0#0#0#197'}N'#0#213#158
+'|'#0#184'S'#239#0'0'#233'j'#0'('#202#252#0#128#228'D'#0#197'}N'#0#197'}N'#0
+#197'}N'#0#208#169#140#0#228#187#146#0#228#187#146#0#209#159'k'#0#207#156'k'
+#0#190#138'V'#0#0#0#0#0#0' '#160#0#250#214'Z'#0#197'}N'#0#9'NumGlyphs'#2#0#7
+'OnClick'#7#17'FormatButtonClick'#0#0#12'TSpeedButton'#18'InsertVarTagButton'
+#3'Tag'#2#5#6'Height'#2#23#3'Top'#2'\'#5'Width'#2#20#5'Align'#7#5'alTop'#5'C'
+'olor'#7#9'clBtnFace'#10'Glyph.Data'#10#174#3#0#0#170#3#0#0'BM'#170#3#0#0#0#0
+#0#0'6'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0#24#0#0#0#0#0't'#3#0#0'd'#0#0#0
+'d'#0#0#0#0#0#0#0#0#0#0#0#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#0#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#0
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236#212#212#212'"""'
+#212#212#212#216#233#236'fffwwwLLLLLL'#187#187#187'LLLLLL'#187#187#187#216
+#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236'^^^DDD^^^'#216#233
+#236'"""'#187#187#187'^^^'#128#128#128#255#255#255#128#128#128#128#128#128
+#216#233#236#216#233#236#216#233#236#216#233#236#0#216#233#236#230#230#230#0
,#0#0#204#204#204#0#0#0#230#230#230#196#196#196#136#136#136'DDD'#153#153#153
+#230#230#230'fff"""'#136#136#136#187#187#187#216#233#236#216#233#236#0#216
+#233#236#212#212#212#170#170#170#170#170#170#170#170#170#212#212#212#212#212
+#212#170#170#170#170#170#170#216#233#236#212#212#212#170#170#170#170#170#170
+#170#170#170#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#0#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#0#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
@ -239,153 +278,120 @@ LazarusResources.Add('TFPDocEditor','FORMDATA',[
+#216#233#236#216#233#236#0#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#0#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#236#0#9'NumGlyphs'#2#0#7'OnClick'#7#17'FormatButtonClick'#0#0#12'TSpeedButt'
+'on'#26'InsertParagraphSpeedButton'#3'Tag'#2#6#6'Height'#2#23#3'Top'#2'E'#5
+'Width'#2#20#5'Align'#7#5'alTop'#7'Caption'#6#1'P'#5'Color'#7#9'clBtnFace'#9
+'NumGlyphs'#2#0#7'OnClick'#7#17'FormatButtonClick'#0#0#0#6'TPanel'#13'RightB'
+'tnPanel'#4'Left'#2#20#6'Height'#2'x'#5'Width'#2#20#5'Align'#7#6'alLeft'#10
+'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'x'#11'ClientWidth'#2#20#8'TabOrd'
+'er'#2#2#0#12'TSpeedButton'#21'InsertLinkSpeedButton'#6'Height'#2#23#5'Width'
+#2#20#5'Align'#7#5'alTop'#7'Caption'#6#2'Li'#5'Color'#7#9'clBtnFace'#7'Enabl'
+'ed'#8#9'NumGlyphs'#2#0#7'OnClick'#7#26'InsertLinkSpeedButtonClick'#8'ShowHi'
+'nt'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton'#19'InsertCodeTagButton'#3'T'
+'ag'#2#3#6'Height'#2#23#3'Top'#2#23#5'Width'#2#20#5'Align'#7#5'alTop'#5'Colo'
+'r'#7#9'clBtnFace'#10'Glyph.Data'#10'6'#4#0#0'2'#4#0#0'BM2'#4#0#0#0#0#0#0'6'
+#0#0#0'('#0#0#0#17#0#0#0#15#0#0#0#1#0' '#0#0#0#0#0#252#3#0#0'd'#0#0#0'd'#0#0
+#0#0#0#0#0#0#0#0#0#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236
+#255#216#233#236#255#216#233#236#255#223#223#223#255#145#152#158#255#140#147
+#153#255#135#140#144#255#140#147#153#255#140#147#153#255#140#147#153#255#136
+#138#145#255#135#139#143#255#136#145#152#255'Qn'#135#255'Qn'#135#255#181#186
+#190#255#216#233#236#255#216#233#236#255#196#199#202#255'Xv'#143#255'$1J'#255
+'Y'#136#185#255'BX'#136#255'"2F'#255'b'#155#204#255'c'#156#206#255'b'#154#203
+#255#30'#='#255#28'''9'#255'>b'#129#255'Qn'#135#255'x'#135#147#255#211#213
+#215#255#216#233#236#255'Mk'#134#255'Im'#140#255'2Oh'#255#14#19#29#255'W'#134
+#181#255'Dl'#142#255'P~'#166#255'>b'#129#255'>b'#129#255'4Rm'#255'7M_'#255
+#133#142#151#255#226#234#236#255#216#233#236#255#216#233#236#255#216#233#236
+#255#216#233#236#255'8Ts'#255'Nw'#162#255'\'#145#192#255'N{'#163#255'4Qm'#255
+'<Y|'#255'c|'#145#255#140#147#153#255#140#147#153#255#172#177#181#255#232#232
+#232#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#19#19'&'#255'Ch'#139#255'0Gc'#255'$9K'#255'W'
+#135#181#255'Gc'#129#255#224#234#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#216#233#236#255#216#233#236#255#216#233#236#255'U'#134#177#255'c'#156#206
+#255'Sz'#171#255'8Tt'#255'P{'#167#255#131#139#148#255#216#233#236#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+'`'#158#206#255'8Wu'#255'Qy'#167#255'c'#156#206#255#29''';'#255'K_'#130#255
+#211#213#214#255#216#233#236#255#216#233#236#255#216#233#236#255#224#234#238
+#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255'O|'#164#255'/Ja'#255'El'#144#255'<Q|'#255'T'#173
+#255'X'#136#183#255'['#130#164#255'ez'#141#255'g}'#146#255'[p'#147#255'66?'
+#255#211#211#211#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255'O'#150#189#255'@w'#151#255'8`|'#255'Iw'#156#255'@c'
,#134#255'Y'#141#186#255'0Dc'#255'Be'#138#255'a'#151#201#255'b'#155#204#255'B'
+'Xl'#255'Zp'#130#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255'j'#167#204#255'Jh'#128#255'c'#170#220#255'J'#131#168
+#255'Ct'#151#255'R'#144#185#255'Gp'#148#255'Bh'#137#255'^'#149#196#255'?e'
+#135#255'Nz'#163#255#207#225#240#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#213
+#237#250#255#158#212#243#255'U'#152#191#255'U'#157#200#255'Z'#142#188#255'5a'
+'|'#255'U'#134#177#255'@i'#145#255#147#172#195#255#216#233#236#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#207#240#255#255#197#237#255#255#197#232#251#255#197#218#237#255#219#232#244
+#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236
+#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236
+#255#216#233#236#255#216#233#236#255#216#233#236#255#9'NumGlyphs'#2#0#7'OnCl'
+'ick'#7#17'FormatButtonClick'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#12'TSpe'
+'edButton'#18'InsertRemarkButton'#3'Tag'#2#4#6'Height'#2#23#3'Top'#2'.'#5'Wi'
+'dth'#2#20#5'Align'#7#5'alTop'#5'Color'#7#9'clBtnFace'#10'Glyph.Data'#10#174
+#3#0#0#170#3#0#0'BM'#170#3#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1
+#0#24#0#0#0#0#0't'#3#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#0#216#233#236#216#233#236#212#212#212'"""'#212#212#212
+#216#233#236'fffwwwLLLLLL'#187#187#187'LLLLLL'#187#187#187#216#233#236#216
+#233#236#216#233#236#0#216#233#236#216#233#236'^^^DDD^^^'#216#233#236'"""'
+#187#187#187'^^^'#128#128#128#255#255#255#128#128#128#128#128#128#216#233#236
+#216#233#236#216#233#236#216#233#236#0#216#233#236#230#230#230#0#0#0#204#204
+#204#0#0#0#230#230#230#196#196#196#136#136#136'DDD'#153#153#153#230#230#230
+'fff"""'#136#136#136#187#187#187#216#233#236#216#233#236#0#216#233#236#212
+#212#212#170#170#170#170#170#170#170#170#170#212#212#212#212#212#212#170#170
+#170#170#170#170#216#233#236#212#212#212#170#170#170#170#170#170#170#170#170
+#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236#216#233#236
,#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#0
+#216#233#236#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#255#0#0#216
+#233#236#216#233#236#216#233#236#255#0#0#255#0#0#255#0#0#216#233#236#216#233
+#236#216#233#236#216#233#236#0#216#233#236#216#233#236#216#233#236#255#0#0
+#255#0#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#0#216
+#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216
+#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236#216#233#236#255#0
+#0#255#0#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#0
+#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0
+#216#233#236#216#233#236#216#233#236#0#216#233#236#255#0#0#255#0#0#255#0#0
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#255#0#0#255#0#0#255#0#0#216#233#236#0#216
+#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216
+#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236#216#233#236#255#0
+#0#255#0#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#0
+#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0
+#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236#216#233#236
+#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236
+#0#216#233#236#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#255#0#0
+#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#255#0#0#216#233#236#216
+#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#0#9'Num'
+'Glyphs'#2#0#7'OnClick'#7#17'FormatButtonClick'#0#0#12'TSpeedButton'#26'Inse'
+'rtParagraphSpeedButton'#3'Tag'#2#6#6'Height'#2#23#3'Top'#2'E'#5'Width'#2#20
+#5'Align'#7#5'alTop'#7'Caption'#6#1'P'#5'Color'#7#9'clBtnFace'#9'NumGlyphs'#2
+#0#7'OnClick'#7#17'FormatButtonClick'#0#0#0#6'TPanel'#13'RightBtnPanel'#4'Le'
+'ft'#2#20#6'Height'#2'x'#5'Width'#2#20#5'Align'#7#6'alLeft'#10'BevelOuter'#7
+#6'bvNone'#12'ClientHeight'#2'x'#11'ClientWidth'#2#20#8'TabOrder'#2#2#0#12'T'
+'SpeedButton'#21'InsertLinkSpeedButton'#6'Height'#2#23#5'Width'#2#20#5'Align'
+#7#5'alTop'#7'Caption'#6#2'Li'#5'Color'#7#9'clBtnFace'#7'Enabled'#8#9'NumGly'
+'phs'#2#0#7'OnClick'#7#26'InsertLinkSpeedButtonClick'#8'ShowHint'#9#14'Paren'
+'tShowHint'#8#0#0#12'TSpeedButton'#19'InsertCodeTagButton'#3'Tag'#2#3#6'Heig'
+'ht'#2#23#3'Top'#2#23#5'Width'#2#20#5'Align'#7#5'alTop'#5'Color'#7#9'clBtnFa'
+'ce'#10'Glyph.Data'#10'6'#4#0#0'2'#4#0#0'BM2'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0
+#17#0#0#0#15#0#0#0#1#0' '#0#0#0#0#0#252#3#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0
+#0#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236
+#255#216#233#236#255#223#223#223#255#145#152#158#255#140#147#153#255#135#140
+#144#255#140#147#153#255#140#147#153#255#140#147#153#255#136#138#145#255#135
+#139#143#255#136#145#152#255'Qn'#135#255'Qn'#135#255#181#186#190#255#216#233
+#236#255#216#233#236#255#196#199#202#255'Xv'#143#255'$1J'#255'Y'#136#185#255
+'BX'#136#255'"2F'#255'b'#155#204#255'c'#156#206#255'b'#154#203#255#30'#='#255
+#28'''9'#255'>b'#129#255'Qn'#135#255'x'#135#147#255#211#213#215#255#216#233
+#236#255'Mk'#134#255'Im'#140#255'2Oh'#255#14#19#29#255'W'#134#181#255'Dl'#142
+#255'P~'#166#255'>b'#129#255'>b'#129#255'4Rm'#255'7M_'#255#133#142#151#255
+#226#234#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236
+#255'8Ts'#255'Nw'#162#255'\'#145#192#255'N{'#163#255'4Qm'#255'<Y|'#255'c|'
+#145#255#140#147#153#255#140#147#153#255#172#177#181#255#232#232#232#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#216#233#236#255#19#19'&'#255'Ch'#139#255'0Gc'#255'$9K'#255'W'#135#181#255'G'
+'c'#129#255#224#234#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236
+#255#216#233#236#255#216#233#236#255'U'#134#177#255'c'#156#206#255'Sz'#171
+#255'8Tt'#255'P{'#167#255#131#139#148#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255'`'#158#206
+#255'8Wu'#255'Qy'#167#255'c'#156#206#255#29''';'#255'K_'#130#255#211#213#214
+#255#216#233#236#255#216#233#236#255#216#233#236#255#224#234#238#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255'O|'#164#255'/Ja'#255'El'#144#255'<Q|'#255'T'#173#255'X'#136#183
+#255'['#130#164#255'ez'#141#255'g}'#146#255'[p'#147#255'66?'#255#211#211#211
+#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255'O'#150#189#255'@w'#151#255'8`|'#255'Iw'#156#255'@c'#134#255'Y'#141
+#186#255'0Dc'#255'Be'#138#255'a'#151#201#255'b'#155#204#255'BXl'#255'Zp'#130
+#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255'j'#167#204#255'Jh'#128#255'c'#170#220#255'J'#131#168#255'Ct'#151#255
+'R'#144#185#255'Gp'#148#255'Bh'#137#255'^'#149#196#255'?e'#135#255'Nz'#163
+#255#207#225#240#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
,#236#255#216#233#236#255#216#233#236#255#216#233#236#255#213#237#250#255#158
+#212#243#255'U'#152#191#255'U'#157#200#255'Z'#142#188#255'5a|'#255'U'#134#177
+#255'@i'#145#255#147#172#195#255#216#233#236#255#216#233#236#255#216#233#236
+#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#207#240#255#255#197
+#237#255#255#197#232#251#255#197#218#237#255#219#232#244#255#216#233#236#255
+#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236
+#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236
+#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233
+#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216
+#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255#216#233#236#255
+#216#233#236#255#216#233#236#255#9'NumGlyphs'#2#0#7'OnClick'#7#17'FormatButt'
+'onClick'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#12'TSpeedButton'#18'InsertR'
+'emarkButton'#3'Tag'#2#4#6'Height'#2#23#3'Top'#2'.'#5'Width'#2#20#5'Align'#7
+#5'alTop'#5'Color'#7#9'clBtnFace'#10'Glyph.Data'#10#174#3#0#0#170#3#0#0'BM'
+#170#3#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0#24#0#0#0#0#0't'#3
+#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#0
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233
+#236#216#233#236#216#233#236#255#0#0#255#0#0#255#0#0#216#233#236#216#233#236
+#216#233#236#255#0#0#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#216
+#233#236#0#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#255
+#0#0#255#0#0#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236
+#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236
+#216#233#236#0#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233
+#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233
+#236#216#233#236#0#216#233#236#255#0#0#255#0#0#255#0#0#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#255#0#0#255#0#0#255#0#0#216#233#236#0#216#233#236#216#233#236
+#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236
+#216#233#236#0#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233
+#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216#233#236#216#233
+#236#216#233#236#0#216#233#236#216#233#236#216#233#236#255#0#0#255#0#0#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236#0#216#233#236#216
+#233#236#216#233#236#216#233#236#255#0#0#255#0#0#255#0#0#216#233#236#216#233
+#236#216#233#236#255#0#0#255#0#0#255#0#0#216#233#236#216#233#236#216#233#236
+#216#233#236#0#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
,#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#0#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#0#216#233#236#216#233#236
+#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216
+#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233#236#216#233
+#236#216#233#236#216#233#236#0#9'NumGlyphs'#2#0#7'OnClick'#7#17'FormatButton'
,'Click'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#0#11'TOpenDialog'#10'OpenDial'
+'og'#5'Title'#6#17'Open example file'#6'Filter'#6#28'pascal file|*.pas; *.pp'
+'; *.p'#11'FilterIndex'#2#0#4'left'#2'@'#3'top'#2#24#0#0#0
+#216#233#236#216#233#236#216#233#236#216#233#236#0#9'NumGlyphs'#2#0#7'OnClic'
+'k'#7#17'FormatButtonClick'#8'ShowHint'#9#14'ParentShowHint'#8#0#0#0#11'TOpe'
+'nDialog'#10'OpenDialog'#5'Title'#6#17'Open example file'#6'Filter'#6#28'pas'
+'cal file|*.pas; *.pp; *.p'#11'FilterIndex'#2#0#4'left'#2'@'#3'top'#2#24#0#0
+#0
]);

View File

@ -45,7 +45,7 @@ uses
// IDE
IDEOptionDefs, EnvironmentOpts,
IDEProcs, LazarusIDEStrConsts, FPDocSelectInherited, FPDocSelectLink,
CodeHelp;
PackageSystem, CodeHelp;
type
TFPDocEditorFlag = (
@ -63,6 +63,7 @@ type
TFPDocEditor = class(TForm)
AddLinkButton: TButton;
BrowseExampleButton: TButton;
AddLinkToInheritedButton: TButton;
RightBtnPanel: TPanel;
SaveButton: TButton;
CreateButton: TButton;
@ -96,6 +97,7 @@ type
UnderlineFormatButton: TSpeedButton;
SeeAlsoTabSheet: TTabSheet;
procedure AddLinkButtonClick(Sender: TObject);
procedure AddLinkToInheritedButtonClick(Sender: TObject);
procedure BrowseExampleButtonClick(Sender: TObject);
procedure CopyFromInheritedButtonClick(Sender: TObject);
procedure CreateButtonClick(Sender: TObject);
@ -134,7 +136,7 @@ type
function MakeLink: String;
function FindInheritedIndex: integer;
procedure Save;
function GetValues: TFPDocElementValues;
function GetGUIValues: TFPDocElementValues;
procedure SetModified(const AValue: boolean);
function WriteNode(Element: TCodeHelpElement; Values: TFPDocElementValues;
Interactive: Boolean): Boolean;
@ -147,8 +149,13 @@ type
procedure OnLazDocChanged(Sender: TObject; LazDocFPFile: TLazFPDocFile);
procedure LoadGUIValues(Element: TCodeHelpElement);
procedure MoveToInherited(Element: TCodeHelpElement);
procedure AddSeeAlsoLink(Link, LinkTitle: string);
function FindSeeAlsoLink(Link: string): integer;
function ExtractIDFromLinkTag(const LinkTag: string; out ID, Title: string): boolean;
function CreateElement(Element: TCodeHelpElement): Boolean;
procedure UpdateButtons;
function GetCurrentUnitName: string;
function GetCurrentModuleName: string;
public
procedure Reset;
procedure InvalidateChain;
@ -263,7 +270,8 @@ begin
MoveToInheritedButton.Caption:=lisLDMoveEntriesToInherited;
CopyFromInheritedButton.Caption:=lisLDCopyFromInherited;
AddLinkToInheritedButton.Caption:=lisLDAddLinkToInherited;
Reset;
CodeHelpBoss.AddHandlerOnChanging(@OnLazDocChanging);
@ -588,6 +596,7 @@ begin
and (fChain.Count>1)
and (ShortEdit.Text<>'');
CopyFromInheritedButton.Enabled:=(i>=0);
AddLinkToInheritedButton.Enabled:=(i>=0);
end;
procedure TFPDocEditor.UpdateChain;
@ -716,10 +725,85 @@ procedure TFPDocEditor.MoveToInherited(Element: TCodeHelpElement);
var
Values: TFPDocElementValues;
begin
Values:=GetValues;
Values:=GetGUIValues;
WriteNode(Element,Values,true);
end;
procedure TFPDocEditor.AddSeeAlsoLink(Link, LinkTitle: string);
var
s: String;
begin
DebugLn(['TFPDocEditor.AddSeeAlsoLink Link="',Link,'" LinkTitle="',LinkTitle,'"']);
if FindSeeAlsoLink(Link)>=0 then exit;
s:='<link id="'+Link+'"';
if LinkTitle<>'' then begin
s:=s+'>'+LinkTitle+'</link';
end else begin
s:=s+'/>';
end;
DebugLn(['TFPDocEditor.AddSeeAlsoLink Adding: ',s]);
LinkListBox.Items.Add(s);
Modified:=true;
end;
function TFPDocEditor.FindSeeAlsoLink(Link: string): integer;
var
LinkTag: string;
ID: string;
Element: TCodeHelpElement;
ExpandedLink: String;
ExpandedID: String;
begin
ExpandedLink:='';
Result:=LinkListBox.Items.Count-1;
while (Result>=0) do begin
LinkTag:=LinkListBox.Items[Result];
if ExtractIDFromLinkTag(LinkTag,ID) then begin
// check absolute: ID=Link
if SysUtils.CompareText(ID,Link)=0 then
exit;
// check relative
if (System.Pos(Link,'.')>0) and (ID<>'') then begin
if (fChain<>nil) and (fChain.Count>0) then begin
Element:=fChain[0];
if (ExpandedLink='') then begin
ExpandedLink:=CodeHelpBoss.ExpandFPDocLinkID(Link,
Element.ElementUnitName,Element.ElementModuleName);
end;
ExpandedID:=CodeHelpBoss.ExpandFPDocLinkID(ID,
Element.ElementUnitName,Element.ElementModuleName);
if SysUtils.CompareText(ExpandedID,ExpandedLink)=0 then
exit;
end;
end;
end;
dec(Result);
end;
end;
function TFPDocEditor.ExtractIDFromLinkTag(const LinkTag: string; out ID, Title: string
): boolean;
// extract id value from example:
// <link id="TCustomControl"/>
// <link id="#lcl.Graphics.TCanvas">TCanvas</link>
var
StartPos: Integer;
EndPos: LongInt;
begin
Result:=false;
StartPos:=length('<link id="')+1;
if copy(LinkTag,1,StartPos-1)<>'<link id="' then
exit;
EndPos:=StartPos;
while (EndPos<=length(LinkTag)) do begin
if LinkTag[EndPos]='"' then begin
ID:=copy(LinkTag,StartPos,EndPos-StartPos);
exit(true);
end;
inc(EndPos);
end;
end;
function TFPDocEditor.CreateElement(Element: TCodeHelpElement): Boolean;
var
NewElement: TCodeHelpElement;
@ -756,6 +840,22 @@ begin
InsertVarTagButton.Enabled:=HasEdit;
end;
function TFPDocEditor.GetCurrentUnitName: string;
begin
if (fChain<>nil) and (fChain.Count>0) then
Result:=fChain[0].ElementUnitName
else
Result:='';
end;
function TFPDocEditor.GetCurrentModuleName: string;
begin
if (fChain<>nil) and (fChain.Count>0) then
Result:=fChain[0].ElementModuleName
else
Result:='';
end;
procedure TFPDocEditor.Reset;
begin
FreeAndNil(fChain);
@ -836,7 +936,7 @@ begin
FModified:=false;
if (fChain=nil) or (fChain.Count=0) then exit;
if not fChain.IsValid then exit;
Values:=GetValues;
Values:=GetGUIValues;
if not WriteNode(fChain[0],Values,true) then begin
DebugLn(['TLazDocForm.Save FAILED']);
end else begin
@ -845,7 +945,7 @@ begin
SaveButton.Enabled:=false;
end;
function TFPDocEditor.GetValues: TFPDocElementValues;
function TFPDocEditor.GetGUIValues: TFPDocElementValues;
begin
Result[fpdiShort]:=ShortEdit.Text;
Result[fpdiDescription]:=DescrMemo.Text;
@ -982,6 +1082,27 @@ begin
end;
end;
procedure TFPDocEditor.AddLinkToInheritedButtonClick(Sender: TObject);
var
i: LongInt;
Element: TCodeHelpElement;
Link: String;
LinkTitle: String;
begin
i:=FindInheritedIndex;
if i<0 then exit;
DebugLn(['TFPDocEditor.AddLinkToInheritedButtonClick ']);
Element:=fChain[i];
Link:=Element.ElementName;
LinkTitle:=Link;
if Element.ElementUnitName<>'' then begin
Link:=Element.ElementUnitName+'.'+Link;
if Element.ElementModuleName<>'' then
Link:='#'+Element.ElementModuleName+'.'+Link;
end;
AddSeeAlsoLink(Link,LinkTitle);
end;
procedure TFPDocEditor.BrowseExampleButtonClick(Sender: TObject);
begin
if Doc=nil then exit;

View File

@ -2516,6 +2516,12 @@ resourcestring
lisProjAddTheProjectHasAlreadyADependency = 'The project has already a '
+'dependency for the package %s%s%s.';
lisProjAddPackageNotFound = 'Package not found';
lisLDTheUnitIsNotOwnedBeAnyPackageOrProjectPleaseAddThe = 'The unit %s is '
+'not owned be any package or project.%sPlease add the unit to a package '
+'or project.%sUnable to create the fpdoc file.';
lisLDNoValidLazDocPath = 'No valid LazDoc path';
lisLDDoesNotHaveAnyValidLazDocPathUnableToCreateTheFpdo = '%s does not have '
+'any valid LazDoc path.%sUnable to create the fpdoc file for %s';
lisPkgThisFileIsNotInAnyLoadedPackage = 'This file is not in any loaded '
+'package.';
lisProjAddTheDependencyWasNotFound = 'The dependency %s%s%s was not found.%'
@ -3503,6 +3509,7 @@ resourcestring
lisCodeHelpBrowseExampleButton = 'Browse';
lisLDMoveEntriesToInherited = 'Move entries to inherited';
lisLDCopyFromInherited = 'Copy from inherited';
lisLDAddLinkToInherited = 'Add link to inherited';
lisEnableMacros = 'Enable Macros';
lisCTSelectCodeMacro = 'Select Code Macro';
lisPDProgress = 'Progress';

View File

@ -1229,6 +1229,7 @@ begin
CompilerOptions.UnitOutputDirectory:='$(LazarusDir)/lcl/units/$(TargetCPU)-$(TargetOS)/';
POOutputDirectory:='languages';
Translated:=SystemLanguageID1;
LazDocPaths:=SetDirSeparators('$(LazarusDir)/docs/xml/lcl');
// add requirements
AddRequiredDependency(FCLPackage.CreateDependencyWithOwner(Result));