diff --git a/components/fpspreadsheet/examples/fpsgrid/fpsgrid.lpi b/components/fpspreadsheet/examples/fpsgrid/fpsgrid.lpi
index fb3d43d42..ac816a44d 100644
--- a/components/fpspreadsheet/examples/fpsgrid/fpsgrid.lpi
+++ b/components/fpspreadsheet/examples/fpsgrid/fpsgrid.lpi
@@ -108,7 +108,7 @@
-
+
@@ -117,7 +117,7 @@
-
+
@@ -129,31 +129,33 @@
-
-
-
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
-
+
-
-
-
+
+
+
@@ -162,7 +164,7 @@
-
+
@@ -170,7 +172,7 @@
-
+
@@ -178,7 +180,7 @@
-
+
@@ -186,14 +188,14 @@
-
+
-
+
@@ -201,7 +203,7 @@
-
+
@@ -209,7 +211,7 @@
-
+
@@ -217,27 +219,26 @@
-
+
+
-
-
-
-
-
-
+
+
+
+
-
+
-
+
@@ -245,7 +246,7 @@
-
+
@@ -253,68 +254,71 @@
-
+
-
+
-
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -323,7 +327,7 @@
-
+
@@ -331,7 +335,7 @@
-
+
@@ -339,14 +343,14 @@
-
+
-
+
@@ -354,136 +358,203 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
diff --git a/components/fpspreadsheet/examples/fpsgrid/mainform.lfm b/components/fpspreadsheet/examples/fpsgrid/mainform.lfm
index ec5f4582e..ff4b27296 100644
--- a/components/fpspreadsheet/examples/fpsgrid/mainform.lfm
+++ b/components/fpspreadsheet/examples/fpsgrid/mainform.lfm
@@ -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
diff --git a/components/fpspreadsheet/examples/fpsgrid/mainform.lrs b/components/fpspreadsheet/examples/fpsgrid/mainform.lrs
index c59c1159a..61fbb86c1 100644
--- a/components/fpspreadsheet/examples/fpsgrid/mainform.lrs
+++ b/components/fpspreadsheet/examples/fpsgrid/mainform.lrs
@@ -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''#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''#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'~'#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'~'#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
]);
diff --git a/components/fpspreadsheet/examples/fpsgrid/mainform.pas b/components/fpspreadsheet/examples/fpsgrid/mainform.pas
index 46b84111a..bcb44e675 100644
--- a/components/fpspreadsheet/examples/fpsgrid/mainform.pas
+++ b/components/fpspreadsheet/examples/fpsgrid/mainform.pas
@@ -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}
diff --git a/components/fpspreadsheet/fpspreadsheet.pas b/components/fpspreadsheet/fpspreadsheet.pas
index cd056e275..dd44820aa 100755
--- a/components/fpspreadsheet/fpspreadsheet.pas
+++ b/components/fpspreadsheet/fpspreadsheet.pas
@@ -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;
diff --git a/components/fpspreadsheet/fpspreadsheetchart.pas b/components/fpspreadsheet/fpspreadsheetchart.pas
index 8629edf64..86346608a 100644
--- a/components/fpspreadsheet/fpspreadsheetchart.pas
+++ b/components/fpspreadsheet/fpspreadsheetchart.pas
@@ -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
diff --git a/components/fpspreadsheet/fpspreadsheetgrid.pas b/components/fpspreadsheet/fpspreadsheetgrid.pas
index ddce9c575..347d3fc88 100644
--- a/components/fpspreadsheet/fpspreadsheetgrid.pas
+++ b/components/fpspreadsheet/fpspreadsheetgrid.pas
@@ -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);