fpspreadsheet: Add TsWorksheetIndicator as new visual control. Donated by forum user "abcthing" (https://forum.lazarus.freepascal.org/index.php/topic,49312.0.html)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7385 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-04-15 22:19:20 +00:00
parent 2f3af00ef0
commit 5cdb8c16c7
11 changed files with 431 additions and 273 deletions

View File

@ -1,11 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="11"/>
<Version Value="12"/>
<PathDelim Value="\"/>
<General>
<Flags>
<CompatibilityMode Value="True"/>
</Flags>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="demo_ctrls"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>

View File

@ -2,19 +2,20 @@ object Form1: TForm1
Left = 648
Height = 621
Top = 164
Width = 997
Width = 1097
ActiveControl = sWorksheetGrid1
Caption = 'demo_ctrls'
ClientHeight = 601
ClientWidth = 997
ClientWidth = 1097
Menu = MainMenu1
OnCreate = FormCreate
ShowHint = True
LCLVersion = '2.1.0.0'
object sWorkbookTabControl1: TsWorkbookTabControl
Left = 0
Height = 542
Top = 59
Width = 997
Height = 552
Top = 49
Width = 1097
TabPosition = tpBottom
TabIndex = 0
Tabs.Strings = (
'Sheet1'
@ -24,13 +25,15 @@ object Form1: TForm1
WorkbookSource = sWorkbookSource1
object sWorksheetGrid1: TsWorksheetGrid
Left = 2
Height = 517
Top = 23
Width = 993
Height = 527
Top = 2
Width = 1093
AutoCalc = True
FixedColWidth = 57
FrozenCols = 0
FrozenRows = 0
PageBreakPen.Color = clBlue
PageBreakPen.Style = psDash
ReadFormulas = True
TextOverflow = True
WorkbookSource = sWorkbookSource1
@ -45,16 +48,13 @@ object Form1: TForm1
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing, goEditing, goThumbTracking, goDblClickAutoSize, goCellHints]
ParentFont = False
TabOrder = 1
TitleFont.Color = clBlack
TitleFont.Height = -13
TitleFont.Name = 'Arial'
end
end
object ToolBar1: TToolBar
Left = 0
Height = 26
Top = 0
Width = 997
Width = 1097
AutoSize = True
ButtonHeight = 26
ButtonWidth = 24
@ -85,7 +85,7 @@ object Form1: TForm1
Width = 130
WorkbookSource = sWorkbookSource1
DropDownCount = 24
ItemIndex = 49
ItemIndex = 69
TabOrder = 0
Text = 'Arial'
end
@ -135,63 +135,83 @@ object Form1: TForm1
Style = tbsDivider
end
end
object ToolBar3: TToolBar
Left = 0
Height = 28
object Panel1: TPanel
Left = 4
Height = 23
Top = 26
Width = 997
Width = 1089
Align = alTop
AutoSize = True
Caption = 'ToolBar3'
Constraints.MinHeight = 28
EdgeBorders = [ebBottom]
BorderSpacing.Left = 4
BorderSpacing.Right = 4
BevelOuter = bvNone
ClientHeight = 23
ClientWidth = 1089
TabOrder = 2
object Panel2: TPanel
Left = 1
Height = 26
Top = 0
Width = 138
Align = alLeft
BevelOuter = bvNone
ClientHeight = 26
ClientWidth = 138
TabOrder = 0
object sCellIndicator1: TsCellIndicator
Left = 0
Height = 23
Top = 0
Width = 138
WorkbookSource = sWorkbookSource1
Align = alTop
TabOrder = 0
Text = 'A1'
end
end
object sCellEdit1: TsCellEdit
Left = 144
object sWorksheetIndicator1: TsWorksheetIndicator
AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = Panel1
AnchorSideRight.Control = Splitter1
Left = 0
Height = 23
Top = 0
Width = 851
Align = alClient
BorderSpacing.Right = 2
BorderSpacing.Bottom = 3
TabOrder = 1
Width = 103
WorkbookSource = sWorkbookSource1
Anchors = [akTop, akLeft, akRight]
ItemIndex = 0
TabOrder = 0
Text = 'Sheet1'
end
object Splitter2: TSplitter
Left = 139
Height = 26
object Splitter1: TSplitter
AnchorSideTop.Control = Panel1
AnchorSideBottom.Control = sWorksheetIndicator1
AnchorSideBottom.Side = asrBottom
Left = 103
Height = 23
Top = 0
Width = 5
Align = alNone
Anchors = [akTop, akBottom]
end
object sCellIndicator1: TsCellIndicator
AnchorSideLeft.Control = Splitter1
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel1
AnchorSideRight.Control = Splitter2
Left = 108
Height = 23
Top = 0
Width = 98
WorkbookSource = sWorkbookSource1
Anchors = [akTop, akLeft, akRight]
TabOrder = 2
Text = 'A1'
end
object Splitter2: TSplitter
AnchorSideTop.Control = Panel1
AnchorSideBottom.Control = sWorksheetIndicator1
AnchorSideBottom.Side = asrBottom
Left = 206
Height = 23
Top = 0
Width = 5
Align = alNone
Anchors = [akTop, akBottom]
end
object sCellEdit1: TsCellEdit
AnchorSideLeft.Control = Splitter2
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = Panel1
AnchorSideRight.Control = Panel1
AnchorSideRight.Side = asrBottom
Left = 211
Height = 23
Top = 0
Width = 878
Anchors = [akTop, akLeft, akRight]
TabOrder = 4
WorkbookSource = sWorkbookSource1
end
end
object Splitter3: TSplitter
Cursor = crVSplit
Left = 0
Height = 5
Top = 54
Width = 997
Align = alTop
ResizeAnchor = akTop
end
object sWorkbookSource1: TsWorkbookSource
AutoDetectFormat = False
@ -259,199 +279,82 @@ object Form1: TForm1
left = 176
top = 312
Bitmap = {
4C69060000001000000010000000FFFFFF00FFFFFF000088CC610088CC810088
CC810088CC810088CC810088CC810088CC810088CC810088CC810088CC810088
CC810088CC610087CB00FFFFFF00FFFFFF00FFFFFF000087CA8388DCF4FF60C0
E9FF5FBFEAFF80D3F4FF9CE3FDFFA2E6FFFFA2E6FFFFA2E6FFFFA2E6FFFFA6EA
FFFF0087CA830087CA00FFFFFF00FFFFFF00FFFFFF000085C885ACF1FFFFABEF
FEFF95E2F8FF6EC9EDFF48A8D9FF98DCFEFF98DCFEFF98DCFEFF98DCFEFFA1E5
FFFF0085C8850085C800FFFFFF00FFFFFF00FFFFFF000084C587A9EEFDFFA4E9
FCFFA4E9FCFFAAEEFDFF42A1D1FF97DBFDFF97DBFDFF97DBFDFF97DBFDFF9FE3
FEFF0084C5870084C500FFFFFF00FFFFFF00FFFFFF000082C28AA6EBFCFFA1E6
FBFFA1E6FBFFA6EBFCFF3C9DCFFF96DAFCFF96DAFCFF96DAFCFF96DAFCFF9EE2
FDFF0082C28A0082C200FFFFFF00FFFFFF00FFFFFF00007FBF8DA3E8FBFF9DE3
F9FF9DE3F9FFA3E8FBFF3594C5FF94D8FAFF94D8FAFF94D8FAFF94D8FAFF9BDF
FCFF007FBF8D007FBE00FFFFFF00FFFFFF00FFFFFF00007DBB909EE5F9FF98DF
F6FF98DFF6FF9EE5F9FF3290C0FF92D6F8FF92D6F8FF92D6F8FF92D6F8FF99DD
FAFF007DBB90007DBB33FFFFFF00FFFFFF00FFFFFF00007BB8949BE1F7FF94DB
F4FF94DBF4FF9BE1F7FF308DBCFF90D4F6FF90D4F6FF90D4F6FF90D4F6FF97DB
F9FFFEFEFDFF007BB894FFFFFF00FFFFFF00FFFFFF000078B49797DEF6FF90D8
F2FF90D8F2FF97DEF6FF2D89B7FF8FD3F5FF8FD3F5FF8FD3F5FF8FD3F5FF95D9
F8FFF5F5EEFF0078B497FFFFFF00FFFFFF00FFFFFF000076B09B92DAF4FF8BD4
F0FF8BD4F0FF92DAF4FF2B85B3FF8DD1F3FF8DD1F3FF8DD1F3FF8DD1F3FF93D7
F6FFEBEBDDFF0076B09BFFFFFF00FFFFFF00FFFFFF000073AC9E8ED6F2FF87D0
EDFF87D0EDFF8ED6F2FF2882AFFF8BCFF1FF8BCFF1FF8BCFF1FF8BCFF1FF91D5
F5FFFEC941FF0073AC9EFFFFFF00FFFFFF00FFFFFF00006FA7A48AD3F0FF82CD
EBFF82CDEBFF8AD3F0FF267EABFF8ACEF0FF8ACEF0FF8ACEF0FF8ACEF0FF8FD3
F4FFF4B62EFF006FA7A4FFFFFF00FFFFFF00FFFFFF00006699B287D1EFFF7FCA
E9FF7FCAE9FF87D0EFFF267DA9FF8DD1F3FF8DD1F3FF8DD1F3FF8DD1F3FF90D4
F5FF006699B200679B3EFFFFFF00FFFFFF00FFFFFF00005E8D8E3591BDF169B8
DDFA81CBECFF84CEEEFF005C8BEF005D8CBE005D8CBE005D8CBE005D8CBE005D
8CBE005E8D8E00669900FFFFFF00FFFFFF00FFFFFF00005D8C00006599500064
97991C7AA9C052A5CDE0005B89C1005B8900005B8900005B8900005B8900005B
8900005D8C0000669900FFFFFF00FFFFFF00FFFFFF00005D8C00006497000062
9300005E8E30005C8C7C0059879200598700005B8900005B8900005B8900005B
8900005D8C0000669900FFFFFF00BC6B3671BC6B3690BC6B36CCBC6B36EEBC6B
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
31FFA76031FEA66031F1A86131C4003F9300003F9300003F9300003F9424003F
948A003E93CC004095CC004095CC004095CC004095CC004095CC004095CC0040
95CC004095CC00409599003F9400003F9300003F9324003F938A0E4B9CD33F76
C0EC5D90D4FF3365A9FFA0A0A0FFA9A9A9FFA9A9A9FFAAAAAAFFACACACFFAEAE
AEFFB0B0B0FF003E93CC003E9300003F938A0E4A9CD33E75BFEC5487CBFF3669
ADFF23569AFF3363A6FFA9A9A9FFBCBCBCFFBDBDBDFFBFBFBFFFC1C1C1FFC4C4
C4FFC7C7C7FF003C90CC003C9000003D91CC5D90D4FF3568ACFF285B9FFF1A4D
91FF4477BBFF3361A4FFA9A9A9FFBDBDBDFFBFBFBFFFC1C1C1FFC4C4C4FFC7C7
C7FFC9C9C9FF003A8DCC003A8D00003B8ECC588BCFFF1A4D91FF4376BAFF3265
A9FF4376BAFF335FA1FFAAAAAAFFBFBFBFFFC1C1C1FFC4C4C4FFB1B1B1FFBBBB
BBFFCCCCCCFF003789CC0037890000398BCC5588CCFF275A9EFF4174B8FF3164
A8FF4174B8FF335D9EFFACACACFFC1C1C1FFC4C4C4FFC7C7C7FFA8A8A8FFA8A8
A8FFBEBEBEFF003485CC00348500003688CC5386CAFF295CA0FF3F72B6FF3063
A7FF3F72B6FF335A9AFFAEAEAEFFACACACFFA5A5A5FFA5A5A5FFA5A5A5FFFDFD
FDFFA5A5A5FF122F609510295100003485CC5083C7FF1D5094FF3265A9FF2D60
A4FF3D70B4FF335897FFB0B0B0FFA2A2A2FFF2F2F2FFF2F2F2FFF2F2F2FFF2F2
F2FFF2F2F2FF1A1A1A661A1A1A1A003181CC4C7FC3FFBBBBBBFF22518CFF2C5F
A3FF3B6EB2FF335593FFB3B3B3FFAAAAAAFFA0A0A0FFA0A0A0FFA0A0A0FFE4E4
E4FFA0A0A0FF051E4D950B204600002E7DCC497CC0FF09336FFF215090FF2B5E
A2FF396CB0FF335290FFB5B5B5FFCCCCCCFFD0D0D0FFD3D3D3FF9D9D9DFF9D9D
9DFFBFBFBFFF002774CC00277400002B79CC477ABEFF2C5FA3FF376AAEFF2B5E
A2FF376AAEFF33508CFFB8B8B8FFD0D0D0FFD3D3D3FFD5D5D5FFAAAAAAFFBEBE
BEFFDCDCDCFF00246FCC00246F00002875CC4477BBFF2C5FA3FF3568ACFF2B5E
A2FF2E61A5FF334B87FFBBBBBBFFD3D3D3FFD5D5D5FFD8D8D8FFDBDBDBFFDCDC
DCFFDDDDDDFF001F68CC001F6800002571CC4174B8FF2C5FA3FF2D60A4FF2356
9AFF3D70B4FF334179FFBEBEBEFFD5D5D5FFD8D8D8FFDBDBDBFFDCDCDCFFDDDD
DDFFDDDDDDFF001258CC0012580000226DCC3F72B6FF225599FF3B6EB2FF2C51
96EC0A1C60D3000749A4000648CC000648CC000648CC000648CC000648CC0006
48CC000648CC00074A9900084B00001B64CC4174B8FF2A5094EC0A1A5ED30008
4A8A000648240006470000044500000445000004450000044500000445000004
4500000445000006480000084B0000105500000B4FCC0007498A000546240005
4700000648000006470000044500000445000004450000044500000445000004
4500000445000006480000084B00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00777777607777
77CF747474FF707070EF6B6B6B7F656565AF606060EF5959599F53535310FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007373
737F696969FF6A6A6ABFFFFFFF00FFFFFF005858589F545454FF4A4A4ACFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006D6D
6D7F656565FF636363BFFFFFFF00FFFFFF004F4F4F7F4E4E4EFF414141FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006767
677F5F5F5FFF5B5B5BBFFFFFFF004D4D4D10464646DF464646FF3838389FFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006060
607F595959FF535353DF4C4C4C7F454545CF444444FF363636BFFFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005858
587F535353FF4A4A4ABFFFFFFF00FFFFFF003434349F383838FF262626CF1F1F
1F10FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004F4F
4F7F4D4D4DFF414141BFFFFFFF00FFFFFF002B2B2B10262626FF2D2D2DFF1717
1770FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004646
467F464646FF383838BFFFFFFF00FFFFFF00FFFFFF001C1C1CFF292929FF1010
107FFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003D3D
3D7F404040FF2F2F2FCFFFFFFF00FFFFFF001B1B1B70242424FF0F0F0FEF0A0A
0A20FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003C3C3C603434
34AF2D2D2DBF262626BF1F1F1F8F1919198F131313BF0D0D0D8F09090920FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF006B6B6B80656565F0606060FF595959F0535353C0FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF005E5E5EE0595959FF51515160FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF005C5C5C30575757FF4F4F4FF0FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF0054545490525252FF464646A0FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF004C4C4CE0494949FF3D3D3D50FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF004A4A4A30454545FF3C3C3CF0FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0041414190444444FF323232A0FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00383838E0383838FF2A2A2A50FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF0036363640353535FF282828FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003434
34802D2D2DC0262626C01F1F1FC0191919B0FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00777777607777
77EF777777FF7575758FFFFFFF00FFFFFF00FFFFFF00616161AF5B5B5BFF5454
5470FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007777
77BF747474FFFFFFFF00FFFFFF00FFFFFF00FFFFFF0059595910535353CFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF007373
73BF6E6E6EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A4A4ABFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006D6D
6DBF686868FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00414141BFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006767
67BF616161FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00383838BFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006060
60BF595959FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002F2F2FBFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005858
58BF515151FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00262626BFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004F4F
4F8F4B4B4BFF41414150FFFFFF00FFFFFF00FFFFFF00242424401E1E1E8FFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004646
46203F3F3FEF383838CF31313120FFFFFF00232323401C1C1CCF16161620FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00363636202F2F2F9F282828BF212121BF1B1B1B8F14141430FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002B2B
2BFF242424FF1E1E1EFF171717FF121212FF0C0C0CFF070707FF030303FFFFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00
4C7A0600000010000000100000004E0900000000000078DAED967B544DDB1EC7
E7182E0E87A381C1F0B89E5D271C54DB0EC72BF77A3FF3BA38C84EA287087985
B33987139136228922A112F2886EAF1D874B2CCA496E548ABCA2DA95DE8FFDBD
BF39D1B0AE47F1C719F79E71FFF88CB56AFF3E6BFE7E73CDDF9C0B0003C1364B
56C4865A62C55C6F08EF2DCCF5FACF9B530BA18ACDC21CED0BAC4F2CC4FECC2A
F83F858CA32F28986209B9BFE9DAA6907CE0B84E8FDD8F4AB1282E072303EF61
6FAA5EC6A127144CB184DCDF78C53528B70A0159958260BAFFEBA1DBF04AA992
E197A9078F25E4FE4F97DC8EBEACC4A1A715027E3FE0403CF6DCAF94E1FBA80A
3C9690FB6AADFBE1E71538905926E0F74ACF2BF04C2E97E1935E091ECBD43172
7F5DA4C6F74919F6A6170BF8BDA926163BEF96CAF04E2B078F2514327F4DB8A7
CFC31278A6140AF8BDB17B1434778A6578A59441AFA71A285EE6AF3AE7E5F580
62920B04FCBEC7960BF0482C92B1FB5E298A8A72C1E365FE8A509F9DF70BB1F5
4E9E80DF77DF7416EEB75FC9D8F5AF62BC7C99061E2FF39785F86EBF5B00D784
1C01BF37FAE914B6C6E7CBD89154047DDC10F07899BFF858805B621E7EBAF952
C0EFBBFC781C6EB7F26478D0BA2C3CDF133C5EE6CFF73EE37A5B07F5F52C816B
820E5DD605BD97BFE64E11782C5BE03348E65BBA6F57EE88CEB70B4F2BDF7023
1B1B6FD11CCDDAAA63B3B7C5BC07C5D233E4EF7FF636C66CBC2DD83C2FEFB62E
41B1938EDCCC6033B75C24D87BF0D80FF9F3BC189BBB8B72D96ECC666D5BCB66
B8EE243EE94739982D21348444E412E5910E667A0291F6AF895AD80FD18BFA23
D2F17B443AF4D5453A0DBA71DE4E39E58DEF539C711B2584BEA2942841555931
2A8BF2509EF702150539E2EFAAF21254E4BF446956BA3E3B21BA226E8B657698
9DD29AFCE4E2F4DBC80A5E0F7D398F2BC6B56DF350F12A97E25FA0B2B8403CB7
B2381F65D98F50FA2C05B90911A06780F228253FAF383D01CF037F14311CEE97
E767A1A230578CCBC72FCF7B8ED2E76928799A8287875DA04BFA1517EC947A5E
6F519A8467E4F3184E9CFB7CBA66A1AAF415E5446317EA5096958E121ABBE4C9
3D64F8AFC2B34B41386FAB049FABC2D4383C3BB68EF27BF89A9C4C72DE8C5DF2
0AE5394FAADDE227C9787070251EC704E0DC82DEDC47E1BDAB787A749DC83BCE
DD0671DB17E0C6CE858423AE6BECE8FF36E2B7B7DCDFEF8C87117E383BBFB778
3F05C9579019B00699545766800B1ED1FDA3C36BA84EC27F35D269BC077E2B90
E6EB8C94FD4B917AC0196961FB70DAE68D9F74E9B54B704F10F0DACD38B44AE4
FBC077B9F0EEFB2CC33DE27EE86E9C9AA7107EDE6F31E4B8081EBE79061F5BB8
7E2B91466373F79ECF52247B2FC15D6F27241DDF8E13D60A4490AF4B88C4237F
9737EBA76612F738E2B7636E383ED794AF47E86E858B5CF534DF7363377F12BE
16E277D9E3D6E18D08B6227F615FE44AE7C97711BE36F5D227E1FE4D8D2D24DF
0D08243FC2A18F3EE7FA595A132EB51EFF3A7FC73E6B714C65A28FB0573E78F9
CF137871E544ADEBBFB66F2DAEEE5DCDFD1C9A3FF60F3B6558B89D32F702ADC7
3082AFAB33B436426D143849EF28C4DA14C1345741946FA0CA448C7B5465921F
686572990DA6FDA21A4F43C28D0DDA2531F3DD35E14DB16F5DF276B97D33667F
E2E015B1D9B33577A0B009C2C1830711141424080E0E464848084E9E3C89D0D0
5088310609D7ED9BD1FB13072DD7664F71BD0133BB13E8FCF77D50581F155E54
5414A2A3A3A1D56A71F1E2455CBE7C1957AF5E051BA09108C606EE90F8784ADB
1018CDF443EB713B30746524145601C2FF901B171707F6BDBB4430D67FBB347D
6BBCF0FEB62202A69437BF2AE61C1239BFEB9E3E7D1A919191902409ACCF1689
60ACDF5669EA6609DFFEE08B21CEE130991728AE8AD9BEA2DE77C70D0C0C14C4
C4C480F5DE24118C996D9626FF721D5D671DC4E0A5E7616C7D4C5C153FEC1373
C59F71E4C8916AAAAAAAC4B5692FD56E83AE13197F8EC5CF57F1670B4F917B0F
5500063A9D8362BA9798677F7F7F141414BC47EBD6ADE713AD99C90669ACFA57
5157A789DBF0DD9CC3E8BFE80C145377E1ECD9B3620EF87B7CCBE3C78FC5B56E
BB71BBBFEE309CB19EEBA4516B63D140B1181D2D34E86EE98F7E0B43A198A441
58589898AB848404242626E2C08103023EA7EC5B678960ACFB6A69844B8C18B7
8FFD49E1F3ABC2621BC2C3C3ABDDA4A424910B9FBBD4D45430C3C512C198D172
89BF6FEEF335C0FD9E5647A018E32A6A7AEB26272723252545B86969F4FDD1DE
562218FBCB1289BF2FEEF3B9E36B4FCCDF90D562AC0FB9C26F3A5D2218EBE428
F1F7D569AAB798B7EF26EEC96ED85695C8EA8F0A60F5464A1FA5FE686FF6D518
C6DACC13E377B3F0CC6ED8DA32917D35DA8D7E3764F54630F6A7611FA7DE4826
7C83A98C7D3D819E37CA8DD51D6EC8EA8E78FD5B2DFD77BF21FED759B972A58A
8877767686939393CEC1C1416D6363734AA552E966CC98E13779F264839A9EB1
6CD932B59D9D1DECEDEDB56FFF377DFA74BF2953A660F4E8D1F135F98E8E8E7C
4C585B5B57FB13264C508F1F3F1E43860C414DFE82050BD473E6CCC1CC993385
3F6EDC3883E1C387A713E8DBB7AF5F4D3ED5AAA65A41B5A68F1D3B563D6CD8B0
F8A14387C2CCCC4C5B9B39A45AD5E4F25AABE37BF7EEED4763A34B972EF1EDDB
B7FFE41CF25A29675E6BB5DFBD7B770372D1A3470FB46CD9D2E9533ED5A97E53
AB2CDFB66DDBA26BD7AE303030507FCA1F3870A0DADCDC1CBD7AF5AA7E576DDA
B4713234344493264D740D1B36ECF03177C080012AAAF514E5A9A57CB554AB47
AB56AD3C9A356BA66DDCB8B14783060D3AFC91FAE58F0EF5FF7AEAC53CEA0950
4FE4D1BA8EFDDC67585A5A66F07E9A3871A2EA73DD59B366194F9B360DD41379
5F923FED399A49932681FAE1E097F8D4FF19A3468D02F584C5E7BAD4FFC6B477
807AE28B72A7FED7F07DC7D4D4F48B72A7FECFE07B4EB76EDD3E3B77DAEBCC95
4A258C8C8CF0B92EF5FF7AEAFF58EAFF58EAFF58EAFFD0FFF7D2EF7A7EEB082C
5FBEDCE3DDDFACACAC4ED19908EA09A71A9EA1E5E7FF7FFE9F7AD880FA3FBE16
E7BF76D1A245F8484F686B71FE6B6D6D6DF1919ED0D6E2FCD752ADF8484F686B
71FE6BF97EF5A1DFE84CD4D6E2FCD7D25EF7419F9F8935F9B4D7798C1933869F
FFB2BEA5F3D7BC5DBB761E35F9B4D775183C78B08E6A8D37313111E76DE7CE9D
CDE9FC8F6FD1A245875AF67F07AAD58FFA5FDBB163472D9DFF1ECD9B3737FE3D
D6307DEB807F6B50ADFC5B074D9B3645A3468D50BF7E7DD4A95307FF6D3DF76F
B475E861
}
end
object MainMenu1: TMainMenu

View File

@ -30,6 +30,9 @@ type
MnuFormatBold: TMenuItem;
MnuFormatItalic: TMenuItem;
MnuFormatUnderline: TMenuItem;
Panel1: TPanel;
Splitter1: TSplitter;
Splitter2: TSplitter;
sWorkbookSource1: TsWorkbookSource;
sWorkbookTabControl1: TsWorkbookTabControl;
sWorksheetGrid1: TsWorksheetGrid;
@ -38,13 +41,10 @@ type
sFontStyleAction1: TsFontStyleAction;
sFontStyleAction2: TsFontStyleAction;
sFontStyleAction3: TsFontStyleAction;
Panel2: TPanel;
FontColorCombobox: TsCellCombobox;
FontNameCombo: TsCellCombobox;
FontSizeCombo: TsCellCombobox;
Splitter2: TSplitter;
Splitter3: TSplitter;
ToolBar3: TToolBar;
sWorksheetIndicator1: TsWorksheetIndicator;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
@ -54,7 +54,6 @@ type
ToolButton8: TToolButton;
procedure FileOpen1Accept(Sender: TObject);
procedure FileSaveAs1Accept(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
protected
@ -118,10 +117,6 @@ begin
MessageDlg('File format not implemented.', mtError, [mbOk], 0);
exit;
end;
for i := 0 to wb.GetWorksheetCount - 1 do begin
sh := wb.GetWorksheetByIndex(i);
sh.Options := sh.Options - [soShowHeaders];
end;
sWorkbookSource1.LoadFromWorkbook(wb);
end;
@ -147,10 +142,5 @@ begin
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
sWorksheetGrid1.ShowHeaders := false;
end;
end.

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -20,6 +20,9 @@ TSWORKBOOKTABCONTROL_200.PNG
TSWORKSHEETGRID.PNG
TSWORKSHEETGRID_150.PNG
TSWORKSHEETGRID_200.PNG
TSWORKSHEETINDICATOR.png
TSWORKSHEETINDICATOR_150.png
TSWORKSHEETINDICATOR_200.png
tsworkbookchartsource.png
tsworkbookchartsource_150.png
tsworkbookchartsource_200.png

View File

@ -25,7 +25,7 @@ procedure Register;
begin
RegisterComponents('FPSpreadsheet', [
TsWorkbookSource,
TsWorkbookTabControl,
TsWorkbookTabControl, TsWorksheetIndicator,
TsWorksheetGrid,
TsCellEdit, TsCellIndicator, TsCellCombobox,
TsSpreadsheetInspector

View File

@ -234,6 +234,106 @@ type
property WorkbookSource: TsWorkbookSource read FWorkbookSource write SetWorkbookSource;
end;
{ TsWorksheetIndicator }
{@@ TsWorksheetIndicator is a combobox control which displays the sheets of the
workbook currently loaded by the WorkbookSource. }
TsWorksheetIndicator = class(TCustomComboBox, IsSpreadsheetControl)
private
FWorkbookSource: TsWorkbookSource;
FLockCount: Integer;
FShowAllSheets: Boolean;
procedure SetShowAllSheets(AValue: Boolean);
procedure SetWorkbookSource(AValue: TsWorkbookSource);
protected
procedure Change; override;
procedure GetSheetList(AList: TStrings);
function GetWorkbook: TsWorkbook;
function GetWorksheet: TsWorksheet;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ListenerNotification(AChangedItems: TsNotificationItems;
AData: Pointer = nil);
procedure RemoveWorkbookSource;
property Workbook: TsWorkbook read GetWorkbook;
property Worksheet: TsWorksheet read GetWorksheet;
published
property ShowAllSheets: boolean read FShowAllSheets write SetShowAllSheets default true;
property WorkbookSource: TsWorkbookSource read FWorkbookSource write SetWorkbookSource;
{ inherited properties }
property Align;
property Anchors;
property ArrowKeysTraverseList;
property AutoComplete;
property AutoCompleteText;
property AutoDropDown;
property AutoSelect;
property AutoSize; // Note: windows has a fixed height in some styles
property BidiMode;
property BorderSpacing;
property BorderStyle;
property CharCase;
property Color;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property DropDownCount;
property Enabled;
property Font;
// property ItemHeight;
property ItemIndex;
// property Items;
property ItemWidth;
property MaxLength;
property OnChange;
property OnChangeBounds;
property OnClick;
property OnCloseUp;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnDrawItem;
property OnEndDrag;
property OnDropDown;
property OnEditingDone;
property OnEnter;
property OnExit;
property OnGetItems;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMeasureItem;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnMouseWheel;
property OnMouseWheelDown;
property OnMouseWheelUp;
property OnSelect;
property OnStartDrag;
property OnUTF8KeyPress;
property ParentBidiMode;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
// property ReadOnly;
property ShowHint;
property Sorted;
// property Style;
property TabOrder;
property TabStop;
property Text;
property Visible;
end;
{ TsCellEdit }
@ -1918,6 +2018,163 @@ begin
end;
{------------------------------------------------------------------------------}
{ TsWorksheetIndicator }
{------------------------------------------------------------------------------}
constructor TsWorksheetIndicator.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FShowAllSheets := true;
end;
destructor TsWorksheetIndicator.Destroy;
begin
if FWorkbookSource <> nil then FWorkbookSource.RemoveListener(self);
inherited Destroy;
end;
procedure TsWorksheetIndicator.Change;
var
sheetName: String;
begin
if (FWorkbookSource <> nil) and (FLockCount = 0) then begin
sheetName := Items[ItemIndex];
FWorkbookSource.SelectWorksheet(Workbook.GetWorksheetByName(sheetName));
end;
inherited;
end;
procedure TsWorksheetIndicator.GetSheetList(AList: TStrings);
var
i: Integer;
sheet: TsWorksheet;
begin
AList.Clear;
if Workbook <> nil then
for i:=0 to Workbook.GetWorksheetCount-1 do
begin
sheet := Workbook.GetWorksheetByIndex(i);
if FShowAllSheets or not (soHidden in sheet.Options) then
AList.Add(sheet.Name);
end;
end;
function TsWorksheetIndicator.GetWorkbook: TsWorkbook;
begin
if FWorkbookSource <> nil then
Result := FWorkbookSource.Workbook
else
Result := nil;
end;
function TsWorksheetIndicator.GetWorksheet: TsWorksheet;
begin
if FWorkbookSource <> nil then
Result := FWorkbookSource.Worksheet
else
Result := nil;
end;
procedure TsWorksheetIndicator.ListenerNotification(
AChangedItems: TsNotificationItems; AData: Pointer = nil);
var
i: Integer;
sheet: TsWorksheet;
begin
Unused(AData);
// Workbook changed: new workbook, worksheet added/renamed/deleted
if (AChangedItems * [lniWorkbook, lniWorksheetAdd, lniWorksheetRemove, lniWorksheetRename] <> []) then
begin
inc(FLockCount); // avoid WorkbookSelect message when adding each tab
GetSheetList(Items);
if (lniWorkbook in AChangedItems) and (Workbook <> nil) then
begin
i := Items.IndexOf(Workbook.ActiveWorksheet.Name);
if i > -1 then ItemIndex := i else ItemIndex := 0
end else
if (lniWorksheetAdd in AChangedItems) then
ItemIndex := Items.Count-1
else
if (lniWorksheetRename in AChangedItems) then begin
sheet := TsWorksheet(AData);
ItemIndex := Items.IndexOf(sheet.Name);
end;
dec(FLockCount);
end;
// Worksheet selected
if (lniWorksheet in AChangedItems) and (Worksheet <> nil) then
begin
i := Items.IndexOf(Worksheet.Name);
if i <> ItemIndex then
ItemIndex := i;
end;
end;
procedure TsWorksheetIndicator.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (AComponent = FWorkbookSource) then
SetWorkbookSource(nil);
end;
procedure TsWorksheetIndicator.RemoveWorkbookSource;
begin
SetWorkbookSource(nil);
end;
procedure TsWorksheetIndicator.SetShowAllSheets(AValue: Boolean);
var
idx, i: Integer;
sheet: TsWorksheet;
begin
if AValue = FShowAllSheets then
exit;
FShowAllSheets := AValue;
idx := -1;
// Find ItemIndex of next visible sheet
if not FShowAllSheets and (Workbook <> nil) then begin
for i:=0 to Workbook.GetWorksheetCount-1 do begin
sheet := Workbook.GetWorksheetByIndex(i);
if sheet = Worksheet then
break;
if not (soHidden in sheet.Options) then inc(idx);
end;
i := idx;
while (sheet <> nil) and (soHidden in sheet.Options) do begin
inc(i);
sheet := Workbook.GetWorksheetByIndex(i);
end;
if sheet = nil then begin
i := idx;
while (sheet <> nil) and (soHidden in sheet.Options) do begin
dec(i);
sheet := Workbook.GetWorksheetByIndex(i);
end;
if sheet = nil then idx := -1;
end;
end;
Change;
if (not FShowAllSheets) then
ItemIndex := idx;
end;
procedure TsWorksheetIndicator.SetWorkbookSource(AValue: TsWorkbookSource);
begin
if AValue = FWorkbookSource then
exit;
if FWorkbookSource <> nil then
FWorkbookSource.RemoveListener(self);
FWorkbookSource := AValue;
if FWorkbookSource <> nil then
FWorkbookSource.AddListener(self);
ListenerNotification([lniWorkbook, lniWorksheet]);
end;
{------------------------------------------------------------------------------}
{ TsCellEdit }
{------------------------------------------------------------------------------}

View File

@ -359,7 +359,7 @@ type
procedure TestWriteRead_InsRow_FormulaOtherSheet_Outside3D;
procedure TestWriteRead_DelRow_FormulaOtherSheet_Outside3D;
procedure TestWriteRead_InsCol_FormulaOtherSheet_Inside3D;
// procedure TestWriteRead_InsCol_FormulaOtherSheet_Inside3D;
end;
implementation
@ -2098,7 +2098,7 @@ begin
actual := worksheet1.ReadAsNumber(3, 0);
CheckEquals(expected, actual, 'Test 7: Inserting row in sheet outside 3D range affects formula');
end;
(*
8: begin
// Insert a column in unaffected sheet, but within 3d range of 3d formula.
// In Excel, the 3D formula is unchanged, but the location of the
@ -2118,6 +2118,7 @@ begin
actual := worksheet1.ReadAsNumber(0, 4);
CheckEquals(expected, actual, 'Test 8: Wrong formula for case "Insert column in sheet with formula in 3D block');
end;
*)
end;
finally
workbook.Free;
@ -2912,10 +2913,12 @@ procedure TSpreadWriteRead_ColRow_Tests.TestWriteRead_DelRow_FormulaOtherSheet_O
begin
TestWriteRead_InsDelColRow_FormulaOtherSheet(7);
end;
(*
procedure TSpreadWriteRead_ColRow_Tests.TestWriteRead_InsCol_FormulaOtherSheet_Inside3D;
begin
TestWriteRead_InsDelColRow_FormulaOtherSheet(8);
end;
*)
initialization
RegisterTest(TSpreadWriteRead_ColRow_Tests);