fpspreadsheet: Add loading and saving by actions to fpsctrls demo. Add action to copy format (not working yet).

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3737 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2014-11-17 16:59:22 +00:00
parent 6deba80b9a
commit 6721996b7a
4 changed files with 486 additions and 200 deletions

View File

@@ -1,70 +1,31 @@
object Form1: TForm1 object Form1: TForm1
Left = 414 Left = 541
Height = 600 Height = 600
Top = 118 Top = 214
Width = 925 Width = 922
Caption = 'Form1' Caption = 'Form1'
ClientHeight = 580 ClientHeight = 575
ClientWidth = 925 ClientWidth = 922
Menu = MainMenu Menu = MainMenu
ShowHint = True ShowHint = True
LCLVersion = '1.3' LCLVersion = '1.3'
object Panel1: TPanel
Left = 0
Height = 36
Top = 50
Width = 925
Align = alTop
BevelOuter = bvNone
ClientHeight = 36
ClientWidth = 925
TabOrder = 0
object Button1: TButton
Left = 8
Height = 25
Top = 6
Width = 75
Caption = 'Open...'
OnClick = Button1Click
TabOrder = 0
end
object CellIndicator: TsCellIndicator
Left = 95
Height = 23
Top = 4
Width = 80
TabOrder = 1
Text = 'A1'
WorkbookSource = WorkbookSource
end
object CellEdit: TsCellEdit
Left = 184
Height = 23
Top = 4
Width = 731
Anchors = [akTop, akLeft, akRight]
TabOrder = 2
WantReturns = False
WorkbookSource = WorkbookSource
end
end
object WorkbookTabControl: TsWorkbookTabControl object WorkbookTabControl: TsWorkbookTabControl
Left = 0 Left = 0
Height = 494 Height = 490
Top = 86 Top = 85
Width = 672 Width = 669
TabIndex = 0 TabIndex = 0
Tabs.Strings = ( Tabs.Strings = (
'Sheet1' 'Sheet1'
) )
Align = alClient Align = alClient
TabOrder = 1 TabOrder = 0
WorkbookSource = WorkbookSource WorkbookSource = WorkbookSource
object WorksheetGrid: TsWorksheetGrid object WorksheetGrid: TsWorksheetGrid
Left = 2 Left = 2
Height = 469 Height = 460
Top = 23 Top = 28
Width = 668 Width = 665
FrozenCols = 0 FrozenCols = 0
FrozenRows = 0 FrozenRows = 0
ReadFormulas = False ReadFormulas = False
@@ -76,13 +37,14 @@ object Form1: TForm1
Font.Color = clBlack Font.Color = clBlack
Font.Height = -13 Font.Height = -13
Font.Name = 'Arial' Font.Name = 'Arial'
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing, goEditing, goThumbTracking, goSmoothScroll] Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing, goEditing, goThumbTracking, goDblClickAutoSize, goSmoothScroll, goHeaderHotTracking]
ParentFont = False ParentFont = False
RowCount = 101 RowCount = 101
TabOrder = 1 TabOrder = 1
TitleFont.Color = clBlack TitleFont.Color = clBlack
TitleFont.Height = -13 TitleFont.Height = -13
TitleFont.Name = 'Arial' TitleFont.Name = 'Arial'
TitleStyle = tsNative
ColWidths = ( ColWidths = (
50 50
64 64
@@ -115,9 +77,9 @@ object Form1: TForm1
end end
end end
object InspectorTabControl: TTabControl object InspectorTabControl: TTabControl
Left = 677 Left = 674
Height = 494 Height = 490
Top = 86 Top = 85
Width = 248 Width = 248
OnChange = InspectorTabControlChange OnChange = InspectorTabControlChange
TabIndex = 0 TabIndex = 0
@@ -128,15 +90,17 @@ object Form1: TForm1
'Cell properties' 'Cell properties'
) )
Align = alRight Align = alRight
TabOrder = 2 TabOrder = 1
Visible = False
object Inspector: TsSpreadsheetInspector object Inspector: TsSpreadsheetInspector
Left = 2 Left = 2
Height = 469 Height = 460
Top = 23 Top = 28
Width = 244 Width = 244
Align = alClient Align = alClient
RowCount = 25 RowCount = 25
TabOrder = 1 TabOrder = 1
TitleStyle = tsNative
Strings.Strings = ( Strings.Strings = (
'FileName=' 'FileName='
'FileFormat=sfExcel8' 'FileFormat=sfExcel8'
@@ -144,7 +108,7 @@ object Form1: TForm1
'Options=boAutoCalc, boCalcBeforeSaving, boReadFormulas' 'Options=boAutoCalc, boCalcBeforeSaving, boReadFormulas'
'FormatSettings=' 'FormatSettings='
' ThousandSeparator=.' ' ThousandSeparator=.'
' DecimalSeparator=.' ' DecimalSeparator=,'
' ListSeparator=;' ' ListSeparator=;'
' DateSeparator=.' ' DateSeparator=.'
' TimeSeparator=:' ' TimeSeparator=:'
@@ -170,114 +134,115 @@ object Form1: TForm1
WorkbookSource = WorkbookSource WorkbookSource = WorkbookSource
Mode = imWorkbook Mode = imWorkbook
ColWidths = ( ColWidths = (
111 109
112 110
) )
end end
end end
object Splitter1: TSplitter object Splitter1: TSplitter
Left = 672 Left = 669
Height = 494 Height = 490
Top = 86 Top = 85
Width = 5 Width = 5
Align = alRight Align = alRight
ResizeAnchor = akRight ResizeAnchor = akRight
end end
object ToolBar1: TToolBar object ToolBar1: TToolBar
Left = 0 Left = 0
Height = 26 Height = 28
Top = 24 Top = 24
Width = 925 Width = 922
AutoSize = True AutoSize = True
ButtonHeight = 24 ButtonHeight = 26
ButtonWidth = 24
Caption = 'ToolBar1' Caption = 'ToolBar1'
EdgeBorders = [ebBottom] EdgeBorders = []
Images = ImageList Images = ImageList
TabOrder = 4 TabOrder = 3
object ToolButton4: TToolButton object ToolButton4: TToolButton
Left = 235 Left = 265
Height = 24 Height = 26
Top = 0 Top = 0
Width = 3 Width = 3
Caption = 'ToolButton4' Caption = 'ToolButton4'
Style = tbsDivider Style = tbsDivider
end end
object ToolButton6: TToolButton object ToolButton6: TToolButton
Left = 238 Left = 268
Top = 0 Top = 0
Action = AcFontBold Action = AcFontBold
end end
object ToolButton7: TToolButton object ToolButton7: TToolButton
Left = 261 Left = 292
Top = 0 Top = 0
Action = AcFontItalic Action = AcFontItalic
end end
object ToolButton8: TToolButton object ToolButton8: TToolButton
Left = 284 Left = 316
Top = 0 Top = 0
Action = AcFontUnderline Action = AcFontUnderline
end end
object ToolButton10: TToolButton object ToolButton10: TToolButton
Left = 330 Left = 364
Height = 24 Height = 26
Top = 0 Top = 0
Width = 5 Width = 5
Caption = 'ToolButton10' Caption = 'ToolButton10'
Style = tbsDivider Style = tbsDivider
end end
object ToolButton11: TToolButton object ToolButton11: TToolButton
Left = 307 Left = 340
Top = 0 Top = 0
Action = AcFontStrikeout Action = AcFontStrikeout
end end
object ToolButton12: TToolButton object ToolButton12: TToolButton
Left = 335 Left = 369
Top = 0 Top = 0
Action = AcHorAlignLeft Action = AcHorAlignLeft
end end
object ToolButton13: TToolButton object ToolButton13: TToolButton
Left = 358 Left = 393
Top = 0 Top = 0
Action = AcHorAlignCenter Action = AcHorAlignCenter
end end
object ToolButton14: TToolButton object ToolButton14: TToolButton
Left = 381 Left = 417
Top = 0 Top = 0
Action = AcHorAlignRight Action = AcHorAlignRight
end end
object ToolButton15: TToolButton object ToolButton15: TToolButton
Left = 404 Left = 441
Height = 24 Height = 26
Top = 0 Top = 0
Width = 5 Width = 5
Caption = 'ToolButton15' Caption = 'ToolButton15'
Style = tbsDivider Style = tbsDivider
end end
object ToolButton16: TToolButton object ToolButton16: TToolButton
Left = 409 Left = 446
Top = 0 Top = 0
Action = AcVertAlignTop Action = AcVertAlignTop
end end
object ToolButton17: TToolButton object ToolButton17: TToolButton
Left = 432 Left = 470
Top = 0 Top = 0
Action = AcVertAlignCenter Action = AcVertAlignCenter
end end
object ToolButton18: TToolButton object ToolButton18: TToolButton
Left = 455 Left = 494
Top = 0 Top = 0
Action = AcVertAlignBottom Action = AcVertAlignBottom
end end
object ToolButton19: TToolButton object ToolButton19: TToolButton
Left = 478 Left = 518
Height = 24 Height = 26
Top = 0 Top = 0
Width = 5 Width = 5
Caption = 'ToolButton19' Caption = 'ToolButton19'
Style = tbsDivider Style = tbsDivider
end end
object ToolButton20: TToolButton object ToolButton20: TToolButton
Left = 546 Left = 523
Hint = 'Number format' Hint = 'Number format'
Top = 0 Top = 0
Caption = 'ToolButton20' Caption = 'ToolButton20'
@@ -286,7 +251,7 @@ object Form1: TForm1
Style = tbsDropDown Style = tbsDropDown
end end
object ToolButton21: TToolButton object ToolButton21: TToolButton
Left = 604 Left = 583
Hint = 'Currency format' Hint = 'Currency format'
Top = 0 Top = 0
Caption = 'ToolButton21' Caption = 'ToolButton21'
@@ -295,20 +260,20 @@ object Form1: TForm1
Style = tbsDropDown Style = tbsDropDown
end end
object ToolButton22: TToolButton object ToolButton22: TToolButton
Left = 581 Left = 559
Top = 0 Top = 0
Action = AcNumFormatPercentage Action = AcNumFormatPercentage
end end
object ToolButton23: TToolButton object ToolButton23: TToolButton
Left = 709 Left = 828
Height = 24 Height = 26
Top = 0 Top = 0
Width = 5 Width = 5
Caption = 'ToolButton23' Caption = 'ToolButton23'
Style = tbsDivider Style = tbsDivider
end end
object ToolButton24: TToolButton object ToolButton24: TToolButton
Left = 639 Left = 619
Hint = 'Date format' Hint = 'Date format'
Top = 0 Top = 0
Caption = 'ToolButton24' Caption = 'ToolButton24'
@@ -317,7 +282,7 @@ object Form1: TForm1
Style = tbsDropDown Style = tbsDropDown
end end
object ToolButton25: TToolButton object ToolButton25: TToolButton
Left = 674 Left = 655
Hint = 'Time format' Hint = 'Time format'
Top = 0 Top = 0
Caption = 'ToolButton25' Caption = 'ToolButton25'
@@ -326,35 +291,35 @@ object Form1: TForm1
Style = tbsDropDown Style = tbsDropDown
end end
object ToolButton26: TToolButton object ToolButton26: TToolButton
Left = 714 Left = 691
Top = 0 Top = 0
Action = AcDecDecimals Action = AcDecDecimals
end end
object ToolButton27: TToolButton object ToolButton27: TToolButton
Left = 737 Left = 715
Top = 0 Top = 0
Action = AcIncDecimals Action = AcIncDecimals
end end
object ToolButton29: TToolButton object ToolButton29: TToolButton
Left = 1 Left = 30
Top = 0 Top = 0
Action = AcCellFontDialog Action = AcCellFontDialog
end end
object ToolButton30: TToolButton object ToolButton30: TToolButton
Left = 518 Left = 768
Top = 0 Top = 0
Action = AcBackgroundColorDialog Action = AcBackgroundColorDialog
end end
object ToolButton31: TToolButton object ToolButton31: TToolButton
Left = 541 Left = 857
Height = 24 Height = 26
Top = 0 Top = 0
Width = 5 Width = 5
Caption = 'ToolButton31' Caption = 'ToolButton31'
Style = tbsDivider Style = tbsDivider
end end
object TbBorders: TToolButton object TbBorders: TToolButton
Left = 483 Left = 792
Hint = 'Top border' Hint = 'Top border'
Top = 0 Top = 0
Caption = 'Top' Caption = 'Top'
@@ -363,11 +328,11 @@ object Form1: TForm1
Style = tbsDropDown Style = tbsDropDown
end end
object FontnameCombo: TsFontNameCombobox object FontnameCombo: TsFontNameCombobox
Left = 24 Left = 54
Height = 23 Height = 28
Top = 0 Top = 0
Width = 151 Width = 151
ItemHeight = 15 ItemHeight = 20
ItemIndex = 62 ItemIndex = 62
Items.Strings = ( Items.Strings = (
'@Arial Unicode MS' '@Arial Unicode MS'
@@ -1163,11 +1128,11 @@ object Form1: TForm1
WorkbookSource = WorkbookSource WorkbookSource = WorkbookSource
end end
object sFontSizeCombobox1: TsFontSizeCombobox object sFontSizeCombobox1: TsFontSizeCombobox
Left = 175 Left = 205
Height = 23 Height = 28
Top = 0 Top = 0
Width = 60 Width = 60
ItemHeight = 15 ItemHeight = 20
ItemIndex = 2 ItemIndex = 2
Items.Strings = ( Items.Strings = (
'8' '8'
@@ -1193,47 +1158,66 @@ object Form1: TForm1
WorkbookSource = WorkbookSource WorkbookSource = WorkbookSource
end end
object ToolButton3: TToolButton object ToolButton3: TToolButton
Left = 760 Left = 739
Height = 24 Height = 26
Top = 0 Top = 0
Width = 5 Width = 5
Caption = 'ToolButton3' Caption = 'ToolButton3'
Style = tbsDivider Style = tbsDivider
end end
object ToolButton5: TToolButton object ToolButton5: TToolButton
Left = 765 Left = 833
Top = 0 Top = 0
Action = AcMergeCells Action = AcMergeCells
end end
object ToolButton36: TToolButton
Left = 744
Top = 0
Action = AcWordWrap
end
object ToolButton37: TToolButton
Left = 1
Top = 0
Action = AcCopyFormat
end
object ToolButton38: TToolButton
Left = 25
Height = 26
Top = 0
Width = 5
Caption = 'ToolButton38'
Style = tbsDivider
end
end end
object ToolBar2: TToolBar object ToolBar2: TToolBar
Left = 0 Left = 0
Height = 24 Height = 24
Top = 0 Top = 0
Width = 925 Width = 922
AutoSize = True AutoSize = True
ButtonHeight = 24 ButtonHeight = 24
ButtonWidth = 24
Caption = 'ToolBar2' Caption = 'ToolBar2'
EdgeBorders = [] EdgeBorders = []
Images = ImageList Images = ImageList
TabOrder = 5 TabOrder = 4
object ToolButton32: TToolButton object ToolButton32: TToolButton
Left = 1 Left = 54
Top = 0 Top = 0
Action = AcAddWorksheet Action = AcAddWorksheet
end end
object ToolButton33: TToolButton object ToolButton33: TToolButton
Left = 24 Left = 78
Top = 0 Top = 0
Action = AcDeleteWorksheet Action = AcDeleteWorksheet
end end
object ToolButton34: TToolButton object ToolButton34: TToolButton
Left = 47 Left = 102
Top = 0 Top = 0
Action = acRenameWorksheet Action = acRenameWorksheet
end end
object ToolButton1: TToolButton object ToolButton1: TToolButton
Left = 70 Left = 126
Height = 24 Height = 24
Top = 0 Top = 0
Width = 5 Width = 5
@@ -1241,10 +1225,85 @@ object Form1: TForm1
Style = tbsDivider Style = tbsDivider
end end
object ToolButton2: TToolButton object ToolButton2: TToolButton
Left = 75 Left = 131
Top = 0 Top = 0
Action = AcFileExit Action = AcFileExit
end end
object ToolButton9: TToolButton
Left = 1
Top = 0
Action = AcFileOpen
end
object ToolButton28: TToolButton
Left = 49
Height = 24
Top = 0
Width = 5
Caption = 'ToolButton28'
Style = tbsDivider
end
object ToolButton35: TToolButton
Left = 25
Top = 0
Action = AcFileSaveAs
end
end
object ToolBar3: TToolBar
Left = 0
Height = 28
Top = 52
Width = 922
AutoSize = True
Caption = 'ToolBar3'
Constraints.MinHeight = 28
EdgeBorders = [ebBottom]
TabOrder = 5
object Panel2: TPanel
Left = 1
Height = 26
Top = 0
Width = 138
Align = alLeft
BevelOuter = bvNone
ClientHeight = 26
ClientWidth = 138
TabOrder = 0
object CellIndicator: TsCellIndicator
Left = 0
Height = 28
Top = 0
Width = 138
Align = alTop
TabOrder = 0
Text = 'A1'
WorkbookSource = WorkbookSource
end
end
object CellEdit: TsCellEdit
Left = 144
Height = 26
Top = 0
Width = 778
Align = alClient
TabOrder = 1
WantReturns = False
WorkbookSource = WorkbookSource
end
object Splitter2: TSplitter
Left = 139
Height = 26
Top = 0
Width = 5
end
end
object Splitter3: TSplitter
Cursor = crVSplit
Left = 0
Height = 5
Top = 80
Width = 922
Align = alTop
ResizeAnchor = akTop
end end
object WorkbookSource: TsWorkbookSource object WorkbookSource: TsWorkbookSource
AutoDetectFormat = False AutoDetectFormat = False
@@ -1376,6 +1435,7 @@ object Form1: TForm1
WorkbookSource = WorkbookSource WorkbookSource = WorkbookSource
Caption = 'AcWordWrap' Caption = 'AcWordWrap'
Hint = 'Word-wrapped text' Hint = 'Word-wrapped text'
ImageIndex = 24
end end
object AcTextRotHor: TsTextRotationAction object AcTextRotHor: TsTextRotationAction
Category = 'FPSpreadsheet' Category = 'FPSpreadsheet'
@@ -1946,12 +2006,44 @@ object Form1: TForm1
Hint = 'Merge cells' Hint = 'Merge cells'
ImageIndex = 23 ImageIndex = 23
end end
object AcFileOpen: TFileOpen
Category = 'File'
Caption = '&Open ...'
Dialog.Filter = 'All spreadsheet files|*.xls;*.xlsx;*.ods;*.csv|All Excel files (*.xls, *.xlsx)|*.xls;*.xlsx|Excel XML spreadsheet (*.xlsx)|*.xlsx|Excel 97-2003 spreadsheets (*.xls)|*.xls|Excel 5 spreadsheet (*.xls)|*.xls|Excel 2.1 spreadsheets (*.xls)|*.xls|LibreOffice/OpenOffice spreadsheet (*.ods)|*.ods|Comma-delimited files (*.csv)|*.csv'
Dialog.Options = [ofExtensionDifferent, ofFileMustExist, ofEnableSizing, ofViewDetail]
Hint = 'Open spreadsheet file'
ImageIndex = 44
ShortCut = 16463
OnAccept = AcFileOpenAccept
end
object AcFileSaveAs: TFileSaveAs
Category = 'File'
Caption = 'Save &as ...'
Dialog.Title = 'AcSaveFileAs'
Dialog.Filter = 'Excel XML spreadsheet (*.xlsx)|*.xlsx|Excel 97-2003 spreadsheets (*.xls)|*.xls|Excel 5 spreadsheet (*.xls)|*.xls|Excel 2.1 spreadsheets (*.xls)|*.xls|LibreOffice/OpenOffice spreadsheet (*.ods)|*.ods|Comma-delimited files (*.csv)|*.csv|WikiTable (WikiMedia-Format, *.wikitable_wikimedia)|*.wikitable_wikimedia'
Hint = 'Save spreadsheet with a new name'
ImageIndex = 45
OnAccept = AcFileSaveAsAccept
end
object AcCopyFormat: TsCopyFormatAction
Category = 'FPSpreadsheet'
WorkbookSource = WorkbookSource
Caption = 'Copy format'
Hint = 'Copy format'
ImageIndex = 46
end
object AcViewInspector: TAction
Category = 'View'
AutoCheck = True
Caption = 'Inspector'
OnExecute = AcViewInspectorExecute
end
end end
object ImageList: TImageList object ImageList: TImageList
left = 176 left = 176
top = 312 top = 312
Bitmap = { Bitmap = {
4C69350000001000000010000000003F9300003F9300003F9300003F9424003F 4C69370000001000000010000000003F9300003F9300003F9300003F9424003F
948A003E93CC004095CC004095CC004095CC004095CC004095CC004095CC0040 948A003E93CC004095CC004095CC004095CC004095CC004095CC004095CC0040
95CC004095CC00409599003F9400003F9300003F9324003F938A0E4B9CD33F76 95CC004095CC00409599003F9400003F9300003F9324003F938A0E4B9CD33F76
C0EC5D90D4FF3365A9FFA0A0A0FFA9A9A9FFA9A9A9FFAAAAAAFFACACACFFAEAE C0EC5D90D4FF3365A9FFA0A0A0FFA9A9A9FFA9A9A9FFAAAAAAFFACACACFFAEAE
@@ -3361,33 +3453,97 @@ object Form1: TForm1
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101810101012B000000330000 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
000D000000670000000D000000670000000D000000670000000D000000670000 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
000D0000004DFFFFFF00FFFFFF00FFFFFF000101012C010101AE0101012C0101 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
0100000000000000000000000000000000000000000000000000000000000000 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
00000000000DFFFFFF00FFFFFF00FFFFFF00000000360101012C010101B00101 FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0034B4D9D05EC2E1FA60C3E2FA60C3
012C010101000101010000000000000000000000000000000000000000000000 E2FA60C3E2FA5FC3E2FA3CB6DBDD2CB2D8162CB2D80F2CB2D80F2CB2D80F2CB2
00000000006BFFFFFF00FFFFFF00FFFFFF000000000E010101000101012D0101 D80F2CB3D80F2CB3D804FFFFFF00FFFFFF0036B3DAF8FDFEFEFFFEFFFFFFFEFE
01B30101012D0101010001010100010101000000000000000000000000000000 FFFFFDFEFFFFFEFFFFFFEAF7FBFF6BC7E4F96BC7E3F86BC7E3F86BC7E3F879CD
00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000010101000101 E6F774CAE5E132B1D956FFFFFF00FFFFFF0035AFDAF0F7FCFEFF8EE4F8FF91DE
012E010101B60101012E01010100010101000101010000000000000000000000 F5FF9FE0F5FFACE1F6FFEFFBFEFFF4FDFEFFF3FCFEFFF1FCFEFFEFFBFEFFEEFB
000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000010101000101 FEFFFAFDFFF936AFDAD4FFFFFF00FFFFFF0036AADAF2F1FAFDFF94DEF5FF93DC
01000101012E010101B90101012F010101000101010001010100000000000000 F4FF81D5F2FF6ACAEDFF6CCBEAFF85D3EFFF80D2EFFF7AD0EFFF76CFEEFF72CF
00000000000FFFFFFF00FFFFFF00FFFFFF000000007800000000000000000101 EEFFE9F7FBFF34AEDAF3FFFFFF00FFFFFF0035ABDAFAE8F6FBFF94D4EFFF88CE
0100010101000101012F010101BC010101300101010001010100000000000000 EEFF73C1E9FFC9E9F6FFF2FCFEFFF3FCFEFFF2FCFEFFF0FCFEFFEFFBFEFFEEFB
000000000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000101 FEFFFEFFFFFF36ABDAF7FFFFFF00FFFFFF0037A6DAFAFEFFFFFFF8FDFFFFF6FD
0100010101000101010001010130010101C00101013101010100010101000000 FFFFF5FCFFFFF3FCFEFFD8F6FCFF94E6F8FF85E3F7FF76DFF6FF68DBF5FF5CD8
000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000 F4FFD7F4FCFF35A4DAF7FFFFFF00FFFFFF0036A1DAF9F6FCFEFFC8F2FCFFB9EF
000001010100010101000101010001010131010101C401010132010101000000 FBFFACECFAFF9CE8F9FF8BE3F7FF7CE0F6FF6CDCF6FF5DD9F5FF4FD6F4FF44D3
000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000010101000101 F3FFD0F3FCFF359FDAF7FFFFFF00FFFFFF00369ADAF8F2FAFDFFB3EDFAFFA4E9
01000101010001010100010101000101010001010132010101C7010101320000 F9FF95E6F8FF85E2F7FF76DEF6FF65DBF5FF57D7F4FF49D4F3FF3BD1F2FF30CE
000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100010101000101 F1FFCCF2FBFF3598DAF7FFFFFF00FFFFFF003594DAF7EFFAFEFFA1E9F9FF91E5
0100010101000101010001010100010101000101010001010133010101CC0000 F8FF81E1F7FF72DEF6FF63DAF5FF54D7F4FF47D3F3FF39D0F2FF2ECDF1FF26CB
003401010145FFFFFF00FFFFFF00FFFFFF000101011401010100010101000101 F0FFCAF2FBFF3594DAF7FFFFFF00FFFFFF00338ED9E6DCF0FAF0A7DDF4FD9EDB
0100010101000101010001010100010101000101010001010100010101360000 F4FF96DAF3FF8ED8F3FF86D7F3FF7FD4F2FF79D3F2FF72D2F1FF6CD0F1FF69CF
00D901010138FFFFFF00FFFFFF00FFFFFF000101017B01010115010101A40101 F1FFC2EAF8FE338ED9F0FFFFFF00FFFFFF002C86D8702D88D8A62D87D8EA2D88
0115010101A401010115010101A401010115010101A401010115010101540101 D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D88D8F72D87
0139000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF D8F72D88D8F12C86D893FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00BC6B3671BC6B3690BC6B36CCBC6B36EEBC6B
36FABB6B36FEBB6B36FFBB6A36FFBB6A36FFBC6C39FFBD6E3BFFBB6D3AFFBB6B
38EFBB703ECBB6693554FFFFFF00BC6B369BF6E0D1FFF7E0D1FFFEFBF8FFFEFB
F7FFFDF9F6FFFCF5F0FFFAF0EAFFFBF2EDFFFDF9F6FFFDFAF7FFFBF1EBFFF8E9
DFFEECD0BDFBC9895EECB5693563BC6B36D8F6DFD1FFE9AA80FFFEFAF6FFFDFA
F6FFC88C64FFFBF3EEFFFBF1EAFFFCF6F2FFFEFBF8FFFCF6F1FFF9ECE2FFF8E7
DBFFEED0BAFFECD0BDFFBB703EF8BC6B36F0F6DFD0FFE8A87EFFFCF6F1FFFCF6
F1FFC88C64FFFAF1E9FFFBF4EEFFFDFAF7FFFDF9F6FFFAF0E8FFF8E8DDFFF7E6
DBFFE1A37AFFEFD5C3FFB76935FEBC6B36FAF5DDCCFFE7A87EFFFAF0E8FFFAF0
E8FFC98D66FFFAF0E9FFFDF8F3FFFEFAF8FFFCF4EFFFF9E9DFFFF7E7DBFFF7E5
D9FFE0A278FFE7C2A9FFB66835FFBB6B36FEF4DCC9FFE7A77DFFF9ECE1FFF9EC
E1FFF9EDE3FFFCF4EEFFFDFAF7FFFDF7F3FFFAEDE5FFF7E7DBFFF7E5D9FFF6E5
D8FFDEA077FFE4BEA4FFB46734FFBB6B36FFF4D9C7FFE6A67DFFC88C64FFC98D
65FFC98E67FFCB926CFFCB926DFFCA9069FFC88C65FFC88C64FFC88C64FFC88C
64FFDA9C74FFE1BA9FFFB36634FFBB6A36FFF2D8C5FFE3A47BFFE3A37AFFE3A4
7AFFE2A47BFFE2A37BFFE1A37BFFE1A279FFDFA077FFDE9F76FFDD9E74FFDB9C
72FFDC9D74FFDDB59AFFB16534FFBB6A36FFF2D5C2FFE3A37AFFE3A37AFFE2A3
7BFFE2A37BFFE2A47BFFE1A279FFE0A178FFDEA077FFDE9E75FFDC9D74FFDA9B
73FFD99B73FFDAB095FFAF6433FFBB6A36FFF0D2BEFFE2A37AFFE2A37AFFE1A3
7AFFE2A37BFFE1A37BFFE0A178FFDE9F77FFDD9F76FFDC9D74FFD99B72FFD899
71FFD69970FFD5AB8EFFAD6333FFBA6A36FFEFD0BBFFE2A27AFFFEFBF8FFFEFB
F8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFB
F8FFD3966DFFD2A78AFFAB6232FFBB6B38FFEFCEB8FFE1A279FFFEFAF7FF62C0
88FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FFFDF9
F6FFCF936AFFCEA384FFAA6132FFBB6C38FFEECCB6FFE1A27AFFFEFAF7FFBFDC
C2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFBFDCC2FFFDF9
F6FFCD9068FFCC9E81FFA86132FFBA6B37FEEDCAB3FFE0A27AFFFEFAF7FF62C0
88FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FF62C088FFFDF9
F6FFCA8D65FFC99B7CFFA76031FEBA6A35DEEBC6ADFFEAC5ADFFFEFBF8FFFEFB
F8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFBF8FFFEFB
F8FFC89A7CFFC79879FFA76031EDBA6A3600B96935B5B86935EEB76835FFB568
35FFB46734FFB26634FFB06533FFAE6433FFAC6332FFAA6232FFA96132FFA860
31FFA76031FEA66031F1A86131C4FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00016395000163940001629300016192000162
930001629300016394000000000001334C00016597000164960001639400003A
8C00003E9248003C8FCC00378A48016395000163940001629300016192000162
930001629300016394000000000001334C390165969C0164959C0163943E0039
8B48003688CC5285C9FF002E7ECC016395000163940001629300016192000162
93000162930001639400000000240000006788CCDDFF87CBDDFF016091AF0030
80CC3F72B6FF002774CC00247048016395000163940001629300016192000162
9300016293100162936D00000069DDDCDCFF949494FF70B4D6FF80C4DBFF015C
8DB2001A63CC0013584800226E00016395050163941401629328016192410161
9277106C9AAB4B9BBADB79B9D5FC919191FFD9D4D4FF8D8D8DFF68ACCEFF74B8
D4FF015887B4015686400155840001629383126D9BB82078A2C33385ABD058A2
C0E774B9D1FB6EACCCFF669DC8FF83C7DAFF888888FFD3CACAFF838383FF60A4
C6FF63A7C9FF015382A5015281000160913E015E8FB16AAEC9FF66A8C5FF5692
B8FF4B80AFFF5D97BFFF77B9D2FF669DC8FF7BBAD5FF7E7E7EFFCEC0C0FF7979
79FF5588BBFF014F7EA6014E7D00015F9000002B5548002B55CC336898FF508C
B3FF69ABC8FF67A7C6FF4D80B3FF71B1CEFF6EA9CDFF6CA3CEFF6D6D6DFFAA99
99FF010101A5014C7A42014B7A00015F9000002B55000157873F015585B65FA1
C0FF3F79A3FF4278A7FF66A6C5FF619DC2FF5E95C1FF74B4D1FF6598CBFF0101
01AB0101013C014B7900014B7A00015F9000002B550001568600002B5548002B
55CC4F8DB3FF68ACC8FF4880ACFF5087B3FF6AAAC8FF5588BBFF00416EC1003E
6A4401010100014B7900014B7A00015F9000002B550001568600002B5500014D
7C41014B79BB3A719FFF386F9DFF5F9FC0FF4578ABFF003763C600356046003C
680001010100014B7900014B7A00015F9000002B550001568600002B5500014C
7B00002B5548002B55CC5494B7FF34679AFF00305ACA002D584800335E00003C
680001010100014B7900014B7A00015F9000002B550001568600002B5500014C
7B00002B550000315C47002D57CC002C56CC002B5548002C570000335E00003C
680001010100014B7900014B7A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
@@ -3457,6 +3613,38 @@ object Form1: TForm1
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00010101810101012B000000330000
000D000000670000000D000000670000000D000000670000000D000000670000
000D0000004DFFFFFF00FFFFFF00FFFFFF000101012C010101AE0101012C0101
0100000000000000000000000000000000000000000000000000000000000000
00000000000DFFFFFF00FFFFFF00FFFFFF00000000360101012C010101B00101
012C010101000101010000000000000000000000000000000000000000000000
00000000006BFFFFFF00FFFFFF00FFFFFF000000000E010101000101012D0101
01B30101012D0101010001010100010101000000000000000000000000000000
00000000000EFFFFFF00FFFFFF00FFFFFF000000007100000000010101000101
012E010101B60101012E01010100010101000101010000000000000000000000
000000000071FFFFFF00FFFFFF00FFFFFF000000000F00000000010101000101
01000101012E010101B90101012F010101000101010001010100000000000000
00000000000FFFFFFF00FFFFFF00FFFFFF000000007800000000000000000101
0100010101000101012F010101BC010101300101010001010100000000000000
000000000078FFFFFF00FFFFFF00FFFFFF000000001000000000000000000101
0100010101000101010001010130010101C00101013101010100010101000000
000000000010FFFFFF00FFFFFF00FFFFFF000000008000000000000000000000
000001010100010101000101010001010131010101C401010132010101000000
000000000080FFFFFF00FFFFFF00FFFFFF000000001100000000010101000101
01000101010001010100010101000101010001010132010101C7010101320000
000000000011FFFFFF00FFFFFF00FFFFFF000101018901010100010101000101
0100010101000101010001010100010101000101010001010133010101CC0000
003401010145FFFFFF00FFFFFF00FFFFFF000101011401010100010101000101
0100010101000101010001010100010101000101010001010100010101360000
00D901010138FFFFFF00FFFFFF00FFFFFF000101017B01010115010101A40101
0115010101A401010115010101A401010115010101A401010115010101540101
0139000000ACFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
@@ -3487,38 +3675,6 @@ object Form1: TForm1
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00016395000163940001629300016192000162
930001629300016394000000000001334C00016597000164960001639400003A
8C00003E9248003C8FCC00378A48016395000163940001629300016192000162
930001629300016394000000000001334C390165969C0164959C0163943E0039
8B48003688CC5285C9FF002E7ECC016395000163940001629300016192000162
93000162930001639400000000240000006788CCDDFF87CBDDFF016091AF0030
80CC3F72B6FF002774CC00247048016395000163940001629300016192000162
9300016293100162936D00000069DDDCDCFF949494FF70B4D6FF80C4DBFF015C
8DB2001A63CC0013584800226E00016395050163941401629328016192410161
9277106C9AAB4B9BBADB79B9D5FC919191FFD9D4D4FF8D8D8DFF68ACCEFF74B8
D4FF015887B4015686400155840001629383126D9BB82078A2C33385ABD058A2
C0E774B9D1FB6EACCCFF669DC8FF83C7DAFF888888FFD3CACAFF838383FF60A4
C6FF63A7C9FF015382A5015281000160913E015E8FB16AAEC9FF66A8C5FF5692
B8FF4B80AFFF5D97BFFF77B9D2FF669DC8FF7BBAD5FF7E7E7EFFCEC0C0FF7979
79FF5588BBFF014F7EA6014E7D00015F9000002B5548002B55CC336898FF508C
B3FF69ABC8FF67A7C6FF4D80B3FF71B1CEFF6EA9CDFF6CA3CEFF6D6D6DFFAA99
99FF010101A5014C7A42014B7A00015F9000002B55000157873F015585B65FA1
C0FF3F79A3FF4278A7FF66A6C5FF619DC2FF5E95C1FF74B4D1FF6598CBFF0101
01AB0101013C014B7900014B7A00015F9000002B550001568600002B5548002B
55CC4F8DB3FF68ACC8FF4880ACFF5087B3FF6AAAC8FF5588BBFF00416EC1003E
6A4401010100014B7900014B7A00015F9000002B550001568600002B5500014D
7C41014B79BB3A719FFF386F9DFF5F9FC0FF4578ABFF003763C600356046003C
680001010100014B7900014B7A00015F9000002B550001568600002B5500014C
7B00002B5548002B55CC5494B7FF34679AFF00305ACA002D584800335E00003C
680001010100014B7900014B7A00015F9000002B550001568600002B5500014C
7B00002B550000315C47002D57CC002C56CC002B5548002C570000335E00003C
680001010100014B7900014B7A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
000001535F0001A6BE0001A6BE0051515100515151000101E5000101E5160101 000001535F0001A6BE0001A6BE0051515100515151000101E5000101E5160101
D1000000B3000000B3000000B300000000000000000000000000003E530001A6 D1000000B3000000B3000000B300000000000000000000000000003E530001A6
@@ -3655,6 +3811,15 @@ object Form1: TForm1
top = 376 top = 376
object MnuFile: TMenuItem object MnuFile: TMenuItem
Caption = 'File' Caption = 'File'
object MenuItem50: TMenuItem
Action = AcFileOpen
end
object MenuItem51: TMenuItem
Action = AcFileSaveAs
end
object MenuItem49: TMenuItem
Caption = '-'
end
object MenuItem1: TMenuItem object MenuItem1: TMenuItem
Action = AcFileExit Action = AcFileExit
end end
@@ -3709,6 +3874,13 @@ object Form1: TForm1
end end
end end
end end
object MnuView: TMenuItem
Caption = 'View'
object MenuItem52: TMenuItem
Action = AcViewInspector
AutoCheck = True
end
end
end end
object PuNumFormat: TPopupMenu object PuNumFormat: TPopupMenu
left = 504 left = 504

View File

@@ -6,7 +6,7 @@ interface
uses uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, ComCtrls, ActnList, Menus, StdActns, ComCtrls, ActnList, Menus, StdActns,
fpspreadsheet, fpspreadsheetctrls, fpspreadsheetgrid, fpsActions; fpspreadsheet, fpspreadsheetctrls, fpspreadsheetgrid, fpsActions;
type type
@@ -14,9 +14,11 @@ type
{ TForm1 } { TForm1 }
TForm1 = class(TForm) TForm1 = class(TForm)
AcViewInspector: TAction;
ActionList: TActionList; ActionList: TActionList;
Button1: TButton;
AcFileExit: TFileExit; AcFileExit: TFileExit;
AcFileOpen: TFileOpen;
AcFileSaveAs: TFileSaveAs;
ImageList: TImageList; ImageList: TImageList;
MainMenu: TMainMenu; MainMenu: TMainMenu;
MenuItem1: TMenuItem; MenuItem1: TMenuItem;
@@ -62,7 +64,12 @@ type
MenuItem46: TMenuItem; MenuItem46: TMenuItem;
MenuItem47: TMenuItem; MenuItem47: TMenuItem;
MenuItem48: TMenuItem; MenuItem48: TMenuItem;
MenuItem49: TMenuItem;
MenuItem5: TMenuItem; MenuItem5: TMenuItem;
MenuItem50: TMenuItem;
MenuItem51: TMenuItem;
MenuItem52: TMenuItem;
MnuView: TMenuItem;
MenuItem6: TMenuItem; MenuItem6: TMenuItem;
MenuItem7: TMenuItem; MenuItem7: TMenuItem;
MenuItem8: TMenuItem; MenuItem8: TMenuItem;
@@ -73,7 +80,6 @@ type
MnuEdit: TMenuItem; MnuEdit: TMenuItem;
OpenDialog: TOpenDialog; OpenDialog: TOpenDialog;
OpenDialog1: TOpenDialog; OpenDialog1: TOpenDialog;
Panel1: TPanel;
CellEdit: TsCellEdit; CellEdit: TsCellEdit;
CellIndicator: TsCellIndicator; CellIndicator: TsCellIndicator;
AcFontBold: TsFontStyleAction; AcFontBold: TsFontStyleAction;
@@ -94,6 +100,7 @@ type
AcNumFormatPercentage: TsNumberFormatAction; AcNumFormatPercentage: TsNumberFormatAction;
AcNumFormatCurrency: TsNumberFormatAction; AcNumFormatCurrency: TsNumberFormatAction;
AcNumFormatCurrencyRed: TsNumberFormatAction; AcNumFormatCurrencyRed: TsNumberFormatAction;
Panel2: TPanel;
PuBorders: TPopupMenu; PuBorders: TPopupMenu;
PuTimeFormat: TPopupMenu; PuTimeFormat: TPopupMenu;
PuDateFormat: TPopupMenu; PuDateFormat: TPopupMenu;
@@ -130,9 +137,13 @@ type
AcCellBorderAll: TsCellBorderAction; AcCellBorderAll: TsCellBorderAction;
AcCellBorderAllVert: TsCellBorderAction; AcCellBorderAllVert: TsCellBorderAction;
FontnameCombo: TsFontnameCombobox; FontnameCombo: TsFontnameCombobox;
AcCopyFormat: TsCopyFormatAction;
sFontSizeCombobox1: TsFontSizeCombobox; sFontSizeCombobox1: TsFontSizeCombobox;
AcMergeCells: TsMergeAction; AcMergeCells: TsMergeAction;
Splitter2: TSplitter;
Splitter3: TSplitter;
ToolBar2: TToolBar; ToolBar2: TToolBar;
ToolBar3: TToolBar;
ToolButton1: TToolButton; ToolButton1: TToolButton;
ToolButton11: TToolButton; ToolButton11: TToolButton;
ToolButton12: TToolButton; ToolButton12: TToolButton;
@@ -162,6 +173,7 @@ type
ToolButton25: TToolButton; ToolButton25: TToolButton;
ToolButton26: TToolButton; ToolButton26: TToolButton;
ToolButton27: TToolButton; ToolButton27: TToolButton;
ToolButton28: TToolButton;
ToolButton29: TToolButton; ToolButton29: TToolButton;
ToolButton3: TToolButton; ToolButton3: TToolButton;
ToolButton30: TToolButton; ToolButton30: TToolButton;
@@ -170,15 +182,22 @@ type
ToolButton32: TToolButton; ToolButton32: TToolButton;
ToolButton33: TToolButton; ToolButton33: TToolButton;
ToolButton34: TToolButton; ToolButton34: TToolButton;
ToolButton35: TToolButton;
ToolButton36: TToolButton;
ToolButton37: TToolButton;
ToolButton38: TToolButton;
ToolButton4: TToolButton; ToolButton4: TToolButton;
ToolButton5: TToolButton; ToolButton5: TToolButton;
ToolButton6: TToolButton; ToolButton6: TToolButton;
ToolButton7: TToolButton; ToolButton7: TToolButton;
ToolButton8: TToolButton; ToolButton8: TToolButton;
ToolButton9: TToolButton;
WorkbookSource: TsWorkbookSource; WorkbookSource: TsWorkbookSource;
WorkbookTabControl: TsWorkbookTabControl; WorkbookTabControl: TsWorkbookTabControl;
WorksheetGrid: TsWorksheetGrid; WorksheetGrid: TsWorksheetGrid;
procedure Button1Click(Sender: TObject); procedure AcFileOpenAccept(Sender: TObject);
procedure AcFileSaveAsAccept(Sender: TObject);
procedure AcViewInspectorExecute(Sender: TObject);
procedure InspectorTabControlChange(Sender: TObject); procedure InspectorTabControlChange(Sender: TObject);
private private
{ private declarations } { private declarations }
@@ -195,24 +214,53 @@ implementation
{ TForm1 } { TForm1 }
procedure TForm1.Button1Click(Sender: TObject); { Loads the spreadsheet file selected by the AcFileOpen action }
procedure TForm1.AcFileOpenAccept(Sender: TObject);
begin begin
if OpenDialog.Execute then begin WorkbookSource.AutodetectFormat := false;
WorkbookSource.AutodetectFormat := false; case AcFileOpen.Dialog.FilterIndex of
case OpenDialog.FilterIndex of 1: WorkbookSource.AutoDetectFormat := true; // All spreadsheet files
1: WorkbookSource.AutoDetectFormat := true; // All spreadsheet files 2: WorkbookSource.AutoDetectFormat := true; // All Excel files
2: WorkbookSource.AutoDetectFormat := true; // All Excel files 3: WorkbookSource.FileFormat := sfOOXML; // Excel 2007+
3: WorkbookSource.FileFormat := sfOOXML; // Excel 2007+ 4: WorkbookSource.FileFormat := sfExcel8; // Excel 97-2003
4: WorkbookSource.FileFormat := sfExcel8; // Excel 97-2003 5: WorkbookSource.FileFormat := sfExcel5; // Excel 5.0
5: WorkbookSource.FileFormat := sfExcel5; // Excel 5.0 6: WorkbookSource.FileFormat := sfExcel2; // Excel 2.1
6: WorkbookSource.FileFormat := sfExcel2; // Excel 2.1 7: WorkbookSource.FileFormat := sfOpenDocument; // Open/LibreOffice
7: WorkbookSource.FileFormat := sfOpenDocument; // Open/LibreOffice 8: WorkbookSource.FileFormat := sfCSV; // Text files
8: WorkbookSource.FileFormat := sfCSV; // Text files end;
WorkbookSource.FileName := AcFileOpen.Dialog.FileName; // this loads the file
end;
{ Saves the spreadsheet to the file selected by the AcFileSaveAs action }
procedure TForm1.AcFileSaveAsAccept(Sender: TObject);
var
fmt: TsSpreadsheetFormat;
begin
Screen.Cursor := crHourglass;
try
case AcFileSaveAs.Dialog.FilterIndex of
1: fmt := sfOOXML;
2: fmt := sfExcel8;
3: fmt := sfExcel5;
4: fmt := sfExcel2;
5: fmt := sfOpenDocument;
6: fmt := sfCSV;
7: fmt := sfWikiTable_WikiMedia;
end; end;
WorkbookSource.FileName := OpenDialog.FileName; // this loads the file WorkbookSource.SaveToSpreadsheetFile(AcFileSaveAs.Dialog.FileName, fmt);
finally
Screen.Cursor := crDefault;
end; end;
end; end;
{ Toggles the spreadsheet inspector on and off }
procedure TForm1.AcViewInspectorExecute(Sender: TObject);
begin
InspectorTabControl.Visible := AcViewInspector.Checked;
end;
{ Event handler to synchronize the mode of the spreadsheet inspector with the
selected tab of the TabControl }
procedure TForm1.InspectorTabControlChange(Sender: TObject); procedure TForm1.InspectorTabControlChange(Sender: TObject);
begin begin
Inspector.Mode := TsInspectorMode(InspectorTabControl.TabIndex); Inspector.Mode := TsInspectorMode(InspectorTabControl.TabIndex);

View File

@@ -117,6 +117,28 @@ type
property Worksheet; property Worksheet;
end; end;
TsCopyFormatAction = class(TsSpreadsheetAction)
private
FSource: TsCellRange;
public
procedure ExecuteTarget(Target: TObject); override;
procedure UpdateTarget(Target: TObject); override;
published
property Caption;
property Enabled;
property HelpContext;
property HelpKeyword;
property HelpType;
property Hint;
property ImageIndex;
property OnExecute;
property OnHint;
property OnUpdate;
property SecondaryShortCuts;
property ShortCut;
property Visible;
end;
TsAutoFormatAction = class(TsCellAction) TsAutoFormatAction = class(TsCellAction)
public public
procedure ExecuteTarget(Target: TObject); override; procedure ExecuteTarget(Target: TObject); override;
@@ -442,6 +464,7 @@ begin
// Worksheet-releated actions // Worksheet-releated actions
TsWorksheetAddAction, TsWorksheetDeleteAction, TsWorksheetRenameAction, TsWorksheetAddAction, TsWorksheetDeleteAction, TsWorksheetRenameAction,
// Cell or cell range formatting actions // Cell or cell range formatting actions
TsCopyFormatAction,
TsFontStyleAction, TsFontDialogAction, TsBackgroundColorDialogAction, TsFontStyleAction, TsFontDialogAction, TsBackgroundColorDialogAction,
TsHorAlignmentAction, TsVertAlignmentAction, TsHorAlignmentAction, TsVertAlignmentAction,
TsTextRotationAction, TsWordWrapAction, TsTextRotationAction, TsWordWrapAction,
@@ -690,6 +713,41 @@ begin
end; end;
{ TsCopyFormatAction }
procedure TsCopyFormatAction.ExecuteTarget(Target: TObject);
var
srcRow, srcCol: Cardinal; // Row and column index of source cell
destRow, destCol: Cardinal; // Row and column index of destination cell
srcCell, destCell: PCell; // Pointers to source and destination cells
begin
if (FSource.Row1 = Cardinal(-1)) or (FSource.Row2 = Cardinal(-1)) or
(FSource.Col1 = Cardinal(-1)) or (FSource.Col2 = Cardinal(-1))
then
exit;
for srcRow := FSource.Row1 to FSource.Row2 do
begin
destRow := Worksheet.ActiveCellRow + srcRow - FSource.Row1;
for srcCol := FSource.Col1 to FSource.Col2 do begin
destCol := Worksheet.ActiveCellCol + srcCol - FSource.Col1;
srcCell := Worksheet.FindCell(srcRow, srcCol);
destCell := Worksheet.FindCell(destRow, destCol);
Worksheet.CopyFormat(srcCell, destCell);
end;
end;
end;
procedure TsCopyFormatAction.UpdateTarget(Target: TObject);
begin
if (Worksheet = nil) or (Worksheet.GetSelectionCount = 0) then
FSource := TsCellRange(Rect(-1, -1, -1,-1))
else
FSource := Worksheet.GetSelection[0];
// Memorize current selection - it will be the source of the copy format operation.
end;
{ TsAutoFormatAction - action for cell formatting which is automatically { TsAutoFormatAction - action for cell formatting which is automatically
updated according to the current selection } updated according to the current selection }

View File

@@ -489,8 +489,6 @@ end;
procedure TsWorkbookSource.InternalLoadFromFile(AFileName: string; procedure TsWorkbookSource.InternalLoadFromFile(AFileName: string;
AAutoDetect: Boolean; AFormat: TsSpreadsheetFormat; AWorksheetIndex: Integer = 0); AAutoDetect: Boolean; AFormat: TsSpreadsheetFormat; AWorksheetIndex: Integer = 0);
begin begin
Unused(AWorksheetIndex);
// Create a new empty workbook // Create a new empty workbook
InternalCreateNewWorkbook; InternalCreateNewWorkbook;
@@ -649,8 +647,13 @@ end;
procedure TsWorkbookSource.SaveToSpreadsheetFile(AFileName: String; procedure TsWorkbookSource.SaveToSpreadsheetFile(AFileName: String;
AFormat: TsSpreadsheetFormat; AOverwriteExisting: Boolean = true); AFormat: TsSpreadsheetFormat; AOverwriteExisting: Boolean = true);
begin begin
if Workbook <> nil then if FWorkbook <> nil then begin
Workbook.WriteToFile(AFileName, AFormat, AOverwriteExisting); FWorkbook.WriteToFile(AFileName, AFormat, AOverwriteExisting);
// If required, display loading error message
if FWorkbook.ErrorMsg <> '' then
DoShowError(FWorkbook.ErrorMsg);
end;
end; end;
{@@ ---------------------------------------------------------------------------- {@@ ----------------------------------------------------------------------------
@@ -670,8 +673,13 @@ end;
procedure TsWorkbookSource.SaveToSpreadsheetFile(AFileName: String; procedure TsWorkbookSource.SaveToSpreadsheetFile(AFileName: String;
AOverwriteExisting: Boolean = true); AOverwriteExisting: Boolean = true);
begin begin
if Workbook <> nil then if FWorkbook <> nil then begin
Workbook.WriteToFile(AFileName, AOverwriteExisting); FWorkbook.WriteToFile(AFileName, AOverwriteExisting);
// If required, display loading error message
if FWorkbook.ErrorMsg <> '' then
DoShowError(FWorkbook.ErrorMsg);
end;
end; end;
{@@ ---------------------------------------------------------------------------- {@@ ----------------------------------------------------------------------------