fpspreadsheet: the worksheetgrid can be edited again. Beginning to add some cell formatting to the demo.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3020 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2014-05-07 22:44:00 +00:00
parent f0928db9f5
commit 6626099d71
7 changed files with 1346 additions and 553 deletions

View File

@ -108,7 +108,7 @@
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="29">
<Units Count="36">
<Unit0>
<Filename Value="fpsgrid.lpr"/>
<IsPartOfProject Value="True"/>
@ -117,7 +117,7 @@
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="10" Y="7"/>
<UsageCount Value="139"/>
<UsageCount Value="147"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
@ -129,31 +129,33 @@
<UnitName Value="mainform"/>
<EditorIndex Value="1"/>
<WindowIndex Value="0"/>
<TopLine Value="140"/>
<CursorPos X="62" Y="157"/>
<UsageCount Value="139"/>
<TopLine Value="177"/>
<CursorPos X="40" Y="187"/>
<UsageCount Value="147"/>
<Bookmarks Count="1">
<Item0 X="17" Y="292" ID="1"/>
</Bookmarks>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit1>
<Unit2>
<Filename Value="..\..\fpspreadsheet.pas"/>
<UnitName Value="fpspreadsheet"/>
<EditorIndex Value="4"/>
<EditorIndex Value="11"/>
<WindowIndex Value="0"/>
<TopLine Value="297"/>
<CursorPos X="57" Y="305"/>
<UsageCount Value="66"/>
<TopLine Value="351"/>
<CursorPos X="15" Y="368"/>
<UsageCount Value="70"/>
<Loaded Value="True"/>
</Unit2>
<Unit3>
<Filename Value="..\..\fpspreadsheetgrid.pas"/>
<UnitName Value="fpspreadsheetgrid"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="3"/>
<EditorIndex Value="7"/>
<WindowIndex Value="0"/>
<TopLine Value="857"/>
<CursorPos X="27" Y="879"/>
<UsageCount Value="67"/>
<TopLine Value="524"/>
<CursorPos X="3" Y="547"/>
<UsageCount Value="71"/>
<Loaded Value="True"/>
</Unit3>
<Unit4>
@ -162,7 +164,7 @@
<WindowIndex Value="0"/>
<TopLine Value="25"/>
<CursorPos X="4" Y="44"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit4>
<Unit5>
<Filename Value="c:\lazarus27\fpc\2.2.4\source\packages\winunits-base\src\activex.pp"/>
@ -170,7 +172,7 @@
<WindowIndex Value="0"/>
<TopLine Value="49"/>
<CursorPos X="10" Y="24"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit5>
<Unit6>
<Filename Value="c:\lazarus27\fpc\2.2.4\source\packages\fcl-base\src\avl_tree.pp"/>
@ -178,7 +180,7 @@
<WindowIndex Value="0"/>
<TopLine Value="37"/>
<CursorPos X="14" Y="83"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit6>
<Unit7>
<Filename Value="c:\Lazarus\lcl\grids.pas"/>
@ -186,14 +188,14 @@
<WindowIndex Value="0"/>
<TopLine Value="1516"/>
<CursorPos X="28" Y="1534"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit7>
<Unit8>
<Filename Value="c:\Lazarus\lcl\include\customform.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="2021"/>
<CursorPos X="1" Y="2041"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit8>
<Unit9>
<Filename Value="..\..\fpsallformats.pas"/>
@ -201,7 +203,7 @@
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="62" Y="13"/>
<UsageCount Value="12"/>
<UsageCount Value="11"/>
</Unit9>
<Unit10>
<Filename Value="..\..\wikitable.pas"/>
@ -209,7 +211,7 @@
<WindowIndex Value="0"/>
<TopLine Value="48"/>
<CursorPos X="41" Y="60"/>
<UsageCount Value="18"/>
<UsageCount Value="17"/>
</Unit10>
<Unit11>
<Filename Value="..\..\fpsopendocument.pas"/>
@ -217,27 +219,26 @@
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="1" Y="1"/>
<UsageCount Value="14"/>
<UsageCount Value="13"/>
</Unit11>
<Unit12>
<Filename Value="d:\lazarus-svn\lcl\grids.pas"/>
<UnitName Value="Grids"/>
<EditorIndex Value="8"/>
<WindowIndex Value="0"/>
<TopLine Value="3915"/>
<CursorPos X="1" Y="3924"/>
<UsageCount Value="29"/>
<Bookmarks Count="1">
<Item0 X="7" Y="3905" ID="1"/>
</Bookmarks>
<TopLine Value="3429"/>
<CursorPos X="1" Y="3434"/>
<UsageCount Value="33"/>
<Loaded Value="True"/>
</Unit12>
<Unit13>
<Filename Value="..\..\fpsutils.pas"/>
<UnitName Value="fpsutils"/>
<EditorIndex Value="2"/>
<EditorIndex Value="6"/>
<WindowIndex Value="0"/>
<TopLine Value="35"/>
<CursorPos X="1" Y="62"/>
<UsageCount Value="42"/>
<UsageCount Value="46"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
@ -245,7 +246,7 @@
<WindowIndex Value="0"/>
<TopLine Value="1212"/>
<CursorPos X="3" Y="1218"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit14>
<Unit15>
<Filename Value="d:\lazarus-svn\lcl\graphics.pp"/>
@ -253,68 +254,71 @@
<WindowIndex Value="0"/>
<TopLine Value="649"/>
<CursorPos X="28" Y="675"/>
<UsageCount Value="33"/>
<UsageCount Value="32"/>
</Unit15>
<Unit16>
<Filename Value="d:\lazarus-svn\fpc\2.6.2\source\rtl\objpas\classes\classesh.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="248"/>
<CursorPos X="22" Y="263"/>
<UsageCount Value="18"/>
<UsageCount Value="17"/>
</Unit16>
<Unit17>
<Filename Value="..\..\xlsbiff8.pas"/>
<UnitName Value="xlsbiff8"/>
<EditorIndex Value="6"/>
<IsVisibleTab Value="True"/>
<EditorIndex Value="13"/>
<WindowIndex Value="0"/>
<TopLine Value="1174"/>
<CursorPos X="1" Y="1198"/>
<UsageCount Value="41"/>
<TopLine Value="1881"/>
<CursorPos X="24" Y="1898"/>
<UsageCount Value="45"/>
<Loaded Value="True"/>
</Unit17>
<Unit18>
<Filename Value="d:\lazarus-svn\lcl\comctrls.pp"/>
<UnitName Value="ComCtrls"/>
<EditorIndex Value="5"/>
<WindowIndex Value="0"/>
<TopLine Value="537"/>
<CursorPos X="23" Y="567"/>
<UsageCount Value="6"/>
<TopLine Value="1091"/>
<CursorPos X="12" Y="1122"/>
<UsageCount Value="13"/>
<Loaded Value="True"/>
</Unit18>
<Unit19>
<Filename Value="d:\lazarus-svn\lcl\include\wincontrol.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="7344"/>
<CursorPos X="30" Y="7349"/>
<UsageCount Value="12"/>
<UsageCount Value="11"/>
</Unit19>
<Unit20>
<Filename Value="..\..\xlscommon.pas"/>
<UnitName Value="xlscommon"/>
<EditorIndex Value="5"/>
<EditorIndex Value="12"/>
<WindowIndex Value="0"/>
<TopLine Value="1530"/>
<CursorPos X="47" Y="1554"/>
<UsageCount Value="37"/>
<UsageCount Value="41"/>
<Loaded Value="True"/>
</Unit20>
<Unit21>
<Filename Value="..\..\xlsbiff5.pas"/>
<UnitName Value="xlsbiff5"/>
<EditorIndex Value="7"/>
<EditorIndex Value="15"/>
<WindowIndex Value="0"/>
<TopLine Value="1319"/>
<CursorPos X="3" Y="1325"/>
<UsageCount Value="24"/>
<UsageCount Value="28"/>
<Loaded Value="True"/>
</Unit21>
<Unit22>
<Filename Value="..\..\xlsbiff2.pas"/>
<UnitName Value="xlsbiff2"/>
<EditorIndex Value="8"/>
<EditorIndex Value="16"/>
<WindowIndex Value="0"/>
<TopLine Value="399"/>
<CursorPos X="16" Y="406"/>
<UsageCount Value="25"/>
<UsageCount Value="29"/>
<Loaded Value="True"/>
</Unit22>
<Unit23>
@ -323,7 +327,7 @@
<WindowIndex Value="0"/>
<TopLine Value="841"/>
<CursorPos X="19" Y="852"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit23>
<Unit24>
<Filename Value="d:\lazarus-svn\fpc\2.6.2\source\packages\fcl-image\src\fpcanvas.pp"/>
@ -331,7 +335,7 @@
<WindowIndex Value="0"/>
<TopLine Value="111"/>
<CursorPos X="3" Y="112"/>
<UsageCount Value="20"/>
<UsageCount Value="19"/>
</Unit24>
<Unit25>
<Filename Value="d:\lazarus-svn\fpc\2.6.2\source\packages\fcl-image\src\fpimage.pp"/>
@ -339,14 +343,14 @@
<WindowIndex Value="0"/>
<TopLine Value="74"/>
<CursorPos X="3" Y="93"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit25>
<Unit26>
<Filename Value="d:\lazarus-svn\fpc\2.6.2\source\rtl\objpas\classes\lists.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="141"/>
<CursorPos X="3" Y="143"/>
<UsageCount Value="16"/>
<UsageCount Value="15"/>
</Unit26>
<Unit27>
<Filename Value="d:\Prog_Delphi\common\units\XLS.pas"/>
@ -354,136 +358,203 @@
<WindowIndex Value="0"/>
<TopLine Value="114"/>
<CursorPos X="42" Y="152"/>
<UsageCount Value="16"/>
<UsageCount Value="15"/>
</Unit27>
<Unit28>
<Filename Value="d:\lazarus-svn\lcl\include\pen.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="272"/>
<CursorPos X="3" Y="286"/>
<UsageCount Value="16"/>
<UsageCount Value="15"/>
</Unit28>
<Unit29>
<Filename Value="d:\lazarus-svn\lcl\controls.pp"/>
<UnitName Value="Controls"/>
<EditorIndex Value="9"/>
<WindowIndex Value="0"/>
<TopLine Value="1480"/>
<CursorPos X="15" Y="1498"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit29>
<Unit30>
<Filename Value="d:\lazarus-svn\lcl\include\control.inc"/>
<EditorIndex Value="10"/>
<WindowIndex Value="0"/>
<TopLine Value="4129"/>
<CursorPos X="1" Y="4161"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit30>
<Unit31>
<Filename Value="..\..\fpspreadsheetchart.pas"/>
<UnitName Value="fpspreadsheetchart"/>
<WindowIndex Value="0"/>
<TopLine Value="170"/>
<CursorPos X="37" Y="204"/>
<UsageCount Value="10"/>
</Unit31>
<Unit32>
<Filename Value="d:\lazarus-svn\components\lazutils\lazutf8.pas"/>
<UnitName Value="LazUTF8"/>
<EditorIndex Value="14"/>
<WindowIndex Value="0"/>
<TopLine Value="3180"/>
<CursorPos X="1" Y="3212"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit32>
<Unit33>
<Filename Value="d:\lazarus-svn\lcl\colorbox.pas"/>
<UnitName Value="ColorBox"/>
<EditorIndex Value="4"/>
<WindowIndex Value="0"/>
<TopLine Value="13"/>
<CursorPos X="1" Y="1"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit33>
<Unit34>
<Filename Value="d:\lazarus-svn\lcl\dialogs.pp"/>
<UnitName Value="Dialogs"/>
<EditorIndex Value="3"/>
<WindowIndex Value="0"/>
<TopLine Value="222"/>
<CursorPos X="3" Y="253"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit34>
<Unit35>
<Filename Value="d:\lazarus-svn\lcl\forms.pp"/>
<UnitName Value="Forms"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/>
<TopLine Value="932"/>
<CursorPos X="3" Y="939"/>
<UsageCount Value="11"/>
<Loaded Value="True"/>
</Unit35>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="..\..\xlsbiff8.pas"/>
<Caret Line="1578" Column="26" TopLine="1568"/>
<Filename Value="mainform.pas"/>
<Caret Line="263" Column="12" TopLine="249"/>
</Position1>
<Position2>
<Filename Value="..\..\fpspreadsheetgrid.pas"/>
<Caret Line="438" Column="33" TopLine="419"/>
<Filename Value="mainform.pas"/>
<Caret Line="264" Column="12" TopLine="250"/>
</Position2>
<Position3>
<Filename Value="..\..\fpspreadsheetgrid.pas"/>
<Caret Line="892" Column="57" TopLine="876"/>
<Filename Value="mainform.pas"/>
<Caret Line="294" Column="38" TopLine="265"/>
</Position3>
<Position4>
<Filename Value="..\..\fpspreadsheetgrid.pas"/>
<Caret Line="898" Column="23" TopLine="886"/>
<Filename Value="mainform.pas"/>
<Caret Line="86" Column="15" TopLine="86"/>
</Position4>
<Position5>
<Filename Value="mainform.pas"/>
<Caret Line="161" Column="1" TopLine="145"/>
<Caret Line="279" Column="23" TopLine="266"/>
</Position5>
<Position6>
<Filename Value="mainform.pas"/>
<Caret Line="158" Column="46" TopLine="140"/>
<Caret Line="203" Column="29" TopLine="185"/>
</Position6>
<Position7>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="272" Column="15" TopLine="256"/>
<Filename Value="mainform.pas"/>
<Caret Line="86" Column="15" TopLine="68"/>
</Position7>
<Position8>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
<Filename Value="mainform.pas"/>
<Caret Line="297" Column="81" TopLine="266"/>
</Position8>
<Position9>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="31" Column="8" TopLine="4"/>
<Filename Value="mainform.pas"/>
<Caret Line="280" Column="41" TopLine="172"/>
</Position9>
<Position10>
<Filename Value="..\..\xlsbiff2.pas"/>
<Caret Line="400" Column="48" TopLine="400"/>
<Filename Value="mainform.pas"/>
<Caret Line="193" Column="1" TopLine="172"/>
</Position10>
<Position11>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="997" Column="54" TopLine="997"/>
<Filename Value="mainform.pas"/>
<Caret Line="194" Column="1" TopLine="172"/>
</Position11>
<Position12>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1004" Column="43" TopLine="997"/>
<Filename Value="mainform.pas"/>
<Caret Line="195" Column="1" TopLine="172"/>
</Position12>
<Position13>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1010" Column="50" TopLine="997"/>
<Filename Value="mainform.pas"/>
<Caret Line="196" Column="1" TopLine="172"/>
</Position13>
<Position14>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1015" Column="17" TopLine="997"/>
<Filename Value="mainform.pas"/>
<Caret Line="197" Column="1" TopLine="172"/>
</Position14>
<Position15>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1016" Column="17" TopLine="997"/>
<Filename Value="mainform.pas"/>
<Caret Line="198" Column="1" TopLine="172"/>
</Position15>
<Position16>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1017" Column="17" TopLine="997"/>
<Filename Value="mainform.pas"/>
<Caret Line="201" Column="1" TopLine="172"/>
</Position16>
<Position17>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1018" Column="17" TopLine="997"/>
<Filename Value="mainform.pas"/>
<Caret Line="202" Column="1" TopLine="172"/>
</Position17>
<Position18>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1021" Column="39" TopLine="997"/>
<Filename Value="mainform.pas"/>
<Caret Line="209" Column="5" TopLine="173"/>
</Position18>
<Position19>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1023" Column="39" TopLine="997"/>
<Filename Value="mainform.pas"/>
<Caret Line="193" Column="1" TopLine="173"/>
</Position19>
<Position20>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1025" Column="39" TopLine="998"/>
<Filename Value="mainform.pas"/>
<Caret Line="194" Column="1" TopLine="173"/>
</Position20>
<Position21>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1027" Column="39" TopLine="1000"/>
<Filename Value="mainform.pas"/>
<Caret Line="195" Column="1" TopLine="173"/>
</Position21>
<Position22>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1346" Column="25" TopLine="1319"/>
<Filename Value="mainform.pas"/>
<Caret Line="196" Column="1" TopLine="173"/>
</Position22>
<Position23>
<Filename Value="..\..\xlsbiff2.pas"/>
<Caret Line="66" Column="15" TopLine="50"/>
<Filename Value="mainform.pas"/>
<Caret Line="197" Column="1" TopLine="173"/>
</Position23>
<Position24>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1346" Column="33" TopLine="1319"/>
<Filename Value="mainform.pas"/>
<Caret Line="199" Column="1" TopLine="173"/>
</Position24>
<Position25>
<Filename Value="..\..\xlsbiff5.pas"/>
<Caret Line="1325" Column="3" TopLine="1319"/>
<Filename Value="mainform.pas"/>
<Caret Line="202" Column="1" TopLine="173"/>
</Position25>
<Position26>
<Filename Value="..\..\xlsbiff2.pas"/>
<Caret Line="588" Column="1" TopLine="562"/>
<Filename Value="mainform.pas"/>
<Caret Line="204" Column="1" TopLine="173"/>
</Position26>
<Position27>
<Filename Value="..\..\xlsbiff2.pas"/>
<Caret Line="1435" Column="5" TopLine="1435"/>
<Filename Value="mainform.pas"/>
<Caret Line="207" Column="1" TopLine="175"/>
</Position27>
<Position28>
<Filename Value="..\..\xlsbiff2.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
<Filename Value="d:\lazarus-svn\lcl\grids.pas"/>
<Caret Line="3685" Column="48" TopLine="3685"/>
</Position28>
<Position29>
<Filename Value="..\..\xlsbiff2.pas"/>
<Caret Line="63" Column="22" TopLine="36"/>
<Filename Value="d:\lazarus-svn\lcl\grids.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position29>
<Position30>
<Filename Value="..\..\fpspreadsheetgrid.pas"/>
<Caret Line="893" Column="25" TopLine="877"/>
<Caret Line="547" Column="3" TopLine="524"/>
</Position30>
</JumpHistory>
</ProjectOptions>

View File

@ -4,84 +4,75 @@ object Form1: TForm1
Top = 258
Width = 518
Caption = 'fpsGrid'
ClientHeight = 361
ClientHeight = 366
ClientWidth = 518
Menu = MainMenu1
OnActivate = FormActivate
OnCreate = FormCreate
ShowHint = True
LCLVersion = '1.3'
object Panel1: TPanel
Left = 0
Height = 73
Top = 288
Top = 293
Width = 518
Align = alBottom
BevelOuter = bvNone
ClientHeight = 73
ClientWidth = 518
TabOrder = 0
object btnPopulateGrid: TButton
Left = 392
Height = 31
Top = 24
Width = 120
Caption = 'Populate Grid'
OnClick = btnPopulateGridClick
TabOrder = 0
Visible = False
end
object CbShowHeaders: TCheckBox
Left = 8
Height = 24
Height = 19
Top = 11
Width = 116
Width = 93
Caption = 'Show headers'
Checked = True
OnClick = CbShowHeadersClick
State = cbChecked
TabOrder = 1
TabOrder = 0
end
object CbShowGridLines: TCheckBox
Left = 8
Height = 24
Height = 19
Top = 36
Width = 125
Width = 100
Caption = 'Show grid lines'
Checked = True
OnClick = CbShowGridLinesClick
State = cbChecked
TabOrder = 2
TabOrder = 1
end
object EdFrozenCols: TSpinEdit
Left = 238
Height = 28
Height = 23
Top = 8
Width = 52
OnChange = EdFrozenColsChange
TabOrder = 3
TabOrder = 2
end
object EdFrozenRows: TSpinEdit
Left = 238
Height = 28
Height = 23
Top = 39
Width = 52
OnChange = EdFrozenRowsChange
TabOrder = 4
TabOrder = 3
end
object Label1: TLabel
Left = 152
Height = 20
Height = 15
Top = 13
Width = 77
Width = 62
Caption = 'Frozen cols:'
FocusControl = EdFrozenCols
ParentColor = False
end
object Label2: TLabel
Left = 153
Height = 20
Height = 15
Top = 40
Width = 82
Width = 66
Caption = 'Frozen rows:'
FocusControl = EdFrozenRows
ParentColor = False
@ -89,8 +80,8 @@ object Form1: TForm1
end
object PageControl1: TPageControl
Left = 0
Height = 262
Top = 26
Height = 241
Top = 52
Width = 518
ActivePage = TabSheet1
Align = alClient
@ -99,13 +90,15 @@ object Form1: TForm1
OnChange = PageControl1Change
object TabSheet1: TTabSheet
Caption = 'Sheet1'
ClientHeight = 229
ClientHeight = 213
ClientWidth = 510
object sWorksheetGrid1: TsWorksheetGrid
Left = 0
Height = 229
Height = 213
Top = 0
Width = 510
FrozenCols = 0
FrozenRows = 0
Align = alClient
ColCount = 2
ExtendedSelect = False
@ -113,8 +106,9 @@ object Form1: TForm1
RowCount = 2
TabOrder = 0
TitleStyle = tsNative
OnSelectCell = sWorksheetGrid1SelectCell
ColWidths = (
56
42
64
)
end
@ -141,7 +135,7 @@ object Form1: TForm1
Action = AcSaveAs
end
object ToolButton3: TToolButton
Left = 52
Left = 80
Top = 0
Action = AcQuit
end
@ -152,6 +146,72 @@ object Form1: TForm1
Caption = 'ToolButton5'
Style = tbsDivider
end
object ToolButton4: TToolButton
Left = 52
Top = 0
Action = AcEdit
end
object ToolButton6: TToolButton
Left = 75
Top = 0
Width = 5
Caption = 'ToolButton6'
Style = tbsDivider
end
end
object FormatToolBar: TToolBar
Left = 0
Height = 26
Top = 26
Width = 518
Caption = 'FormatToolBar'
Images = ImageList1
TabOrder = 3
object ToolButton10: TToolButton
Left = 168
Top = 2
Action = AcLeftAlign
end
object ToolButton12: TToolButton
Left = 191
Top = 2
Action = AcHorCenterAlign
end
object ToolButton13: TToolButton
Left = 214
Top = 2
Action = AcRightAlign
end
object FontComboBox: TComboBox
Left = 1
Height = 23
Top = 2
Width = 127
ItemHeight = 15
OnSelect = FontComboBoxSelect
TabOrder = 0
end
object FontSizeComboBox: TComboBox
Left = 128
Height = 23
Top = 2
Width = 40
ItemHeight = 15
Items.Strings = (
'8'
'9'
'10'
'11'
'12'
'14'
'16'
'18'
'20'
'24'
)
OnSelect = FontComboBoxSelect
TabOrder = 1
end
end
object OpenDialog1: TOpenDialog
DefaultExt = '.xls'
@ -163,14 +223,14 @@ object Form1: TForm1
object SaveDialog1: TSaveDialog
DefaultExt = '.xls'
Filter = 'Excel spreadsheet (*.xls)|*.xls|Excel XML spreadsheet (*.xlsx)|*.xlsx|LibreOffice/OpenOffice spreadsheet (*.ods)|*.ods|Wikitable (wikimedia) (.wikitable_wikimedia)|*.wikitable_wikimedia'
Options = [ofExtensionDifferent, ofEnableSizing, ofViewDetail]
Options = [ofOverwritePrompt, ofExtensionDifferent, ofEnableSizing, ofViewDetail]
left = 176
top = 176
end
object MainMenu1: TMainMenu
Images = ImageList1
left = 288
top = 176
top = 64
object mnuFile: TMenuItem
Caption = '&File'
object mnuOpen: TMenuItem
@ -297,12 +357,37 @@ object Form1: TForm1
OnClick = acQuitExecute
end
end
object mnuEdit: TMenuItem
Caption = 'Edit'
object MenuItem2: TMenuItem
Action = AcEdit
AutoCheck = True
end
end
object mnuFormat: TMenuItem
Caption = 'Format'
object MnuHorAlignment: TMenuItem
Caption = 'Horizontal alignment'
object MnuHorDefault: TMenuItem
Action = AcHorDefaultAlign
end
object MenuItem3: TMenuItem
Action = AcLeftAlign
end
object MenuItem4: TMenuItem
Action = AcHorCenterAlign
end
object MenuItem5: TMenuItem
Action = AcRightAlign
end
end
end
end
object ImageList1: TImageList
left = 176
top = 120
Bitmap = {
4C69030000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
4C69070000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00EAC39DFFE6BF96FFE4BB92FFE4BB92FFD1A06CF5D09E6DF6CC96
5FDAC479427EB2673C09FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00E5BE96FFFFFFFEFFFDF3E9FFFDF3EAFFFCF2E8FFFAEFE3FFFAF2
@ -398,10 +483,139 @@ object Form1: TForm1
4FFF4C4C4CFF4A4A4AFF474747FF454545FF25679DFF3274A8FF3D7CAFFF4784
B5FF4E8ABAFF3E7EADFF0C578FEAFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001D639B1619609839145D9562105A
92880D5890A4135C92FC0C578FED
92880D5890A4135C92FC0C578FEDFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002FBAE4094FAADBEA5093
CAFD4E90C8FF2F9DD2DF35A4DE19FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0050A8D9FF6AA5D8FFC9E1
F7FFCBE3F8FF4295CAFF3182C2AEFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002FBAE4FFA7D4F4FFC5E1F8FFCCE3
F9FFCCE3F9FFBDDBF7FF4F90C9FDFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF002FBAE4FFC3EDF8FFA8E2F8FF6CAEDDFFA5CF
F4FFA5CFF4FFBDDBF7FF5393CBF7FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF002FBAE4FFC3EDF8FFB3F4FCFF68D9F5FF6FCFF3FF599D
D0FF73ABDDFF4F91C9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF002FBAE4FFC3EDF8FFB3F4FCFF60DCF5FF44D6F4FF8EEEFAFF5DB4
E6FF3B8FD9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF002FBAE4FFC3EDF8FFB3F4FCFF60DCF5FF44D6F4FF8EEEFAFF5DB4E6FF3B8F
D9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002790
BFFFC3EDF8FFB3F4FCFF60DCF5FF44D6F4FF8EEEFAFF5DB4E6FF3B8FD9FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002689B9FFBEE6
F2FFB3F4FCFF60DCF5FF44D6F4FF8EEEFAFF5DB4E6FF3B8FD9FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00206398202689B9FFB0CBE1FF67A9
C8FF60DCF5FF44D6F4FF8EEEFAFF5DB4E6FF3B8FD9FFFFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001E6D93FFC8E1F2FFD1E7FAFF347D
B5FF3199C3FF6DC4DCFF4A9CCFFF3483C7FFFFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001E6D93FFCBE3F9FF61AAECFF4098
E8FF1567C2FF1660AAFF2C76B4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00124259FF5D9CD4FFA6CFF5FFA9CF
ECFF488BC1FF2C76B4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00134058FF15425EFF25699CFF2C76
B4FF3B8BBAADFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00767676FF747474FF7070
70FF6C6C6CFF686868FF636363FF5E5E5EFF595959FF535353FF4E4E4EFF4848
48FF424242FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006F6F6FFF6B6B6BFF6666
66FF616161FF5C5C5CFF575757FF515151FF4B4B4BFF454545FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464FF5F5F5FFF5A5A
5AFF545454FF4F4F4FFF494949FF434343FF3D3D3DFF373737FF313131FF2B2B
2BFF252525FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00585858FF525252FF4C4C
4CFF464646FF404040FF3A3A3AFF343434FF2E2E2EFF282828FFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4AFF444444FF3E3E
3EFF383838FF323232FF2C2C2CFF262626FF202020FF1B1B1BFF161616FF1111
11FF0C0C0CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003C3C3CFF353535FF2F2F
2FFF292929FF242424FF1E1E1EFF191919FF141414FF0F0F0FFFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00767676FF747474FF7070
70FF6C6C6CFF686868FF636363FF5E5E5EFF595959FF535353FF4E4E4EFF4848
48FF424242FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006B6B6B6B6666
66FF616161FF5C5C5CFF575757FF515151FF4B4B4BFF454545FF3F3F3FFF3939
396BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464FF5F5F5FFF5A5A
5AFF545454FF4F4F4FFF494949FF434343FF3D3D3DFF373737FF313131FF2B2B
2BFF252525FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005252526B4C4C
4CFF464646FF404040FF3A3A3AFF343434FF2E2E2EFF282828FF232323FF1D1D
1D6BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4AFF444444FF3E3E
3EFF383838FF323232FF2C2C2CFF262626FF202020FF1B1B1BFF161616FF1111
11FF0C0C0CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003535356B2F2F
2FFF292929FF242424FF1E1E1EFF191919FF141414FF0F0F0FFF0B0B0BFF0707
076BFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00767676FF747474FF7070
70FF6C6C6CFF686868FF636363FF5E5E5EFF595959FF535353FF4E4E4EFF4848
48FF424242FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00616161FF5C5C5CFF575757FF515151FF4B4B4BFF454545FF3F3F3FFF3939
39FF333333FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00646464FF5F5F5FFF5A5A
5AFF545454FF4F4F4FFF494949FF434343FF3D3D3DFF373737FF313131FF2B2B
2BFF252525FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00464646FF404040FF3A3A3AFF343434FF2E2E2EFF282828FF232323FF1D1D
1DFF181818FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4AFF444444FF3E3E
3EFF383838FF323232FF2C2C2CFF262626FF202020FF1B1B1BFF161616FF1111
11FF0C0C0CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00292929FF242424FF1E1E1EFF191919FF141414FF0F0F0FFF0B0B0BFF0707
07FF030303FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00
}
end
object ActionList1: TActionList
Images = ImageList1
left = 176
top = 64
object AcOpen: TAction
@ -419,5 +633,40 @@ object Form1: TForm1
ImageIndex = 2
OnExecute = acQuitExecute
end
object AcEdit: TAction
AutoCheck = True
Caption = 'Edit mode'
Hint = 'Enable/disable editing'
ImageIndex = 3
OnExecute = AcEditExecute
end
object AcHorDefaultAlign: TAction
Tag = 100
Category = 'Format'
Caption = 'Default'
Checked = True
OnExecute = AcHorAlignmentExecute
end
object AcLeftAlign: TAction
Tag = 101
Category = 'Format'
Caption = 'Left'
ImageIndex = 4
OnExecute = AcHorAlignmentExecute
end
object AcHorCenterAlign: TAction
Tag = 102
Category = 'Format'
Caption = 'Centered'
ImageIndex = 5
OnExecute = AcHorAlignmentExecute
end
object AcRightAlign: TAction
Tag = 103
Category = 'Format'
Caption = 'Right'
ImageIndex = 6
OnExecute = AcHorAlignmentExecute
end
end
end

View File

@ -2,370 +2,582 @@
LazarusResources.Add('TForm1','FORMDATA',[
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'r'#1#6'Height'#3#130#1#3'Top'#3#2#1#5'Wid'
+'th'#3#6#2#7'Caption'#6#7'fpsGrid'#12'ClientHeight'#3'i'#1#11'ClientWidth'#3
+#6#2#4'Menu'#7#9'MainMenu1'#10'OnActivate'#7#12'FormActivate'#8'ShowHint'#9
+#10'LCLVersion'#6#3'1.3'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'I'#3
+'Top'#3' '#1#5'Width'#3#6#2#5'Align'#7#8'alBottom'#10'BevelOuter'#7#6'bvNone'
+#12'ClientHeight'#2'I'#11'ClientWidth'#3#6#2#8'TabOrder'#2#0#0#7'TButton'#15
+'btnPopulateGrid'#4'Left'#3#136#1#6'Height'#2#31#3'Top'#2#24#5'Width'#2'x'#7
+'Caption'#6#13'Populate Grid'#7'OnClick'#7#20'btnPopulateGridClick'#8'TabOrd'
+'er'#2#0#7'Visible'#8#0#0#9'TCheckBox'#13'CbShowHeaders'#4'Left'#2#8#6'Heigh'
+'t'#2#24#3'Top'#2#11#5'Width'#2't'#7'Caption'#6#12'Show headers'#7'Checked'#9
+#7'OnClick'#7#18'CbShowHeadersClick'#5'State'#7#9'cbChecked'#8'TabOrder'#2#1
+#0#0#9'TCheckBox'#15'CbShowGridLines'#4'Left'#2#8#6'Height'#2#24#3'Top'#2'$'
+#5'Width'#2'}'#7'Caption'#6#15'Show grid lines'#7'Checked'#9#7'OnClick'#7#20
+'CbShowGridLinesClick'#5'State'#7#9'cbChecked'#8'TabOrder'#2#2#0#0#9'TSpinEd'
+'it'#12'EdFrozenCols'#4'Left'#3#238#0#6'Height'#2#28#3'Top'#2#8#5'Width'#2'4'
+#8'OnChange'#7#18'EdFrozenColsChange'#8'TabOrder'#2#3#0#0#9'TSpinEdit'#12'Ed'
+'FrozenRows'#4'Left'#3#238#0#6'Height'#2#28#3'Top'#2''''#5'Width'#2'4'#8'OnC'
+'hange'#7#18'EdFrozenRowsChange'#8'TabOrder'#2#4#0#0#6'TLabel'#6'Label1'#4'L'
+'eft'#3#152#0#6'Height'#2#20#3'Top'#2#13#5'Width'#2'M'#7'Caption'#6#12'Froze'
+'n cols:'#12'FocusControl'#7#12'EdFrozenCols'#11'ParentColor'#8#0#0#6'TLabel'
+#6'Label2'#4'Left'#3#153#0#6'Height'#2#20#3'Top'#2'('#5'Width'#2'R'#7'Captio'
+'n'#6#12'Frozen rows:'#12'FocusControl'#7#12'EdFrozenRows'#11'ParentColor'#8
+#0#0#0#12'TPageControl'#12'PageControl1'#4'Left'#2#0#6'Height'#3#6#1#3'Top'#2
+#26#5'Width'#3#6#2#10'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alClient'#8'Ta'
+'bIndex'#2#0#8'TabOrder'#2#1#8'OnChange'#7#18'PageControl1Change'#0#9'TTabSh'
+'eet'#9'TabSheet1'#7'Caption'#6#6'Sheet1'#12'ClientHeight'#3#229#0#11'Client'
+'Width'#3#254#1#0#15'TsWorksheetGrid'#15'sWorksheetGrid1'#4'Left'#2#0#6'Heig'
+'ht'#3#229#0#3'Top'#2#0#5'Width'#3#254#1#5'Align'#7#8'alClient'#8'ColCount'#2
+#2#14'ExtendedSelect'#8#7'Options'#11#15'goFixedVertLine'#15'goFixedHorzLine'
+#10'goVertLine'#10'goHorzLine'#13'goRangeSelect'#11'goRowSizing'#11'goColSiz'
+'ing'#15'goThumbTracking'#14'goSmoothScroll'#16'goFixedColSizing'#0#8'RowCou'
+'nt'#2#2#8'TabOrder'#2#0#10'TitleStyle'#7#8'tsNative'#9'ColWidths'#1#2'8'#2
+'th'#3#6#2#7'Caption'#6#7'fpsGrid'#12'ClientHeight'#3'n'#1#11'ClientWidth'#3
+#6#2#4'Menu'#7#9'MainMenu1'#10'OnActivate'#7#12'FormActivate'#8'OnCreate'#7
+#10'FormCreate'#8'ShowHint'#9#10'LCLVersion'#6#3'1.3'#0#6'TPanel'#6'Panel1'#4
+'Left'#2#0#6'Height'#2'I'#3'Top'#3'%'#1#5'Width'#3#6#2#5'Align'#7#8'alBottom'
+#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'I'#11'ClientWidth'#3#6#2#8'Ta'
+'bOrder'#2#0#0#9'TCheckBox'#13'CbShowHeaders'#4'Left'#2#8#6'Height'#2#19#3'T'
+'op'#2#11#5'Width'#2']'#7'Caption'#6#12'Show headers'#7'Checked'#9#7'OnClick'
+#7#18'CbShowHeadersClick'#5'State'#7#9'cbChecked'#8'TabOrder'#2#0#0#0#9'TChe'
+'ckBox'#15'CbShowGridLines'#4'Left'#2#8#6'Height'#2#19#3'Top'#2'$'#5'Width'#2
+'d'#7'Caption'#6#15'Show grid lines'#7'Checked'#9#7'OnClick'#7#20'CbShowGrid'
+'LinesClick'#5'State'#7#9'cbChecked'#8'TabOrder'#2#1#0#0#9'TSpinEdit'#12'EdF'
+'rozenCols'#4'Left'#3#238#0#6'Height'#2#23#3'Top'#2#8#5'Width'#2'4'#8'OnChan'
+'ge'#7#18'EdFrozenColsChange'#8'TabOrder'#2#2#0#0#9'TSpinEdit'#12'EdFrozenRo'
+'ws'#4'Left'#3#238#0#6'Height'#2#23#3'Top'#2''''#5'Width'#2'4'#8'OnChange'#7
+#18'EdFrozenRowsChange'#8'TabOrder'#2#3#0#0#6'TLabel'#6'Label1'#4'Left'#3#152
+#0#6'Height'#2#15#3'Top'#2#13#5'Width'#2'>'#7'Caption'#6#12'Frozen cols:'#12
+'FocusControl'#7#12'EdFrozenCols'#11'ParentColor'#8#0#0#6'TLabel'#6'Label2'#4
+'Left'#3#153#0#6'Height'#2#15#3'Top'#2'('#5'Width'#2'B'#7'Caption'#6#12'Froz'
+'en rows:'#12'FocusControl'#7#12'EdFrozenRows'#11'ParentColor'#8#0#0#0#12'TP'
+'ageControl'#12'PageControl1'#4'Left'#2#0#6'Height'#3#241#0#3'Top'#2'4'#5'Wi'
+'dth'#3#6#2#10'ActivePage'#7#9'TabSheet1'#5'Align'#7#8'alClient'#8'TabIndex'
+#2#0#8'TabOrder'#2#1#8'OnChange'#7#18'PageControl1Change'#0#9'TTabSheet'#9'T'
+'abSheet1'#7'Caption'#6#6'Sheet1'#12'ClientHeight'#3#213#0#11'ClientWidth'#3
+#254#1#0#15'TsWorksheetGrid'#15'sWorksheetGrid1'#4'Left'#2#0#6'Height'#3#213
+#0#3'Top'#2#0#5'Width'#3#254#1#10'FrozenCols'#2#0#10'FrozenRows'#2#0#5'Align'
+#7#8'alClient'#8'ColCount'#2#2#14'ExtendedSelect'#8#7'Options'#11#15'goFixed'
+'VertLine'#15'goFixedHorzLine'#10'goVertLine'#10'goHorzLine'#13'goRangeSelec'
+'t'#11'goRowSizing'#11'goColSizing'#15'goThumbTracking'#14'goSmoothScroll'#16
+'goFixedColSizing'#0#8'RowCount'#2#2#8'TabOrder'#2#0#10'TitleStyle'#7#8'tsNa'
+'tive'#12'OnSelectCell'#7#25'sWorksheetGrid1SelectCell'#9'ColWidths'#1#2'*'#2
+'@'#0#0#0#0#0#8'TToolBar'#8'ToolBar1'#4'Left'#2#0#6'Height'#2#26#3'Top'#2#0#5
+'Width'#3#6#2#12'ButtonHeight'#2#24#7'Caption'#6#8'ToolBar1'#11'EdgeBorders'
+#11#0#6'Images'#7#10'ImageList1'#8'TabOrder'#2#2#0#11'TToolButton'#11'ToolBu'
+'tton1'#4'Left'#2#1#3'Top'#2#0#6'Action'#7#6'AcOpen'#0#0#11'TToolButton'#11
+'ToolButton2'#4'Left'#2#24#3'Top'#2#0#6'Action'#7#8'AcSaveAs'#0#0#11'TToolBu'
+'tton'#11'ToolButton3'#4'Left'#2'4'#3'Top'#2#0#6'Action'#7#6'AcQuit'#0#0#11
+'tton'#11'ToolButton3'#4'Left'#2'P'#3'Top'#2#0#6'Action'#7#6'AcQuit'#0#0#11
+'TToolButton'#11'ToolButton5'#4'Left'#2'/'#3'Top'#2#0#5'Width'#2#5#7'Caption'
+#6#11'ToolButton5'#5'Style'#7#10'tbsDivider'#0#0#0#11'TOpenDialog'#11'OpenDi'
+'alog1'#10'DefaultExt'#6#4'.xls'#6'Filter'#6#192'Excel spreadsheet (*.xls)|*'
+'.xls|Excel XML spreadsheet (*.xlsx)|*.xlxs|LibreOffice/OpenOffice spreadshe'
+'et (*.ods)|*.ods|Wikitable (pipes) (.wikitable_pipes)|.wikitable_pipes|All '
+'files (*.*)|*.*'#7'Options'#11#20'ofExtensionDifferent'#14'ofEnableSizing'
+#12'ofViewDetail'#0#4'left'#2'@'#3'top'#3#176#0#0#0#11'TSaveDialog'#11'SaveD'
+'ialog1'#10'DefaultExt'#6#4'.xls'#6'Filter'#6#185'Excel spreadsheet (*.xls)|'
+'*.xls|Excel XML spreadsheet (*.xlsx)|*.xlsx|LibreOffice/OpenOffice spreadsh'
+'eet (*.ods)|*.ods|Wikitable (wikimedia) (.wikitable_wikimedia)|*.wikitable_'
+'wikimedia'#7'Options'#11#20'ofExtensionDifferent'#14'ofEnableSizing'#12'ofV'
+'iewDetail'#0#4'left'#3#176#0#3'top'#3#176#0#0#0#9'TMainMenu'#9'MainMenu1'#6
+'Images'#7#10'ImageList1'#4'left'#3' '#1#3'top'#3#176#0#0#9'TMenuItem'#7'mnu'
+'File'#7'Caption'#6#5'&File'#0#9'TMenuItem'#7'mnuOpen'#6'Action'#7#6'AcOpen'
+#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16
+#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0','
+#134#216#0'-'#136#216#247'-'#135#216#247'-'#136#216#247'-'#136#216#247'-'#136
+#216#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#136
+#216#247'-'#135#216#247'-'#136#216#247','#134#216#0#255#255#255#0#255#255#255
+#0'3'#142#217#251#220#240#250#255#152#225#246#255#149#224#246#255#146#223#246
+#255#142#222#245#255#137#220#245#255#133#218#244#255#128#217#244#255'z'#215
+#243#255't'#213#243#255'p'#211#242#255#194#234#248#255'5'#148#218#255#255#255
+#255#0#255#255#255#0'5'#148#218#247#239#250#254#255#147#229#248#255#143#228
+#248#255#137#227#248#255#130#225#247#255'z'#223#247#255'q'#222#246#255'g'#219
+#245#255'['#216#244#255'M'#212#243#255'@'#209#242#255#202#242#251#255'5'#148
+#218#255#255#255#255#0#255#255#255#0'6'#154#218#248#242#250#253#255#148#230
,#248#255#146#229#248#255#144#229#248#255#139#227#248#255#134#226#247#255#127
+#225#247#255'w'#222#246#255'l'#220#246#255'^'#217#244#255'O'#213#243#255#204
+#242#251#255'5'#148#218#255#255#255#255#0#255#255#255#0'6'#161#218#249#246
+#252#254#255#148#229#248#255#147#229#248#255#147#229#248#255#145#229#248#255
+#147#219#233#255#147#215#227#255#147#210#220#255#144#206#215#255#140#200#207
+#255#134#193#198#255#201#216#214#255'5'#148#218#255#197'tD'#232#202#127'S'
+#241'7'#166#218#250#254#255#255#255#248#253#255#255#246#253#255#255#245#252
+#255#255#243#252#254#255#154#228#244#255#154#230#247#255#155#230#246#255#157
+#229#245#255#158#229#245#255#159#229#244#255#218#243#248#255'5'#148#218#255
+#253#244#238#255#202#128'T'#249'5'#171#218#250#232#246#251#255'p'#188#231#255
+'U'#170#226#255'M'#165#224#255#145#201#235#255#250#243#239#255#253#254#253
+#255#255#253#252#255#255#253#252#255#254#253#252#255#254#252#251#255#254#254
+#253#255'5'#148#218#255#239#242#232#255#206#129'V'#255'6'#170#218#242#241#250
+#253#255#148#222#245#255#147#220#244#255'd'#188#233#255'5'#148#218#255'5'#148
+#218#255'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'#148
+#218#255'5'#148#218#255'5'#148#218#255#251#246#239#255#204#131'U'#254'5'#175
+#218#240#247#252#254#255#142#228#248#255#145#222#245#255#159#224#245#255#172
+#225#246#255#202#132'R'#255#255#247#241#255#255#233#217#255#255#234#219#255
+#255#233#217#255#255#231#215#255#255#229#210#255#255#226#203#255#255#247#241
+#255#203#133'U'#254'6'#179#218#248#253#254#254#255#254#255#255#255#254#254
+#255#255#253#254#255#255#254#255#255#255#228#186#145#255#255#247#240#255#255
+#231#213#255#253#231#214#255#253#230#212#255#252#228#208#255#251#227#203#255
+#250#220#194#255#254#243#232#255#204#134'V'#254'4'#180#217#208'^'#194#225#250
+'`'#195#226#250'`'#195#226#250'`'#195#226#250'_'#195#226#250#228#187#145#255
+#255#247#242#255#254#231#213#255#254#231#213#255#253#229#209#255#250#224#202
+#255#249#222#196#255#247#217#188#255#253#242#231#255#204#135'W'#254#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#228#187#146#255#254#247#241#255#252#229#210#255#252#228#209#255#251#226#204
+#255#249#221#196#255#246#215#187#255#243#209#175#255#250#239#228#255#204#135
+'X'#254#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#228#187#146#255#254#246#240#255#252#226#205#255#252#227#205
+#255#250#223#200#255#247#217#188#255#245#233#221#255#250#243#235#255#251#248
+#243#255#202#131'S'#254#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#228#187#147#255#254#245#237#255#252#222#197
+#255#251#224#199#255#249#220#194#255#245#211#180#255#254#249#243#255#250#226
+#196#255#236#193#147#255#195'}H'#147#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#229#190#150#255#255#255#254#255
+#253#243#233#255#253#243#234#255#252#242#232#255#250#239#227#255#250#242#231
+#255#234#187#136#255#207#133'U'#179#180'i='#12#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#234#195#157#255#230
+#191#150#255#228#187#146#255#228#187#146#255#209#160'l'#245#208#158'm'#246
+#204#150'_'#218#196'yB~'#178'g<'#9#255#255#255#0#7'OnClick'#7#13'acOpenExecu'
+'te'#0#0#9'TMenuItem'#9'mnuSaveAs'#6'Action'#7#8'AcSaveAs'#11'Bitmap.Data'#10
+':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0
+' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#186'j6'#0#185'i5'#181
+#184'i5'#238#183'h5'#255#181'h5'#255#180'g4'#255#178'f4'#255#176'e3'#255#174
+'d3'#255#172'c2'#255#170'b2'#255#169'a2'#255#168'`1'#255#167'`1'#254#166'`1'
+#241#168'a1'#196#186'j5'#222#235#198#173#255#234#197#173#255#254#251#248#255
+#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248
+#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255#200#154
+'|'#255#199#152'y'#255#167'`1'#237#186'k7'#254#237#202#179#255#224#162'z'#255
+#254#250#247#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255
+'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255#253#249#246#255
+#202#141'e'#255#201#155'|'#255#167'`1'#254#187'l8'#255#238#204#182#255#225
+#162'z'#255#254#250#247#255#191#220#194#255#191#220#194#255#191#220#194#255
+#191#220#194#255#191#220#194#255#191#220#194#255#191#220#194#255#191#220#194
+#255#253#249#246#255#205#144'h'#255#204#158#129#255#168'a2'#255#187'k8'#255
+#239#206#184#255#225#162'y'#255#254#250#247#255'b'#192#136#255'b'#192#136#255
+'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255
+'b'#192#136#255#253#249#246#255#207#147'j'#255#206#163#132#255#170'a2'#255
+#186'j6'#255#239#208#187#255#226#162'z'#255#254#251#248#255#254#251#248#255
+#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248
+#255#254#251#248#255#254#251#248#255#254#251#248#255#211#150'm'#255#210#167
+#138#255#171'b2'#255#187'j6'#255#240#210#190#255#226#163'z'#255#226#163'z'
,#255#225#163'z'#255#226#163'{'#255#225#163'{'#255#224#161'x'#255#222#159'w'
+#255#221#159'v'#255#220#157't'#255#217#155'r'#255#216#153'q'#255#214#153'p'
+#255#213#171#142#255#173'c3'#255#187'j6'#255#242#213#194#255#227#163'z'#255
+#227#163'z'#255#226#163'{'#255#226#163'{'#255#226#164'{'#255#225#162'y'#255
+#224#161'x'#255#222#160'w'#255#222#158'u'#255#220#157't'#255#218#155's'#255
+#217#155's'#255#218#176#149#255#175'd3'#255#187'j6'#255#242#216#197#255#227
+#164'{'#255#227#163'z'#255#227#164'z'#255#226#164'{'#255#226#163'{'#255#225
+#163'{'#255#225#162'y'#255#223#160'w'#255#222#159'v'#255#221#158't'#255#219
+#156'r'#255#220#157't'#255#221#181#154#255#177'e4'#255#187'k6'#255#244#217
+#199#255#230#166'}'#255#200#140'd'#255#201#141'e'#255#201#142'g'#255#203#146
+'l'#255#203#146'm'#255#202#144'i'#255#200#140'e'#255#200#140'd'#255#200#140
+'d'#255#200#140'd'#255#218#156't'#255#225#186#159#255#179'f4'#255#187'k6'#254
+#244#220#201#255#231#167'}'#255#249#236#225#255#249#236#225#255#249#237#227
+#255#252#244#238#255#253#250#247#255#253#247#243#255#250#237#229#255#247#231
+#219#255#247#229#217#255#246#229#216#255#222#160'w'#255#228#190#164#255#180
+'g4'#255#188'k6'#250#245#221#204#255#231#168'~'#255#250#240#232#255#250#240
+#232#255#201#141'f'#255#250#240#233#255#253#248#243#255#254#250#248#255#252
+#244#239#255#249#233#223#255#247#231#219#255#247#229#217#255#224#162'x'#255
+#231#194#169#255#182'h5'#255#188'k6'#240#246#223#208#255#232#168'~'#255#252
+#246#241#255#252#246#241#255#200#140'd'#255#250#241#233#255#251#244#238#255
+#253#250#247#255#253#249#246#255#250#240#232#255#248#232#221#255#247#230#219
+#255#225#163'z'#255#239#213#195#255#183'i5'#254#188'k6'#216#246#223#209#255
+#233#170#128#255#254#250#246#255#253#250#246#255#200#140'd'#255#251#243#238
+#255#251#241#234#255#252#246#242#255#254#251#248#255#252#246#241#255#249#236
+#226#255#248#231#219#255#238#208#186#255#236#208#189#255#187'p>'#248#188'k6'
+#155#246#224#209#255#247#224#209#255#254#251#248#255#254#251#247#255#253#249
+#246#255#252#245#240#255#250#240#234#255#251#242#237#255#253#249#246#255#253
+#250#247#255#251#241#235#255#248#233#223#254#236#208#189#251#201#137'^'#236
+#181'i5c'#188'k6q'#188'k6'#144#188'k6'#204#188'k6'#238#188'k6'#250#187'k6'
+#254#187'k6'#255#187'j6'#255#187'j6'#255#188'l9'#255#189'n;'#255#187'm:'#255
+#187'k8'#239#187'p>'#203#182'i5T'#255#255#255#0#7'OnClick'#7#15'acSaveAsExec'
+'ute'#0#0#9'TMenuItem'#9'MenuItem1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#7'mnu'
+'Quit'#6'Action'#7#6'AcQuit'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0
+#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0
+#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#29'c'#155#22#25'`'#152'9'#20']'#149'b'#16'Z'#146#136#13'X'#144#164#19'\'#146
+#252#12'W'#143#237#153#153#153#255'qqq'#255'TTT'#255'QQQ'#255'OOO'#255'LLL'
+#255'JJJ'#255'GGG'#255'EEE'#255'%g'#157#255'2t'#168#255'=|'#175#255'G'#132
+#181#255'N'#138#186#255'>~'#173#255#12'W'#143#234#255#255#255#0#255#255#255#0
+'XXX'#255#162#162#162#255#162#162#162#255#163#163#163#255#164#164#164#255#164
+#164#164#255#165#165#165#255'/o'#165#255'x'#171#210#255'x'#171#211#255's'#167
+#209#255'i'#160#205#255'@'#127#174#255#15'Y'#145#234#255#255#255#0#255#255
+#255#0'\\\'#255#161#161#161#255'<s@'#255#160#161#161#255#163#163#163#255#163
+#163#163#255#164#164#164#255'6t'#170#255'}'#175#212#255'['#154#201#255'T'#149
+#199#255'X'#150#200#255'A'#128#174#255#19'\'#148#234#255#255#255#0#255#255
+#255#0'```'#255#160#160#160#255'=vA'#255'6q9'#255#162#162#162#255#162#162#162
+#255#163#163#163#255'=y'#176#255#130#179#215#255'b'#159#204#255'Z'#154#201
+#255'^'#155#202#255'C'#129#175#255#25'`'#152#234'7'#130'>'#255'4~;'#255'1y7'
+#255'.u4'#255'I'#145'P'#255'F'#143'L'#255'9s='#255#161#161#161#255#162#162
+#162#255'E~'#180#255#136#183#217#255'g'#163#207#255'a'#158#204#255'c'#159#204
+#255'E'#131#177#255#31'd'#156#234';'#135'B'#255#137#203#146#255#132#200#141
+#255#128#198#136#255'{'#195#131#255'w'#193#127#255'G'#143'M'#255';t?'#255#161
+#161#161#255'L'#132#186#255#141#187#219#255'n'#168#209#255'f'#166#209#255'_'
+#180#223#255'G'#133#177#255'%i'#161#234'>'#139'F'#255#143#206#153#255'}'#198
+#135#255'x'#195#129#255's'#192'|'#255't'#192'|'#255'y'#194#129#255'I'#144'O'
+#255'T'#127'W'#255'T'#137#191#255#148#191#221#255'u'#173#212#255'c'#184#225
+#255'K'#212#255#255'B'#139#184#255',n'#166#234'A'#144'J'#255#148#210#159#255
+#145#208#154#255#141#205#150#255#137#203#146#255#132#200#141#255'Q'#152'X'
+#255'A|F'#255#159#159#159#255'Z'#142#196#255#152#195#224#255'|'#179#215#255
+'t'#175#214#255'^'#196#237#255'K'#136#179#255'4s'#171#234'D'#148'M'#255'B'
+#145'K'#255'?'#141'H'#255'='#137'E'#255']'#164'e'#255'Z'#160'a'#255'E'#131'K'
+#255#158#158#158#255#158#158#158#255'`'#146#201#255#158#199#226#255#131#184
+#218#255'}'#180#215#255'~'#179#215#255'O'#137#180#255';y'#177#234#255#255#255
,#0#255#255#255#0'www'#255#154#154#154#255'='#138'E'#255'I'#138'O'#255#156#156
+#156#255#157#157#157#255#157#157#157#255'f'#150#204#255#162#203#227#255#137
+#189#220#255#131#185#218#255#132#185#218#255'Q'#139#181#255'C~'#182#234#255
+#255#255#0#255#255#255#0'zzz'#255#153#153#153#255'R'#145'Y'#255#153#154#153
+#255#155#155#155#255#156#156#156#255#156#156#156#255'l'#154#208#255#167#206
+#229#255#143#193#223#255#137#189#220#255#139#189#220#255'S'#141#182#255'K'
+#132#188#234#255#255#255#0#255#255#255#0'}}}'#255#153#153#153#255#153#153#153
+#255#154#154#154#255#154#154#154#255#155#155#155#255#155#155#155#255'o'#157
+#211#255#170#209#231#255#171#209#231#255#152#199#225#255#145#194#222#255'V'
+#143#183#255'R'#137#193#234#255#255#255#0#255#255#255#0#128#128#128#255'~~~'
+#255'|||'#255'zzz'#255'www'#255'uuu'#255'rrr'#255'q'#158#212#255'o'#158#214
+#255#135#178#220#255#171#211#232#255#169#208#230#255'X'#144#184#255'Y'#142
+#198#234#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'p'#158#214#219'm'#156#212#255#133#177#218#255'Z'#145#185#255'`'
+#147#203#234#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0'm'#156#212#137'j'#154#210#251'f'
+#151#207#238#7'OnClick'#7#13'acQuitExecute'#0#0#0#0#10'TImageList'#10'ImageL'
+'ist1'#4'left'#3#176#0#3'top'#2'x'#6'Bitmap'#10#14#12#0#0'Li'#3#0#0#0#16#0#0
+#0#16#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#234#195#157#255#230#191#150#255#228#187#146#255#228#187
+#146#255#209#160'l'#245#208#158'm'#246#204#150'_'#218#196'yB~'#178'g<'#9#255
+#6#11'ToolButton5'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#11'ToolButt'
+'on4'#4'Left'#2'4'#3'Top'#2#0#6'Action'#7#6'AcEdit'#0#0#11'TToolButton'#11'T'
+'oolButton6'#4'Left'#2'K'#3'Top'#2#0#5'Width'#2#5#7'Caption'#6#11'ToolButton'
+'6'#5'Style'#7#10'tbsDivider'#0#0#0#8'TToolBar'#13'FormatToolBar'#4'Left'#2#0
+#6'Height'#2#26#3'Top'#2#26#5'Width'#3#6#2#7'Caption'#6#13'FormatToolBar'#6
+'Images'#7#10'ImageList1'#8'TabOrder'#2#3#0#11'TToolButton'#12'ToolButton10'
+#4'Left'#3#168#0#3'Top'#2#2#6'Action'#7#11'AcLeftAlign'#0#0#11'TToolButton'
+#12'ToolButton12'#4'Left'#3#191#0#3'Top'#2#2#6'Action'#7#16'AcHorCenterAlign'
+#0#0#11'TToolButton'#12'ToolButton13'#4'Left'#3#214#0#3'Top'#2#2#6'Action'#7
+#12'AcRightAlign'#0#0#9'TComboBox'#12'FontComboBox'#4'Left'#2#1#6'Height'#2
+#23#3'Top'#2#2#5'Width'#2#127#10'ItemHeight'#2#15#8'OnSelect'#7#18'FontCombo'
+'BoxSelect'#8'TabOrder'#2#0#0#0#9'TComboBox'#16'FontSizeComboBox'#4'Left'#3
+#128#0#6'Height'#2#23#3'Top'#2#2#5'Width'#2'('#10'ItemHeight'#2#15#13'Items.'
+'Strings'#1#6#1'8'#6#1'9'#6#2'10'#6#2'11'#6#2'12'#6#2'14'#6#2'16'#6#2'18'#6#2
+'20'#6#2'24'#0#8'OnSelect'#7#18'FontComboBoxSelect'#8'TabOrder'#2#1#0#0#0#11
+'TOpenDialog'#11'OpenDialog1'#10'DefaultExt'#6#4'.xls'#6'Filter'#6#192'Excel'
+' spreadsheet (*.xls)|*.xls|Excel XML spreadsheet (*.xlsx)|*.xlxs|LibreOffic'
+'e/OpenOffice spreadsheet (*.ods)|*.ods|Wikitable (pipes) (.wikitable_pipes)'
+'|.wikitable_pipes|All files (*.*)|*.*'#7'Options'#11#20'ofExtensionDifferen'
+'t'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#2'@'#3'top'#3#176#0#0#0#11
+'TSaveDialog'#11'SaveDialog1'#10'DefaultExt'#6#4'.xls'#6'Filter'#6#185'Excel'
+' spreadsheet (*.xls)|*.xls|Excel XML spreadsheet (*.xlsx)|*.xlsx|LibreOffic'
+'e/OpenOffice spreadsheet (*.ods)|*.ods|Wikitable (wikimedia) (.wikitable_wi'
+'kimedia)|*.wikitable_wikimedia'#7'Options'#11#17'ofOverwritePrompt'#20'ofEx'
+'tensionDifferent'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#176#0#3't'
+'op'#3#176#0#0#0#9'TMainMenu'#9'MainMenu1'#6'Images'#7#10'ImageList1'#4'left'
,#3' '#1#3'top'#2'@'#0#9'TMenuItem'#7'mnuFile'#7'Caption'#6#5'&File'#0#9'TMen'
+'uItem'#7'mnuOpen'#6'Action'#7#6'AcOpen'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0
+'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4
+#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0','#134#216#0'-'#136#216#247'-'#135#216
+#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#136#216
+#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#135#216#247'-'#136#216
+#247','#134#216#0#255#255#255#0#255#255#255#0'3'#142#217#251#220#240#250#255
+#152#225#246#255#149#224#246#255#146#223#246#255#142#222#245#255#137#220#245
+#255#133#218#244#255#128#217#244#255'z'#215#243#255't'#213#243#255'p'#211#242
+#255#194#234#248#255'5'#148#218#255#255#255#255#0#255#255#255#0'5'#148#218
+#247#239#250#254#255#147#229#248#255#143#228#248#255#137#227#248#255#130#225
+#247#255'z'#223#247#255'q'#222#246#255'g'#219#245#255'['#216#244#255'M'#212
+#243#255'@'#209#242#255#202#242#251#255'5'#148#218#255#255#255#255#0#255#255
+#255#0'6'#154#218#248#242#250#253#255#148#230#248#255#146#229#248#255#144#229
+#248#255#139#227#248#255#134#226#247#255#127#225#247#255'w'#222#246#255'l'
+#220#246#255'^'#217#244#255'O'#213#243#255#204#242#251#255'5'#148#218#255#255
+#255#255#0#255#255#255#0'6'#161#218#249#246#252#254#255#148#229#248#255#147
+#229#248#255#147#229#248#255#145#229#248#255#147#219#233#255#147#215#227#255
+#147#210#220#255#144#206#215#255#140#200#207#255#134#193#198#255#201#216#214
+#255'5'#148#218#255#197'tD'#232#202#127'S'#241'7'#166#218#250#254#255#255#255
+#248#253#255#255#246#253#255#255#245#252#255#255#243#252#254#255#154#228#244
+#255#154#230#247#255#155#230#246#255#157#229#245#255#158#229#245#255#159#229
+#244#255#218#243#248#255'5'#148#218#255#253#244#238#255#202#128'T'#249'5'#171
+#218#250#232#246#251#255'p'#188#231#255'U'#170#226#255'M'#165#224#255#145#201
+#235#255#250#243#239#255#253#254#253#255#255#253#252#255#255#253#252#255#254
+#253#252#255#254#252#251#255#254#254#253#255'5'#148#218#255#239#242#232#255
+#206#129'V'#255'6'#170#218#242#241#250#253#255#148#222#245#255#147#220#244
+#255'd'#188#233#255'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'#148#218
+#255'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'#148#218
+#255#251#246#239#255#204#131'U'#254'5'#175#218#240#247#252#254#255#142#228
+#248#255#145#222#245#255#159#224#245#255#172#225#246#255#202#132'R'#255#255
+#247#241#255#255#233#217#255#255#234#219#255#255#233#217#255#255#231#215#255
+#255#229#210#255#255#226#203#255#255#247#241#255#203#133'U'#254'6'#179#218
+#248#253#254#254#255#254#255#255#255#254#254#255#255#253#254#255#255#254#255
+#255#255#228#186#145#255#255#247#240#255#255#231#213#255#253#231#214#255#253
+#230#212#255#252#228#208#255#251#227#203#255#250#220#194#255#254#243#232#255
+#204#134'V'#254'4'#180#217#208'^'#194#225#250'`'#195#226#250'`'#195#226#250
+'`'#195#226#250'_'#195#226#250#228#187#145#255#255#247#242#255#254#231#213
+#255#254#231#213#255#253#229#209#255#250#224#202#255#249#222#196#255#247#217
+#188#255#253#242#231#255#204#135'W'#254#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#228#187#146#255#254#247#241
+#255#252#229#210#255#252#228#209#255#251#226#204#255#249#221#196#255#246#215
+#187#255#243#209#175#255#250#239#228#255#204#135'X'#254#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#228#187#146
+#255#254#246#240#255#252#226#205#255#252#227#205#255#250#223#200#255#247#217
+#188#255#245#233#221#255#250#243#235#255#251#248#243#255#202#131'S'#254#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#228#187#147#255#254#245#237#255#252#222#197#255#251#224#199#255#249
+#220#194#255#245#211#180#255#254#249#243#255#250#226#196#255#236#193#147#255
+#195'}H'#147#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#229#190#150#255#255#255#254#255#253#243#233#255#253#243
+#234#255#252#242#232#255#250#239#227#255#250#242#231#255#234#187#136#255#207
+#133'U'#179#180'i='#12#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#228#187#147#255#254#245#237#255#252#222#197
+#255#251#224#199#255#249#220#194#255#245#211#180#255#254#249#243#255#250#226
+#196#255#236#193#147#255#195'}H'#147#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#228#187#146#255#254#246#240#255
+#252#226#205#255#252#227#205#255#250#223#200#255#247#217#188#255#245#233#221
+#255#250#243#235#255#251#248#243#255#202#131'S'#254#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#228#187#146#255
+#254#247#241#255#252#229#210#255#252#228#209#255#251#226#204#255#249#221#196
+#255#246#215#187#255#243#209#175#255#250#239#228#255#204#135'X'#254'4'#180
+#217#208'^'#194#225#250'`'#195#226#250'`'#195#226#250'`'#195#226#250'_'#195
+#226#250#228#187#145#255#255#247#242#255#254#231#213#255#254#231#213#255#253
+#229#209#255#250#224#202#255#249#222#196#255#247#217#188#255#253#242#231#255
+#204#135'W'#254'6'#179#218#248#253#254#254#255#254#255#255#255#254#254#255
+#255#253#254#255#255#254#255#255#255#228#186#145#255#255#247#240#255#255#231
+#213#255#253#231#214#255#253#230#212#255#252#228#208#255#251#227#203#255#250
+#220#194#255#254#243#232#255#204#134'V'#254'5'#175#218#240#247#252#254#255
+#142#228#248#255#145#222#245#255#159#224#245#255#172#225#246#255#202#132'R'
+#255#255#247#241#255#255#233#217#255#255#234#219#255#255#233#217#255#255#231
+#215#255#255#229#210#255#255#226#203#255#255#247#241#255#203#133'U'#254'6'
+#170#218#242#241#250#253#255#148#222#245#255#147#220#244#255'd'#188#233#255
+'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'#148#218#255
+'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'#148#218#255#251#246#239#255
+#204#131'U'#254'5'#171#218#250#232#246#251#255'p'#188#231#255'U'#170#226#255
+'M'#165#224#255#145#201#235#255#250#243#239#255#253#254#253#255#255#253#252
+#255#255#253#252#255#254#253#252#255#254#252#251#255#254#254#253#255'5'#148
+#218#255#239#242#232#255#206#129'V'#255'7'#166#218#250#254#255#255#255#248
+#253#255#255#246#253#255#255#245#252#255#255#243#252#254#255#154#228#244#255
+#154#230#247#255#155#230#246#255#157#229#245#255#158#229#245#255#159#229#244
+#255#218#243#248#255'5'#148#218#255#253#244#238#255#202#128'T'#249'6'#161#218
+#249#246#252#254#255#148#229#248#255#147#229#248#255#147#229#248#255#145#229
+#248#255#147#219#233#255#147#215#227#255#147#210#220#255#144#206#215#255#140
+#200#207#255#134#193#198#255#201#216#214#255'5'#148#218#255#197'tD'#232#202
+#127'S'#241'6'#154#218#248#242#250#253#255#148#230#248#255#146#229#248#255
+#144#229#248#255#139#227#248#255#134#226#247#255#127#225#247#255'w'#222#246
+#255'l'#220#246#255'^'#217#244#255'O'#213#243#255#204#242#251#255'5'#148#218
+#255#255#255#255#0#255#255#255#0'5'#148#218#247#239#250#254#255#147#229#248
+#255#143#228#248#255#137#227#248#255#130#225#247#255'z'#223#247#255'q'#222
,#246#255'g'#219#245#255'['#216#244#255'M'#212#243#255'@'#209#242#255#202#242
+#251#255'5'#148#218#255#255#255#255#0#255#255#255#0'3'#142#217#251#220#240
+#250#255#152#225#246#255#149#224#246#255#146#223#246#255#142#222#245#255#137
+#220#245#255#133#218#244#255#128#217#244#255'z'#215#243#255't'#213#243#255'p'
+#211#242#255#194#234#248#255'5'#148#218#255#255#255#255#0#255#255#255#0','
+#134#216#0'-'#136#216#247'-'#135#216#247'-'#136#216#247'-'#136#216#247'-'#136
+#216#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#136
+#216#247'-'#135#216#247'-'#136#216#247','#134#216#0#255#255#255#0#255#255#255
+#0#188'k6q'#188'k6'#144#188'k6'#204#188'k6'#238#188'k6'#250#187'k6'#254#187
+'k6'#255#187'j6'#255#187'j6'#255#188'l9'#255#189'n;'#255#187'm:'#255#187'k8'
+#239#187'p>'#203#182'i5T'#255#255#255#0#188'k6'#155#246#224#209#255#247#224
+#209#255#254#251#248#255#254#251#247#255#253#249#246#255#252#245#240#255#250
+#240#234#255#251#242#237#255#253#249#246#255#253#250#247#255#251#241#235#255
+#248#233#223#254#236#208#189#251#201#137'^'#236#181'i5c'#188'k6'#216#246#223
+#209#255#233#170#128#255#254#250#246#255#253#250#246#255#200#140'd'#255#251
+#243#238#255#251#241#234#255#252#246#242#255#254#251#248#255#252#246#241#255
+#249#236#226#255#248#231#219#255#238#208#186#255#236#208#189#255#187'p>'#248
+#188'k6'#240#246#223#208#255#232#168'~'#255#252#246#241#255#252#246#241#255
+#200#140'd'#255#250#241#233#255#251#244#238#255#253#250#247#255#253#249#246
+#255#250#240#232#255#248#232#221#255#247#230#219#255#225#163'z'#255#239#213
+#195#255#183'i5'#254#188'k6'#250#245#221#204#255#231#168'~'#255#250#240#232
+#255#250#240#232#255#201#141'f'#255#250#240#233#255#253#248#243#255#254#250
+#248#255#252#244#239#255#249#233#223#255#247#231#219#255#247#229#217#255#224
+#162'x'#255#231#194#169#255#182'h5'#255#187'k6'#254#244#220#201#255#231#167
+'}'#255#249#236#225#255#249#236#225#255#249#237#227#255#252#244#238#255#253
+#250#247#255#253#247#243#255#250#237#229#255#247#231#219#255#247#229#217#255
+#246#229#216#255#222#160'w'#255#228#190#164#255#180'g4'#255#187'k6'#255#244
+#217#199#255#230#166'}'#255#200#140'd'#255#201#141'e'#255#201#142'g'#255#203
+#146'l'#255#203#146'm'#255#202#144'i'#255#200#140'e'#255#200#140'd'#255#200
+#140'd'#255#200#140'd'#255#218#156't'#255#225#186#159#255#179'f4'#255#187'j6'
+#255#242#216#197#255#227#164'{'#255#227#163'z'#255#227#164'z'#255#226#164'{'
+#255#226#163'{'#255#225#163'{'#255#225#162'y'#255#223#160'w'#255#222#159'v'
+#255#221#158't'#255#219#156'r'#255#220#157't'#255#221#181#154#255#177'e4'#255
+#187'j6'#255#242#213#194#255#227#163'z'#255#227#163'z'#255#226#163'{'#255#226
+#163'{'#255#226#164'{'#255#225#162'y'#255#224#161'x'#255#222#160'w'#255#222
+#158'u'#255#220#157't'#255#218#155's'#255#217#155's'#255#218#176#149#255#175
+'d3'#255#187'j6'#255#240#210#190#255#226#163'z'#255#226#163'z'#255#225#163'z'
+#255#226#163'{'#255#225#163'{'#255#224#161'x'#255#222#159'w'#255#221#159'v'
+#255#220#157't'#255#217#155'r'#255#216#153'q'#255#214#153'p'#255#213#171#142
+#255#173'c3'#255#186'j6'#255#239#208#187#255#226#162'z'#255#254#251#248#255
+#0#255#255#255#0#255#255#255#0#234#195#157#255#230#191#150#255#228#187#146
+#255#228#187#146#255#209#160'l'#245#208#158'm'#246#204#150'_'#218#196'yB~'
+#178'g<'#9#255#255#255#0#7'OnClick'#7#13'acOpenExecute'#0#0#9'TMenuItem'#9'm'
+'nuSaveAs'#6'Action'#7#8'AcSaveAs'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'
+#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0
+'d'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#186'j6'#0#185'i5'#181#184'i5'#238#183'h5'
+#255#181'h5'#255#180'g4'#255#178'f4'#255#176'e3'#255#174'd3'#255#172'c2'#255
+#170'b2'#255#169'a2'#255#168'`1'#255#167'`1'#254#166'`1'#241#168'a1'#196#186
+'j5'#222#235#198#173#255#234#197#173#255#254#251#248#255#254#251#248#255#254
+#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255
+#254#251#248#255#254#251#248#255#254#251#248#255#200#154'|'#255#199#152'y'
,#255#167'`1'#237#186'k7'#254#237#202#179#255#224#162'z'#255#254#250#247#255
+'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255
+'b'#192#136#255'b'#192#136#255'b'#192#136#255#253#249#246#255#202#141'e'#255
+#201#155'|'#255#167'`1'#254#187'l8'#255#238#204#182#255#225#162'z'#255#254
+#250#247#255#191#220#194#255#191#220#194#255#191#220#194#255#191#220#194#255
+#191#220#194#255#191#220#194#255#191#220#194#255#191#220#194#255#253#249#246
+#255#205#144'h'#255#204#158#129#255#168'a2'#255#187'k8'#255#239#206#184#255
+#225#162'y'#255#254#250#247#255'b'#192#136#255'b'#192#136#255'b'#192#136#255
+'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255
+#253#249#246#255#207#147'j'#255#206#163#132#255#170'a2'#255#186'j6'#255#239
+#208#187#255#226#162'z'#255#254#251#248#255#254#251#248#255#254#251#248#255
+#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248
+#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255#211#150
+'m'#255#210#167#138#255#171'b2'#255#187'k8'#255#239#206#184#255#225#162'y'
+#255#254#250#247#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136
+#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255#253#249#246
+#255#207#147'j'#255#206#163#132#255#170'a2'#255#187'l8'#255#238#204#182#255
+#225#162'z'#255#254#250#247#255#191#220#194#255#191#220#194#255#191#220#194
+#255#191#220#194#255#191#220#194#255#191#220#194#255#191#220#194#255#191#220
+#194#255#253#249#246#255#205#144'h'#255#204#158#129#255#168'a2'#255#186'k7'
+#254#237#202#179#255#224#162'z'#255#254#250#247#255'b'#192#136#255'b'#192#136
+#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136
+#255'b'#192#136#255#253#249#246#255#202#141'e'#255#201#155'|'#255#167'`1'#254
+#186'j5'#222#235#198#173#255#234#197#173#255#254#251#248#255#254#251#248#255
+#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248
+#255#254#251#248#255#254#251#248#255#254#251#248#255#200#154'|'#255#199#152
+'y'#255#167'`1'#237#186'j6'#0#185'i5'#181#184'i5'#238#183'h5'#255#181'h5'#255
+#180'g4'#255#178'f4'#255#176'e3'#255#174'd3'#255#172'c2'#255#170'b2'#255#169
+'a2'#255#168'`1'#255#167'`1'#254#166'`1'#241#168'a1'#196#255#255#255#0#255
+#255#254#251#248#255#254#251#248#255#211#150'm'#255#210#167#138#255#171'b2'
+#255#187'j6'#255#240#210#190#255#226#163'z'#255#226#163'z'#255#225#163'z'#255
+#226#163'{'#255#225#163'{'#255#224#161'x'#255#222#159'w'#255#221#159'v'#255
+#220#157't'#255#217#155'r'#255#216#153'q'#255#214#153'p'#255#213#171#142#255
+#173'c3'#255#187'j6'#255#242#213#194#255#227#163'z'#255#227#163'z'#255#226
+#163'{'#255#226#163'{'#255#226#164'{'#255#225#162'y'#255#224#161'x'#255#222
+#160'w'#255#222#158'u'#255#220#157't'#255#218#155's'#255#217#155's'#255#218
+#176#149#255#175'd3'#255#187'j6'#255#242#216#197#255#227#164'{'#255#227#163
+'z'#255#227#164'z'#255#226#164'{'#255#226#163'{'#255#225#163'{'#255#225#162
+'y'#255#223#160'w'#255#222#159'v'#255#221#158't'#255#219#156'r'#255#220#157
+'t'#255#221#181#154#255#177'e4'#255#187'k6'#255#244#217#199#255#230#166'}'
+#255#200#140'd'#255#201#141'e'#255#201#142'g'#255#203#146'l'#255#203#146'm'
+#255#202#144'i'#255#200#140'e'#255#200#140'd'#255#200#140'd'#255#200#140'd'
+#255#218#156't'#255#225#186#159#255#179'f4'#255#187'k6'#254#244#220#201#255
+#231#167'}'#255#249#236#225#255#249#236#225#255#249#237#227#255#252#244#238
+#255#253#250#247#255#253#247#243#255#250#237#229#255#247#231#219#255#247#229
+#217#255#246#229#216#255#222#160'w'#255#228#190#164#255#180'g4'#255#188'k6'
+#250#245#221#204#255#231#168'~'#255#250#240#232#255#250#240#232#255#201#141
+'f'#255#250#240#233#255#253#248#243#255#254#250#248#255#252#244#239#255#249
+#233#223#255#247#231#219#255#247#229#217#255#224#162'x'#255#231#194#169#255
+#182'h5'#255#188'k6'#240#246#223#208#255#232#168'~'#255#252#246#241#255#252
+#246#241#255#200#140'd'#255#250#241#233#255#251#244#238#255#253#250#247#255
+#253#249#246#255#250#240#232#255#248#232#221#255#247#230#219#255#225#163'z'
+#255#239#213#195#255#183'i5'#254#188'k6'#216#246#223#209#255#233#170#128#255
+#254#250#246#255#253#250#246#255#200#140'd'#255#251#243#238#255#251#241#234
+#255#252#246#242#255#254#251#248#255#252#246#241#255#249#236#226#255#248#231
+#219#255#238#208#186#255#236#208#189#255#187'p>'#248#188'k6'#155#246#224#209
+#255#247#224#209#255#254#251#248#255#254#251#247#255#253#249#246#255#252#245
+#240#255#250#240#234#255#251#242#237#255#253#249#246#255#253#250#247#255#251
+#241#235#255#248#233#223#254#236#208#189#251#201#137'^'#236#181'i5c'#188'k6q'
+#188'k6'#144#188'k6'#204#188'k6'#238#188'k6'#250#187'k6'#254#187'k6'#255#187
+'j6'#255#187'j6'#255#188'l9'#255#189'n;'#255#187'm:'#255#187'k8'#239#187'p>'
+#203#182'i5T'#255#255#255#0#7'OnClick'#7#15'acSaveAsExecute'#0#0#9'TMenuItem'
+#9'MenuItem1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#7'mnuQuit'#6'Action'#7#6'Ac'
+'Quit'#11'Bitmap.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0'6'#0#0#0'('#0
+#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0
+#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#29'c'#155#22#25'`'
+#152'9'#20']'#149'b'#16'Z'#146#136#13'X'#144#164#19'\'#146#252#12'W'#143#237
+#153#153#153#255'qqq'#255'TTT'#255'QQQ'#255'OOO'#255'LLL'#255'JJJ'#255'GGG'
+#255'EEE'#255'%g'#157#255'2t'#168#255'=|'#175#255'G'#132#181#255'N'#138#186
+#255'>~'#173#255#12'W'#143#234#255#255#255#0#255#255#255#0'XXX'#255#162#162
+#162#255#162#162#162#255#163#163#163#255#164#164#164#255#164#164#164#255#165
+#165#165#255'/o'#165#255'x'#171#210#255'x'#171#211#255's'#167#209#255'i'#160
+#205#255'@'#127#174#255#15'Y'#145#234#255#255#255#0#255#255#255#0'\\\'#255
+#161#161#161#255'<s@'#255#160#161#161#255#163#163#163#255#163#163#163#255#164
+#164#164#255'6t'#170#255'}'#175#212#255'['#154#201#255'T'#149#199#255'X'#150
+#200#255'A'#128#174#255#19'\'#148#234#255#255#255#0#255#255#255#0'```'#255
+#160#160#160#255'=vA'#255'6q9'#255#162#162#162#255#162#162#162#255#163#163
+#163#255'=y'#176#255#130#179#215#255'b'#159#204#255'Z'#154#201#255'^'#155#202
+#255'C'#129#175#255#25'`'#152#234'7'#130'>'#255'4~;'#255'1y7'#255'.u4'#255'I'
+#145'P'#255'F'#143'L'#255'9s='#255#161#161#161#255#162#162#162#255'E~'#180
,#255#136#183#217#255'g'#163#207#255'a'#158#204#255'c'#159#204#255'E'#131#177
+#255#31'd'#156#234';'#135'B'#255#137#203#146#255#132#200#141#255#128#198#136
+#255'{'#195#131#255'w'#193#127#255'G'#143'M'#255';t?'#255#161#161#161#255'L'
+#132#186#255#141#187#219#255'n'#168#209#255'f'#166#209#255'_'#180#223#255'G'
+#133#177#255'%i'#161#234'>'#139'F'#255#143#206#153#255'}'#198#135#255'x'#195
+#129#255's'#192'|'#255't'#192'|'#255'y'#194#129#255'I'#144'O'#255'T'#127'W'
+#255'T'#137#191#255#148#191#221#255'u'#173#212#255'c'#184#225#255'K'#212#255
+#255'B'#139#184#255',n'#166#234'A'#144'J'#255#148#210#159#255#145#208#154#255
+#141#205#150#255#137#203#146#255#132#200#141#255'Q'#152'X'#255'A|F'#255#159
+#159#159#255'Z'#142#196#255#152#195#224#255'|'#179#215#255't'#175#214#255'^'
+#196#237#255'K'#136#179#255'4s'#171#234'D'#148'M'#255'B'#145'K'#255'?'#141'H'
+#255'='#137'E'#255']'#164'e'#255'Z'#160'a'#255'E'#131'K'#255#158#158#158#255
+#158#158#158#255'`'#146#201#255#158#199#226#255#131#184#218#255'}'#180#215
+#255'~'#179#215#255'O'#137#180#255';y'#177#234#255#255#255#0#255#255#255#0'w'
+'ww'#255#154#154#154#255'='#138'E'#255'I'#138'O'#255#156#156#156#255#157#157
+#157#255#157#157#157#255'f'#150#204#255#162#203#227#255#137#189#220#255#131
+#185#218#255#132#185#218#255'Q'#139#181#255'C~'#182#234#255#255#255#0#255#255
+#255#0'zzz'#255#153#153#153#255'R'#145'Y'#255#153#154#153#255#155#155#155#255
+#156#156#156#255#156#156#156#255'l'#154#208#255#167#206#229#255#143#193#223
+#255#137#189#220#255#139#189#220#255'S'#141#182#255'K'#132#188#234#255#255
+#255#0#255#255#255#0'}}}'#255#153#153#153#255#153#153#153#255#154#154#154#255
+#154#154#154#255#155#155#155#255#155#155#155#255'o'#157#211#255#170#209#231
+#255#171#209#231#255#152#199#225#255#145#194#222#255'V'#143#183#255'R'#137
+#193#234#255#255#255#0#255#255#255#0#128#128#128#255'~~~'#255'|||'#255'zzz'
+#255'www'#255'uuu'#255'rrr'#255'q'#158#212#255'o'#158#214#255#135#178#220#255
+#171#211#232#255#169#208#230#255'X'#144#184#255'Y'#142#198#234#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'p'#158#214
+#219'm'#156#212#255#133#177#218#255'Z'#145#185#255'`'#147#203#234#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0'm'#156#212#137'j'#154#210#251'f'#151#207#238#7'OnClick'
+#7#13'acQuitExecute'#0#0#0#9'TMenuItem'#7'mnuEdit'#7'Caption'#6#4'Edit'#0#9
+'TMenuItem'#9'MenuItem2'#6'Action'#7#6'AcEdit'#9'AutoCheck'#9#0#0#0#9'TMenuI'
+'tem'#9'mnuFormat'#7'Caption'#6#6'Format'#0#9'TMenuItem'#15'MnuHorAlignment'
+#7'Caption'#6#20'Horizontal alignment'#0#9'TMenuItem'#13'MnuHorDefault'#6'Ac'
+'tion'#7#17'AcHorDefaultAlign'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7#11
+'AcLeftAlign'#0#0#9'TMenuItem'#9'MenuItem4'#6'Action'#7#16'AcHorCenterAlign'
+#0#0#9'TMenuItem'#9'MenuItem5'#6'Action'#7#12'AcRightAlign'#0#0#0#0#0#10'TIm'
+'ageList'#10'ImageList1'#4'left'#3#176#0#3'top'#2'x'#6'Bitmap'#10#14#28#0#0
+'Li'#7#0#0#0#16#0#0#0#16#0#0#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#234#195#157#255#230#191#150#255#228
+#187#146#255#228#187#146#255#209#160'l'#245#208#158'm'#246#204#150'_'#218#196
+'yB~'#178'g<'#9#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#229#190#150#255#255#255#254#255#253
+#243#233#255#253#243#234#255#252#242#232#255#250#239#227#255#250#242#231#255
+#234#187#136#255#207#133'U'#179#180'i='#12#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#228#187#147#255#254#245
+#237#255#252#222#197#255#251#224#199#255#249#220#194#255#245#211#180#255#254
+#249#243#255#250#226#196#255#236#193#147#255#195'}H'#147#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#228#187
+#146#255#254#246#240#255#252#226#205#255#252#227#205#255#250#223#200#255#247
+#217#188#255#245#233#221#255#250#243#235#255#251#248#243#255#202#131'S'#254
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#228#187#146#255#254#247#241#255#252#229#210#255#252#228#209#255
+#251#226#204#255#249#221#196#255#246#215#187#255#243#209#175#255#250#239#228
+#255#204#135'X'#254'4'#180#217#208'^'#194#225#250'`'#195#226#250'`'#195#226
+#250'`'#195#226#250'_'#195#226#250#228#187#145#255#255#247#242#255#254#231
+#213#255#254#231#213#255#253#229#209#255#250#224#202#255#249#222#196#255#247
+#217#188#255#253#242#231#255#204#135'W'#254'6'#179#218#248#253#254#254#255
+#254#255#255#255#254#254#255#255#253#254#255#255#254#255#255#255#228#186#145
+#255#255#247#240#255#255#231#213#255#253#231#214#255#253#230#212#255#252#228
+#208#255#251#227#203#255#250#220#194#255#254#243#232#255#204#134'V'#254'5'
+#175#218#240#247#252#254#255#142#228#248#255#145#222#245#255#159#224#245#255
,#172#225#246#255#202#132'R'#255#255#247#241#255#255#233#217#255#255#234#219
+#255#255#233#217#255#255#231#215#255#255#229#210#255#255#226#203#255#255#247
+#241#255#203#133'U'#254'6'#170#218#242#241#250#253#255#148#222#245#255#147
+#220#244#255'd'#188#233#255'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'
+#148#218#255'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'#148#218#255'5'
+#148#218#255#251#246#239#255#204#131'U'#254'5'#171#218#250#232#246#251#255'p'
+#188#231#255'U'#170#226#255'M'#165#224#255#145#201#235#255#250#243#239#255
+#253#254#253#255#255#253#252#255#255#253#252#255#254#253#252#255#254#252#251
+#255#254#254#253#255'5'#148#218#255#239#242#232#255#206#129'V'#255'7'#166#218
+#250#254#255#255#255#248#253#255#255#246#253#255#255#245#252#255#255#243#252
+#254#255#154#228#244#255#154#230#247#255#155#230#246#255#157#229#245#255#158
+#229#245#255#159#229#244#255#218#243#248#255'5'#148#218#255#253#244#238#255
+#202#128'T'#249'6'#161#218#249#246#252#254#255#148#229#248#255#147#229#248
+#255#147#229#248#255#145#229#248#255#147#219#233#255#147#215#227#255#147#210
+#220#255#144#206#215#255#140#200#207#255#134#193#198#255#201#216#214#255'5'
+#148#218#255#197'tD'#232#202#127'S'#241'6'#154#218#248#242#250#253#255#148
+#230#248#255#146#229#248#255#144#229#248#255#139#227#248#255#134#226#247#255
+#127#225#247#255'w'#222#246#255'l'#220#246#255'^'#217#244#255'O'#213#243#255
+#204#242#251#255'5'#148#218#255#255#255#255#0#255#255#255#0'5'#148#218#247
+#239#250#254#255#147#229#248#255#143#228#248#255#137#227#248#255#130#225#247
+#255'z'#223#247#255'q'#222#246#255'g'#219#245#255'['#216#244#255'M'#212#243
+#255'@'#209#242#255#202#242#251#255'5'#148#218#255#255#255#255#0#255#255#255
+#0'3'#142#217#251#220#240#250#255#152#225#246#255#149#224#246#255#146#223#246
+#255#142#222#245#255#137#220#245#255#133#218#244#255#128#217#244#255'z'#215
+#243#255't'#213#243#255'p'#211#242#255#194#234#248#255'5'#148#218#255#255#255
+#255#0#255#255#255#0','#134#216#0'-'#136#216#247'-'#135#216#247'-'#136#216
+#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#136#216#247'-'#136#216
+#247'-'#136#216#247'-'#136#216#247'-'#135#216#247'-'#136#216#247','#134#216#0
+#255#255#255#0#255#255#255#0#188'k6q'#188'k6'#144#188'k6'#204#188'k6'#238#188
+'k6'#250#187'k6'#254#187'k6'#255#187'j6'#255#187'j6'#255#188'l9'#255#189'n;'
+#255#187'm:'#255#187'k8'#239#187'p>'#203#182'i5T'#255#255#255#0#188'k6'#155
+#246#224#209#255#247#224#209#255#254#251#248#255#254#251#247#255#253#249#246
+#255#252#245#240#255#250#240#234#255#251#242#237#255#253#249#246#255#253#250
+#247#255#251#241#235#255#248#233#223#254#236#208#189#251#201#137'^'#236#181
+'i5c'#188'k6'#216#246#223#209#255#233#170#128#255#254#250#246#255#253#250#246
+#255#200#140'd'#255#251#243#238#255#251#241#234#255#252#246#242#255#254#251
+#248#255#252#246#241#255#249#236#226#255#248#231#219#255#238#208#186#255#236
+#208#189#255#187'p>'#248#188'k6'#240#246#223#208#255#232#168'~'#255#252#246
+#241#255#252#246#241#255#200#140'd'#255#250#241#233#255#251#244#238#255#253
+#250#247#255#253#249#246#255#250#240#232#255#248#232#221#255#247#230#219#255
+#225#163'z'#255#239#213#195#255#183'i5'#254#188'k6'#250#245#221#204#255#231
+#168'~'#255#250#240#232#255#250#240#232#255#201#141'f'#255#250#240#233#255
+#253#248#243#255#254#250#248#255#252#244#239#255#249#233#223#255#247#231#219
+#255#247#229#217#255#224#162'x'#255#231#194#169#255#182'h5'#255#187'k6'#254
+#244#220#201#255#231#167'}'#255#249#236#225#255#249#236#225#255#249#237#227
+#255#252#244#238#255#253#250#247#255#253#247#243#255#250#237#229#255#247#231
+#219#255#247#229#217#255#246#229#216#255#222#160'w'#255#228#190#164#255#180
+'g4'#255#187'k6'#255#244#217#199#255#230#166'}'#255#200#140'd'#255#201#141'e'
+#255#201#142'g'#255#203#146'l'#255#203#146'm'#255#202#144'i'#255#200#140'e'
+#255#200#140'd'#255#200#140'd'#255#200#140'd'#255#218#156't'#255#225#186#159
+#255#179'f4'#255#187'j6'#255#242#216#197#255#227#164'{'#255#227#163'z'#255
+#227#164'z'#255#226#164'{'#255#226#163'{'#255#225#163'{'#255#225#162'y'#255
+#223#160'w'#255#222#159'v'#255#221#158't'#255#219#156'r'#255#220#157't'#255
+#221#181#154#255#177'e4'#255#187'j6'#255#242#213#194#255#227#163'z'#255#227
+#163'z'#255#226#163'{'#255#226#163'{'#255#226#164'{'#255#225#162'y'#255#224
+#161'x'#255#222#160'w'#255#222#158'u'#255#220#157't'#255#218#155's'#255#217
+#155's'#255#218#176#149#255#175'd3'#255#187'j6'#255#240#210#190#255#226#163
+'z'#255#226#163'z'#255#225#163'z'#255#226#163'{'#255#225#163'{'#255#224#161
+'x'#255#222#159'w'#255#221#159'v'#255#220#157't'#255#217#155'r'#255#216#153
+'q'#255#214#153'p'#255#213#171#142#255#173'c3'#255#186'j6'#255#239#208#187
+#255#226#162'z'#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251
+#248#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255#254
+#251#248#255#254#251#248#255#211#150'm'#255#210#167#138#255#171'b2'#255#187
+'k8'#255#239#206#184#255#225#162'y'#255#254#250#247#255'b'#192#136#255'b'#192
,#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192
+#136#255'b'#192#136#255#253#249#246#255#207#147'j'#255#206#163#132#255#170'a'
+'2'#255#187'l8'#255#238#204#182#255#225#162'z'#255#254#250#247#255#191#220
+#194#255#191#220#194#255#191#220#194#255#191#220#194#255#191#220#194#255#191
+#220#194#255#191#220#194#255#191#220#194#255#253#249#246#255#205#144'h'#255
+#204#158#129#255#168'a2'#255#186'k7'#254#237#202#179#255#224#162'z'#255#254
+#250#247#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255'b'
+#192#136#255'b'#192#136#255'b'#192#136#255'b'#192#136#255#253#249#246#255#202
+#141'e'#255#201#155'|'#255#167'`1'#254#186'j5'#222#235#198#173#255#234#197
+#173#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255#254
+#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255#254#251#248#255
+#254#251#248#255#200#154'|'#255#199#152'y'#255#167'`1'#237#186'j6'#0#185'i5'
+#181#184'i5'#238#183'h5'#255#181'h5'#255#180'g4'#255#178'f4'#255#176'e3'#255
+#174'd3'#255#172'c2'#255#170'b2'#255#169'a2'#255#168'`1'#255#167'`1'#254#166
+'`1'#241#168'a1'#196#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'm'#156#212#137'j'#154
+#210#251'f'#151#207#238#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'p'#158#214#219'm'#156#212#255#133#177#218#255'Z'#145
+#185#255'`'#147#203#234#255#255#255#0#255#255#255#0#128#128#128#255'~~~'#255
+'|||'#255'zzz'#255'www'#255'uuu'#255'rrr'#255'q'#158#212#255'o'#158#214#255
+#135#178#220#255#171#211#232#255#169#208#230#255'X'#144#184#255'Y'#142#198
+#234#255#255#255#0#255#255#255#0'}}}'#255#153#153#153#255#153#153#153#255#154
+#154#154#255#154#154#154#255#155#155#155#255#155#155#155#255'o'#157#211#255
+#170#209#231#255#171#209#231#255#152#199#225#255#145#194#222#255'V'#143#183
+#255'R'#137#193#234#255#255#255#0#255#255#255#0'zzz'#255#153#153#153#255'R'
+#145'Y'#255#153#154#153#255#155#155#155#255#156#156#156#255#156#156#156#255
+'l'#154#208#255#167#206#229#255#143#193#223#255#137#189#220#255#139#189#220
+#255'S'#141#182#255'K'#132#188#234#255#255#255#0#255#255#255#0'www'#255#154
+#154#154#255'='#138'E'#255'I'#138'O'#255#156#156#156#255#157#157#157#255#157
+#157#157#255'f'#150#204#255#162#203#227#255#137#189#220#255#131#185#218#255
+#132#185#218#255'Q'#139#181#255'C~'#182#234'D'#148'M'#255'B'#145'K'#255'?'
+#141'H'#255'='#137'E'#255']'#164'e'#255'Z'#160'a'#255'E'#131'K'#255#158#158
+#158#255#158#158#158#255'`'#146#201#255#158#199#226#255#131#184#218#255'}'
+#180#215#255'~'#179#215#255'O'#137#180#255';y'#177#234'A'#144'J'#255#148#210
+#159#255#145#208#154#255#141#205#150#255#137#203#146#255#132#200#141#255'Q'
+#152'X'#255'A|F'#255#159#159#159#255'Z'#142#196#255#152#195#224#255'|'#179
+#215#255't'#175#214#255'^'#196#237#255'K'#136#179#255'4s'#171#234'>'#139'F'
+#255#143#206#153#255'}'#198#135#255'x'#195#129#255's'#192'|'#255't'#192'|'
+#255'y'#194#129#255'I'#144'O'#255'T'#127'W'#255'T'#137#191#255#148#191#221
+#255'u'#173#212#255'c'#184#225#255'K'#212#255#255'B'#139#184#255',n'#166#234
+';'#135'B'#255#137#203#146#255#132#200#141#255#128#198#136#255'{'#195#131#255
+'w'#193#127#255'G'#143'M'#255';t?'#255#161#161#161#255'L'#132#186#255#141#187
+#219#255'n'#168#209#255'f'#166#209#255'_'#180#223#255'G'#133#177#255'%i'#161
+#234'7'#130'>'#255'4~;'#255'1y7'#255'.u4'#255'I'#145'P'#255'F'#143'L'#255'9s'
+'='#255#161#161#161#255#162#162#162#255'E~'#180#255#136#183#217#255'g'#163
+#207#255'a'#158#204#255'c'#159#204#255'E'#131#177#255#31'd'#156#234#255#255
+#255#0#255#255#255#0'```'#255#160#160#160#255'=vA'#255'6q9'#255#162#162#162
+#255#162#162#162#255#163#163#163#255'=y'#176#255#130#179#215#255'b'#159#204
+#255'Z'#154#201#255'^'#155#202#255'C'#129#175#255#25'`'#152#234#255#255#255#0
+#255#255#255#0'\\\'#255#161#161#161#255'<s@'#255#160#161#161#255#163#163#163
+#255#163#163#163#255#164#164#164#255'6t'#170#255'}'#175#212#255'['#154#201
+#255'T'#149#199#255'X'#150#200#255'A'#128#174#255#19'\'#148#234#255#255#255#0
+#255#255#255#0'XXX'#255#162#162#162#255#162#162#162#255#163#163#163#255#164
+#164#164#255#164#164#164#255#165#165#165#255'/o'#165#255'x'#171#210#255'x'
+#171#211#255's'#167#209#255'i'#160#205#255'@'#127#174#255#15'Y'#145#234#153
+#153#153#255'qqq'#255'TTT'#255'QQQ'#255'OOO'#255'LLL'#255'JJJ'#255'GGG'#255
+'EEE'#255'%g'#157#255'2t'#168#255'=|'#175#255'G'#132#181#255'N'#138#186#255
+'>~'#173#255#12'W'#143#234#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#29'c'#155#22#25'`'#152'9'#20']'#149'b'#16'Z'#146#136#13'X'#144#164#19'\'#146
+#252#12'W'#143#237#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
,#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'/'#186#228#9'O'#170#219#234'P'#147#202#253'N'#144#200#255'/'#157
+#210#223'5'#164#222#25#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0'P'#168#217#255'j'#165#216#255#201#225#247#255#203#227#248#255'B'
+#149#202#255'1'#130#194#174#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'/'#186#228#255#167#212#244#255#197#225#248#255#204#227#249#255#204#227#249
+#255#189#219#247#255'O'#144#201#253#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'/'#186
+#228#255#195#237#248#255#168#226#248#255'l'#174#221#255#165#207#244#255#165
+#207#244#255#189#219#247#255'S'#147#203#247#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'/'#186#228
+#255#195#237#248#255#179#244#252#255'h'#217#245#255'o'#207#243#255'Y'#157#208
+#255's'#171#221#255'O'#145#201#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'/'#186#228#255#195
+#237#248#255#179#244#252#255'`'#220#245#255'D'#214#244#255#142#238#250#255']'
+#180#230#255';'#143#217#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'/'#186#228#255#195#237#248
+#255#179#244#252#255'`'#220#245#255'D'#214#244#255#142#238#250#255']'#180#230
+#255';'#143#217#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0''''#144#191#255#195#237#248#255
+#179#244#252#255'`'#220#245#255'D'#214#244#255#142#238#250#255']'#180#230#255
+';'#143#217#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'&'#137#185#255#190#230#242#255#179#244
+#252#255'`'#220#245#255'D'#214#244#255#142#238#250#255']'#180#230#255';'#143
+#217#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0' c'#152' &'#137#185#255#176#203#225#255'g'#169#200#255'`'
+#220#245#255'D'#214#244#255#142#238#250#255']'#180#230#255';'#143#217#255#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#30'm'#147#255#200#225#242#255#209#231#250#255'4}'#181
+#255'1'#153#195#255'm'#196#220#255'J'#156#207#255'4'#131#199#255#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#30'm'#147#255#203#227#249#255'a'#170#236#255'@'#152
+#232#255#21'g'#194#255#22'`'#170#255',v'#180#255#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#18'BY'#255']'#156#212#255#166#207#245#255#169#207
+#236#255'H'#139#193#255',v'#180#255#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#19'@X'#255#21'B^'#255'%i'#156#255',v'#180#255';'#139
+#186#173#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'm'#156#212#137'j'#154#210#251'f'#151#207#238#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'p'#158#214#219
+'m'#156#212#255#133#177#218#255'Z'#145#185#255'`'#147#203#234#255#255#255#0
,#255#255#255#0#128#128#128#255'~~~'#255'|||'#255'zzz'#255'www'#255'uuu'#255
+'rrr'#255'q'#158#212#255'o'#158#214#255#135#178#220#255#171#211#232#255#169
+#208#230#255'X'#144#184#255'Y'#142#198#234#255#255#255#0#255#255#255#0'}}}'
+#255#153#153#153#255#153#153#153#255#154#154#154#255#154#154#154#255#155#155
+#155#255#155#155#155#255'o'#157#211#255#170#209#231#255#171#209#231#255#152
+#199#225#255#145#194#222#255'V'#143#183#255'R'#137#193#234#255#255#255#0#255
+#255#255#0'zzz'#255#153#153#153#255'R'#145'Y'#255#153#154#153#255#155#155#155
+#255#156#156#156#255#156#156#156#255'l'#154#208#255#167#206#229#255#143#193
+#223#255#137#189#220#255#139#189#220#255'S'#141#182#255'K'#132#188#234#255
+#255#255#0#255#255#255#0'www'#255#154#154#154#255'='#138'E'#255'I'#138'O'#255
+#156#156#156#255#157#157#157#255#157#157#157#255'f'#150#204#255#162#203#227
+#255#137#189#220#255#131#185#218#255#132#185#218#255'Q'#139#181#255'C~'#182
+#234'D'#148'M'#255'B'#145'K'#255'?'#141'H'#255'='#137'E'#255']'#164'e'#255'Z'
+#160'a'#255'E'#131'K'#255#158#158#158#255#158#158#158#255'`'#146#201#255#158
+#199#226#255#131#184#218#255'}'#180#215#255'~'#179#215#255'O'#137#180#255';y'
+#177#234'A'#144'J'#255#148#210#159#255#145#208#154#255#141#205#150#255#137
+#203#146#255#132#200#141#255'Q'#152'X'#255'A|F'#255#159#159#159#255'Z'#142
+#196#255#152#195#224#255'|'#179#215#255't'#175#214#255'^'#196#237#255'K'#136
+#179#255'4s'#171#234'>'#139'F'#255#143#206#153#255'}'#198#135#255'x'#195#129
+#255's'#192'|'#255't'#192'|'#255'y'#194#129#255'I'#144'O'#255'T'#127'W'#255
+'T'#137#191#255#148#191#221#255'u'#173#212#255'c'#184#225#255'K'#212#255#255
+'B'#139#184#255',n'#166#234';'#135'B'#255#137#203#146#255#132#200#141#255#128
+#198#136#255'{'#195#131#255'w'#193#127#255'G'#143'M'#255';t?'#255#161#161#161
+#255'L'#132#186#255#141#187#219#255'n'#168#209#255'f'#166#209#255'_'#180#223
+#255'G'#133#177#255'%i'#161#234'7'#130'>'#255'4~;'#255'1y7'#255'.u4'#255'I'
+#145'P'#255'F'#143'L'#255'9s='#255#161#161#161#255#162#162#162#255'E~'#180
+#255#136#183#217#255'g'#163#207#255'a'#158#204#255'c'#159#204#255'E'#131#177
+#255#31'd'#156#234#255#255#255#0#255#255#255#0'```'#255#160#160#160#255'=vA'
+#255'6q9'#255#162#162#162#255#162#162#162#255#163#163#163#255'=y'#176#255#130
+#179#215#255'b'#159#204#255'Z'#154#201#255'^'#155#202#255'C'#129#175#255#25
+'`'#152#234#255#255#255#0#255#255#255#0'\\\'#255#161#161#161#255'<s@'#255#160
+#161#161#255#163#163#163#255#163#163#163#255#164#164#164#255'6t'#170#255'}'
+#175#212#255'['#154#201#255'T'#149#199#255'X'#150#200#255'A'#128#174#255#19
+'\'#148#234#255#255#255#0#255#255#255#0'XXX'#255#162#162#162#255#162#162#162
+#255#163#163#163#255#164#164#164#255#164#164#164#255#165#165#165#255'/o'#165
+#255'x'#171#210#255'x'#171#211#255's'#167#209#255'i'#160#205#255'@'#127#174
+#255#15'Y'#145#234#153#153#153#255'qqq'#255'TTT'#255'QQQ'#255'OOO'#255'LLL'
+#255'JJJ'#255'GGG'#255'EEE'#255'%g'#157#255'2t'#168#255'=|'#175#255'G'#132
+#181#255'N'#138#186#255'>~'#173#255#12'W'#143#234#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#29'c'#155#22#25'`'#152'9'#20']'#149'b'#16'Z'#146#136
+#13'X'#144#164#19'\'#146#252#12'W'#143#237#0#0#11'TActionList'#11'ActionList'
+'1'#4'left'#3#176#0#3'top'#2'@'#0#7'TAction'#6'AcOpen'#7'Caption'#6#7'Open..'
+'.'#10'ImageIndex'#2#0#9'OnExecute'#7#13'acOpenExecute'#0#0#7'TAction'#8'AcS'
+'aveAs'#7'Caption'#6#10'Save as...'#10'ImageIndex'#2#1#9'OnExecute'#7#15'acS'
+'aveAsExecute'#0#0#7'TAction'#6'AcQuit'#7'Caption'#6#4'Quit'#10'ImageIndex'#2
+#2#9'OnExecute'#7#13'acQuitExecute'#0#0#0#0
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'vvv'#255'ttt'#255'ppp'#255'lll'#255'hhh'#255'ccc'
+#255'^^^'#255'YYY'#255'SSS'#255'NNN'#255'HHH'#255'BBB'#255#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0'ooo'#255'kkk'#255'fff'#255'aaa'#255'\'
+'\\'#255'WWW'#255'QQQ'#255'KKK'#255'EEE'#255#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
,#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'ddd'#255
+'___'#255'ZZZ'#255'TTT'#255'OOO'#255'III'#255'CCC'#255'==='#255'777'#255'111'
+#255'+++'#255'%%%'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+'XXX'#255'RRR'#255'LLL'#255'FFF'#255'@@@'#255':::'#255'444'#255'...'#255'((('
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'JJJ'#255'DDD'#255'>>>'#255'888'#255'222'#255',,'
+','#255'&&&'#255' '#255#27#27#27#255#22#22#22#255#17#17#17#255#12#12#12#255
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'<<<'#255'555'#255'/'
+'//'#255')))'#255'$$$'#255#30#30#30#255#25#25#25#255#20#20#20#255#15#15#15
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'vvv'#255'ttt'#255'ppp'#255'lll'#255'hhh'#255'cc'
+'c'#255'^^^'#255'YYY'#255'SSS'#255'NNN'#255'HHH'#255'BBB'#255#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'kkkkfff'#255'aaa'
+#255'\\\'#255'WWW'#255'QQQ'#255'KKK'#255'EEE'#255'???'#255'999k'#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'ddd'#255'___'#255'Z'
+'ZZ'#255'TTT'#255'OOO'#255'III'#255'CCC'#255'==='#255'777'#255'111'#255'+++'
+#255'%%%'#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'RRRkLLL'#255'FFF'#255'@@@'#255':::'#255'444'#255'...'#255'((('#255'##'
+'#'#255#29#29#29'k'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0'JJJ'#255'DDD'#255'>>>'#255'888'#255'222'#255',,,'#255'&&&'#255
+' '#255#27#27#27#255#22#22#22#255#17#17#17#255#12#12#12#255#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'555k///'#255')))'
+#255'$$$'#255#30#30#30#255#25#25#25#255#20#20#20#255#15#15#15#255#11#11#11
,#255#7#7#7'k'#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0'vvv'#255'ttt'#255'ppp'#255'lll'#255'hhh'#255'ccc'#255'^^^'#255'YYY'
+#255'SSS'#255'NNN'#255'HHH'#255'BBB'#255#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0'aaa'#255'\\\'
+#255'WWW'#255'QQQ'#255'KKK'#255'EEE'#255'???'#255'999'#255'333'#255#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0'ddd'#255'___'#255'ZZZ'#255
+'TTT'#255'OOO'#255'III'#255'CCC'#255'==='#255'777'#255'111'#255'+++'#255'%%%'
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0'FFF'#255'@@@'#255':::'#255'444'#255'...'#255'(('
+'('#255'###'#255#29#29#29#255#24#24#24#255#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0'JJJ'#255'DDD'#255'>>>'#255'888'#255'222'#255',,,'
+#255'&&&'#255' '#255#27#27#27#255#22#22#22#255#17#17#17#255#12#12#12#255
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0')))'#255'$$$'#255#30#30#30#255#25#25#25#255#20#20#20
+#255#15#15#15#255#11#11#11#255#7#7#7#255#3#3#3#255#255#255#255#0#255#255#255
+#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
+#0#0#11'TActionList'#11'ActionList1'#6'Images'#7#10'ImageList1'#4'left'#3#176
+#0#3'top'#2'@'#0#7'TAction'#6'AcOpen'#7'Caption'#6#7'Open...'#10'ImageIndex'
+#2#0#9'OnExecute'#7#13'acOpenExecute'#0#0#7'TAction'#8'AcSaveAs'#7'Caption'#6
+#10'Save as...'#10'ImageIndex'#2#1#9'OnExecute'#7#15'acSaveAsExecute'#0#0#7
+'TAction'#6'AcQuit'#7'Caption'#6#4'Quit'#10'ImageIndex'#2#2#9'OnExecute'#7#13
+'acQuitExecute'#0#0#7'TAction'#6'AcEdit'#9'AutoCheck'#9#7'Caption'#6#9'Edit '
+'mode'#4'Hint'#6#22'Enable/disable editing'#10'ImageIndex'#2#3#9'OnExecute'#7
+#13'AcEditExecute'#0#0#7'TAction'#17'AcHorDefaultAlign'#3'Tag'#2'd'#8'Catego'
+'ry'#6#6'Format'#7'Caption'#6#7'Default'#7'Checked'#9#9'OnExecute'#7#21'AcHo'
+'rAlignmentExecute'#0#0#7'TAction'#11'AcLeftAlign'#3'Tag'#2'e'#8'Category'#6
+#6'Format'#7'Caption'#6#4'Left'#10'ImageIndex'#2#4#9'OnExecute'#7#21'AcHorAl'
+'ignmentExecute'#0#0#7'TAction'#16'AcHorCenterAlign'#3'Tag'#2'f'#8'Category'
+#6#6'Format'#7'Caption'#6#8'Centered'#10'ImageIndex'#2#5#9'OnExecute'#7#21'A'
,'cHorAlignmentExecute'#0#0#7'TAction'#12'AcRightAlign'#3'Tag'#2'g'#8'Categor'
+'y'#6#6'Format'#7'Caption'#6#5'Right'#10'ImageIndex'#2#6#9'OnExecute'#7#21'A'
+'cHorAlignmentExecute'#0#0#0#0
]);

View File

@ -6,7 +6,7 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Menus, ExtCtrls, ComCtrls, ActnList, Spin,
StdCtrls, Menus, ExtCtrls, ComCtrls, ActnList, Spin, ColorBox,
fpspreadsheetgrid, fpspreadsheet, fpsallformats;
type
@ -17,16 +17,30 @@ type
AcOpen: TAction;
AcSaveAs: TAction;
AcQuit: TAction;
AcEdit: TAction;
AcLeftAlign: TAction;
AcHorCenterAlign: TAction;
AcRightAlign: TAction;
AcHorDefaultAlign: TAction;
ActionList1: TActionList;
btnPopulateGrid: TButton;
CbShowHeaders: TCheckBox;
CbShowGridLines: TCheckBox;
FontComboBox: TComboBox;
EdFrozenRows: TSpinEdit;
FontSizeComboBox: TComboBox;
ImageList1: TImageList;
Label1: TLabel;
Label2: TLabel;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MnuHorDefault: TMenuItem;
MnuHorAlignment: TMenuItem;
mnuFormat: TMenuItem;
mnuEdit: TMenuItem;
mnuFile: TMenuItem;
mnuOpen: TMenuItem;
mnuQuit: TMenuItem;
@ -39,10 +53,18 @@ type
sWorksheetGrid1: TsWorksheetGrid;
TabSheet1: TTabSheet;
ToolBar1: TToolBar;
FormatToolBar: TToolBar;
ToolButton1: TToolButton;
ToolButton10: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
procedure AcEditExecute(Sender: TObject);
procedure AcHorAlignmentExecute(Sender: TObject);
procedure btnPopulateGridClick(Sender: TObject);
procedure CbShowHeadersClick(Sender: TObject);
procedure CbShowGridLinesClick(Sender: TObject);
@ -51,11 +73,17 @@ type
procedure acSaveAsExecute(Sender: TObject);
procedure EdFrozenColsChange(Sender: TObject);
procedure EdFrozenRowsChange(Sender: TObject);
procedure FontComboBoxSelect(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure sWorksheetGrid1SelectCell(Sender: TObject; aCol, aRow: Integer;
var CanSelect: Boolean);
private
{ private declarations }
procedure LoadFile(const AFileName: String);
procedure UpdateHorAlignment(AValue: TsHorAlignment);
procedure UpdateFont(AFont: TsFont);
public
{ public declarations }
end;
@ -66,7 +94,11 @@ var
implementation
uses
Grids, fpcanvas;
fpcanvas, Grids;
const
HORALIGN_TAG = 100;
{ TForm1 }
@ -81,6 +113,31 @@ begin
sWorksheetGrid1.Invalidate;
end;
procedure TForm1.AcEditExecute(Sender: TObject);
begin
if AcEdit.Checked then
sWorksheetGrid1.Options := sWorksheetGrid1.Options + [goEditing]
else
sWorksheetGrid1.Options := sWorksheetGrid1.Options - [goEditing];
end;
procedure TForm1.AcHorAlignmentExecute(Sender: TObject);
var
horalign: TsHorAlignment;
c, r: Cardinal;
begin
horalign := TsHorAlignment(TAction(Sender).Tag - HORALIGN_TAG);
if TAction(Sender).Checked then
horalign := haDefault;
UpdateHorAlignment(horalign);
with sWorksheetGrid1 do begin
c := GetWorksheetCol(Col);
r := GetWorksheetRow(Row);
if Worksheet <> nil then
Worksheet.WriteHorAlignment(r, c, horalign);
end;
end;
procedure TForm1.CbShowHeadersClick(Sender: TObject);
begin
sWorksheetGrid1.ShowHeaders := CbShowHeaders.Checked;
@ -104,24 +161,12 @@ end;
procedure TForm1.acSaveAsExecute(Sender: TObject);
// Saves sheet in grid to file, overwriting existing file
var
lWorkBook: TsWorkbook;
lWorkSheet:TsWorksheet;
begin
ShowMessage('Not implemented...');
exit;
if sWorksheetGrid1.Workbook = nil then
exit;
if SaveDialog1.Execute then
begin
lWorkBook := TsWorkBook.Create;
lWorkSheet := lWorkBook.AddWorksheet('Sheet1');
try
sWorksheetGrid1.SaveToWorksheet(lWorkSheet);
lWorkBook.WriteToFile(SaveDialog1.FileName,true);
finally
lWorkBook.Free;
end;
end;
sWorksheetGrid1.SaveToSpreadsheetFile(SaveDialog1.FileName);
end;
procedure TForm1.EdFrozenColsChange(Sender: TObject);
@ -134,12 +179,49 @@ begin
sWorksheetGrid1.FrozenRows := EdFrozenRows.Value;
end;
procedure TForm1.FontComboBoxSelect(Sender: TObject);
var
c, r: Cardinal;
f: Integer;
lFont: TsFont;
h: Integer;
s: String;
begin
if sWorksheetGrid1.Workbook = nil then
exit;
with sWorksheetGrid1 do begin
c := GetWorksheetCol(Col);
r := GetWorksheetRow(Row);
f := Worksheet.GetCell(r, c)^.FontIndex;
lFont := Workbook.GetFont(f);
if FontCombobox.ItemIndex = -1 then
s := lFont.FontName
else
s := FontCombobox.Items[FontCombobox.ItemIndex];
if FontSizeCombobox.ItemIndex = -1 then
h := round(lFont.Size)
else
h := StrToInt(FontSizeCombobox.Items[FontSizeCombobox.ItemIndex]);
Worksheet.WriteFont(r, c, s, h, lFont.Style, lFont.Color);
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if ParamCount > 0 then
LoadFile(ParamStr(1));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// Populate font combobox
FontCombobox.Items.Assign(Screen.Fonts);
end;
procedure TForm1.LoadFile(const AFileName: String);
// Loads first worksheet from file into grid
var
@ -180,6 +262,44 @@ begin
sWorksheetGrid1.SelectSheetByIndex(PageControl1.ActivePageIndex);
end;
procedure TForm1.sWorksheetGrid1SelectCell(Sender: TObject;
aCol, aRow: Integer; var CanSelect: Boolean);
var
cell: PCell;
c, r: Cardinal;
lFont: TsFont;
begin
with sWorksheetGrid1 do begin
if Worksheet = nil then exit;
c := GetWorksheetCol(ACol);
r := GetWorksheetRow(ARow);
cell := Worksheet.FindCell(r, c);
end;
if cell = nil then
exit;
UpdateHorAlignment(cell^.HorAlignment);
lFont := sWorksheetGrid1.Workbook.GetFont(cell^.FontIndex);
UpdateFont(lFont);
end;
procedure TForm1.UpdateHorAlignment(AValue: TsHorAlignment);
var
i: Integer;
ac: TAction;
begin
for i:=0 to ActionList1.ActionCount-1 do begin
ac := TAction(ActionList1.Actions[i]);
if (ac.Tag >= HORALIGN_TAG) and (ac.Tag < HORALIGN_TAG+10) then
ac.Checked := ((ac.Tag - HORALIGN_TAG) = ord(AValue));
end;
end;
procedure TForm1.UpdateFont(AFont: TsFont);
begin
FontCombobox.ItemIndex := FontCombobox.Items.IndexOf(AFont.FontName);
FontsizeCombobox.ItemIndex := FontSizeCombobox.Items.IndexOf(IntToStr(Round(AFont.Size)));
end;
initialization
{$I mainform.lrs}

View File

@ -310,8 +310,11 @@ type
TsCustomSpreadWriter = class;
TsWorkbook = class;
{ TsWorksheet }
TsCellEvent = procedure (Sender: TObject; ARow, ACol: Cardinal) of object;
TsWorksheet = class
private
FWorkbook: TsWorkbook;
@ -321,14 +324,17 @@ type
FLeftPaneWidth: Integer;
FTopPaneHeight: Integer;
FOptions: TsSheetOptions;
FOnChangeCell: TsCellEvent;
procedure RemoveCallback(data, arg: pointer);
protected
procedure ChangedCell(ARow, ACol: Cardinal);
public
Name: string;
{ Base methods }
constructor Create;
destructor Destroy; override;
{ Utils }
class function CellPosToText(ARow, ACol: Cardinal): string;
class function CellPosToText(ARow, ACol: Cardinal): string;
{ Data manipulation methods - For Cells }
procedure CopyCell(AFromRow, AFromCol, AToRow, AToCol: Cardinal; AFromWorksheet: TsWorksheet);
function FindCell(ARow, ACol: Cardinal): PCell;
@ -398,8 +404,10 @@ type
property Options: TsSheetOptions read FOptions write FOptions;
property LeftPaneWidth: Integer read FLeftPaneWidth write FLeftPaneWidth;
property TopPaneHeight: Integer read FTopPaneHeight write FTopPaneHeight;
property OnChangeCell: TsCellEvent read FOnChangeCell write FOnChangeCell;
end;
{ TsWorkbook }
TsWorkbook = class
@ -851,6 +859,12 @@ begin
Result := Format('%s%d', [lStr, ARow+1]);
end;
{ Is called whenever a cell value or formatting has changed. }
procedure TsWorksheet.ChangedCell(ARow, ACol: Cardinal);
begin
if Assigned(FOnChangeCell) then FOnChangeCell(Self, ARow, ACol);
end;
procedure TsWorksheet.CopyCell(AFromRow, AFromCol, AToRow, AToCol: Cardinal;
AFromWorksheet: TsWorksheet);
var
@ -1252,9 +1266,9 @@ var
ACell: PCell;
begin
ACell := GetCell(ARow, ACol);
ACell^.ContentType := cctUTF8String;
ACell^.UTF8StringValue := AText;
ChangedCell(ARow, ACol);
end;
{@@
@ -1295,6 +1309,7 @@ begin
ACell^.NumberFormatStr := '0' + decs;
end;
end;
ChangedCell(ARow, ACol);
end;
{@@
@ -1311,6 +1326,7 @@ var
begin
ACell := GetCell(ARow, ACol);
ACell^.ContentType := cctEmpty;
ChangedCell(ARow, ACol);
end;
{@@
@ -1371,6 +1387,7 @@ begin
nfTimeInterval:
ACell^.NumberFormatStr := '';
end;
ChangedCell(ARow, ACol);
end;
{@@
@ -1387,6 +1404,7 @@ begin
ACell := GetCell(ARow, ACol);
ACell^.ContentType := cctFormula;
ACell^.FormulaValue := AFormula;
ChangedCell(ARow, ACol);
end;
{@@
@ -1406,6 +1424,7 @@ begin
ACell := GetCell(ARow, ACol);
Include(ACell^.UsedFormattingFields, uffNumberFormat);
ACell^.NumberFormat := ANumberFormat;
ChangedCell(ARow, ACol);
end;
procedure TsWorksheet.WriteRPNFormula(ARow, ACol: Cardinal;
@ -1416,6 +1435,7 @@ begin
ACell := GetCell(ARow, ACol);
ACell^.ContentType := cctRPNFormula;
ACell^.RPNFormulaValue := AFormula;
ChangedCell(ARow, ACol);
end;
{@@
@ -1441,6 +1461,7 @@ begin
if Result = -1 then
result := FWorkbook.AddFont(AFontName, AFontSize, AFontStyle, AFontColor);
lCell^.FontIndex := Result;
ChangedCell(ARow, ACol);
end;
procedure TsWorksheet.WriteFont(ARow, ACol: Cardinal; AFontIndex: Integer);
@ -1453,6 +1474,7 @@ begin
lCell := GetCell(ARow, ACol);
Include(lCell^.UsedFormattingFields, uffFont);
lCell^.FontIndex := AFontIndex;
ChangedCell(ARow, ACol);
end else
raise Exception.Create(lpInvalidFontIndex);
end;
@ -1505,6 +1527,7 @@ begin
ACell := GetCell(ARow, ACol);
Include(ACell^.UsedFormattingFields, uffTextRotation);
ACell^.TextRotation := ARotation;
ChangedCell(ARow, ACol);
end;
procedure TsWorksheet.WriteUsedFormatting(ARow, ACol: Cardinal;
@ -1514,6 +1537,7 @@ var
begin
ACell := GetCell(ARow, ACol);
ACell^.UsedFormattingFields := AUsedFormatting;
ChangedCell(ARow, ACol);
end;
procedure TsWorksheet.WriteBackgroundColor(ARow, ACol: Cardinal;
@ -1524,6 +1548,7 @@ begin
ACell := GetCell(ARow, ACol);
ACell^.UsedFormattingFields := ACell^.UsedFormattingFields + [uffBackgroundColor];
ACell^.BackgroundColor := AColor;
ChangedCell(ARow, ACol);
end;
{ Sets the color of a cell border line.
@ -1535,6 +1560,7 @@ var
begin
lCell := GetCell(ARow, ACol);
lCell^.BorderStyles[ABorder].Color := AColor;
ChangedCell(ARow, ACol);
end;
{ Sets the linestyle of a cell border.
@ -1546,6 +1572,7 @@ var
begin
lCell := GetCell(ARow, ACol);
lCell^.BorderStyles[ABorder].LineStyle := ALineStyle;
ChangedCell(ARow, ACol);
end;
{ Shows the cell borders included in the set ABorders. The borders are drawn
@ -1557,6 +1584,7 @@ begin
lCell := GetCell(ARow, ACol);
Include(lCell^.UsedFormattingFields, uffBorder);
lCell^.Border := ABorders;
ChangedCell(ARow, ACol);
end;
{ Sets the style of a cell border, i.e. line style and line color.
@ -1568,6 +1596,7 @@ var
begin
lCell := GetCell(ARow, ACol);
lCell^.BorderStyles[ABorder] := AStyle;
ChangedCell(ARow, ACol);
end;
{ Sets line style and line color of a cell border.
@ -1580,6 +1609,7 @@ begin
lCell := GetCell(ARow, ACol);
lCell^.BorderStyles[ABorder].LineStyle := ALineStyle;
lCell^.BorderStyles[ABorder].Color := AColor;
ChangedCell(ARow, ACol);
end;
{ Sets the style of all cell border of a cell, i.e. line style and line color.
@ -1592,6 +1622,7 @@ var
begin
cell := GetCell(ARow, ACol);
for b in TsCellBorder do cell^.BorderStyles[b] := AStyles[b];
ChangedCell(ARow, ACol);
end;
procedure TsWorksheet.WriteHorAlignment(ARow, ACol: Cardinal; AValue: TsHorAlignment);
@ -1601,6 +1632,7 @@ begin
lCell := GetCell(ARow, ACol);
lCell^.UsedFormattingFields := lCell^.UsedFormattingFields + [uffHorAlign];
lCell^.HorAlignment := AValue;
ChangedCell(ARow, ACol);
end;
procedure TsWorksheet.WriteVertAlignment(ARow, ACol: Cardinal; AValue: TsVertAlignment);
@ -1610,6 +1642,7 @@ begin
lCell := GetCell(ARow, ACol);
lCell^.UsedFormattingFields := lCell^.UsedFormattingFields + [uffVertAlign];
lCell^.VertAlignment := AValue;
ChangedCell(ARow, ACol);
end;
procedure TsWorksheet.WriteWordWrap(ARow, ACol: Cardinal; AValue: Boolean);
@ -1621,6 +1654,7 @@ begin
Include(lCell^.UsedFormattingFields, uffWordwrap)
else
Exclude(lCell^.UsedFormattingFields, uffWordwrap);
ChangedCell(ARow, ACol);
end;
function TsWorksheet.FindRow(ARow: Cardinal): PRow;

View File

@ -57,7 +57,6 @@ type
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure LoadFromWorksheetGrid(const AValue: TsWorksheetGrid);
procedure LoadPropertiesFromStrings(AXInterval, AYInterval, AXTitle, AYTitle, ATitle: string);
public
published
@ -194,16 +193,6 @@ begin
inherited Destroy;
end;
procedure TsWorksheetChartSource.LoadFromWorksheetGrid(const AValue: TsWorksheetGrid);
begin
if AValue = nil then Exit;
AValue.SaveToWorksheet(FDataWorksheet);
InvalidateCaches;
Notify;
end;
procedure TsWorksheetChartSource.LoadPropertiesFromStrings(AXInterval,
AYInterval, AXTitle, AYTitle, ATitle: string);
var

View File

@ -27,9 +27,13 @@ type
FHeaderCount: Integer;
FFrozenCols: Integer;
FFrozenRows: Integer;
FEditText: String;
FLockCount: Integer;
FEditing: Boolean;
function CalcAutoRowHeight(ARow: Integer): Integer;
function CalcColWidth(AWidth: Single): Integer;
function CalcRowHeight(AHeight: Single): Integer;
procedure ChangedCellHandler(ASender: TObject; ARow, ACol: Cardinal);
function GetShowGridLines: Boolean;
function GetShowHeaders: Boolean;
procedure SetFrozenCols(AValue: Integer);
@ -41,10 +45,14 @@ type
procedure DefaultDrawCell(ACol, ARow: Integer; var ARect: TRect; AState: TGridDrawState); override;
procedure DoPrepareCanvas(ACol, ARow: Integer; AState: TGridDrawState); override;
procedure DrawAllRows; override;
procedure DrawFocusRect(aCol,aRow:Integer; ARect:TRect); override;
procedure DrawTextInCell(ACol, ARow: Integer; ARect: TRect; AState: TGridDrawState); override;
function GetCellHeight(ACol, ARow: Integer): Integer;
function GetCellText(ACol, ARow: Integer): String;
function GetEditText(ACol, ARow: Integer): String; override;
procedure Loaded; override;
procedure LoadFromWorksheet(AWorksheet: TsWorksheet);
procedure SetEditText(ACol, ARow: Longint; const AValue: string); override;
procedure Setup;
property DisplayFixedColRow: Boolean read GetShowHeaders write SetShowHeaders default true;
property FrozenCols: Integer read FFrozenCols write SetFrozenCols;
@ -55,15 +63,25 @@ type
{ public methods }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure BeginUpdate;
procedure EditingDone; override;
procedure EndUpdate;
procedure GetSheets(const ASheets: TStrings);
procedure LoadFromWorksheet(AWorksheet: TsWorksheet);
procedure LoadFromSpreadsheetFile(AFileName: string; AFormat: TsSpreadsheetFormat; AWorksheetIndex: Integer = 0); overload;
procedure LoadFromSpreadsheetFile(AFileName: string; AWorksheetIndex: Integer = 0); overload;
procedure SaveToWorksheet(AWorksheet: TsWorksheet);
function GetWorksheetCol(AGridCol: Integer): Cardinal;
function GetWorksheetRow(AGridRow: Integer): Cardinal;
procedure LoadFromSpreadsheetFile(AFileName: string;
AFormat: TsSpreadsheetFormat; AWorksheetIndex: Integer = 0); overload;
procedure LoadFromSpreadsheetFile(AFileName: string;
AWorksheetIndex: Integer = 0); overload;
procedure SaveToSpreadsheetFile(AFileName: string;
AOverwriteExisting: Boolean = true); overload;
procedure SaveToSpreadsheetFile(AFileName: string; AFormat: TsSpreadsheetFormat;
AOverwriteExisting: Boolean = true); overload;
procedure SelectSheetByIndex(AIndex: Integer);
{ public properties }
property Worksheet: TsWorksheet read FWorksheet;
property Workbook: TsWorkbook read FWorkbook;
property HeaderCount: Integer read FHeaderCount;
end;
{ TsWorksheetGrid }
@ -281,6 +299,12 @@ begin
inherited Destroy;
end;
{ Suppresses unnecessary repaints. }
procedure TsCustomWorksheetGrid.BeginUpdate;
begin
inc(FLockCount);
end;
// Converts the column width, given in "characters", to pixels
// All chars are assumed to have the same width defined by the "0".
// Therefore, this calculation is only approximate.
@ -314,6 +338,11 @@ begin
Result := round(AHeight / 25.4 * Screen.PixelsPerInch) + 4;
end;
procedure TsCustomWorksheetGrid.ChangedCellHandler(ASender: TObject; ARow, ACol:Cardinal);
begin
if FLockCount = 0 then Invalidate;
end;
procedure TsCustomWorksheetGrid.DefaultDrawCell(aCol, aRow: Integer; var aRect: TRect;
AState: TGridDrawState);
var
@ -511,6 +540,15 @@ begin
end;
end;
procedure TsCustomWorksheetGrid.DrawFocusRect(aCol, aRow: Integer; ARect: TRect);
begin
Canvas.Pen.Color := clBlack;
Canvas.Pen.Width := 3;
Canvas.Brush.Style := bsClear;
InflateRect(ARect, -1, -1);
Canvas.Rectangle(ARect);
end;
{ Draws the cell text. Calls "GetCellText" to determine the text in the cell.
Takes care of horizontal and vertical text alignment, text rotation and
text wrapping }
@ -681,6 +719,51 @@ begin
end;
end;
procedure TsCustomWorksheetGrid.EditingDone;
var
oldText: String;
cell: PCell;
begin
if (not EditorShowing) and FEditing then begin
oldText := GetCellText(Col, Row);
if oldText <> FEditText then begin
if FWorksheet = nil then
FWorksheet := TsWorksheet.Create;
cell := FWorksheet.GetCell(Row-FHeaderCount, Col-FHeaderCount);
if FEditText = '' then
cell^.ContentType := cctEmpty
else
if TryStrToFloat(FEditText, cell^.NumberValue) then
cell^.ContentType := cctNumber
else
if TryStrToDateTime(FEditText, cell^.DateTimeValue) then begin
cell^.ContentType := cctDateTime;
if cell^.DateTimeValue < 1.0 then begin
if not (cell^.NumberFormat in [nfShortDateTime, nfShortTime, nfLongTime, nfShortTimeAM, nfLongTimeAM])
then cell^.NumberFormat := nfLongTime;
end else
if frac(cell^.DateTimeValue) = 0 then begin // this is a TDate
if not (cell^.NumberFormat in [nfShortDateTime, nfShortTime, nfLongTime, nfShortTimeAM, nfLongTimeAM])
then cell^.NumberFormat := nfShortDate
end else
cell^.NumberFormat := nfShortDateTime;
end else begin
cell^.UTF8StringValue := FEditText;
cell^.ContentType := cctUTF8String;
end;
FEditText := '';
end;
inherited EditingDone;
end;
FEditing := false;
end;
procedure TsCustomWorksheetGrid.EndUpdate;
begin
dec(FLockCount);
if FLockCount = 0 then Invalidate;
end;
{ Returns the height (in pixels) of the cell at ACol/ARow. }
function TsCustomWorksheetGrid.GetCellHeight(ACol, ARow: Integer): Integer;
var
@ -781,6 +864,13 @@ begin
end;
end;
{ Determines the text to be passed to the cell editor. }
function TsCustomWorksheetGrid.GetEditText(aCol, aRow: Integer): string;
begin
Result := GetCellText(aCol, aRow);
if Assigned(OnGetEditText) then OnGetEditText(Self, aCol, aRow, result);
end;
{ Returns a list of worksheets contained in the file. Useful for assigning to
user controls like TabControl, Combobox etc. in order to select a sheet. }
procedure TsCustomWorksheetGrid.GetSheets(const ASheets: TStrings);
@ -803,6 +893,16 @@ begin
Result := FHeaderCount <> 0;
end;
function TsCustomWorksheetGrid.GetWorksheetCol(AGridCol: Integer): cardinal;
begin
Result := AGridCol - FHeaderCount;
end;
function TsCustomWorksheetGrid.GetWorksheetRow(AGridRow: Integer): Cardinal;
begin
Result := AGridRow - FHeaderCount;
end;
procedure TsCustomWorksheetGrid.Loaded;
begin
inherited;
@ -837,6 +937,13 @@ begin
Setup;
end;
procedure TsCustomWorksheetGrid.SetEditText(ACol, ARow: Longint; const AValue: string);
begin
FEditText := AValue;
FEditing := true;
inherited SetEditText(aCol, aRow, aValue);
end;
procedure TsCustomWorksheetGrid.Setup;
var
i: Integer;
@ -882,12 +989,14 @@ begin
RowHeights[i] := CalcRowHeight(lRow^.Height);
end;
end;
Invalidate;
end;
procedure TsCustomWorksheetGrid.LoadFromWorksheet(AWorksheet: TsWorksheet);
begin
FWorksheet := AWorksheet;
if FWorksheet <> nil then begin
FWorksheet.OnChangeCell := @ChangedCellHandler;
ShowHeaders := (soShowHeaders in FWorksheet.Options);
ShowGridLines := (soShowGridLines in FWorksheet.Options);
if (soHasFrozenPanes in FWorksheet.Options) then begin
@ -904,35 +1013,44 @@ end;
procedure TsCustomWorksheetGrid.LoadFromSpreadsheetFile(AFileName: string;
AFormat: TsSpreadsheetFormat; AWorksheetIndex: Integer);
begin
FreeAndNil(FWorkbook);
FWorkbook := TsWorkbook.Create;
FWorkbook.ReadFromFile(AFileName, AFormat);
LoadFromWorksheet(FWorkbook.GetWorksheetByIndex(AWorksheetIndex));
BeginUpdate;
try
FreeAndNil(FWorkbook);
FWorkbook := TsWorkbook.Create;
FWorkbook.ReadFromFile(AFileName, AFormat);
LoadFromWorksheet(FWorkbook.GetWorksheetByIndex(AWorksheetIndex));
finally
EndUpdate;
end;
end;
procedure TsCustomWorksheetGrid.LoadFromSpreadsheetFile(AFileName: string;
AWorksheetIndex: Integer);
begin
FreeAndNil(FWorkbook);
FWorkbook := TsWorkbook.Create;
FWorkbook.ReadFromFile(AFilename);
LoadFromWorksheet(FWorkbook.GetWorksheetByIndex(AWorksheetIndex));
BeginUpdate;
try
FreeAndNil(FWorkbook);
FWorkbook := TsWorkbook.Create;
FWorkbook.ReadFromFile(AFilename);
LoadFromWorksheet(FWorkbook.GetWorksheetByIndex(AWorksheetIndex));
finally
EndUpdate;
end;
end;
procedure TsCustomWorksheetGrid.SaveToWorksheet(AWorksheet: TsWorksheet);
var
x, y: Integer;
Str: string;
{ Writes the workbook behind the grid to a spreadsheet file. }
procedure TsCustomWorksheetGrid.SaveToSpreadsheetFile(AFileName: String;
AFormat: TsSpreadsheetFormat; AOverwriteExisting: Boolean = true);
begin
if AWorksheet = nil then Exit;
if FWorksheet <> nil then
FWorkbook.WriteToFile(AFileName, AFormat, AOverwriteExisting);
end;
{ Copy the contents }
for x := 0 to ColCount - 1 do
for y := 0 to RowCount - 1 do
begin
Str := GetCells(x, y);
if Str <> '' then AWorksheet.WriteUTF8Text(y, x, Str);
end;
procedure TsCustomWorksheetGrid.SaveToSpreadsheetFile(AFileName: String;
AOverwriteExisting: Boolean = true);
begin
if FWorksheet <> nil then
FWorkbook.WriteToFile(AFileName, AOverwriteExisting);
end;
procedure TsCustomWorksheetGrid.SelectSheetByIndex(AIndex: Integer);