mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-10-31 01:04:50 +01:00 
			
		
		
		
	* Added two way comunication to LHelpControl
* Made using lhelp easier so that it's only needed to install ChmHelpPkg and copy chms to docs/html * lhelp will be built by ChmHelpPkg if it doesn't exist * added helpful msg when F1 is pushed and no chms can be found git-svn-id: trunk@21688 -
This commit is contained in:
		
							parent
							
								
									efdffe51ba
								
							
						
					
					
						commit
						08ed127d0f
					
				
							
								
								
									
										6
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @ -57,9 +57,9 @@ components/chmhelp/lhelp/images/table_open.png -text | ||||
| components/chmhelp/lhelp/lhelp.ico -text svneol=unset#image/icon | ||||
| components/chmhelp/lhelp/lhelp.lpi svneol=native#text/plain | ||||
| components/chmhelp/lhelp/lhelp.lpr svneol=native#text/plain | ||||
| components/chmhelp/lhelp/lhelp.manifest -text svneol=native#text/plain | ||||
| components/chmhelp/lhelp/lhelp.rc -text svneol=native#text/plain | ||||
| components/chmhelp/lhelp/lhelpcore.lfm -text svneol=native#text/plain | ||||
| components/chmhelp/lhelp/lhelp.manifest svneol=native#text/plain | ||||
| components/chmhelp/lhelp/lhelp.rc svneol=native#text/plain | ||||
| components/chmhelp/lhelp/lhelpcore.lfm svneol=native#text/plain | ||||
| components/chmhelp/lhelp/lhelpcore.lrs svneol=native#text/pascal | ||||
| components/chmhelp/lhelp/lhelpcore.pas svneol=native#text/plain | ||||
| components/chmhelp/lhelp/lnethttpdataprovider.pas svneol=native#text/plain | ||||
|  | ||||
| @ -2,15 +2,17 @@ | ||||
| <CONFIG> | ||||
|   <ProjectOptions> | ||||
|     <PathDelim Value="\"/> | ||||
|     <Version Value="6"/> | ||||
|     <Version Value="7"/> | ||||
|     <General> | ||||
|       <Flags> | ||||
|         <LRSInOutputDirectory Value="False"/> | ||||
|       </Flags> | ||||
|       <SessionStorage Value="InProjectDir"/> | ||||
|       <MainUnit Value="0"/> | ||||
|       <TargetFileExt Value=""/> | ||||
|     </General> | ||||
|     <PublishOptions> | ||||
|       <Version Value="2"/> | ||||
|       <DestinationDirectory Value="$(TestDir)\publishedproject\"/> | ||||
|       <IgnoreBinaries Value="False"/> | ||||
|       <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> | ||||
|       <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/> | ||||
| @ -19,7 +21,7 @@ | ||||
|       <local> | ||||
|         <FormatVersion Value="1"/> | ||||
|         <LaunchingApplication PathPlusParams="\usr\X11R6\bin\xterm -T 'Lazarus Run Output' -e $(LazarusDir)\tools\runwait.sh $(TargetCmdLine)"/> | ||||
|         <Display Use="True" Value="192.168.0.250:0"/> | ||||
|         <Display Value="192.168.0.250:0"/> | ||||
|       </local> | ||||
|     </RunParams> | ||||
|     <RequiredPackages Count="2"> | ||||
| @ -38,9 +40,9 @@ | ||||
|       </Unit0> | ||||
|       <Unit1> | ||||
|         <Filename Value="unit1.pas"/> | ||||
|         <ComponentName Value="Form1"/> | ||||
|         <IsPartOfProject Value="True"/> | ||||
|         <ResourceFilename Value="unit1.lrs"/> | ||||
|         <ComponentName Value="Form1"/> | ||||
|         <ResourceBaseClass Value="Form"/> | ||||
|         <UnitName Value="Unit1"/> | ||||
|       </Unit1> | ||||
|     </Units> | ||||
|  | ||||
| @ -1,30 +1,34 @@ | ||||
| object Form1: TForm1 | ||||
|   Left = 610 | ||||
|   Height = 300 | ||||
|   Top = 247 | ||||
|   Width = 400 | ||||
|   ActiveControl = Button1 | ||||
|   Caption = 'Form1' | ||||
|   ClientHeight = 300 | ||||
|   ClientWidth = 400 | ||||
|   OnCreate = FormCreate | ||||
|   PixelsPerInch = 90 | ||||
|   HorzScrollBar.Page = 399 | ||||
|   VertScrollBar.Page = 299 | ||||
|   Left = 610 | ||||
|   Height = 300 | ||||
|   Top = 247 | ||||
|   Width = 400 | ||||
|   OnDestroy = FormDestroy | ||||
|   LCLVersion = '0.9.27' | ||||
|   object Label1: TLabel | ||||
|     Left = 93 | ||||
|     Height = 18 | ||||
|     Top = 73 | ||||
|     Width = 110 | ||||
|     Caption = 'Response is here' | ||||
|     ParentColor = False | ||||
|   end | ||||
|   object Button1: TButton | ||||
|      | ||||
|     Caption = 'Click to load a chm' | ||||
|     OnClick = Button1Click | ||||
|     TabOrder = 0 | ||||
|     Left = 36 | ||||
|     Height = 25 | ||||
|     Top = 20 | ||||
|     Width = 284 | ||||
|     Caption = 'Click to load a chm' | ||||
|     OnClick = Button1Click | ||||
|     TabOrder = 0 | ||||
|   end | ||||
|   object OpenDialog1: TOpenDialog | ||||
|     Title = 'Open existing file' | ||||
|     FilterIndex = 0 | ||||
|     Title = 'Open existing file' | ||||
|     left = 28 | ||||
|     top = 127 | ||||
|   end | ||||
|  | ||||
| @ -1,11 +1,13 @@ | ||||
| { This is an automatically generated lazarus resource file } | ||||
| 
 | ||||
| LazarusResources.Add('TForm1','FORMDATA',[ | ||||
|   'TPF0'#6'TForm1'#5'Form1'#13'ActiveControl'#7#7'Button1'#7'Caption'#6#5'Form1' | ||||
|   +#12'ClientHeight'#3','#1#11'ClientWidth'#3#144#1#8'OnCreate'#7#10'FormCreate' | ||||
|   +#13'PixelsPerInch'#2'Z'#18'HorzScrollBar.Page'#3#143#1#18'VertScrollBar.Page' | ||||
|   +#3'+'#1#4'Left'#3'b'#2#6'Height'#3','#1#3'Top'#3#247#0#5'Width'#3#144#1#0#7 | ||||
|   +'TButton'#7'Button1'#7'Caption'#6#19'Click to load a chm'#7'OnClick'#7#12'Bu' | ||||
|   +'tton1Click'#8'TabOrder'#2#0#4'Left'#2'$'#6'Height'#2#25#3'Top'#2#20#5'Width' | ||||
|   +#3#28#1#0#0#11'TOpenDialog'#11'OpenDialog1'#5'Title'#6#18'Open existing file' | ||||
|   +#11'FilterIndex'#2#0#5'Title'#6#18'Open existing file'#4'left'#2#28#3'top'#2 | ||||
|   +''#0#0#0 | ||||
|   'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'b'#2#6'Height'#3','#1#3'Top'#3#247#0#5'Wi' | ||||
|   +'dth'#3#144#1#13'ActiveControl'#7#7'Button1'#7'Caption'#6#5'Form1'#12'Client' | ||||
|   +'Height'#3','#1#11'ClientWidth'#3#144#1#8'OnCreate'#7#10'FormCreate'#9'OnDes' | ||||
|   +'troy'#7#11'FormDestroy'#10'LCLVersion'#6#6'0.9.27'#0#6'TLabel'#6'Label1'#4 | ||||
|   +'Left'#2']'#6'Height'#2#18#3'Top'#2'I'#5'Width'#2'n'#7'Caption'#6#16'Respons' | ||||
|   +'e is here'#11'ParentColor'#8#0#0#7'TButton'#7'Button1'#4'Left'#2'$'#6'Heigh' | ||||
|   +'t'#2#25#3'Top'#2#20#5'Width'#3#28#1#7'Caption'#6#19'Click to load a chm'#7 | ||||
|   +'OnClick'#7#12'Button1Click'#8'TabOrder'#2#0#0#0#11'TOpenDialog'#11'OpenDial' | ||||
|   +'og1'#11'FilterIndex'#2#0#4'left'#2#28#3'top'#2''#0#0#0 | ||||
| ]); | ||||
|  | ||||
| @ -6,7 +6,7 @@ interface | ||||
| 
 | ||||
| uses | ||||
|   Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, LHelpControl, | ||||
|   Buttons; | ||||
|   Buttons, StdCtrls; | ||||
| 
 | ||||
| type | ||||
| 
 | ||||
| @ -14,9 +14,11 @@ type | ||||
| 
 | ||||
|   TForm1 = class(TForm) | ||||
|     Button1: TButton; | ||||
|     Label1: TLabel; | ||||
|     OpenDialog1: TOpenDialog; | ||||
|     procedure Button1Click(Sender: TObject); | ||||
|     procedure FormCreate(Sender: TObject); | ||||
|     procedure FormDestroy(Sender: TObject); | ||||
|   private | ||||
|     { private declarations } | ||||
|   public | ||||
| @ -31,16 +33,38 @@ implementation | ||||
| 
 | ||||
| { TForm1 } | ||||
| 
 | ||||
| function ResponseToString(Ares: TLHelpResponse): String; | ||||
| begin | ||||
|   case Ares of | ||||
|     srNoAnswer:  Result := 'NoAnswer'; | ||||
|     srSuccess: Result := 'Success'; | ||||
|     srInvalidFile:Result := 'InvalidFileName'; | ||||
|     srInvalidURL:Result := 'InvalidURL'; | ||||
|     srInvalidContext:Result := 'InvalidContext'; | ||||
| 
 | ||||
|   end; | ||||
| end; | ||||
| 
 | ||||
| procedure TForm1.Button1Click(Sender: TObject); | ||||
| var | ||||
|   Res: TLHelpResponse; | ||||
| begin | ||||
|   if not OpenDialog1.Execute then exit; | ||||
|   Help.StartHelpServer('letstestagain', '../lhelp/lhelp --display=192.168.0.250:0'); | ||||
|   Help.OpenFile(OpenDialog1.FileName); | ||||
|   if Help.ServerRunning = false then | ||||
|     Help.StartHelpServer('letstestagain', '../lhelp/lhelp'); | ||||
|   Res :=Help.OpenFile(OpenDialog1.FileName); | ||||
|   Label1.Caption := ResponseToString(Res); | ||||
| end; | ||||
| 
 | ||||
| procedure TForm1.FormCreate(Sender: TObject); | ||||
| begin | ||||
|   Help := TLHelpConnection.Create; | ||||
|   Help.ProcessWhileWaiting := @Application.ProcessMessages; | ||||
| end; | ||||
| 
 | ||||
| procedure TForm1.FormDestroy(Sender: TObject); | ||||
| begin | ||||
|   Help.Free; | ||||
| end; | ||||
| 
 | ||||
| initialization | ||||
|  | ||||
| @ -55,15 +55,15 @@ | ||||
|       </Unit2> | ||||
|       <Unit3> | ||||
|         <Filename Value="chmpopup.pas"/> | ||||
|         <ComponentName Value="HelpPopupForm"/> | ||||
|         <IsPartOfProject Value="True"/> | ||||
|         <ComponentName Value="HelpPopupForm"/> | ||||
|         <UnitName Value="ChmPopup"/> | ||||
|       </Unit3> | ||||
|       <Unit4> | ||||
|         <Filename Value="lhelpcore.pas"/> | ||||
|         <IsPartOfProject Value="True"/> | ||||
|         <ComponentName Value="HelpForm"/> | ||||
|         <HasResources Value="True"/> | ||||
|         <IsPartOfProject Value="True"/> | ||||
|         <ResourceBaseClass Value="Form"/> | ||||
|         <UnitName Value="lhelpcore"/> | ||||
|       </Unit4> | ||||
|  | ||||
| @ -1,17 +1,17 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||||
| <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> | ||||
|  <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="CompanyName.ProductName.YourApp" type="win32"/> | ||||
|  <description>Your application description here.</description> | ||||
|  <dependency> | ||||
|   <dependentAssembly> | ||||
|    <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/> | ||||
|   </dependentAssembly> | ||||
|  </dependency> | ||||
|  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> | ||||
|   <security> | ||||
|    <requestedPrivileges> | ||||
|     <requestedExecutionLevel level="asInvoker" uiAccess="false"/> | ||||
|    </requestedPrivileges> | ||||
|   </security> | ||||
|  </trustInfo> | ||||
| <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||||
| <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> | ||||
|  <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="CompanyName.ProductName.YourApp" type="win32"/> | ||||
|  <description>Your application description here.</description> | ||||
|  <dependency> | ||||
|   <dependentAssembly> | ||||
|    <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/> | ||||
|   </dependentAssembly> | ||||
|  </dependency> | ||||
|  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> | ||||
|   <security> | ||||
|    <requestedPrivileges> | ||||
|     <requestedExecutionLevel level="asInvoker" uiAccess="false"/> | ||||
|    </requestedPrivileges> | ||||
|   </security> | ||||
|  </trustInfo> | ||||
| </assembly> | ||||
| @ -1,7 +1,7 @@ | ||||
| #define RT_MANIFEST  24 | ||||
| #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 | ||||
| #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2 | ||||
| #define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3 | ||||
| 
 | ||||
| #define RT_MANIFEST  24 | ||||
| #define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 | ||||
| #define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2 | ||||
| #define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3 | ||||
| 
 | ||||
| CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "lhelp.manifest" | ||||
| MAINICON ICON "lhelp.ico" | ||||
|  | ||||
| @ -1,439 +1,439 @@ | ||||
| object HelpForm: THelpForm | ||||
|   Left = 322 | ||||
|   Height = 535 | ||||
|   Top = 239 | ||||
|   Width = 758 | ||||
|   ActiveControl = Panel1 | ||||
|   Caption = 'LHelp' | ||||
|   ClientHeight = 510 | ||||
|   ClientWidth = 758 | ||||
|   Icon.Data = { | ||||
|     7E04000000000100010010100000010020006804000016000000280000001000 | ||||
|     0000200000000100200000000000000400006400000064000000000000000000 | ||||
|     0000FFFFFF002775B87D4C81A7AE7498ADBD7699AEBD779AAFBD789BAFBD799C | ||||
|     B1BD7A9DB2BD7C9EB3BE7D9FB3BD7E9FB4BD80A1B5BD81A1B5BD5883A2AF205F | ||||
|     A1162364A6312C8AD2FCEFF2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|     FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBBCBCBFF5C8495EE1558 | ||||
|     A30E2F74AF7C248BDBFFE3E9E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|     FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5D3D3FF598397E1326A | ||||
|     9D31306BA162108FFCFF1F8FE6FF3CA2D8FF42B0D9FF49BBD9FF4DC4D9FF51CA | ||||
|     DAFF56CCD9FF58CADAFF5AC6DAFF5BBFDAFF5CB7DAFF5EAEDBFF66A9D9FF3169 | ||||
|     9D5827639F39148CF1FF0796EEFF11BBFDFF12D3FEFF18EBFEFF1FF5FFFF1CD4 | ||||
|     FFFF20E0FFFF23F7FFFF1EF5FFFF17E8FEFF11CFFEFF0BB6FDFF47ACECFC1558 | ||||
|     A30D1558A3131E8EE7FD08A1F2FF1DC7FEFF15DFFEFF1CF5FFFF16C1FFFF016A | ||||
|     FFFF0471FFFF22DFFFFF22F7FFFF1BF5FFFF14DBFEFF0DBFFEFF56ACDEE7FFFF | ||||
|     FF00FFFFFF002389DDF4069CF5FF26C2FDFF12D6FEFF13F2FEFF08CAFFFF0070 | ||||
|     FFFF0176FFFF07E6FFFF10FAFFFF15ECFEFF12D2FEFF11BAFDFF5EA2D0BFFFFF | ||||
|     FF00FFFFFF002988D4E9028BF8FF2CB3FCFF08CFFEFF03F7FFFF01FEFFFF00CA | ||||
|     FFFF00E9FFFF00FFFFFF01FDFFFF05EFFFFF0AC0FDFF2CB0FCFF457EB073FFFF | ||||
|     FF00FFFFFF002C6EAB413087CCC22E9DDAD40BEAF6F301FDFEFE00FFFFFF0083 | ||||
|     FFFF00D0FFFF00FFFFFF00FFFFFF04FAFDFC23D5EFEB4FA1D9D41D5DA115FFFF | ||||
|     FF00FFFFFF00FFFFFF0000FFFF0600FFFF4D00FFFFEA00FFFFFF00FFFFFF008D | ||||
|     FFFF008EFFFF00EFFFFF00FFFFFF00FFFFFC00FFFFCB00FFFF16FFFFFF00FFFF | ||||
|     FF00FFFFFF00FFFFFF0000FFFF0A00FFFF6E00FFFFF100FFFFFF00FFFFFF00E2 | ||||
|     FFFF0078FFFF007FFFFF00DAFFFF00FFFFFF00FFFFE600FFFF2300FFFF02FFFF | ||||
|     FF00FFFFFF00FFFFFF0000FFFF0800FFFF5C00FFFFEE00FFFFFF00FFFFFF00FF | ||||
|     FFFF00C6FFFF006AFFFF0077FFFF00DBFFFE00FFFFDA00FFFF19FFFFFF00FFFF | ||||
|     FF00FFFFFF00FFFFFF0000FFFF0300FFFF3000F5FFDF008FFFFF00A0FFFF00FB | ||||
|     FFFF00F7FFFF007BFFFF0066FFFF00A3FFFC00FFFFA700FFFF10FFFFFF00FFFF | ||||
|     FF00FFFFFF00FFFFFF00FFFFFF0000FFFF0E00FFFF7D008DFFF90066FFFF007B | ||||
|     FFFF0077FFFF0066FFFF0067FFFF00BCFFE700FFFF3D00FFFF05FFFFFF00FFFF | ||||
|     FF00FFFFFF00FFFFFF00FFFFFF0000FFFF0100FFFF1700CDFF960088FFF6006B | ||||
|     FFFE0067FFFF007CFFFC0096FFE900F8FF5200FFFF0AFFFFFF00FFFFFF00FFFF | ||||
|     FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000FFFF0100FFFF0E00FDFF3100D2 | ||||
|     FF7000C5FF8D00F3FF5100FFFF1F00FFFF0700FFFF01FFFFFF00FFFFFF00FFFF | ||||
|     FF00000000000000000000000000000000000000000000000000000000000000 | ||||
|     0000000000000000000000000000000000000000000000000000000000000000 | ||||
|     0000 | ||||
|   } | ||||
|   Menu = MainMenu1 | ||||
|   OnClose = FormClose | ||||
|   OnCreate = FormCreate | ||||
|   Position = poScreenCenter | ||||
|   ShowInTaskBar = stAlways | ||||
|   LCLVersion = '0.9.27' | ||||
|   object Panel1: TPanel | ||||
|     Left = 0 | ||||
|     Height = 32 | ||||
|     Top = 0 | ||||
|     Width = 758 | ||||
|     Align = alTop | ||||
|     ClientHeight = 32 | ||||
|     ClientWidth = 758 | ||||
|     TabOrder = 0 | ||||
|     object ForwardBttn: TSpeedButton | ||||
|       Left = 65 | ||||
|       Height = 30 | ||||
|       Top = 1 | ||||
|       Width = 32 | ||||
|       Align = alLeft | ||||
|       Color = clBtnFace | ||||
|       Glyph.Data = { | ||||
|         36040000424D3604000000000000360000002800000010000000100000000100 | ||||
|         2000000000000004000064000000640000000000000000000000000000000002 | ||||
|         65000200000000000000000000000000000049332A0069463900694639003F2D | ||||
|         25001B531D000000000000000000000000000000000000000000000000005900 | ||||
|         00000000000000000000000000004B342B0069463900EBB49200EBB492006946 | ||||
|         390047332C000000000000000000000000000000000000000000DA0400000058 | ||||
|         D800D447000000000000002EB70069463900EBB49200EBB49200EBB49200EBB4 | ||||
|         920069463900000000000000000000000000000000000000000000A72A004B34 | ||||
|         2B00694639006946390069463900EBB49200EBB49200EBB49200EBB492009898 | ||||
|         98FF989898FF6946390069463900694639004B342B00000000004B342B006746 | ||||
|         3A00FCE2D200EBB49200EBB49200EBB4920065606100EBB49200EBB492000000 | ||||
|         00FF000000FF989898FFEBB49200EBB4920067463A004B342B004B342B006946 | ||||
|         3900FDE6D800989898FF989898FF989898FF989898FF989898FF989898FF0000 | ||||
|         00FFFBB276FF000000FF989898FFEBB49200694639004B342B00FC0400006946 | ||||
|         3900000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 | ||||
|         00FFF9B377FFF9B377FF000000FF989898FF69463900DD4D000000001B000000 | ||||
|         FF00000000FFFAB780FFFAB47EFFFFB983FFFFBA7FFFFFB983FFFFC087FFFBB7 | ||||
|         7CFFF3B379FFFFBD82FFFFC58BFF000000FF989898FF226C26000000FF00469E | ||||
|         4A00000000FFF6B27DFFFAB47EFFFFBE85FFFFC087FFFFBD82FFFFBD82FFF3B3 | ||||
|         79FFF3B379FFFFC087FFFFCB93FFFFC790FF000000FFE81B00003AAC3D006946 | ||||
|         3900000000FFF9B580FFFFB983FFFFBE85FFFFC087FFFFBE85FFFAB780FFFAB7 | ||||
|         80FFFCBF87FFFFC890FFFFC790FF000000FF69463900000076004B342B006946 | ||||
|         3900000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 | ||||
|         00FFFFC087FFFFC790FF000000FFFDE6D800694639004B342B004B342B006746 | ||||
|         3A00FDE6D800FDE6D800FDE6D800FDE6D800FDE6D800FDE6D800FDE6D8000000 | ||||
|         00FFFFC790FF000000FFFDE6D800FDE6D800664539004B342B00000000009134 | ||||
|         2B00694639006946390069463900F3C0A000FAE1D100FDE6D800FDE6D8000000 | ||||
|         00FF000000FF6946390069463900694639004B342B00000000000000FF000000 | ||||
|         0000000000003AB740000000000069463900FDE6D800FDE6D800FDE6D800FDE6 | ||||
|         D8006946390047332C0084967E0000000000000000000000000008000000FFFF | ||||
|         FF00FFFFFF00FFFFFF00FFFFFF0091342A0069463900FDE6D800FDE6D8006946 | ||||
|         390047332C003EAB440000000000000000000000000000000000A0CAB500985D | ||||
|         8B000000000000000000B07522006780280037221A005E392A00683B2C009129 | ||||
|         1B000000000038AB3E000000000068BC74000000000000000000 | ||||
|       } | ||||
|       NumGlyphs = 0 | ||||
|       OnClick = ForwardToolBtnClick | ||||
|     end | ||||
|     object BackBttn: TSpeedButton | ||||
|       Left = 33 | ||||
|       Height = 30 | ||||
|       Top = 1 | ||||
|       Width = 32 | ||||
|       Align = alLeft | ||||
|       Color = clBtnFace | ||||
|       Glyph.Data = { | ||||
|         36040000424D3604000000000000360000002800000010000000100000000100 | ||||
|         2000000000000004000064000000640000000000000000000000000000000000 | ||||
|         0000000000000000000000000000000000000000000000000000000000000000 | ||||
|         00000000000000000000000000000000000000000000000000004A4E4C005357 | ||||
|         5500535755005357550053575500535755005357550053575500535755005357 | ||||
|         5500535755005357550053575500535755004A4E4C000000000053575500B5C5 | ||||
|         C400B6C7C600B6C7C600B6C7C600B6C7C600B6C7C600B6C7C600B6C6C500B6C6 | ||||
|         C500B5C6C500B5C6C500B5C6C500AFC0BF00535755000000000053575500BCCC | ||||
|         CB00A4BAB900A4BAB900A4BAB900989898FF989898FFA4BAB900A4BAB900A4BA | ||||
|         B900A4BAB900A4BAB900A4BAB900B5C7C600535755000000000053575500BFCE | ||||
|         CD00A4BAB900A4BAB900989898FF000000FF000000FF989898FFA4BAB900A4BA | ||||
|         B900A4BAB900A4BAB900A4BAB900BDCCCB00535755000000000053575500C0CE | ||||
|         CD00A4BAB900989898FF000000FFFBB276FF000000FF989898FF989898FF9898 | ||||
|         98FF989898FF989898FF989898FF989898FF989898FF0000000053575500C1CF | ||||
|         CE00989898FF000000FFF9B378FFFBB276FF000000FF000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FF000000FF989898FF00000000535755009898 | ||||
|         98FF000000FFFFC68FFFFFBC81FFF6B479FFFBB77CFFFCBF87FFFFBA7FFFFFBC | ||||
|         81FFFFBA7FFFFAB77EFFF9B580FF000000FF989898FF00000000535755000000 | ||||
|         00FFFFC690FFFFCB93FFFDC28AFFF5B378FFF5B378FFFFBC81FFFFBC81FFFFBF | ||||
|         86FFFCBF87FFFAB77EFFF6B27DFF000000FF989898FF0000000053575500CAD7 | ||||
|         D600000000FFFFC690FFFFC68FFFFCBF87FFFAB77EFFFAB77EFFFCBF87FFFFBF | ||||
|         86FFFCBF87FFFFB983FFF9B580FF000000FF989898FF00000000535755006C70 | ||||
|         6E00565A5800000000FFFFCB93FFFDC28AFF000000FF000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FF000000FF535755000000000053575500A6B8 | ||||
|         B500788A8800788A8800000000FFFFC68FFF000000FF595D5B00565A5800565A | ||||
|         5800565A5800565A5800595D5B006C706E00535755000000000053575500A3B5 | ||||
|         B3007E928F007E928F007E918F00000000FF000000FF93A4A20095A4A30096A5 | ||||
|         A30096A5A30096A5A30096A5A300919F9D00535755000000000053575500AABD | ||||
|         BB00889D9A00879C9A00869B99009FB0AF005357550053575500535755005357 | ||||
|         5500535755005357550053575500535755004A4E4C000000000053575500B2C3 | ||||
|         C100B5C5C300B5C5C300B5C5C300ACBAB9005357550000000000000000000000 | ||||
|         00000000000000000000000000000000000000000000000000005819D700985D | ||||
|         8B00000000000000000053575500535755005659580000000000000000000000 | ||||
|         0000000000000000000000000000000000000000000000000000 | ||||
|       } | ||||
|       NumGlyphs = 0 | ||||
|       OnClick = BackToolBtnClick | ||||
|     end | ||||
|     object HomeBttn: TSpeedButton | ||||
|       Left = 1 | ||||
|       Height = 30 | ||||
|       Top = 1 | ||||
|       Width = 32 | ||||
|       Align = alLeft | ||||
|       Color = clBtnFace | ||||
|       Glyph.Data = { | ||||
|         36090000424D3609000000000000360000002800000018000000180000000100 | ||||
|         2000000000000009000064000000640000000000000000000000E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00000000FF0000 | ||||
|         00FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00000000FF000000FFE4E7EA00000000FF000000FF000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FF000000FFE4E7EA00000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA001C1C1CFF859D87FF7F9486FF859F8EFF859D87FF6784 | ||||
|         6FFF57775FFF42634EFF374F3FFF2B3D31FF000000FF7F9486FF7B8F7FFF5E7B | ||||
|         67FF3F5646FF637767FF3B5242FF000000FFE4E7EA00E4E7EA00E4E7EA000000 | ||||
|         00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FFE4E7EA00000000FFE4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FFA5A5A5FF08123DFF3753D7FF5A67 | ||||
|         C7FF43539FFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9595 | ||||
|         95FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00694639003F2D | ||||
|         2500E4E7EA00E4E7EA00E4E7EA00000000FFBFBFBFFF000000FF677FE7FF5A67 | ||||
|         C7FF3D4E96FF000000FFBDBDBDFFBDBDBDFFBDBDBDFFBDBDBDFFBDBDBDFF8C8C | ||||
|         8CFF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00000000FF000000FFEFEFEFFF000000FF96A7EFFF4B5E | ||||
|         CFFF3F4F97FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBF | ||||
|         BFFF000000FFE4E7EA00E4E7EA00E4E7EA0049332A0069463900EBB49200EBB4 | ||||
|         9200EBB4920069463900000000FF000000FFFFFFFFFF000000FF95A7EFFF3D56 | ||||
|         CFFF161D37FF000000FFC6C6C6FF949494FF5F5F5FFF5F5F5FFF868686FF7B7B | ||||
|         7BFF000000FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA004B342B006746 | ||||
|         3A00FCE2D200EBB49200000000FF858585FFFFFFFFFF000000FF96A7EFFF3B53 | ||||
|         D6FF3F4F97FF000000FFFFFFFFFF000000FF000000FF000000FF000000FF0000 | ||||
|         00FF6F6F6FFF000000FF69463900EBB49200EBB49200EBB4920031313100EBB4 | ||||
|         920031313100EBB49200000000FFADADADFFFFFFFFFF000000FF8F9EEFFF6F84 | ||||
|         DFFF43539FFF000000FFFFFFFFFF000000FFCECECEFFFFFFFFFFFFFFFFFF0000 | ||||
|         00FF636363FF000000FFEBB49200EBB49200694639004B342B00E4E7EA00E4E7 | ||||
|         EA0069463900FDE6D800000000FFD6D6D6FFFFFFFFFF000000FF000000FF0000 | ||||
|         00FF000000FF000000FFFFFFFFFF000000FFBDBDBDFFFFFFFFFFFFFFFFFF0000 | ||||
|         00FF6F6F6FFF000000FFFDE6D80031313100EBB4920031313100EFBFA1000000 | ||||
|         00FF000000FF000000FF000000FFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|         FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF949494FFC7C7C7FFEFEFEFFF0000 | ||||
|         00FF7F7F7FFF000000FF000000FF000000FF000000FFE4E7EA004B342B006946 | ||||
|         3900000000FF232323FFAFAFAFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBF | ||||
|         BFFFBFBFBFFFBFBFBFFFBFBFBFFF000000FF000000FF000000FF000000FF0000 | ||||
|         00FF949494FF6F6F6FFF252525FF000000FF31313100F9DBC900FDE6D800FDE6 | ||||
|         D800F3C0A000000000FF1F1F1FFFC6C6C6FFC6C6C6FFCECECEFFFFFFFFFFAFAF | ||||
|         AFFFFFFFFFFFBFBFBFFFFFFFFFFFBFBFBFFFFFFFFFFFBDBDBDFFFFFFFFFFD7D7 | ||||
|         D7FF7F7F7FFF1C1C1CFF000000FFFDE6D800664539004B342B00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00000000FF212121FF737373FFA7A7A7FFD6D6D6FF9E9E | ||||
|         9EFFFFFFFFFFBDBDBDFFFFFFFFFFBDBDBDFFFFFFFFFFBDBDBDFFFFFFFFFF6363 | ||||
|         63FF1D1D1DFF000000FF69463900F3C0A000FAE1D100FDE6D800683B2C009129 | ||||
|         1B00E4E7EA00E4E7EA00E4E7EA00000000FF232323FF525252FFB7B7B7FF9494 | ||||
|         94FFD6D6D6FF9E9E9EFFFFFFFFFFBDBDBDFFFFFFFFFFBDBDBDFF878787FF1717 | ||||
|         17FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FF000000FF1C1C1CFF464646FF6767 | ||||
|         67FFBFBFBFFF7F7F7FFFD6D6D6FFBDBDBDFFFFFFFFFF4F4F4FFF272727FF0000 | ||||
|         00FFE4E7EA00E4E7EA00E4E7EA00E4E7EA0037221A005E392A00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FF3D4F97FF000000FF232323FF3131 | ||||
|         31FFA5A5A5FF676767FFADADADFFBDBDBDFF5A5A5AFF141414FF000000FFE4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FF3B4F94FF4356A5FF000000FF1818 | ||||
|         18FF474747FF575757FF8D8D8DFF393939FF191919FF000000FFE4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FF5A67C7FF374B96FF000000FF0000 | ||||
|         00FF2B2B2BFF333333FF353535FF252525FF000000FFE4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FF000000FF000000FF000000FFE4E7 | ||||
|         EA00000000FF212121FF2D2D2DFF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00000000FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA005840D50060EE | ||||
|         7A000000000000000000E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00 | ||||
|       } | ||||
|       NumGlyphs = 0 | ||||
|       OnClick = HomeToolBtnClick | ||||
|     end | ||||
|   end | ||||
|   object PageControl: TPageControl | ||||
|     Left = 0 | ||||
|     Height = 478 | ||||
|     Top = 32 | ||||
|     Width = 758 | ||||
|     Align = alClient | ||||
|     TabOrder = 1 | ||||
|     TabPosition = tpBottom | ||||
|     OnChange = PageControlChange | ||||
|     OnEnter = PageControlEnter | ||||
|     OnPageChanged = PageControlChange | ||||
|   end | ||||
|   object MainMenu1: TMainMenu | ||||
|     top = 124 | ||||
|     object FileMenuItem: TMenuItem | ||||
|       Caption = '&File' | ||||
|       object FileMenuOpenItem: TMenuItem | ||||
|         Caption = '&Open...' | ||||
|         ShortCut = 16463 | ||||
|         OnClick = FileMenuOpenItemClick | ||||
|       end | ||||
|       object FileMenuOpenURLItem: TMenuItem | ||||
|         Caption = 'Open &URL...' | ||||
|         OnClick = FileMenuOpenURLItemClick | ||||
|       end | ||||
|       object FileMenuCloseItem: TMenuItem | ||||
|         Caption = '&Close' | ||||
|         ShortCut = 16471 | ||||
|         OnClick = FileMenuCloseItemClick | ||||
|       end | ||||
|       object FileSeperater: TMenuItem | ||||
|         Caption = '-' | ||||
|       end | ||||
|       object FileMenuExitItem: TMenuItem | ||||
|         Caption = 'E&xit' | ||||
|         OnClick = FileMenuExitItemClick | ||||
|       end | ||||
|     end | ||||
|     object ViewMenuItem: TMenuItem | ||||
|       Caption = '&View' | ||||
|       object ViewMenuContents: TMenuItem | ||||
|         Caption = 'Show contents' | ||||
|         Checked = True | ||||
|         ShortCut = 115 | ||||
|         ShowAlwaysCheckable = True | ||||
|         OnClick = ViewMenuContentsClick | ||||
|       end | ||||
|     end | ||||
|     object HelpMenuItem: TMenuItem | ||||
|       Caption = '&Help' | ||||
|       object AboutItem: TMenuItem | ||||
|         Caption = '&About...' | ||||
|         OnClick = AboutItemClick | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|   object OpenDialog1: TOpenDialog | ||||
|     Filter = 'HelpFiles(*.chm)|*.chm|All FIles(*.*)|*' | ||||
|     FilterIndex = 0 | ||||
|     top = 156 | ||||
|   end | ||||
|   object ImageList1: TImageList | ||||
|     left = 8 | ||||
|     top = 80 | ||||
|     Bitmap = { | ||||
|       4C690400000010000000100000007001E300B0CE2A000000000000000000F609 | ||||
|       0200E1281B00005959000090AF00329FCCFF75888800003A3A00000E0E00FA11 | ||||
|       0200FE1F0000000000000000000086180000FF3F000000000000000202006C54 | ||||
|       2C002BD6D4FF0088FFFF006BFFFF0067FFFF007CFFFF0095FDFF00868A00B2E3 | ||||
|       1400FFFF00000000000000000000C1E10000FFFF000000000000001B1B0009F7 | ||||
|       BD00008DFFFF0066FFFF007BFFFF0077FFFF0066FFFF0067FFFF00BAFDFF0479 | ||||
|       6B00F5470A000000000000000000FC0F0000FE1F0000000606000057570004F1 | ||||
|       FBFF008FFFFF00A0FFFF00FBFFFF00F7FFFF007BFFFF0066FFFF00A3FFFF1EE1 | ||||
|       E1FFDD2C1F0000000000000000000000000000000000001010000097970000FE | ||||
|       FEFF00FFFFFF00FFFFFF00FFFFFF00C6FFFF006AFFFF0077FFFF00DBFFFF00FA | ||||
|       FAFF00303000000000000000000000000000000000000014140000ADAD0000FE | ||||
|       FEFF00FFFFFF00FFFFFF00E2FFFF0078FFFF007FFFFF00DAFFFF00FFFFFF00FD | ||||
|       FDFF0041410000040400000000000000000000000000000C0C000083830000FD | ||||
|       FDFF00FFFFFF00FFFFFF008DFFFF008EFFFF00EFFFFF00FFFFFF00FFFFFF00F4 | ||||
|       F4FF002A2A0000000000000000000000000013314D002E80C0FF2C99D4FF0AE9 | ||||
|       F5FF01FDFEFF00FFFFFF0083FFFF00D0FFFF00FFFFFF00FFFFFF04FAFDFF23D3 | ||||
|       EDFF4D9DD2FF040F190000000000000000002887D3FF028BF8FF2CB3FCFF08CF | ||||
|       FEFF03F7FFFF01FEFFFF00CAFFFF00E9FFFF00FFFFFF01FDFFFF05EFFFFF0AC0 | ||||
|       FDFF2CB0FCFF30587A0000000000000000002289DCFF069CF5FF26C2FDFF12D6 | ||||
|       FEFF13F2FEFF08CAFFFF0070FFFF0176FFFF07E6FFFF10FAFFFF15ECFEFF12D2 | ||||
|       FEFF11BAFDFF5897C3FF00000000040D17001E8EE7FF08A1F2FF1DC7FEFF15DF | ||||
|       FEFF1CF5FFFF16C1FFFF016AFFFF0471FFFF22DFFFFF22F7FFFF1BF5FFFF14DB | ||||
|       FEFF0DBFFEFF55ABDCFF0000000010274000148CF1FF0796EEFF11BBFDFF12D3 | ||||
|       FEFF18EBFEFF1FF5FFFF1CD4FFFF20E0FFFF23F7FFFF1EF5FFFF17E8FEFF11CF | ||||
|       FEFF0BB6FDFF47ACECFF020810001D426400108FFCFF1F8FE6FF3CA2D8FF42B0 | ||||
|       D9FF49BBD9FF4DC4D9FF51CADAFF56CCD9FF58CADAFF5AC6DAFF5BBFDAFF5CB7 | ||||
|       DAFF5EAEDBFF66A9D9FF1C3C590023558100248BDBFFE3E9E9FFFFFFFFFFFFFF | ||||
|       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|       FFFFC5D3D3FF588295FF122436000D223A002C8AD2FFEFF2F2FFFFFFFFFFFFFF | ||||
|       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|       FFFFBBCBCBFF5C8394FF020A1200000000001D568800457496FF6C8EA1FF6E8E | ||||
|       A2FF6F90A4FF7091A4FF7192A5FF7192A6FF7394A7FF7595A7FF7595A7FF7896 | ||||
|       A9FF7996A9FF4F7692FF060F1B007001E300C819EE000000000000000000F708 | ||||
|       0100EE1C0E0000313100005C70006F708D00AC575100001F1F0000070700FB10 | ||||
|       0100FE1F0000000000000000000086180000FF3F000000000000000101007743 | ||||
|       170069E296000083F600006BFE000067FF00037EFC000089E90000505200B9E2 | ||||
|       0A00FFFF00000000000000000000C1E10000FFFF000000000000000E0E0011EF | ||||
|       7D000690F9000066FF00007BFF000077FF000066FF000067FF0000AAE700054F | ||||
|       3D00FA4305000000000000000000FC0F0000DA2619001F569DFF276CB7FF2C7D | ||||
|       C9FF2E78CEFF307DCEFF3489CFFF368ACEFF3A82CFFF3C7FD0FF4186D1FF4987 | ||||
|       CBFF5563A2FF0000000000000000000000001D5198FF0B8CFCFF2E98F3FF0389 | ||||
|       FDFF0798FDFF0CAAFDFF10B7FDFF12BCFDFF11B7FDFF0FAAFDFF0A98FDFF088C | ||||
|       FDFF4596E6FF0002060000000000000000002262B1FF0589FCFF339CF6FF0499 | ||||
|       FDFF0BB5FDFF10CBFEFF0CACFEFF0895FFFF0AA2FEFF0FC4FEFF0AB3FDFF0397 | ||||
|       FDFF3F99EDFF00142E000000000000000000236ABBFF0388FBFF37A4FBFF09AF | ||||
|       FDFF11CFFEFF12C9FEFF0992FFFF13BDFFFF0373FFFF0CA7FFFF11CDFEFF09AD | ||||
|       FDFF369FF8FF0D2B5D0000000000000000002571C6FF0187FBFF38AFFDFF0DBE | ||||
|       FEFF16E2FEFF1FF6FFFF27F8FFFF22D8FFFF0780FFFF1AE1FFFF16E0FEFF0DBC | ||||
|       FDFF2EA9FDFF1C4A8CFF00000000000000002577D0FF0086FAFF33B1FDFF0FC5 | ||||
|       FEFF18EBFEFF22F6FFFF2DF9FFFF149DFFFF2AF1FFFF22F6FFFF18E9FEFF0EC3 | ||||
|       FEFF1FA7FDFF3970B8FF0000000000000000237BD4FF0086FAFF2EACFDFF0EC2 | ||||
|       FEFF17E7FEFF21F6FFFF2AF6FFFF1EC6FFFF28F4FFFF20F6FFFF17E4FEFF0DBF | ||||
|       FEFF0D9EFDFF4B89CFFF0000000002070C00217CD8FF0086F9FF26A1FDFF0BB5 | ||||
|       FDFF13D7FEFF1BF5FFFF1DE3FFFF067FFFFF1BDBFFFF1AF3FEFF13D5FEFF0AB3 | ||||
|       FDFF0290FDFF4E92DAFF00000000091624001F7EDDFF0086F9FF1E95FCFF06A1 | ||||
|       FDFF0DBEFEFF13D7FEFF17E8FEFF19EEFEFF17E7FEFF13D6FEFF0DBDFDFF059F | ||||
|       FDFF0088FDFF4894E1FF01040800102B46001F82E1FF2589E6FF438AD4FF4189 | ||||
|       D3FF4797D3FF4DA3D4FF50ABD5FF54AED6FF56ADD7FF57A8D7FF58A0D8FF5897 | ||||
|       D8FF5A98D9FF508BCDFF0F284300133A64002A77CBFFC2C2D0FFFFFFFFFFFFFF | ||||
|       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFD | ||||
|       FEFF8989A5FF32589DFF0A162000071322002468BCFF8E97B8FFCDCDD9FFCECE | ||||
|       DAFFD0D0DBFFD0D0DBFFD1D1DCFFD2D2DCFFD3D3DDFFD4D4DEFFD5D5DFFFD5D5 | ||||
|       DFFF9292ACFF3E5C9BFF010509000000000012395F0025528D00335B9800325A | ||||
|       9800325A9900325A9900315A9900315A9900315B9900305B9900305B9900315B | ||||
|       9A00315A9A002C55860003080E007001E300703A46000000000000000000A3A9 | ||||
|       A600A2A8A600A2A8A500A2A8A500798CA2002E5FAAFF2B2D2C00000000000000 | ||||
|       000000000000000000000000000000000000959A9800EDEFEE00FFFFFF00FFFF | ||||
|       FF00FFFFFF00D9E2F200467CC6FF368FE4FF408FDEFFA6ACA9004E504F000000 | ||||
|       000000000000000000000000000000000000A1A7A500FEFEFE00E9ECEB00D3DD | ||||
|       E300477CBEFF318CDFFF0F8FFCFF0088FDFF3C8CDDFFFDFDFD00B3B7B6004B4E | ||||
|       4D0000000000000000000000000000000000949FA300779FD500326DBAFF3298 | ||||
|       D9FF1CBBFAFF0AB1FDFF059DFDFF0088FDFF3B8BDCFF77A5DA0079A5DA00608D | ||||
|       C20031538200000000000000000000000000446FAB002781D3FF1BBAF7FF12D3 | ||||
|       FEFF0BA2FEFF0581FFFF0CBBFDFF0499FDFF3C8BDCFF0FA8FD000A98FB00088A | ||||
|       FB004292E1000003090000000000000000002B62B0FF12B0FDFF13D5FEFF0CA6 | ||||
|       FFFF088DFFFF0688FFFF13D6FEFF09AEFDFF3986D8FF96A0B7FF96A0B7FF969F | ||||
|       B7FF969FB7FF395EA1FF00000000000000002B68B7FF13BCFDFF16E1FEFF0B95 | ||||
|       FFFF1CC6FFFF1BD3FFFF18EAFEFF0DBDFDFF4990D2FFB6B6B6FFB6B6B6FFB6B6 | ||||
|       B6FFBCBCBCFF5A71A3FF00000000000000002B6CBDFF12BFFDFF18E9FEFF27F6 | ||||
|       FFFF1EB9FFFF29F8FFFF1AF2FEFF0EC3FEFF4A91D4FFC9C9C9FFC9C9C9FFC9C9 | ||||
|       C9FFCACACAFF5E75A5FF00000000000000002A6FC2FF0FB9FDFF17E6FEFF23F6 | ||||
|       FFFF1FCFFFFF25F7FFFF18ECFEFF0DBFFEFF4D90D2FFBABABAFFBABABAFFBABA | ||||
|       BAFFBFBFBFFF6278A8FF00000000000000002A73C6FF09ABFDFF12D3FEFF19EF | ||||
|       FEFF0889FFFF1CF5FFFF14D9FEFF0BB2FDFF508ED1FFB8B8B8FFB8B8B8FFB8B8 | ||||
|       B8FFBEBEBEFF657BA9FF00000000000000002A76CCFF0396FDFF0CB9FDFF10CA | ||||
|       FEFF0FBBFEFF13D7FEFF28C1F9FF4D95D0FF959EAFFFB8B8B8FFB8B8B8FFB8B8 | ||||
|       B8FFBFBFBFFF687DA9FF00000000000000002878CFFF0088FDFF049BFDFF0AB1 | ||||
|       FDFF1FBDFAFF449FD7FF8B9FBDFFC8C8C9FFCBCBCBFFCBCBCBFFCBCBCBFFCBCB | ||||
|       CBFFCBCBCBFF6B7FABFF0000000000020600267BD4FF0088FDFF0C8CFBFF3489 | ||||
|       D9FF819ABDFFB6B6B7FFB8B8B8FFB8B8B8FFB8B8B8FFB8B8B8FFB8B8B8FFB8B8 | ||||
|       B8FFC0C0C0FF6E82ACFF00040A00000610001E79D8FF2380DEFF82A0C9FFE0E1 | ||||
|       E3FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9 | ||||
|       E9FFD2D2D8FF5E76A8FF00010100000001002555A8FFE7E8EEFFFFFFFFFFFFFF | ||||
|       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|       FFFFA6A6BBFF435D9AFF0000000000000000233858004464A0FF6C82B2FF6B82 | ||||
|       B2FF6A81B2FF6980B2FF687FB0FF687FB0FF677EB1FF647FB0FF647DB0FF637D | ||||
|       AFFF5E77ACFF294E8FFF00000000A803E3000051C8000000000000000000F708 | ||||
|       0100EE1C0E0000313100005C7000626B9100535A9000001F1F0000070700FB10 | ||||
|       0100FE1F0000000000000000000086180000FF3F0000006AC9FF0091EEFF0092 | ||||
|       EEFF0084EAFF0084EAFF0092EEFF0084EAFF0084EAFF0080E2FF0068C00093CE | ||||
|       3400FFFF00000000000000000000C1E10000FFFF000000A7FEFFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFF5FDBFFFF0DACFFFF0081 | ||||
|       E2FFBB523E000000000000000000FC0F0000EB230D0000A7FEFFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFF5BDAFFFF0FB3 | ||||
|       FFFF0F78D300000000000000000000000000143C7300009BFEFFCDF1FFFFCDF1 | ||||
|       FFFF81DAFFFF19B6FFFF00A2EEFF00A4F0FF23B9FFFFBEECFFFFCDF1FFFF5FDB | ||||
|       FFFF0083E8FF0002060000000000000000001E539B00009BFEFFCDF1FFFFCDF1 | ||||
|       FFFF03AFFFFF009EE8FF6DD4FFFF6BD3FFFF009EE8FF17B5FFFFCDF1FFFFCDF1 | ||||
|       FFFF0095F4FF30518C000000000000000000225DA900009BFEFFCDF1FFFFCDF1 | ||||
|       FFFF009EE8FF03AFFFFFCDF1FFFFC7F0FFFF009EE8FF00A2EEFFCDF1FFFFCDF1 | ||||
|       FFFF0098F8FF4E65940000000000000000002667B700009BFEFFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFFC9EFFFFF1BB7FFFF009EE8FF57CEFFFFCDF1FFFFCDF1 | ||||
|       FFFF0095F4FF546C9C0000000000000000002871C5000098F8FFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFF21B8FFFF009EE8FF4BCAFFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF0095F2FF5C75A70000000000000000002874C9000095F4FFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFF00A0EAFF009EE8FFC9EFFFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF008DF0FF627DAD000000000002070C002877CE000095F2FFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF0082E6FF6580AF0000000000091624002679D1000092EEFFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFF009EE8FF009EE8FFCDF1FFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF0080E2FF6782B10001040800112A4200257BD6000083E8FFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFF009EE8FF009EE8FFCDF1FFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF007CDCFF6B83AF0010263D0015395D001E79D7000080E2FFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF027CDCFF5974A6000A151F00071321002458AB002F6EC4FF0761C8FF005D | ||||
|       C6FF005DC6FF005DC6FF005DC6FF005DC6FF005CC2FF005CC2FF005BC2FF075F | ||||
|       C4FF2560B6FF435F9B000105090000000000143D6B00385C9600627CAC00627C | ||||
|       AB00617BAC00607AAC005F79AA005F79AA005E79AB005C79AA005C78AA005C78 | ||||
|       AA005A75AA003158930003080E00 | ||||
|     } | ||||
|   end | ||||
| end | ||||
| object HelpForm: THelpForm | ||||
|   Left = 322 | ||||
|   Height = 535 | ||||
|   Top = 239 | ||||
|   Width = 758 | ||||
|   ActiveControl = Panel1 | ||||
|   Caption = 'LHelp' | ||||
|   ClientHeight = 510 | ||||
|   ClientWidth = 758 | ||||
|   Icon.Data = { | ||||
|     7E04000000000100010010100000010020006804000016000000280000001000 | ||||
|     0000200000000100200000000000000400006400000064000000000000000000 | ||||
|     0000FFFFFF002775B87D4C81A7AE7498ADBD7699AEBD779AAFBD789BAFBD799C | ||||
|     B1BD7A9DB2BD7C9EB3BE7D9FB3BD7E9FB4BD80A1B5BD81A1B5BD5883A2AF205F | ||||
|     A1162364A6312C8AD2FCEFF2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|     FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBBCBCBFF5C8495EE1558 | ||||
|     A30E2F74AF7C248BDBFFE3E9E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|     FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5D3D3FF598397E1326A | ||||
|     9D31306BA162108FFCFF1F8FE6FF3CA2D8FF42B0D9FF49BBD9FF4DC4D9FF51CA | ||||
|     DAFF56CCD9FF58CADAFF5AC6DAFF5BBFDAFF5CB7DAFF5EAEDBFF66A9D9FF3169 | ||||
|     9D5827639F39148CF1FF0796EEFF11BBFDFF12D3FEFF18EBFEFF1FF5FFFF1CD4 | ||||
|     FFFF20E0FFFF23F7FFFF1EF5FFFF17E8FEFF11CFFEFF0BB6FDFF47ACECFC1558 | ||||
|     A30D1558A3131E8EE7FD08A1F2FF1DC7FEFF15DFFEFF1CF5FFFF16C1FFFF016A | ||||
|     FFFF0471FFFF22DFFFFF22F7FFFF1BF5FFFF14DBFEFF0DBFFEFF56ACDEE7FFFF | ||||
|     FF00FFFFFF002389DDF4069CF5FF26C2FDFF12D6FEFF13F2FEFF08CAFFFF0070 | ||||
|     FFFF0176FFFF07E6FFFF10FAFFFF15ECFEFF12D2FEFF11BAFDFF5EA2D0BFFFFF | ||||
|     FF00FFFFFF002988D4E9028BF8FF2CB3FCFF08CFFEFF03F7FFFF01FEFFFF00CA | ||||
|     FFFF00E9FFFF00FFFFFF01FDFFFF05EFFFFF0AC0FDFF2CB0FCFF457EB073FFFF | ||||
|     FF00FFFFFF002C6EAB413087CCC22E9DDAD40BEAF6F301FDFEFE00FFFFFF0083 | ||||
|     FFFF00D0FFFF00FFFFFF00FFFFFF04FAFDFC23D5EFEB4FA1D9D41D5DA115FFFF | ||||
|     FF00FFFFFF00FFFFFF0000FFFF0600FFFF4D00FFFFEA00FFFFFF00FFFFFF008D | ||||
|     FFFF008EFFFF00EFFFFF00FFFFFF00FFFFFC00FFFFCB00FFFF16FFFFFF00FFFF | ||||
|     FF00FFFFFF00FFFFFF0000FFFF0A00FFFF6E00FFFFF100FFFFFF00FFFFFF00E2 | ||||
|     FFFF0078FFFF007FFFFF00DAFFFF00FFFFFF00FFFFE600FFFF2300FFFF02FFFF | ||||
|     FF00FFFFFF00FFFFFF0000FFFF0800FFFF5C00FFFFEE00FFFFFF00FFFFFF00FF | ||||
|     FFFF00C6FFFF006AFFFF0077FFFF00DBFFFE00FFFFDA00FFFF19FFFFFF00FFFF | ||||
|     FF00FFFFFF00FFFFFF0000FFFF0300FFFF3000F5FFDF008FFFFF00A0FFFF00FB | ||||
|     FFFF00F7FFFF007BFFFF0066FFFF00A3FFFC00FFFFA700FFFF10FFFFFF00FFFF | ||||
|     FF00FFFFFF00FFFFFF00FFFFFF0000FFFF0E00FFFF7D008DFFF90066FFFF007B | ||||
|     FFFF0077FFFF0066FFFF0067FFFF00BCFFE700FFFF3D00FFFF05FFFFFF00FFFF | ||||
|     FF00FFFFFF00FFFFFF00FFFFFF0000FFFF0100FFFF1700CDFF960088FFF6006B | ||||
|     FFFE0067FFFF007CFFFC0096FFE900F8FF5200FFFF0AFFFFFF00FFFFFF00FFFF | ||||
|     FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000FFFF0100FFFF0E00FDFF3100D2 | ||||
|     FF7000C5FF8D00F3FF5100FFFF1F00FFFF0700FFFF01FFFFFF00FFFFFF00FFFF | ||||
|     FF00000000000000000000000000000000000000000000000000000000000000 | ||||
|     0000000000000000000000000000000000000000000000000000000000000000 | ||||
|     0000 | ||||
|   } | ||||
|   Menu = MainMenu1 | ||||
|   OnClose = FormClose | ||||
|   OnCreate = FormCreate | ||||
|   Position = poScreenCenter | ||||
|   ShowInTaskBar = stAlways | ||||
|   LCLVersion = '0.9.27' | ||||
|   object Panel1: TPanel | ||||
|     Left = 0 | ||||
|     Height = 32 | ||||
|     Top = 0 | ||||
|     Width = 758 | ||||
|     Align = alTop | ||||
|     ClientHeight = 32 | ||||
|     ClientWidth = 758 | ||||
|     TabOrder = 0 | ||||
|     object ForwardBttn: TSpeedButton | ||||
|       Left = 65 | ||||
|       Height = 30 | ||||
|       Top = 1 | ||||
|       Width = 32 | ||||
|       Align = alLeft | ||||
|       Color = clBtnFace | ||||
|       Glyph.Data = { | ||||
|         36040000424D3604000000000000360000002800000010000000100000000100 | ||||
|         2000000000000004000064000000640000000000000000000000000000000002 | ||||
|         65000200000000000000000000000000000049332A0069463900694639003F2D | ||||
|         25001B531D000000000000000000000000000000000000000000000000005900 | ||||
|         00000000000000000000000000004B342B0069463900EBB49200EBB492006946 | ||||
|         390047332C000000000000000000000000000000000000000000DA0400000058 | ||||
|         D800D447000000000000002EB70069463900EBB49200EBB49200EBB49200EBB4 | ||||
|         920069463900000000000000000000000000000000000000000000A72A004B34 | ||||
|         2B00694639006946390069463900EBB49200EBB49200EBB49200EBB492009898 | ||||
|         98FF989898FF6946390069463900694639004B342B00000000004B342B006746 | ||||
|         3A00FCE2D200EBB49200EBB49200EBB4920065606100EBB49200EBB492000000 | ||||
|         00FF000000FF989898FFEBB49200EBB4920067463A004B342B004B342B006946 | ||||
|         3900FDE6D800989898FF989898FF989898FF989898FF989898FF989898FF0000 | ||||
|         00FFFBB276FF000000FF989898FFEBB49200694639004B342B00FC0400006946 | ||||
|         3900000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 | ||||
|         00FFF9B377FFF9B377FF000000FF989898FF69463900DD4D000000001B000000 | ||||
|         FF00000000FFFAB780FFFAB47EFFFFB983FFFFBA7FFFFFB983FFFFC087FFFBB7 | ||||
|         7CFFF3B379FFFFBD82FFFFC58BFF000000FF989898FF226C26000000FF00469E | ||||
|         4A00000000FFF6B27DFFFAB47EFFFFBE85FFFFC087FFFFBD82FFFFBD82FFF3B3 | ||||
|         79FFF3B379FFFFC087FFFFCB93FFFFC790FF000000FFE81B00003AAC3D006946 | ||||
|         3900000000FFF9B580FFFFB983FFFFBE85FFFFC087FFFFBE85FFFAB780FFFAB7 | ||||
|         80FFFCBF87FFFFC890FFFFC790FF000000FF69463900000076004B342B006946 | ||||
|         3900000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 | ||||
|         00FFFFC087FFFFC790FF000000FFFDE6D800694639004B342B004B342B006746 | ||||
|         3A00FDE6D800FDE6D800FDE6D800FDE6D800FDE6D800FDE6D800FDE6D8000000 | ||||
|         00FFFFC790FF000000FFFDE6D800FDE6D800664539004B342B00000000009134 | ||||
|         2B00694639006946390069463900F3C0A000FAE1D100FDE6D800FDE6D8000000 | ||||
|         00FF000000FF6946390069463900694639004B342B00000000000000FF000000 | ||||
|         0000000000003AB740000000000069463900FDE6D800FDE6D800FDE6D800FDE6 | ||||
|         D8006946390047332C0084967E0000000000000000000000000008000000FFFF | ||||
|         FF00FFFFFF00FFFFFF00FFFFFF0091342A0069463900FDE6D800FDE6D8006946 | ||||
|         390047332C003EAB440000000000000000000000000000000000A0CAB500985D | ||||
|         8B000000000000000000B07522006780280037221A005E392A00683B2C009129 | ||||
|         1B000000000038AB3E000000000068BC74000000000000000000 | ||||
|       } | ||||
|       NumGlyphs = 0 | ||||
|       OnClick = ForwardToolBtnClick | ||||
|     end | ||||
|     object BackBttn: TSpeedButton | ||||
|       Left = 33 | ||||
|       Height = 30 | ||||
|       Top = 1 | ||||
|       Width = 32 | ||||
|       Align = alLeft | ||||
|       Color = clBtnFace | ||||
|       Glyph.Data = { | ||||
|         36040000424D3604000000000000360000002800000010000000100000000100 | ||||
|         2000000000000004000064000000640000000000000000000000000000000000 | ||||
|         0000000000000000000000000000000000000000000000000000000000000000 | ||||
|         00000000000000000000000000000000000000000000000000004A4E4C005357 | ||||
|         5500535755005357550053575500535755005357550053575500535755005357 | ||||
|         5500535755005357550053575500535755004A4E4C000000000053575500B5C5 | ||||
|         C400B6C7C600B6C7C600B6C7C600B6C7C600B6C7C600B6C7C600B6C6C500B6C6 | ||||
|         C500B5C6C500B5C6C500B5C6C500AFC0BF00535755000000000053575500BCCC | ||||
|         CB00A4BAB900A4BAB900A4BAB900989898FF989898FFA4BAB900A4BAB900A4BA | ||||
|         B900A4BAB900A4BAB900A4BAB900B5C7C600535755000000000053575500BFCE | ||||
|         CD00A4BAB900A4BAB900989898FF000000FF000000FF989898FFA4BAB900A4BA | ||||
|         B900A4BAB900A4BAB900A4BAB900BDCCCB00535755000000000053575500C0CE | ||||
|         CD00A4BAB900989898FF000000FFFBB276FF000000FF989898FF989898FF9898 | ||||
|         98FF989898FF989898FF989898FF989898FF989898FF0000000053575500C1CF | ||||
|         CE00989898FF000000FFF9B378FFFBB276FF000000FF000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FF000000FF989898FF00000000535755009898 | ||||
|         98FF000000FFFFC68FFFFFBC81FFF6B479FFFBB77CFFFCBF87FFFFBA7FFFFFBC | ||||
|         81FFFFBA7FFFFAB77EFFF9B580FF000000FF989898FF00000000535755000000 | ||||
|         00FFFFC690FFFFCB93FFFDC28AFFF5B378FFF5B378FFFFBC81FFFFBC81FFFFBF | ||||
|         86FFFCBF87FFFAB77EFFF6B27DFF000000FF989898FF0000000053575500CAD7 | ||||
|         D600000000FFFFC690FFFFC68FFFFCBF87FFFAB77EFFFAB77EFFFCBF87FFFFBF | ||||
|         86FFFCBF87FFFFB983FFF9B580FF000000FF989898FF00000000535755006C70 | ||||
|         6E00565A5800000000FFFFCB93FFFDC28AFF000000FF000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FF000000FF535755000000000053575500A6B8 | ||||
|         B500788A8800788A8800000000FFFFC68FFF000000FF595D5B00565A5800565A | ||||
|         5800565A5800565A5800595D5B006C706E00535755000000000053575500A3B5 | ||||
|         B3007E928F007E928F007E918F00000000FF000000FF93A4A20095A4A30096A5 | ||||
|         A30096A5A30096A5A30096A5A300919F9D00535755000000000053575500AABD | ||||
|         BB00889D9A00879C9A00869B99009FB0AF005357550053575500535755005357 | ||||
|         5500535755005357550053575500535755004A4E4C000000000053575500B2C3 | ||||
|         C100B5C5C300B5C5C300B5C5C300ACBAB9005357550000000000000000000000 | ||||
|         00000000000000000000000000000000000000000000000000005819D700985D | ||||
|         8B00000000000000000053575500535755005659580000000000000000000000 | ||||
|         0000000000000000000000000000000000000000000000000000 | ||||
|       } | ||||
|       NumGlyphs = 0 | ||||
|       OnClick = BackToolBtnClick | ||||
|     end | ||||
|     object HomeBttn: TSpeedButton | ||||
|       Left = 1 | ||||
|       Height = 30 | ||||
|       Top = 1 | ||||
|       Width = 32 | ||||
|       Align = alLeft | ||||
|       Color = clBtnFace | ||||
|       Glyph.Data = { | ||||
|         36090000424D3609000000000000360000002800000018000000180000000100 | ||||
|         2000000000000009000064000000640000000000000000000000E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00000000FF0000 | ||||
|         00FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00000000FF000000FFE4E7EA00000000FF000000FF000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FF000000FFE4E7EA00000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA001C1C1CFF859D87FF7F9486FF859F8EFF859D87FF6784 | ||||
|         6FFF57775FFF42634EFF374F3FFF2B3D31FF000000FF7F9486FF7B8F7FFF5E7B | ||||
|         67FF3F5646FF637767FF3B5242FF000000FFE4E7EA00E4E7EA00E4E7EA000000 | ||||
|         00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000 | ||||
|         00FF000000FF000000FF000000FFE4E7EA00000000FFE4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FFA5A5A5FF08123DFF3753D7FF5A67 | ||||
|         C7FF43539FFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9595 | ||||
|         95FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00694639003F2D | ||||
|         2500E4E7EA00E4E7EA00E4E7EA00000000FFBFBFBFFF000000FF677FE7FF5A67 | ||||
|         C7FF3D4E96FF000000FFBDBDBDFFBDBDBDFFBDBDBDFFBDBDBDFFBDBDBDFF8C8C | ||||
|         8CFF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00000000FF000000FFEFEFEFFF000000FF96A7EFFF4B5E | ||||
|         CFFF3F4F97FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBF | ||||
|         BFFF000000FFE4E7EA00E4E7EA00E4E7EA0049332A0069463900EBB49200EBB4 | ||||
|         9200EBB4920069463900000000FF000000FFFFFFFFFF000000FF95A7EFFF3D56 | ||||
|         CFFF161D37FF000000FFC6C6C6FF949494FF5F5F5FFF5F5F5FFF868686FF7B7B | ||||
|         7BFF000000FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA004B342B006746 | ||||
|         3A00FCE2D200EBB49200000000FF858585FFFFFFFFFF000000FF96A7EFFF3B53 | ||||
|         D6FF3F4F97FF000000FFFFFFFFFF000000FF000000FF000000FF000000FF0000 | ||||
|         00FF6F6F6FFF000000FF69463900EBB49200EBB49200EBB4920031313100EBB4 | ||||
|         920031313100EBB49200000000FFADADADFFFFFFFFFF000000FF8F9EEFFF6F84 | ||||
|         DFFF43539FFF000000FFFFFFFFFF000000FFCECECEFFFFFFFFFFFFFFFFFF0000 | ||||
|         00FF636363FF000000FFEBB49200EBB49200694639004B342B00E4E7EA00E4E7 | ||||
|         EA0069463900FDE6D800000000FFD6D6D6FFFFFFFFFF000000FF000000FF0000 | ||||
|         00FF000000FF000000FFFFFFFFFF000000FFBDBDBDFFFFFFFFFFFFFFFFFF0000 | ||||
|         00FF6F6F6FFF000000FFFDE6D80031313100EBB4920031313100EFBFA1000000 | ||||
|         00FF000000FF000000FF000000FFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|         FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF949494FFC7C7C7FFEFEFEFFF0000 | ||||
|         00FF7F7F7FFF000000FF000000FF000000FF000000FFE4E7EA004B342B006946 | ||||
|         3900000000FF232323FFAFAFAFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBF | ||||
|         BFFFBFBFBFFFBFBFBFFFBFBFBFFF000000FF000000FF000000FF000000FF0000 | ||||
|         00FF949494FF6F6F6FFF252525FF000000FF31313100F9DBC900FDE6D800FDE6 | ||||
|         D800F3C0A000000000FF1F1F1FFFC6C6C6FFC6C6C6FFCECECEFFFFFFFFFFAFAF | ||||
|         AFFFFFFFFFFFBFBFBFFFFFFFFFFFBFBFBFFFFFFFFFFFBDBDBDFFFFFFFFFFD7D7 | ||||
|         D7FF7F7F7FFF1C1C1CFF000000FFFDE6D800664539004B342B00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00000000FF212121FF737373FFA7A7A7FFD6D6D6FF9E9E | ||||
|         9EFFFFFFFFFFBDBDBDFFFFFFFFFFBDBDBDFFFFFFFFFFBDBDBDFFFFFFFFFF6363 | ||||
|         63FF1D1D1DFF000000FF69463900F3C0A000FAE1D100FDE6D800683B2C009129 | ||||
|         1B00E4E7EA00E4E7EA00E4E7EA00000000FF232323FF525252FFB7B7B7FF9494 | ||||
|         94FFD6D6D6FF9E9E9EFFFFFFFFFFBDBDBDFFFFFFFFFFBDBDBDFF878787FF1717 | ||||
|         17FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FF000000FF1C1C1CFF464646FF6767 | ||||
|         67FFBFBFBFFF7F7F7FFFD6D6D6FFBDBDBDFFFFFFFFFF4F4F4FFF272727FF0000 | ||||
|         00FFE4E7EA00E4E7EA00E4E7EA00E4E7EA0037221A005E392A00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FF3D4F97FF000000FF232323FF3131 | ||||
|         31FFA5A5A5FF676767FFADADADFFBDBDBDFF5A5A5AFF141414FF000000FFE4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FF3B4F94FF4356A5FF000000FF1818 | ||||
|         18FF474747FF575757FF8D8D8DFF393939FF191919FF000000FFE4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FF5A67C7FF374B96FF000000FF0000 | ||||
|         00FF2B2B2BFF333333FF353535FF252525FF000000FFE4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00000000FF000000FF000000FF000000FFE4E7 | ||||
|         EA00000000FF212121FF2D2D2DFF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00000000FF000000FFE4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA005840D50060EE | ||||
|         7A000000000000000000E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7 | ||||
|         EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00E4E7EA00 | ||||
|       } | ||||
|       NumGlyphs = 0 | ||||
|       OnClick = HomeToolBtnClick | ||||
|     end | ||||
|   end | ||||
|   object PageControl: TPageControl | ||||
|     Left = 0 | ||||
|     Height = 478 | ||||
|     Top = 32 | ||||
|     Width = 758 | ||||
|     Align = alClient | ||||
|     TabOrder = 1 | ||||
|     TabPosition = tpBottom | ||||
|     OnChange = PageControlChange | ||||
|     OnEnter = PageControlEnter | ||||
|     OnPageChanged = PageControlChange | ||||
|   end | ||||
|   object MainMenu1: TMainMenu | ||||
|     top = 124 | ||||
|     object FileMenuItem: TMenuItem | ||||
|       Caption = '&File' | ||||
|       object FileMenuOpenItem: TMenuItem | ||||
|         Caption = '&Open...' | ||||
|         ShortCut = 16463 | ||||
|         OnClick = FileMenuOpenItemClick | ||||
|       end | ||||
|       object FileMenuOpenURLItem: TMenuItem | ||||
|         Caption = 'Open &URL...' | ||||
|         OnClick = FileMenuOpenURLItemClick | ||||
|       end | ||||
|       object FileMenuCloseItem: TMenuItem | ||||
|         Caption = '&Close' | ||||
|         ShortCut = 16471 | ||||
|         OnClick = FileMenuCloseItemClick | ||||
|       end | ||||
|       object FileSeperater: TMenuItem | ||||
|         Caption = '-' | ||||
|       end | ||||
|       object FileMenuExitItem: TMenuItem | ||||
|         Caption = 'E&xit' | ||||
|         OnClick = FileMenuExitItemClick | ||||
|       end | ||||
|     end | ||||
|     object ViewMenuItem: TMenuItem | ||||
|       Caption = '&View' | ||||
|       object ViewMenuContents: TMenuItem | ||||
|         Caption = 'Show contents' | ||||
|         Checked = True | ||||
|         ShortCut = 115 | ||||
|         ShowAlwaysCheckable = True | ||||
|         OnClick = ViewMenuContentsClick | ||||
|       end | ||||
|     end | ||||
|     object HelpMenuItem: TMenuItem | ||||
|       Caption = '&Help' | ||||
|       object AboutItem: TMenuItem | ||||
|         Caption = '&About...' | ||||
|         OnClick = AboutItemClick | ||||
|       end | ||||
|     end | ||||
|   end | ||||
|   object OpenDialog1: TOpenDialog | ||||
|     Filter = 'HelpFiles(*.chm)|*.chm|All FIles(*.*)|*' | ||||
|     FilterIndex = 0 | ||||
|     top = 156 | ||||
|   end | ||||
|   object ImageList1: TImageList | ||||
|     left = 8 | ||||
|     top = 80 | ||||
|     Bitmap = { | ||||
|       4C690400000010000000100000007001E300B0CE2A000000000000000000F609 | ||||
|       0200E1281B00005959000090AF00329FCCFF75888800003A3A00000E0E00FA11 | ||||
|       0200FE1F0000000000000000000086180000FF3F000000000000000202006C54 | ||||
|       2C002BD6D4FF0088FFFF006BFFFF0067FFFF007CFFFF0095FDFF00868A00B2E3 | ||||
|       1400FFFF00000000000000000000C1E10000FFFF000000000000001B1B0009F7 | ||||
|       BD00008DFFFF0066FFFF007BFFFF0077FFFF0066FFFF0067FFFF00BAFDFF0479 | ||||
|       6B00F5470A000000000000000000FC0F0000FE1F0000000606000057570004F1 | ||||
|       FBFF008FFFFF00A0FFFF00FBFFFF00F7FFFF007BFFFF0066FFFF00A3FFFF1EE1 | ||||
|       E1FFDD2C1F0000000000000000000000000000000000001010000097970000FE | ||||
|       FEFF00FFFFFF00FFFFFF00FFFFFF00C6FFFF006AFFFF0077FFFF00DBFFFF00FA | ||||
|       FAFF00303000000000000000000000000000000000000014140000ADAD0000FE | ||||
|       FEFF00FFFFFF00FFFFFF00E2FFFF0078FFFF007FFFFF00DAFFFF00FFFFFF00FD | ||||
|       FDFF0041410000040400000000000000000000000000000C0C000083830000FD | ||||
|       FDFF00FFFFFF00FFFFFF008DFFFF008EFFFF00EFFFFF00FFFFFF00FFFFFF00F4 | ||||
|       F4FF002A2A0000000000000000000000000013314D002E80C0FF2C99D4FF0AE9 | ||||
|       F5FF01FDFEFF00FFFFFF0083FFFF00D0FFFF00FFFFFF00FFFFFF04FAFDFF23D3 | ||||
|       EDFF4D9DD2FF040F190000000000000000002887D3FF028BF8FF2CB3FCFF08CF | ||||
|       FEFF03F7FFFF01FEFFFF00CAFFFF00E9FFFF00FFFFFF01FDFFFF05EFFFFF0AC0 | ||||
|       FDFF2CB0FCFF30587A0000000000000000002289DCFF069CF5FF26C2FDFF12D6 | ||||
|       FEFF13F2FEFF08CAFFFF0070FFFF0176FFFF07E6FFFF10FAFFFF15ECFEFF12D2 | ||||
|       FEFF11BAFDFF5897C3FF00000000040D17001E8EE7FF08A1F2FF1DC7FEFF15DF | ||||
|       FEFF1CF5FFFF16C1FFFF016AFFFF0471FFFF22DFFFFF22F7FFFF1BF5FFFF14DB | ||||
|       FEFF0DBFFEFF55ABDCFF0000000010274000148CF1FF0796EEFF11BBFDFF12D3 | ||||
|       FEFF18EBFEFF1FF5FFFF1CD4FFFF20E0FFFF23F7FFFF1EF5FFFF17E8FEFF11CF | ||||
|       FEFF0BB6FDFF47ACECFF020810001D426400108FFCFF1F8FE6FF3CA2D8FF42B0 | ||||
|       D9FF49BBD9FF4DC4D9FF51CADAFF56CCD9FF58CADAFF5AC6DAFF5BBFDAFF5CB7 | ||||
|       DAFF5EAEDBFF66A9D9FF1C3C590023558100248BDBFFE3E9E9FFFFFFFFFFFFFF | ||||
|       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|       FFFFC5D3D3FF588295FF122436000D223A002C8AD2FFEFF2F2FFFFFFFFFFFFFF | ||||
|       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|       FFFFBBCBCBFF5C8394FF020A1200000000001D568800457496FF6C8EA1FF6E8E | ||||
|       A2FF6F90A4FF7091A4FF7192A5FF7192A6FF7394A7FF7595A7FF7595A7FF7896 | ||||
|       A9FF7996A9FF4F7692FF060F1B007001E300C819EE000000000000000000F708 | ||||
|       0100EE1C0E0000313100005C70006F708D00AC575100001F1F0000070700FB10 | ||||
|       0100FE1F0000000000000000000086180000FF3F000000000000000101007743 | ||||
|       170069E296000083F600006BFE000067FF00037EFC000089E90000505200B9E2 | ||||
|       0A00FFFF00000000000000000000C1E10000FFFF000000000000000E0E0011EF | ||||
|       7D000690F9000066FF00007BFF000077FF000066FF000067FF0000AAE700054F | ||||
|       3D00FA4305000000000000000000FC0F0000DA2619001F569DFF276CB7FF2C7D | ||||
|       C9FF2E78CEFF307DCEFF3489CFFF368ACEFF3A82CFFF3C7FD0FF4186D1FF4987 | ||||
|       CBFF5563A2FF0000000000000000000000001D5198FF0B8CFCFF2E98F3FF0389 | ||||
|       FDFF0798FDFF0CAAFDFF10B7FDFF12BCFDFF11B7FDFF0FAAFDFF0A98FDFF088C | ||||
|       FDFF4596E6FF0002060000000000000000002262B1FF0589FCFF339CF6FF0499 | ||||
|       FDFF0BB5FDFF10CBFEFF0CACFEFF0895FFFF0AA2FEFF0FC4FEFF0AB3FDFF0397 | ||||
|       FDFF3F99EDFF00142E000000000000000000236ABBFF0388FBFF37A4FBFF09AF | ||||
|       FDFF11CFFEFF12C9FEFF0992FFFF13BDFFFF0373FFFF0CA7FFFF11CDFEFF09AD | ||||
|       FDFF369FF8FF0D2B5D0000000000000000002571C6FF0187FBFF38AFFDFF0DBE | ||||
|       FEFF16E2FEFF1FF6FFFF27F8FFFF22D8FFFF0780FFFF1AE1FFFF16E0FEFF0DBC | ||||
|       FDFF2EA9FDFF1C4A8CFF00000000000000002577D0FF0086FAFF33B1FDFF0FC5 | ||||
|       FEFF18EBFEFF22F6FFFF2DF9FFFF149DFFFF2AF1FFFF22F6FFFF18E9FEFF0EC3 | ||||
|       FEFF1FA7FDFF3970B8FF0000000000000000237BD4FF0086FAFF2EACFDFF0EC2 | ||||
|       FEFF17E7FEFF21F6FFFF2AF6FFFF1EC6FFFF28F4FFFF20F6FFFF17E4FEFF0DBF | ||||
|       FEFF0D9EFDFF4B89CFFF0000000002070C00217CD8FF0086F9FF26A1FDFF0BB5 | ||||
|       FDFF13D7FEFF1BF5FFFF1DE3FFFF067FFFFF1BDBFFFF1AF3FEFF13D5FEFF0AB3 | ||||
|       FDFF0290FDFF4E92DAFF00000000091624001F7EDDFF0086F9FF1E95FCFF06A1 | ||||
|       FDFF0DBEFEFF13D7FEFF17E8FEFF19EEFEFF17E7FEFF13D6FEFF0DBDFDFF059F | ||||
|       FDFF0088FDFF4894E1FF01040800102B46001F82E1FF2589E6FF438AD4FF4189 | ||||
|       D3FF4797D3FF4DA3D4FF50ABD5FF54AED6FF56ADD7FF57A8D7FF58A0D8FF5897 | ||||
|       D8FF5A98D9FF508BCDFF0F284300133A64002A77CBFFC2C2D0FFFFFFFFFFFFFF | ||||
|       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFD | ||||
|       FEFF8989A5FF32589DFF0A162000071322002468BCFF8E97B8FFCDCDD9FFCECE | ||||
|       DAFFD0D0DBFFD0D0DBFFD1D1DCFFD2D2DCFFD3D3DDFFD4D4DEFFD5D5DFFFD5D5 | ||||
|       DFFF9292ACFF3E5C9BFF010509000000000012395F0025528D00335B9800325A | ||||
|       9800325A9900325A9900315A9900315A9900315B9900305B9900305B9900315B | ||||
|       9A00315A9A002C55860003080E007001E300703A46000000000000000000A3A9 | ||||
|       A600A2A8A600A2A8A500A2A8A500798CA2002E5FAAFF2B2D2C00000000000000 | ||||
|       000000000000000000000000000000000000959A9800EDEFEE00FFFFFF00FFFF | ||||
|       FF00FFFFFF00D9E2F200467CC6FF368FE4FF408FDEFFA6ACA9004E504F000000 | ||||
|       000000000000000000000000000000000000A1A7A500FEFEFE00E9ECEB00D3DD | ||||
|       E300477CBEFF318CDFFF0F8FFCFF0088FDFF3C8CDDFFFDFDFD00B3B7B6004B4E | ||||
|       4D0000000000000000000000000000000000949FA300779FD500326DBAFF3298 | ||||
|       D9FF1CBBFAFF0AB1FDFF059DFDFF0088FDFF3B8BDCFF77A5DA0079A5DA00608D | ||||
|       C20031538200000000000000000000000000446FAB002781D3FF1BBAF7FF12D3 | ||||
|       FEFF0BA2FEFF0581FFFF0CBBFDFF0499FDFF3C8BDCFF0FA8FD000A98FB00088A | ||||
|       FB004292E1000003090000000000000000002B62B0FF12B0FDFF13D5FEFF0CA6 | ||||
|       FFFF088DFFFF0688FFFF13D6FEFF09AEFDFF3986D8FF96A0B7FF96A0B7FF969F | ||||
|       B7FF969FB7FF395EA1FF00000000000000002B68B7FF13BCFDFF16E1FEFF0B95 | ||||
|       FFFF1CC6FFFF1BD3FFFF18EAFEFF0DBDFDFF4990D2FFB6B6B6FFB6B6B6FFB6B6 | ||||
|       B6FFBCBCBCFF5A71A3FF00000000000000002B6CBDFF12BFFDFF18E9FEFF27F6 | ||||
|       FFFF1EB9FFFF29F8FFFF1AF2FEFF0EC3FEFF4A91D4FFC9C9C9FFC9C9C9FFC9C9 | ||||
|       C9FFCACACAFF5E75A5FF00000000000000002A6FC2FF0FB9FDFF17E6FEFF23F6 | ||||
|       FFFF1FCFFFFF25F7FFFF18ECFEFF0DBFFEFF4D90D2FFBABABAFFBABABAFFBABA | ||||
|       BAFFBFBFBFFF6278A8FF00000000000000002A73C6FF09ABFDFF12D3FEFF19EF | ||||
|       FEFF0889FFFF1CF5FFFF14D9FEFF0BB2FDFF508ED1FFB8B8B8FFB8B8B8FFB8B8 | ||||
|       B8FFBEBEBEFF657BA9FF00000000000000002A76CCFF0396FDFF0CB9FDFF10CA | ||||
|       FEFF0FBBFEFF13D7FEFF28C1F9FF4D95D0FF959EAFFFB8B8B8FFB8B8B8FFB8B8 | ||||
|       B8FFBFBFBFFF687DA9FF00000000000000002878CFFF0088FDFF049BFDFF0AB1 | ||||
|       FDFF1FBDFAFF449FD7FF8B9FBDFFC8C8C9FFCBCBCBFFCBCBCBFFCBCBCBFFCBCB | ||||
|       CBFFCBCBCBFF6B7FABFF0000000000020600267BD4FF0088FDFF0C8CFBFF3489 | ||||
|       D9FF819ABDFFB6B6B7FFB8B8B8FFB8B8B8FFB8B8B8FFB8B8B8FFB8B8B8FFB8B8 | ||||
|       B8FFC0C0C0FF6E82ACFF00040A00000610001E79D8FF2380DEFF82A0C9FFE0E1 | ||||
|       E3FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9E9FFE9E9 | ||||
|       E9FFD2D2D8FF5E76A8FF00010100000001002555A8FFE7E8EEFFFFFFFFFFFFFF | ||||
|       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||||
|       FFFFA6A6BBFF435D9AFF0000000000000000233858004464A0FF6C82B2FF6B82 | ||||
|       B2FF6A81B2FF6980B2FF687FB0FF687FB0FF677EB1FF647FB0FF647DB0FF637D | ||||
|       AFFF5E77ACFF294E8FFF00000000A803E3000051C8000000000000000000F708 | ||||
|       0100EE1C0E0000313100005C7000626B9100535A9000001F1F0000070700FB10 | ||||
|       0100FE1F0000000000000000000086180000FF3F0000006AC9FF0091EEFF0092 | ||||
|       EEFF0084EAFF0084EAFF0092EEFF0084EAFF0084EAFF0080E2FF0068C00093CE | ||||
|       3400FFFF00000000000000000000C1E10000FFFF000000A7FEFFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFF5FDBFFFF0DACFFFF0081 | ||||
|       E2FFBB523E000000000000000000FC0F0000EB230D0000A7FEFFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFF5BDAFFFF0FB3 | ||||
|       FFFF0F78D300000000000000000000000000143C7300009BFEFFCDF1FFFFCDF1 | ||||
|       FFFF81DAFFFF19B6FFFF00A2EEFF00A4F0FF23B9FFFFBEECFFFFCDF1FFFF5FDB | ||||
|       FFFF0083E8FF0002060000000000000000001E539B00009BFEFFCDF1FFFFCDF1 | ||||
|       FFFF03AFFFFF009EE8FF6DD4FFFF6BD3FFFF009EE8FF17B5FFFFCDF1FFFFCDF1 | ||||
|       FFFF0095F4FF30518C000000000000000000225DA900009BFEFFCDF1FFFFCDF1 | ||||
|       FFFF009EE8FF03AFFFFFCDF1FFFFC7F0FFFF009EE8FF00A2EEFFCDF1FFFFCDF1 | ||||
|       FFFF0098F8FF4E65940000000000000000002667B700009BFEFFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFFC9EFFFFF1BB7FFFF009EE8FF57CEFFFFCDF1FFFFCDF1 | ||||
|       FFFF0095F4FF546C9C0000000000000000002871C5000098F8FFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFF21B8FFFF009EE8FF4BCAFFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF0095F2FF5C75A70000000000000000002874C9000095F4FFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFF00A0EAFF009EE8FFC9EFFFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF008DF0FF627DAD000000000002070C002877CE000095F2FFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF0082E6FF6580AF0000000000091624002679D1000092EEFFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFF009EE8FF009EE8FFCDF1FFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF0080E2FF6782B10001040800112A4200257BD6000083E8FFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFF009EE8FF009EE8FFCDF1FFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF007CDCFF6B83AF0010263D0015395D001E79D7000080E2FFCDF1FFFFCDF1 | ||||
|       FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1FFFFCDF1 | ||||
|       FFFF027CDCFF5974A6000A151F00071321002458AB002F6EC4FF0761C8FF005D | ||||
|       C6FF005DC6FF005DC6FF005DC6FF005DC6FF005CC2FF005CC2FF005BC2FF075F | ||||
|       C4FF2560B6FF435F9B000105090000000000143D6B00385C9600627CAC00627C | ||||
|       AB00617BAC00607AAC005F79AA005F79AA005E79AB005C79AA005C78AA005C78 | ||||
|       AA005A75AA003158930003080E00 | ||||
|     } | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -86,14 +86,16 @@ type | ||||
|   private | ||||
|     { private declarations } | ||||
|     fServerName: String; | ||||
|     fServer: TSimpleIPCServer; | ||||
|     fInputIPC: TSimpleIPCServer; | ||||
|     fOutputIPC: TSimpleIPCClient; | ||||
|     fServerTimer: TTimer; | ||||
|     fContext: LongInt; // used once when we are started on the command line with --context | ||||
|     procedure SendResponse(Response: DWord); | ||||
|     procedure ServerMessage(Sender: TObject); | ||||
|     procedure ReadCommandLineOptions; | ||||
|     procedure StartServer(ServerName: String); | ||||
|     procedure StopServer; | ||||
|     procedure OpenURL(const AURL: String; AContext: THelpContext=-1); | ||||
|     function  OpenURL(const AURL: String; AContext: THelpContext=-1): DWord; | ||||
|     procedure LateOpenURL(Url: PStringItem); | ||||
|     function ActivePage: TContentTab; | ||||
|     procedure RefreshState; | ||||
| @ -231,6 +233,23 @@ begin | ||||
|     end; | ||||
| end; | ||||
| 
 | ||||
| procedure THelpForm.SendResponse(Response: DWord); | ||||
| var | ||||
|   Stream: TMemoryStream; | ||||
| begin | ||||
|   fOutputIPC := TSimpleIPCClient.Create(nil); | ||||
|   fOutputIPC.ServerID := fServerName+'client'; | ||||
|   fOutputIPC.Active := True; | ||||
| 
 | ||||
|   Stream := TMemoryStream.Create; | ||||
|   Stream.WriteDWord(Response); | ||||
|   fOutputIPC.SendMessage(mtUnknown, Stream); | ||||
| 
 | ||||
|   if fOutputIPC.Active then | ||||
|     fOutputIPC.Active := False; | ||||
|   FreeAndNil(fOutputIPC); | ||||
| end; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| procedure THelpForm.ServerMessage(Sender: TObject); | ||||
| @ -239,30 +258,32 @@ var | ||||
|   FileReq:TFileRequest; | ||||
|   ConReq: TContextRequest; | ||||
|   Stream: TStream; | ||||
|   Res: LongWord; | ||||
| begin | ||||
|   if fServer.PeekMessage(5, True) then begin | ||||
|     Stream := fServer.MsgData; | ||||
|   if fInputIPC.PeekMessage(5, True) then begin | ||||
|     Stream := fInputIPC.MsgData; | ||||
|     Stream.Position := 0; | ||||
|     Stream.Read(FileReq, SizeOf(FileReq)); | ||||
|     case FileReq.RequestType of | ||||
|       rtFile    : begin | ||||
| 
 | ||||
|                     OpenURL('file://'+FileReq.FileName); | ||||
|                     Res := OpenURL('file://'+FileReq.FileName); | ||||
|                   end; | ||||
|       rtUrl     : begin | ||||
|                     Stream.Position := 0; | ||||
|                     Stream.Read(UrlReq, SizeOf(UrlReq)); | ||||
|                     if UrlReq.FileRequest.FileName <> '' then | ||||
|                       OpenUrl('file://'+UrlReq.FileRequest.FileName+'://'+UrlReq.Url) | ||||
|                       Res := OpenUrl('file://'+UrlReq.FileRequest.FileName+'://'+UrlReq.Url) | ||||
|                     else | ||||
|                       OpenURL(UrlReq.Url); | ||||
|                       Res := OpenURL(UrlReq.Url); | ||||
|                   end; | ||||
|       rtContext : begin | ||||
|                     Stream.Position := 0; | ||||
|                     Stream.Read(ConReq, SizeOf(ConReq)); | ||||
|                     OpenURL('file://'+FileReq.FileName, ConReq.HelpContext); | ||||
|                     Res := OpenURL('file://'+FileReq.FileName, ConReq.HelpContext); | ||||
|                   end; | ||||
|     end; | ||||
|     SendResponse(Res); | ||||
|     Self.SendToBack; | ||||
|     Self.BringToFront; | ||||
|   end; | ||||
| end; | ||||
| @ -314,27 +335,32 @@ end; | ||||
| 
 | ||||
| procedure THelpForm.StartServer(ServerName: String); | ||||
| begin | ||||
|   fServer := TSimpleIPCServer.Create(nil); | ||||
|   fServer.ServerID := ServerName; | ||||
|   fServer.Global := True; | ||||
|   fServer.Active := True; | ||||
|   fInputIPC := TSimpleIPCServer.Create(nil); | ||||
|   fInputIPC.ServerID := ServerName; | ||||
|   fInputIPC.Global := True; | ||||
|   fInputIPC.Active := True; | ||||
|   fServerTimer := TTimer.Create(nil); | ||||
|   fServerTimer.OnTimer := @ServerMessage; | ||||
|   fServerTimer.Interval := 200; | ||||
|   fServerTimer.Enabled := True; | ||||
|   ServerMessage(nil); | ||||
| 
 | ||||
| 
 | ||||
| end; | ||||
| 
 | ||||
| procedure THelpForm.StopServer; | ||||
| begin | ||||
|    if fServer = nil then exit; | ||||
|    if fInputIPC = nil then | ||||
|      exit; | ||||
| 
 | ||||
|    if fInputIPC.Active then | ||||
|      fInputIPC.Active := False; | ||||
| 
 | ||||
|    FreeAndNil(fInputIPC); | ||||
|    FreeAndNil(fServerTimer); | ||||
|    if fServer.Active then fServer.Active := False; | ||||
|    FreeAndNil(fServer); | ||||
|     | ||||
| end; | ||||
| 
 | ||||
| procedure THelpForm.OpenURL(const AURL: String; AContext: THelpContext); | ||||
| function THelpForm.OpenURL(const AURL: String; AContext: THelpContext): DWord; | ||||
|   function GetURLPrefix: String; | ||||
|   var | ||||
|     fPos: Integer; | ||||
| @ -349,18 +375,20 @@ var | ||||
|  fNewPage: TContentTab; | ||||
|  I: Integer; | ||||
| begin | ||||
| 
 | ||||
|  Result := Ord(srUnknown); | ||||
|  fURLPrefix := GetURLPrefix; | ||||
|  fContentProvider := GetContentProvider(fURLPrefix); | ||||
|   | ||||
|  if fContentProvider = nil then begin | ||||
|    ShowError('Cannot handle this type of content. "' + fURLPrefix + '"'); | ||||
|    ShowError('Cannot handle this type of content. "' + fURLPrefix + '" for url:'+LineEnding+AURL); | ||||
|    Result := Ord(srInvalidFile); | ||||
|    Exit; | ||||
|  end; | ||||
|  fRealContentProvider := fContentProvider.GetProperContentProvider(AURL); | ||||
|   | ||||
|  if fRealContentProvider = nil then begin | ||||
|    ShowError('Cannot handle this type of subcontent. "' + fURLPrefix + '"'); | ||||
|    ShowError('Cannot handle this type of subcontent. "' + fURLPrefix + '" for url:'+LineEnding+AURL); | ||||
|    Result := Ord(srInvalidFile); | ||||
|    Exit; | ||||
|  end; | ||||
| 
 | ||||
| @ -368,7 +396,12 @@ begin | ||||
|  for I := 0 to PageControl.PageCount-1 do begin | ||||
|    if fRealContentProvider.ClassName = TContentTab(PageControl.Pages[I]).ContentProvider.ClassName then begin | ||||
|      if TContentTab(PageControl.Pages[I]).ContentProvider.LoadURL(AURL, AContext) then | ||||
|      begin | ||||
|        PageControl.ActivePage := PageControl.Pages[I]; | ||||
|        Result := Ord(srSuccess); | ||||
|      end | ||||
|      else | ||||
|        Result := Ord(srInvalidFile); | ||||
|      Exit; | ||||
|    end; | ||||
|  end; | ||||
| @ -381,7 +414,12 @@ begin | ||||
|  ShowOnTop; | ||||
|   | ||||
|  if fNewPage.ContentProvider.LoadURL(AURL, AContext) then | ||||
|  begin | ||||
|    PageControl.ActivePage := fNewPage; | ||||
|    Result := Ord(srSuccess); | ||||
|  end | ||||
|  else | ||||
|    Result := Ord(srInvalidFile); | ||||
| end; | ||||
| 
 | ||||
| procedure THelpForm.LateOpenURL ( Url: PStringItem ) ; | ||||
|  | ||||
| @ -9,7 +9,9 @@ uses | ||||
| 
 | ||||
| type | ||||
|   TRequestType = (rtFile, rtUrl, rtContext); | ||||
|    | ||||
| 
 | ||||
|   TLHelpResponse = (srNoAnswer, srUnknown, srSuccess, srInvalidFile, srInvalidURL, srInvalidContext); | ||||
| 
 | ||||
|   TFileRequest = record | ||||
|     RequestType: TRequestType; | ||||
|     FileName: array[0..512] of char; | ||||
| @ -22,19 +24,29 @@ type | ||||
|     FileRequest: TFileRequest; | ||||
|     HelpContext: THelpContext; | ||||
|   end; | ||||
| 
 | ||||
|   TProcedureOfObject = procedure of object; | ||||
|    | ||||
|   { TLHelpConnection } | ||||
| 
 | ||||
|   TLHelpConnection = class(TObject) | ||||
|   private | ||||
|     fClient: TSimpleIPCClient; | ||||
|     FProcessWhileWaiting: TProcedureOfObject; | ||||
|     fServerOut: TSimpleIPCClient; // sends messages to lhelp | ||||
|     fServerIn:  TSimpleIPCServer; // recieves messages from lhelp | ||||
|     function  WaitForMsgResponse: TLHelpResponse; | ||||
|     function  SendMessage(Stream: TStream): TLHelpResponse; | ||||
|   public | ||||
|     constructor Create; | ||||
|     destructor Destroy; override; | ||||
|     function ServerRunning: Boolean; | ||||
|     function StartHelpServer(NameForServer: String; ServerEXE: String = ''): Boolean; | ||||
|     procedure OpenURL(HelpFileName: String; Url: String); | ||||
|     procedure OpenContext(HelpFileName: String; Context: THelpContext); | ||||
|     procedure OpenFile(HelpFileName: String); | ||||
| 
 | ||||
|     function OpenURL(HelpFileName: String; Url: String): TLHelpResponse; | ||||
|     function OpenContext(HelpFileName: String; Context: THelpContext): TLHelpResponse; | ||||
|     function OpenFile(HelpFileName: String): TLHelpResponse; | ||||
| 
 | ||||
|     property ProcessWhileWaiting: TProcedureOfObject read FProcessWhileWaiting write FProcessWhileWaiting; | ||||
|   end; | ||||
|    | ||||
| 
 | ||||
| @ -42,45 +54,87 @@ implementation | ||||
| 
 | ||||
| { TLHelpConnection } | ||||
| 
 | ||||
| function TLHelpConnection.WaitForMsgResponse: TLHelpResponse; | ||||
| var | ||||
|   I: Integer; | ||||
|   Stream: TStream; | ||||
|   WaitTime: Integer = 5000; | ||||
| begin | ||||
|   Result := srNoAnswer; | ||||
|   while WaitTime >= 0 do | ||||
|   begin | ||||
|     Dec(WaitTime, 50); | ||||
|     if fServerIn.PeekMessage(50, True) then | ||||
|     begin | ||||
|       Stream := fServerIn.MsgData; | ||||
|       Stream.Position:=0; | ||||
|       Result := TLHelpResponse(Stream.ReadDWord); | ||||
|       Exit; | ||||
|     end; | ||||
|     if Assigned(FProcessWhileWaiting) then FProcessWhileWaiting(); | ||||
|   end; | ||||
| end; | ||||
| 
 | ||||
| function TLHelpConnection.SendMessage(Stream: TStream): TLHelpResponse; | ||||
| begin | ||||
|   fServerOut.SendMessage(mtUnknown, Stream); | ||||
|   Result := WaitForMsgResponse; | ||||
| end; | ||||
| 
 | ||||
| constructor TLHelpConnection.Create; | ||||
| begin | ||||
|   fClient := TSimpleIPCClient.Create(nil); | ||||
|   fServerOut := TSimpleIPCClient.Create(nil); | ||||
|   fServerIn  := TSimpleIPCServer.Create(nil); | ||||
| end; | ||||
| 
 | ||||
| destructor TLHelpConnection.Destroy; | ||||
| begin | ||||
|   if fCLient.Active then fClient.Active:=False; | ||||
|   fClient.Free; | ||||
|   if fServerOut.Active then | ||||
|     fServerOut.Active:=False; | ||||
|   if fServerIn.Active then | ||||
|     fServerIn.Active:=False; | ||||
|   fServerOut.Free; | ||||
|   fServerIn.Free; | ||||
|   inherited Destroy; | ||||
| 
 | ||||
| end; | ||||
| 
 | ||||
| function TLHelpConnection.ServerRunning: Boolean; | ||||
| begin | ||||
|   Result := (fServerOut<>nil) and (fServerOut.Active); | ||||
| end; | ||||
| 
 | ||||
| function TLHelpConnection.StartHelpServer(NameForServer: String; | ||||
|   ServerEXE: String): Boolean; | ||||
| var | ||||
|   X: Integer; | ||||
| begin | ||||
|   Result := False; | ||||
|   fClient.Active := False; | ||||
|   fClient.ServerID := NameForServer; | ||||
|   if not fClient.ServerRunning then begin | ||||
| 
 | ||||
|   fServerIn.Active := False; | ||||
|   fServerIn.ServerID := NameForServer+'client'; | ||||
|   fServerIn.Global := True; | ||||
|   fServerIn.Active := True; | ||||
| 
 | ||||
|   fServerOut.Active := False; | ||||
|   fServerOut.ServerID := NameForServer; | ||||
|   if not fServerOut.ServerRunning then begin | ||||
|     with TProcessUTF8.Create(nil) do begin | ||||
|       CommandLine := ServerExe + ' --ipcname ' + NameForServer; | ||||
|       Execute; | ||||
|     end; | ||||
|     // give the server some time to get started | ||||
|     for X := 0 to 40 do begin | ||||
|       if not fClient.ServerRunning then Sleep(200); | ||||
|       if not fServerOut.ServerRunning then Sleep(200); | ||||
|     end; | ||||
|   end; | ||||
|   if fClient.ServerRunning then begin | ||||
|     fClient.Active := True; | ||||
|   if fServerOut.ServerRunning then begin | ||||
|     fServerOut.Active := True; | ||||
|     Result := True; | ||||
|   end; | ||||
| end; | ||||
| 
 | ||||
| procedure TLHelpConnection.OpenURL(HelpFileName: String; Url: String); | ||||
| function TLHelpConnection.OpenURL(HelpFileName: String; Url: String): TLHelpResponse; | ||||
| var | ||||
| UrlRequest: TUrlRequest; | ||||
| Stream: TMemoryStream; | ||||
| @ -90,12 +144,15 @@ begin | ||||
|   UrlRequest.FileRequest.RequestType := rtURL; | ||||
|   UrlRequest.Url := Url+#0; | ||||
|   Stream.Write(UrlRequest,SizeOf(UrlRequest)); | ||||
|   fClient.SendMessage(mtUnknown, Stream); | ||||
|   Result := SendMessage(Stream); | ||||
| 
 | ||||
|   // Do I need to free the stream?? the example doesn't | ||||
| 
 | ||||
| 
 | ||||
| end; | ||||
| 
 | ||||
| procedure TLHelpConnection.OpenContext(HelpFileName: String; | ||||
|   Context: THelpContext); | ||||
| function TLHelpConnection.OpenContext(HelpFileName: String; | ||||
|   Context: THelpContext) : TLHelpResponse; | ||||
| var | ||||
| ContextRequest: TContextRequest; | ||||
| Stream: TMemoryStream; | ||||
| @ -105,11 +162,11 @@ begin | ||||
|   ContextRequest.FileRequest.RequestType := rtContext; | ||||
|   ContextRequest.HelpContext := Context; | ||||
|   Stream.Write(ContextRequest, SizeOf(ContextRequest)); | ||||
|   fClient.SendMessage(mtUnknown, Stream); | ||||
|   Result := SendMessage(Stream); | ||||
|   // Do I need to free the stream?? the example doesn't | ||||
| end; | ||||
| 
 | ||||
| procedure TLHelpConnection.OpenFile(HelpFileName: String); | ||||
| function TLHelpConnection.OpenFile(HelpFileName: String): TLHelpResponse; | ||||
| var | ||||
| FileRequest : TFileRequest; | ||||
| Stream: TMemoryStream; | ||||
| @ -118,7 +175,7 @@ begin | ||||
|   FileRequest.RequestType := rtFile; | ||||
|   FileRequest.FileName := HelpFileName+#0; | ||||
|   Stream.Write(FileRequest, SizeOf(FileRequest)); | ||||
|   fClient.SendMessage(mtUnknown, Stream); | ||||
|   Result := SendMessage(Stream); | ||||
|   // Do I need to free the stream?? the example doesn't | ||||
| end; | ||||
| 
 | ||||
|  | ||||
| @ -1,15 +1,12 @@ | ||||
| <?xml version="1.0"?> | ||||
| <CONFIG> | ||||
|   <Package Version="2"> | ||||
|   <Package Version="3"> | ||||
|     <Name Value="ChmHelpPkg"/> | ||||
|     <CompilerOptions> | ||||
|       <Version Value="5"/> | ||||
|       <Version Value="8"/> | ||||
|       <SearchPaths> | ||||
|         <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> | ||||
|       </SearchPaths> | ||||
|       <CodeGeneration> | ||||
|         <Generate Value="Faster"/> | ||||
|       </CodeGeneration> | ||||
|       <Other> | ||||
|         <CompilerPath Value="$(CompPath)"/> | ||||
|       </Other> | ||||
| @ -23,20 +20,23 @@ | ||||
|       </Item1> | ||||
|     </Files> | ||||
|     <Type Value="DesignTime"/> | ||||
|     <RequiredPkgs Count="4"> | ||||
|     <RequiredPkgs Count="5"> | ||||
|       <Item1> | ||||
|         <PackageName Value="CodeTools"/> | ||||
|         <PackageName Value="LCL"/> | ||||
|       </Item1> | ||||
|       <Item2> | ||||
|         <PackageName Value="lhelpcontrolpkg"/> | ||||
|         <PackageName Value="CodeTools"/> | ||||
|       </Item2> | ||||
|       <Item3> | ||||
|         <PackageName Value="IDEIntf"/> | ||||
|         <PackageName Value="lhelpcontrolpkg"/> | ||||
|       </Item3> | ||||
|       <Item4> | ||||
|         <PackageName Value="IDEIntf"/> | ||||
|       </Item4> | ||||
|       <Item5> | ||||
|         <PackageName Value="FCL"/> | ||||
|         <MinVersion Major="1" Valid="True"/> | ||||
|       </Item4> | ||||
|       </Item5> | ||||
|     </RequiredPkgs> | ||||
|     <UsageOptions> | ||||
|       <UnitPath Value="$(PkgOutDir)/"/> | ||||
|  | ||||
| @ -24,7 +24,7 @@ interface | ||||
| 
 | ||||
| uses | ||||
|   Classes, SysUtils, FileUtil, LazHelpIntf, HelpIntfs, LazConfigStorage, | ||||
|   PropEdits, LHelpControl; | ||||
|   PropEdits, LHelpControl, Controls; | ||||
|    | ||||
| type | ||||
|    | ||||
| @ -36,10 +36,13 @@ type | ||||
|     fHelpLabel: String; | ||||
|     fHelpConnection: TLHelpConnection; | ||||
|     fChmsFilePath: String; | ||||
|     function GetHelpEXE: String; | ||||
|   protected | ||||
|     function GetFileNameAndURL(RawUrl: String; out FileName: String; out URL: String): Boolean; | ||||
|     procedure SetHelpEXE(AValue: String); | ||||
|     procedure SetHelpLabel(AValue: String); | ||||
|     function CheckBuildLHelp: Integer; // modal result | ||||
|     function GetLazBuildEXE(out ALazBuild: String): Boolean; | ||||
|   public | ||||
|     constructor Create(TheOwner: TComponent); override; | ||||
|     destructor Destroy; override; | ||||
| @ -53,7 +56,7 @@ type | ||||
|     procedure Save(Storage: TConfigStorage); override; | ||||
|     function GetLocalizedName: string; override; | ||||
|   published | ||||
|     property HelpEXE: String read fHelpEXE write SetHelpEXE; | ||||
|     property HelpEXE: String read GetHelpEXE write SetHelpEXE; | ||||
|     property HelpLabel: String read fHelpLabel write SetHelpLabel; | ||||
|     property HelpFilesPath: String read fChmsFilePath write fChmsFilePath; | ||||
| 
 | ||||
| @ -62,9 +65,18 @@ type | ||||
|   procedure Register; | ||||
| 
 | ||||
| implementation | ||||
| uses Process, MacroIntf, InterfaceBase, Forms, Dialogs, HelpFPDoc; | ||||
| 
 | ||||
| { TChmHelpViewer } | ||||
| 
 | ||||
| function TChmHelpViewer.GetHelpEXE: String; | ||||
| begin | ||||
|   if fHelpExe <> '' then | ||||
|     Exit(fHelpExe); | ||||
|   Result := '$(LazarusDir)/components/chmhelp/lhelp/lhelp$(ExeExt)'; | ||||
|   if not IDEMacros.SubstituteMacros(Result) then | ||||
|     Exit(''); | ||||
| end; | ||||
| 
 | ||||
| function TChmHelpViewer.GetFileNameAndURL(RawUrl:String; out FileName: String; out URL: String | ||||
|   ): Boolean; | ||||
| @ -90,11 +102,82 @@ begin | ||||
|  fHelpLabel := AValue; | ||||
| end; | ||||
| 
 | ||||
| function TChmHelpViewer.CheckBuildLHelp: Integer; | ||||
| var | ||||
|   Proc: TProcess; | ||||
|   Lazbuild: String; | ||||
|   LHelpProject: String; | ||||
|   WS: String; | ||||
| begin | ||||
|   Result := mrCancel; | ||||
| 
 | ||||
|   if FileExistsUTF8(HelpExe) = True then | ||||
|     Exit(mrOK); | ||||
| 
 | ||||
|   if not GetLazBuildEXE(Lazbuild) then | ||||
|     Exit; | ||||
| 
 | ||||
|   LHelpProject := '$(LazarusDir)/components/chmhelp/lhelp/lhelp.lpi'; | ||||
| 
 | ||||
|   if not (IDEMacros.SubstituteMacros(LHelpProject) | ||||
|           and FileExistsUTF8(LHelpProject)) | ||||
|   then | ||||
|     Exit; | ||||
| 
 | ||||
|   WS := ' --ws='+LCLPlatformDirNames[WidgetSet.LCLPlatform]+' '; | ||||
| 
 | ||||
|   Result := MessageDlg('The help viewer is not compiled yet. Try to compile it now?', mtConfirmation, mbYesNo ,0); | ||||
|   if Result <> mrYes then | ||||
|     Exit; | ||||
| 
 | ||||
|   Proc := TProcess.Create(nil); | ||||
|   Proc.CommandLine := Lazbuild + WS + LHelpProject; | ||||
|   Proc.Options := []; | ||||
|   Proc.Execute; | ||||
| 
 | ||||
|   while Proc.Running do begin | ||||
|     Application.HandleMessage; | ||||
|   end; | ||||
| 
 | ||||
|   if Proc.ExitStatus = 0 then | ||||
|     Result := mrOK; | ||||
|   Proc.Free; | ||||
| 
 | ||||
|   if Result = mrOK then | ||||
| end; | ||||
| 
 | ||||
| function TChmHelpViewer.GetLazBuildEXE(out ALazBuild: String): Boolean; | ||||
| var | ||||
|   LazBuildMacro: String; | ||||
| begin | ||||
|    Result := False; | ||||
|    LazBuildMacro:= '$(LazarusDir)/$MakeExe(lazbuild)'; | ||||
|    Result := IDEMacros.SubstituteMacros(LazBuildMacro) | ||||
|              and FileExistsUTF8(LazBuildMacro); | ||||
|    if Result then | ||||
|      ALazBuild := LazBuildMacro; | ||||
| end; | ||||
| 
 | ||||
| constructor TChmHelpViewer.Create(TheOwner: TComponent); | ||||
| var | ||||
|   i: Integer; | ||||
|   DB: TFPDocHTMLHelpDatabase; | ||||
|   BaseURL: THelpBaseURLObject; | ||||
| begin | ||||
|   inherited Create(TheOwner); | ||||
|   fHelpConnection := TLHelpConnection.Create; | ||||
|   fHelpConnection.ProcessWhileWaiting:=@Application.ProcessMessages; | ||||
|   AddSupportedMimeType('text/html'); | ||||
|   for i := 0 to HelpDatabases.Count-1 do begin | ||||
|     DB := TFPDocHTMLHelpDatabase(HelpDatabases.Items[i]); | ||||
|     BaseURL := THelpBaseURLObject(DB.BasePathObject); | ||||
|     if (DB.ID = 'RTLUnits') and (BaseURL.BaseURL = '') then | ||||
|       BaseURL.BaseURL := 'rtl.chm://' | ||||
|     else if (DB.ID = 'FCLUnits') and (BaseURL.BaseURL = '') then | ||||
|       BaseURL.BaseURL := 'fcl.chm://' | ||||
|     else if (DB.ID = 'LCLUnits') and (BaseURL.BaseURL = '') then | ||||
|       BaseURL.BaseURL := 'lcl.chm://'; | ||||
|   end; | ||||
| end; | ||||
| 
 | ||||
| destructor TChmHelpViewer.Destroy; | ||||
| @ -118,20 +201,52 @@ function TChmHelpViewer.ShowNode(Node: THelpNode; var ErrMsg: string | ||||
| var | ||||
| FileName: String; | ||||
| Url: String; | ||||
| Res: TLHelpResponse; | ||||
| DocsDir: String; | ||||
| begin | ||||
|   Result:=shrNone; | ||||
|   if not FileExistsUTF8(fHelpEXE) then begin | ||||
|     ErrMsg := 'The program "' + fHelpEXE + '" doesn''t seem to exist!'; | ||||
|   if CheckBuildLHelp <> mrOK then begin | ||||
|     ErrMsg := 'The program "' + HelpEXE + '" doesn''t seem to exist'+LineEnding+ | ||||
|               'or could not be built!'; | ||||
|     Exit(shrViewerNotFound); | ||||
|   end; | ||||
|   if not GetFileNameAndURL(Node.Url, FileName, Url) then begin | ||||
|     ErrMsg := 'Couldn''t read the file/URL correctly'; | ||||
|     Exit(shrDatabaseNotFound); | ||||
|   end; | ||||
|   FileName := fChmsFilePath+FileName; | ||||
|   fHelpConnection.StartHelpServer(fHelpLabel, fHelpExe); | ||||
|   fHelpConnection.OpenURL(FileName, Url); | ||||
|   Result := shrSuccess; | ||||
| 
 | ||||
|   if HelpFilesPath = '' then | ||||
|   begin | ||||
|     DocsDir := '$(LazarusDir)/docs/html/'; | ||||
|     IDEMacros.SubstituteMacros(DocsDir); | ||||
|     if not FileExistsUTF8(DocsDir+FileName) then | ||||
|     begin | ||||
|       Result := shrDatabaseNotFound; | ||||
|       ErrMsg := FileName +' not found. Please put the chm help files in '+ LineEnding | ||||
|                          +DocsDir+  LineEnding | ||||
|                          +' or set the path to lcl.chm rtl.chm fcl.chm with "HelpFilesPath" in ' | ||||
|                          +' Environment Options -> Help -> Help Options ->'+LineEnding | ||||
|                          +' under HelpViewers - CHMHelpViewer'; | ||||
|       Exit; | ||||
|     end; | ||||
| 
 | ||||
|   end | ||||
|   else | ||||
|     DocsDir := fChmsFilePath; | ||||
| 
 | ||||
|   FileName := DocsDir+FileName; | ||||
| 
 | ||||
|   fHelpConnection.StartHelpServer(fHelpLabel, HelpExe); | ||||
|   Res := fHelpConnection.OpenURL(FileName, Url); | ||||
| 
 | ||||
|   case Res of | ||||
|     srSuccess: Result := shrSuccess; | ||||
|     srNoAnswer: Result := shrSuccess; | ||||
|   else | ||||
|     Result := shrNone; | ||||
|     ErrMsg := 'Unknown error showing '+URL; | ||||
|   end; | ||||
| 
 | ||||
|   //WriteLn('LOADING URL = ', Node.URL); | ||||
| end; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 andrew
						andrew