implemented setting Anchors via AnchorEditor

git-svn-id: trunk@6648 -
This commit is contained in:
mattias 2005-01-20 19:00:33 +00:00
parent 87dfdda5ef
commit efeb185b05
3 changed files with 376 additions and 267 deletions

View File

@ -7,14 +7,15 @@ object AnchorDesigner: TAnchorDesigner
OnDestroy = AnchorDesignerDestroy OnDestroy = AnchorDesignerDestroy
OnShow = AnchorDesignerShow OnShow = AnchorDesignerShow
PixelsPerInch = 90 PixelsPerInch = 90
HorzScrollBar.Page = 521 HorzScrollBar.Page = 519
VertScrollBar.Page = 260 VertScrollBar.Page = 258
Left = 290 Left = 290
Height = 259 Height = 259
Top = 163 Top = 163
Width = 520 Width = 520
object BorderSpaceGroupBox: TGroupBox object BorderSpaceGroupBox: TGroupBox
Anchors = [akTop, akLeft, akBottom] Anchors = [akTop, akLeft, akBottom]
BorderSpacing.OnChange = nil
Caption = 'BorderSpaceGroupBox' Caption = 'BorderSpaceGroupBox'
ClientHeight = 87 ClientHeight = 87
ClientWidth = 168 ClientWidth = 168
@ -25,68 +26,63 @@ object AnchorDesigner: TAnchorDesigner
Top = 80 Top = 80
Width = 172 Width = 172
object LeftBorderSpaceSpinEdit: TSpinEdit object LeftBorderSpaceSpinEdit: TSpinEdit
BorderSpacing.OnChange = nil
Decimal_Places = 0 Decimal_Places = 0
MaxValue = 100 MaxValue = 100
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabStop = True TabStop = True
TabOrder = 0 TabOrder = 0
Decimal_Places = 0
MaxValue = 100
Height = 20 Height = 20
Top = 30 Top = 30
Width = 50 Width = 50
end end
object RightBorderSpaceSpinEdit: TSpinEdit object RightBorderSpaceSpinEdit: TSpinEdit
BorderSpacing.OnChange = nil
Decimal_Places = 0 Decimal_Places = 0
MaxValue = 100 MaxValue = 100
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabStop = True TabStop = True
TabOrder = 1 TabOrder = 1
Decimal_Places = 0
MaxValue = 100
Left = 118 Left = 118
Height = 20 Height = 20
Top = 30 Top = 30
Width = 50 Width = 50
end end
object TopBorderSpaceSpinEdit: TSpinEdit object TopBorderSpaceSpinEdit: TSpinEdit
BorderSpacing.OnChange = nil
Decimal_Places = 0 Decimal_Places = 0
MaxValue = 100 MaxValue = 100
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabStop = True TabStop = True
TabOrder = 2 TabOrder = 2
Decimal_Places = 0
MaxValue = 100
Left = 58 Left = 58
Height = 20 Height = 20
Width = 50 Width = 50
end end
object BottomBorderSpaceSpinEdit: TSpinEdit object BottomBorderSpaceSpinEdit: TSpinEdit
BorderSpacing.OnChange = nil
Decimal_Places = 0 Decimal_Places = 0
MaxValue = 100 MaxValue = 100
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabStop = True TabStop = True
TabOrder = 3 TabOrder = 3
Decimal_Places = 0
MaxValue = 100
Left = 58 Left = 58
Height = 20 Height = 20
Top = 57 Top = 57
Width = 50 Width = 50
end end
object AroundBorderSpaceSpinEdit: TSpinEdit object AroundBorderSpaceSpinEdit: TSpinEdit
BorderSpacing.OnChange = nil
Decimal_Places = 0 Decimal_Places = 0
MaxValue = 100 MaxValue = 100
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabStop = True TabStop = True
TabOrder = 4 TabOrder = 4
Decimal_Places = 0
MaxValue = 100
Left = 58 Left = 58
Height = 20 Height = 20
Top = 30 Top = 30
@ -95,6 +91,7 @@ object AnchorDesigner: TAnchorDesigner
end end
object TopGroupBox: TGroupBox object TopGroupBox: TGroupBox
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.OnChange = nil
Caption = 'TopGroupBox' Caption = 'TopGroupBox'
ClientHeight = 33 ClientHeight = 33
ClientWidth = 404 ClientWidth = 404
@ -105,6 +102,7 @@ object AnchorDesigner: TAnchorDesigner
Width = 408 Width = 408
object TopRefTopSpeedButton: TSpeedButton object TopRefTopSpeedButton: TSpeedButton
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.OnChange = nil
GroupIndex = 1 GroupIndex = 1
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -115,6 +113,7 @@ object AnchorDesigner: TAnchorDesigner
end end
object TopRefBottomSpeedButton: TSpeedButton object TopRefBottomSpeedButton: TSpeedButton
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.OnChange = nil
GroupIndex = 1 GroupIndex = 1
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -125,6 +124,7 @@ object AnchorDesigner: TAnchorDesigner
end end
object TopRefCenterSpeedButton: TSpeedButton object TopRefCenterSpeedButton: TSpeedButton
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.OnChange = nil
GroupIndex = 1 GroupIndex = 1
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -133,15 +133,29 @@ object AnchorDesigner: TAnchorDesigner
Height = 30 Height = 30
Width = 30 Width = 30
end end
object TopSiblingLabel: TLabel
AutoSize = True
BorderSpacing.OnChange = nil
Caption = 'Sibling'
ParentColor = True
Left = 94
Height = 12
Top = 4
Width = 38
end
object TopAnchoredCheckBox: TCheckBox object TopAnchoredCheckBox: TCheckBox
BorderSpacing.OnChange = nil
Caption = 'Enabled' Caption = 'Enabled'
OnChange = AnchorEnabledCheckBoxChange
TabOrder = 0 TabOrder = 0
UseOnChange = True
Left = 2 Left = 2
Height = 24 Height = 24
Width = 70 Width = 70
end end
object TopSiblingComboBox: TComboBox object TopSiblingComboBox: TComboBox
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.OnChange = nil
MaxLength = 0 MaxLength = 0
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
@ -151,17 +165,10 @@ object AnchorDesigner: TAnchorDesigner
Height = 25 Height = 25
Width = 129 Width = 129
end end
object TopSiblingLabel: TLabel
AutoSize = True
Caption = 'Sibling'
Left = 94
Height = 16
Top = 4
Width = 38
end
end end
object BottomGroupBox: TGroupBox object BottomGroupBox: TGroupBox
Anchors = [akLeft, akRight, akBottom] Anchors = [akLeft, akRight, akBottom]
BorderSpacing.OnChange = nil
Caption = 'BottomGroupBox' Caption = 'BottomGroupBox'
ClientHeight = 33 ClientHeight = 33
ClientWidth = 404 ClientWidth = 404
@ -173,6 +180,7 @@ object AnchorDesigner: TAnchorDesigner
Width = 408 Width = 408
object BottomRefTopSpeedButton: TSpeedButton object BottomRefTopSpeedButton: TSpeedButton
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.OnChange = nil
GroupIndex = 3 GroupIndex = 3
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -183,6 +191,7 @@ object AnchorDesigner: TAnchorDesigner
end end
object BottomRefBottomSpeedButton: TSpeedButton object BottomRefBottomSpeedButton: TSpeedButton
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.OnChange = nil
GroupIndex = 3 GroupIndex = 3
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -193,6 +202,7 @@ object AnchorDesigner: TAnchorDesigner
end end
object BottomRefCenterSpeedButton: TSpeedButton object BottomRefCenterSpeedButton: TSpeedButton
Anchors = [akTop, akRight] Anchors = [akTop, akRight]
BorderSpacing.OnChange = nil
GroupIndex = 3 GroupIndex = 3
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -201,15 +211,29 @@ object AnchorDesigner: TAnchorDesigner
Height = 30 Height = 30
Width = 30 Width = 30
end end
object BottomSiblingLabel: TLabel
AutoSize = True
BorderSpacing.OnChange = nil
Caption = 'Sibling'
ParentColor = True
Left = 94
Height = 12
Top = 8
Width = 38
end
object BottomAnchoredCheckBox: TCheckBox object BottomAnchoredCheckBox: TCheckBox
BorderSpacing.OnChange = nil
Caption = 'Enabled' Caption = 'Enabled'
OnChange = AnchorEnabledCheckBoxChange
TabOrder = 0 TabOrder = 0
UseOnChange = True
Left = 2 Left = 2
Height = 24 Height = 24
Width = 70 Width = 70
end end
object BottomSiblingComboBox: TComboBox object BottomSiblingComboBox: TComboBox
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.OnChange = nil
MaxLength = 0 MaxLength = 0
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
@ -219,17 +243,10 @@ object AnchorDesigner: TAnchorDesigner
Height = 25 Height = 25
Width = 129 Width = 129
end end
object BottomSiblingLabel: TLabel
AutoSize = True
Caption = 'Sibling'
Left = 94
Height = 16
Top = 8
Width = 38
end
end end
object RightGroupBox: TGroupBox object RightGroupBox: TGroupBox
Anchors = [akTop, akLeft, akBottom] Anchors = [akTop, akLeft, akBottom]
BorderSpacing.OnChange = nil
Caption = 'RightGroupBox' Caption = 'RightGroupBox'
ClientHeight = 112 ClientHeight = 112
ClientWidth = 146 ClientWidth = 146
@ -240,6 +257,7 @@ object AnchorDesigner: TAnchorDesigner
Top = 64 Top = 64
Width = 150 Width = 150
object RightRefLeftSpeedButton: TSpeedButton object RightRefLeftSpeedButton: TSpeedButton
BorderSpacing.OnChange = nil
GroupIndex = 4 GroupIndex = 4
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -250,6 +268,7 @@ object AnchorDesigner: TAnchorDesigner
Width = 30 Width = 30
end end
object RightRefRightSpeedButton: TSpeedButton object RightRefRightSpeedButton: TSpeedButton
BorderSpacing.OnChange = nil
GroupIndex = 4 GroupIndex = 4
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -260,6 +279,7 @@ object AnchorDesigner: TAnchorDesigner
Width = 30 Width = 30
end end
object RightRefCenterSpeedButton: TSpeedButton object RightRefCenterSpeedButton: TSpeedButton
BorderSpacing.OnChange = nil
GroupIndex = 4 GroupIndex = 4
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -269,27 +289,32 @@ object AnchorDesigner: TAnchorDesigner
Top = 81 Top = 81
Width = 30 Width = 30
end end
object RightSiblingLabel: TLabel
AutoSize = True
BorderSpacing.OnChange = nil
Caption = 'Sibling'
ParentColor = True
Left = 2
Height = 12
Top = 28
Width = 38
end
object RightAnchoredCheckBox: TCheckBox object RightAnchoredCheckBox: TCheckBox
BorderSpacing.OnChange = nil
Caption = 'Enabled' Caption = 'Enabled'
OnChange = AnchorEnabledCheckBoxChange
TabOrder = 0 TabOrder = 0
UseOnChange = True
Left = 2 Left = 2
Height = 24 Height = 24
Width = 70 Width = 70
end end
object RightSiblingLabel: TLabel
AutoSize = True
Caption = 'Sibling'
Left = 2
Height = 16
Top = 28
Width = 38
end
object RightSiblingComboBox: TComboBox object RightSiblingComboBox: TComboBox
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.OnChange = nil
MaxLength = 0 MaxLength = 0
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabOrder = 2
Text = 'RightSiblingComboBox' Text = 'RightSiblingComboBox'
Left = 5 Left = 5
Height = 25 Height = 25
@ -299,6 +324,7 @@ object AnchorDesigner: TAnchorDesigner
end end
object LeftGroupBox: TGroupBox object LeftGroupBox: TGroupBox
Anchors = [akTop, akLeft, akBottom] Anchors = [akTop, akLeft, akBottom]
BorderSpacing.OnChange = nil
Caption = 'LeftGroupBox' Caption = 'LeftGroupBox'
ClientHeight = 112 ClientHeight = 112
ClientWidth = 146 ClientWidth = 146
@ -309,6 +335,7 @@ object AnchorDesigner: TAnchorDesigner
Top = 64 Top = 64
Width = 150 Width = 150
object LeftRefLeftSpeedButton: TSpeedButton object LeftRefLeftSpeedButton: TSpeedButton
BorderSpacing.OnChange = nil
GroupIndex = 2 GroupIndex = 2
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -319,6 +346,7 @@ object AnchorDesigner: TAnchorDesigner
Width = 30 Width = 30
end end
object LeftRefRightSpeedButton: TSpeedButton object LeftRefRightSpeedButton: TSpeedButton
BorderSpacing.OnChange = nil
GroupIndex = 2 GroupIndex = 2
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -329,6 +357,7 @@ object AnchorDesigner: TAnchorDesigner
Width = 30 Width = 30
end end
object LeftRefCenterSpeedButton: TSpeedButton object LeftRefCenterSpeedButton: TSpeedButton
BorderSpacing.OnChange = nil
GroupIndex = 2 GroupIndex = 2
NumGlyphs = 0 NumGlyphs = 0
ShowHint = True ShowHint = True
@ -338,27 +367,32 @@ object AnchorDesigner: TAnchorDesigner
Top = 81 Top = 81
Width = 30 Width = 30
end end
object LeftSiblingLabel: TLabel
AutoSize = True
BorderSpacing.OnChange = nil
Caption = 'Sibling'
ParentColor = True
Left = 2
Height = 12
Top = 28
Width = 38
end
object LeftAnchoredCheckBox: TCheckBox object LeftAnchoredCheckBox: TCheckBox
BorderSpacing.OnChange = nil
Caption = 'Enabled' Caption = 'Enabled'
OnChange = AnchorEnabledCheckBoxChange
TabOrder = 0 TabOrder = 0
UseOnChange = True
Left = 2 Left = 2
Height = 24 Height = 24
Width = 70 Width = 70
end end
object LeftSiblingLabel: TLabel
AutoSize = True
Caption = 'Sibling'
Left = 2
Height = 16
Top = 28
Width = 38
end
object LeftSiblingComboBox: TComboBox object LeftSiblingComboBox: TComboBox
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
BorderSpacing.OnChange = nil
MaxLength = 0 MaxLength = 0
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabOrder = 2
Text = 'LeftSiblingComboBox' Text = 'LeftSiblingComboBox'
Left = 5 Left = 5
Height = 25 Height = 25

View File

@ -5,97 +5,110 @@ LazarusResources.Add('TAnchorDesigner','FORMDATA',[
+#12'ClientHeight'#3#3#1#11'ClientWidth'#3#8#2#7'OnClose'#7#19'AnchorDesigner' +#12'ClientHeight'#3#3#1#11'ClientWidth'#3#8#2#7'OnClose'#7#19'AnchorDesigner'
+'Close'#8'OnCreate'#7#20'AnchorDesignerCreate'#9'OnDestroy'#7#21'AnchorDesig' +'Close'#8'OnCreate'#7#20'AnchorDesignerCreate'#9'OnDestroy'#7#21'AnchorDesig'
+'nerDestroy'#6'OnShow'#7#18'AnchorDesignerShow'#13'PixelsPerInch'#2'Z'#18'Ho' +'nerDestroy'#6'OnShow'#7#18'AnchorDesignerShow'#13'PixelsPerInch'#2'Z'#18'Ho'
+'rzScrollBar.Page'#3#9#2#18'VertScrollBar.Page'#3#4#1#4'Left'#3'"'#1#6'Heigh' +'rzScrollBar.Page'#3#7#2#18'VertScrollBar.Page'#3#2#1#4'Left'#3'"'#1#6'Heigh'
+'t'#3#3#1#3'Top'#3#163#0#5'Width'#3#8#2#0#9'TGroupBox'#19'BorderSpaceGroupBo' +'t'#3#3#1#3'Top'#3#163#0#5'Width'#3#8#2#0#9'TGroupBox'#19'BorderSpaceGroupBo'
+'x'#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0#7'Caption'#6#19'BorderSpa' +'x'#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0#22'BorderSpacing.OnChange'
+'ceGroupBox'#12'ClientHeight'#2'W'#11'ClientWidth'#3#168#0#11'ParentColor'#9 +#13#7'Caption'#6#19'BorderSpaceGroupBox'#12'ClientHeight'#2'W'#11'ClientWidt'
+#8'TabOrder'#2#0#4'Left'#3#172#0#6'Height'#2'h'#3'Top'#2'P'#5'Width'#3#172#0 +'h'#3#168#0#11'ParentColor'#9#8'TabOrder'#2#0#4'Left'#3#172#0#6'Height'#2'h'
+#0#9'TSpinEdit'#23'LeftBorderSpaceSpinEdit'#14'Decimal_Places'#2#0#8'MaxValu' +#3'Top'#2'P'#5'Width'#3#172#0#0#9'TSpinEdit'#23'LeftBorderSpaceSpinEdit'#22
+'e'#5#0#0#0#0#0#0#0#200#5'@'#14'ParentShowHint'#8#8'ShowHint'#9#7'TabStop'#9 +'BorderSpacing.OnChange'#13#14'Decimal_Places'#2#0#8'MaxValue'#5#0#0#0#0#0#0
+#8'TabOrder'#2#0#14'Decimal_Places'#2#0#8'MaxValue'#5#0#0#0#0#0#0#0#200#5'@' +#0#200#5'@'#14'ParentShowHint'#8#8'ShowHint'#9#7'TabStop'#9#8'TabOrder'#2#0#6
+#6'Height'#2#20#3'Top'#2#30#5'Width'#2'2'#0#0#9'TSpinEdit'#24'RightBorderSpa' +'Height'#2#20#3'Top'#2#30#5'Width'#2'2'#0#0#9'TSpinEdit'#24'RightBorderSpace'
+'ceSpinEdit'#14'Decimal_Places'#2#0#8'MaxValue'#5#0#0#0#0#0#0#0#200#5'@'#14 +'SpinEdit'#22'BorderSpacing.OnChange'#13#14'Decimal_Places'#2#0#8'MaxValue'#5
+'ParentShowHint'#8#8'ShowHint'#9#7'TabStop'#9#8'TabOrder'#2#1#14'Decimal_Pla'
+'ces'#2#0#8'MaxValue'#5#0#0#0#0#0#0#0#200#5'@'#4'Left'#2'v'#6'Height'#2#20#3
+'Top'#2#30#5'Width'#2'2'#0#0#9'TSpinEdit'#22'TopBorderSpaceSpinEdit'#14'Deci'
+'mal_Places'#2#0#8'MaxValue'#5#0#0#0#0#0#0#0#200#5'@'#14'ParentShowHint'#8#8
+'ShowHint'#9#7'TabStop'#9#8'TabOrder'#2#2#14'Decimal_Places'#2#0#8'MaxValue'
+#5#0#0#0#0#0#0#0#200#5'@'#4'Left'#2':'#6'Height'#2#20#5'Width'#2'2'#0#0#9'TS'
+'pinEdit'#25'BottomBorderSpaceSpinEdit'#14'Decimal_Places'#2#0#8'MaxValue'#5
+#0#0#0#0#0#0#0#200#5'@'#14'ParentShowHint'#8#8'ShowHint'#9#7'TabStop'#9#8'Ta' +#0#0#0#0#0#0#0#200#5'@'#14'ParentShowHint'#8#8'ShowHint'#9#7'TabStop'#9#8'Ta'
+'bOrder'#2#3#14'Decimal_Places'#2#0#8'MaxValue'#5#0#0#0#0#0#0#0#200#5'@'#4'L' +'bOrder'#2#1#4'Left'#2'v'#6'Height'#2#20#3'Top'#2#30#5'Width'#2'2'#0#0#9'TSp'
+'eft'#2':'#6'Height'#2#20#3'Top'#2'9'#5'Width'#2'2'#0#0#9'TSpinEdit'#25'Arou' +'inEdit'#22'TopBorderSpaceSpinEdit'#22'BorderSpacing.OnChange'#13#14'Decimal'
+'ndBorderSpaceSpinEdit'#14'Decimal_Places'#2#0#8'MaxValue'#5#0#0#0#0#0#0#0 +'_Places'#2#0#8'MaxValue'#5#0#0#0#0#0#0#0#200#5'@'#14'ParentShowHint'#8#8'Sh'
+#200#5'@'#14'ParentShowHint'#8#8'ShowHint'#9#7'TabStop'#9#8'TabOrder'#2#4#14 +'owHint'#9#7'TabStop'#9#8'TabOrder'#2#2#4'Left'#2':'#6'Height'#2#20#5'Width'
+'Decimal_Places'#2#0#8'MaxValue'#5#0#0#0#0#0#0#0#200#5'@'#4'Left'#2':'#6'Hei' +#2'2'#0#0#9'TSpinEdit'#25'BottomBorderSpaceSpinEdit'#22'BorderSpacing.OnChan'
+'ght'#2#20#3'Top'#2#30#5'Width'#2'2'#0#0#0#9'TGroupBox'#11'TopGroupBox'#7'An' +'ge'#13#14'Decimal_Places'#2#0#8'MaxValue'#5#0#0#0#0#0#0#0#200#5'@'#14'Paren'
+'chors'#11#5'akTop'#6'akLeft'#7'akRight'#0#7'Caption'#6#11'TopGroupBox'#12'C' +'tShowHint'#8#8'ShowHint'#9#7'TabStop'#9#8'TabOrder'#2#3#4'Left'#2':'#6'Heig'
+'lientHeight'#2'!'#11'ClientWidth'#3#148#1#11'ParentColor'#9#8'TabOrder'#2#1 +'ht'#2#20#3'Top'#2'9'#5'Width'#2'2'#0#0#9'TSpinEdit'#25'AroundBorderSpaceSpi'
+#4'Left'#2'@'#6'Height'#2'2'#5'Width'#3#152#1#0#12'TSpeedButton'#20'TopRefTo' +'nEdit'#22'BorderSpacing.OnChange'#13#14'Decimal_Places'#2#0#8'MaxValue'#5#0
+'pSpeedButton'#7'Anchors'#11#5'akTop'#7'akRight'#0#10'GroupIndex'#2#1#9'NumG' +#0#0#0#0#0#0#200#5'@'#14'ParentShowHint'#8#8'ShowHint'#9#7'TabStop'#9#8'TabO'
+'lyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#3'('#1#6'Height'#2#30 +'rder'#2#4#4'Left'#2':'#6'Height'#2#20#3'Top'#2#30#5'Width'#2'2'#0#0#0#9'TGr'
+#5'Width'#2#30#0#0#12'TSpeedButton'#23'TopRefBottomSpeedButton'#7'Anchors'#11 +'oupBox'#11'TopGroupBox'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#22'Bo'
+#5'akTop'#7'akRight'#0#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#8'ShowHint'#9#14 +'rderSpacing.OnChange'#13#7'Caption'#6#11'TopGroupBox'#12'ClientHeight'#2'!'
+'ParentShowHint'#8#4'Left'#3'K'#1#6'Height'#2#30#5'Width'#2#30#0#0#12'TSpeed' +#11'ClientWidth'#3#148#1#11'ParentColor'#9#8'TabOrder'#2#1#4'Left'#2'@'#6'He'
+'Button'#23'TopRefCenterSpeedButton'#7'Anchors'#11#5'akTop'#7'akRight'#0#10 +'ight'#2'2'#5'Width'#3#152#1#0#12'TSpeedButton'#20'TopRefTopSpeedButton'#7'A'
+'GroupIndex'#2#1#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left' +'nchors'#11#5'akTop'#7'akRight'#0#22'BorderSpacing.OnChange'#13#10'GroupInde'
+#3'n'#1#6'Height'#2#30#5'Width'#2#30#0#0#9'TCheckBox'#19'TopAnchoredCheckBox' +'x'#2#1#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#3'('#1#6
+#7'Caption'#6#7'Enabled'#8'TabOrder'#2#0#4'Left'#2#2#6'Height'#2#24#5'Width' +'Height'#2#30#5'Width'#2#30#0#0#12'TSpeedButton'#23'TopRefBottomSpeedButton'
+#2'F'#0#0#9'TComboBox'#18'TopSiblingComboBox'#7'Anchors'#11#5'akTop'#6'akLef' +#7'Anchors'#11#5'akTop'#7'akRight'#0#22'BorderSpacing.OnChange'#13#10'GroupI'
+'t'#7'akRight'#0#9'MaxLength'#2#0#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOr' +'ndex'#2#1#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#3'K'#1
+'der'#2#1#4'Text'#6#18'TopSiblingComboBox'#4'Left'#3#158#0#6'Height'#2#25#5 +#6'Height'#2#30#5'Width'#2#30#0#0#12'TSpeedButton'#23'TopRefCenterSpeedButto'
+'Width'#3#129#0#0#0#6'TLabel'#15'TopSiblingLabel'#8'AutoSize'#9#7'Caption'#6 +'n'#7'Anchors'#11#5'akTop'#7'akRight'#0#22'BorderSpacing.OnChange'#13#10'Gro'
+#7'Sibling'#4'Left'#2'^'#6'Height'#2#16#3'Top'#2#4#5'Width'#2'&'#0#0#0#9'TGr' +'upIndex'#2#1#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#3
+'oupBox'#14'BottomGroupBox'#7'Anchors'#11#6'akLeft'#7'akRight'#8'akBottom'#0 +'n'#1#6'Height'#2#30#5'Width'#2#30#0#0#6'TLabel'#15'TopSiblingLabel'#8'AutoS'
+#7'Caption'#6#14'BottomGroupBox'#12'ClientHeight'#2'!'#11'ClientWidth'#3#148 +'ize'#9#22'BorderSpacing.OnChange'#13#7'Caption'#6#7'Sibling'#11'ParentColor'
+#1#11'ParentColor'#9#8'TabOrder'#2#2#4'Left'#2'@'#6'Height'#2'2'#3'Top'#3#200 +#9#4'Left'#2'^'#6'Height'#2#12#3'Top'#2#4#5'Width'#2'&'#0#0#9'TCheckBox'#19
+#0#5'Width'#3#152#1#0#12'TSpeedButton'#23'BottomRefTopSpeedButton'#7'Anchors' +'TopAnchoredCheckBox'#22'BorderSpacing.OnChange'#13#7'Caption'#6#7'Enabled'#8
+#11#5'akTop'#7'akRight'#0#10'GroupIndex'#2#3#9'NumGlyphs'#2#0#8'ShowHint'#9 +'OnChange'#7#27'AnchorEnabledCheckBoxChange'#8'TabOrder'#2#0#11'UseOnChange'
+#14'ParentShowHint'#8#4'Left'#3'('#1#6'Height'#2#30#5'Width'#2#30#0#0#12'TSp' +#9#4'Left'#2#2#6'Height'#2#24#5'Width'#2'F'#0#0#9'TComboBox'#18'TopSiblingCo'
+'eedButton'#26'BottomRefBottomSpeedButton'#7'Anchors'#11#5'akTop'#7'akRight' +'mboBox'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#22'BorderSpacing.OnCh'
+#0#10'GroupIndex'#2#3#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4 +'ange'#13#9'MaxLength'#2#0#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#1
+'Left'#3'K'#1#6'Height'#2#30#5'Width'#2#30#0#0#12'TSpeedButton'#26'BottomRef' +#4'Text'#6#18'TopSiblingComboBox'#4'Left'#3#158#0#6'Height'#2#25#5'Width'#3
+'CenterSpeedButton'#7'Anchors'#11#5'akTop'#7'akRight'#0#10'GroupIndex'#2#3#9 +#129#0#0#0#0#9'TGroupBox'#14'BottomGroupBox'#7'Anchors'#11#6'akLeft'#7'akRig'
+'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#3'n'#1#6'Height'#2 +'ht'#8'akBottom'#0#22'BorderSpacing.OnChange'#13#7'Caption'#6#14'BottomGroup'
+#30#5'Width'#2#30#0#0#9'TCheckBox'#22'BottomAnchoredCheckBox'#7'Caption'#6#7 +'Box'#12'ClientHeight'#2'!'#11'ClientWidth'#3#148#1#11'ParentColor'#9#8'TabO'
+'Enabled'#8'TabOrder'#2#0#4'Left'#2#2#6'Height'#2#24#5'Width'#2'F'#0#0#9'TCo' +'rder'#2#2#4'Left'#2'@'#6'Height'#2'2'#3'Top'#3#200#0#5'Width'#3#152#1#0#12
+'mboBox'#21'BottomSiblingComboBox'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRigh' +'TSpeedButton'#23'BottomRefTopSpeedButton'#7'Anchors'#11#5'akTop'#7'akRight'
+'t'#0#9'MaxLength'#2#0#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#1#4 +#0#22'BorderSpacing.OnChange'#13#10'GroupIndex'#2#3#9'NumGlyphs'#2#0#8'ShowH'
+'Text'#6#21'BottomSiblingComboBox'#4'Left'#3#158#0#6'Height'#2#25#5'Width'#3 +'int'#9#14'ParentShowHint'#8#4'Left'#3'('#1#6'Height'#2#30#5'Width'#2#30#0#0
+#129#0#0#0#6'TLabel'#18'BottomSiblingLabel'#8'AutoSize'#9#7'Caption'#6#7'Sib' +#12'TSpeedButton'#26'BottomRefBottomSpeedButton'#7'Anchors'#11#5'akTop'#7'ak'
+'ling'#4'Left'#2'^'#6'Height'#2#16#3'Top'#2#8#5'Width'#2'&'#0#0#0#9'TGroupBo' +'Right'#0#22'BorderSpacing.OnChange'#13#10'GroupIndex'#2#3#9'NumGlyphs'#2#0#8
+'x'#13'RightGroupBox'#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0#7'Capti' +'ShowHint'#9#14'ParentShowHint'#8#4'Left'#3'K'#1#6'Height'#2#30#5'Width'#2#30
,'on'#6#13'RightGroupBox'#12'ClientHeight'#2'p'#11'ClientWidth'#3#146#0#11'Pa' +#0#0#12'TSpeedButton'#26'BottomRefCenterSpeedButton'#7'Anchors'#11#5'akTop'#7
+'rentColor'#9#8'TabOrder'#2#3#4'Left'#3'l'#1#6'Height'#3#129#0#3'Top'#2'@'#5 +'akRight'#0#22'BorderSpacing.OnChange'#13#10'GroupIndex'#2#3#9'NumGlyphs'#2#0
+'Width'#3#150#0#0#12'TSpeedButton'#23'RightRefLeftSpeedButton'#10'GroupIndex' +#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#3'n'#1#6'Height'#2#30#5'Width'#2
+#2#4#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#2#5#6'Heigh' +#30#0#0#6'TLabel'#18'BottomSiblingLabel'#8'AutoSize'#9#22'BorderSpacing.OnCh'
+'t'#2#30#3'Top'#2'Q'#5'Width'#2#30#0#0#12'TSpeedButton'#24'RightRefRightSpee' +'ange'#13#7'Caption'#6#7'Sibling'#11'ParentColor'#9#4'Left'#2'^'#6'Height'#2
+'dButton'#10'GroupIndex'#2#4#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHin' +#12#3'Top'#2#8#5'Width'#2'&'#0#0#9'TCheckBox'#22'BottomAnchoredCheckBox'#22
+'t'#8#4'Left'#2'('#6'Height'#2#30#3'Top'#2'Q'#5'Width'#2#30#0#0#12'TSpeedBut' +'BorderSpacing.OnChange'#13#7'Caption'#6#7'Enabled'#8'OnChange'#7#27'AnchorE'
+'ton'#25'RightRefCenterSpeedButton'#10'GroupIndex'#2#4#9'NumGlyphs'#2#0#8'Sh' ,'nabledCheckBoxChange'#8'TabOrder'#2#0#11'UseOnChange'#9#4'Left'#2#2#6'Heigh'
+'owHint'#9#14'ParentShowHint'#8#4'Left'#2'K'#6'Height'#2#30#3'Top'#2'Q'#5'Wi' +'t'#2#24#5'Width'#2'F'#0#0#9'TComboBox'#21'BottomSiblingComboBox'#7'Anchors'
+'dth'#2#30#0#0#9'TCheckBox'#21'RightAnchoredCheckBox'#7'Caption'#6#7'Enabled' +#11#5'akTop'#6'akLeft'#7'akRight'#0#22'BorderSpacing.OnChange'#13#9'MaxLengt'
+#8'TabOrder'#2#0#4'Left'#2#2#6'Height'#2#24#5'Width'#2'F'#0#0#6'TLabel'#17'R' +'h'#2#0#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#1#4'Text'#6#21'Bott'
+'ightSiblingLabel'#8'AutoSize'#9#7'Caption'#6#7'Sibling'#4'Left'#2#2#6'Heigh' +'omSiblingComboBox'#4'Left'#3#158#0#6'Height'#2#25#5'Width'#3#129#0#0#0#0#9
+'t'#2#16#3'Top'#2#28#5'Width'#2'&'#0#0#9'TComboBox'#20'RightSiblingComboBox' +'TGroupBox'#13'RightGroupBox'#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0
+#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#9'MaxLength'#2#0#14'ParentSho' +#22'BorderSpacing.OnChange'#13#7'Caption'#6#13'RightGroupBox'#12'ClientHeigh'
+'wHint'#8#8'ShowHint'#9#8'TabOrder'#2#2#4'Text'#6#20'RightSiblingComboBox'#4 +'t'#2'p'#11'ClientWidth'#3#146#0#11'ParentColor'#9#8'TabOrder'#2#3#4'Left'#3
+'Left'#2#5#6'Height'#2#25#3'Top'#2'1'#5'Width'#3#135#0#0#0#0#9'TGroupBox'#12 +'l'#1#6'Height'#3#129#0#3'Top'#2'@'#5'Width'#3#150#0#0#12'TSpeedButton'#23'R'
+'LeftGroupBox'#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0#7'Caption'#6#12 +'ightRefLeftSpeedButton'#22'BorderSpacing.OnChange'#13#10'GroupIndex'#2#4#9
+'LeftGroupBox'#12'ClientHeight'#2'p'#11'ClientWidth'#3#146#0#11'ParentColor' +'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#2#5#6'Height'#2#30
+#9#8'TabOrder'#2#4#4'Left'#2#8#6'Height'#3#129#0#3'Top'#2'@'#5'Width'#3#150#0 +#3'Top'#2'Q'#5'Width'#2#30#0#0#12'TSpeedButton'#24'RightRefRightSpeedButton'
+#0#12'TSpeedButton'#22'LeftRefLeftSpeedButton'#10'GroupIndex'#2#2#9'NumGlyph' +#22'BorderSpacing.OnChange'#13#10'GroupIndex'#2#4#9'NumGlyphs'#2#0#8'ShowHin'
+'s'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#2#5#6'Height'#2#30#3'Top' +'t'#9#14'ParentShowHint'#8#4'Left'#2'('#6'Height'#2#30#3'Top'#2'Q'#5'Width'#2
+#2'Q'#5'Width'#2#30#0#0#12'TSpeedButton'#23'LeftRefRightSpeedButton'#10'Grou' +#30#0#0#12'TSpeedButton'#25'RightRefCenterSpeedButton'#22'BorderSpacing.OnCh'
+'pIndex'#2#2#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#2'(' +'ange'#13#10'GroupIndex'#2#4#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHin'
+#6'Height'#2#30#3'Top'#2'Q'#5'Width'#2#30#0#0#12'TSpeedButton'#24'LeftRefCen' +'t'#8#4'Left'#2'K'#6'Height'#2#30#3'Top'#2'Q'#5'Width'#2#30#0#0#6'TLabel'#17
+'terSpeedButton'#10'GroupIndex'#2#2#9'NumGlyphs'#2#0#8'ShowHint'#9#14'Parent' +'RightSiblingLabel'#8'AutoSize'#9#22'BorderSpacing.OnChange'#13#7'Caption'#6
+'ShowHint'#8#4'Left'#2'K'#6'Height'#2#30#3'Top'#2'Q'#5'Width'#2#30#0#0#9'TCh' +#7'Sibling'#11'ParentColor'#9#4'Left'#2#2#6'Height'#2#12#3'Top'#2#28#5'Width'
+'eckBox'#20'LeftAnchoredCheckBox'#7'Caption'#6#7'Enabled'#8'TabOrder'#2#0#4 +#2'&'#0#0#9'TCheckBox'#21'RightAnchoredCheckBox'#22'BorderSpacing.OnChange'
+'Left'#2#2#6'Height'#2#24#5'Width'#2'F'#0#0#6'TLabel'#16'LeftSiblingLabel'#8 +#13#7'Caption'#6#7'Enabled'#8'OnChange'#7#27'AnchorEnabledCheckBoxChange'#8
+'AutoSize'#9#7'Caption'#6#7'Sibling'#4'Left'#2#2#6'Height'#2#16#3'Top'#2#28#5 +'TabOrder'#2#0#11'UseOnChange'#9#4'Left'#2#2#6'Height'#2#24#5'Width'#2'F'#0#0
+'Width'#2'&'#0#0#9'TComboBox'#19'LeftSiblingComboBox'#7'Anchors'#11#5'akTop' +#9'TComboBox'#20'RightSiblingComboBox'#7'Anchors'#11#5'akTop'#6'akLeft'#7'ak'
+#6'akLeft'#7'akRight'#0#9'MaxLength'#2#0#14'ParentShowHint'#8#8'ShowHint'#9#8 +'Right'#0#22'BorderSpacing.OnChange'#13#9'MaxLength'#2#0#14'ParentShowHint'#8
+'TabOrder'#2#2#4'Text'#6#19'LeftSiblingComboBox'#4'Left'#2#5#6'Height'#2#25#3 +#8'ShowHint'#9#4'Text'#6#20'RightSiblingComboBox'#4'Left'#2#5#6'Height'#2#25
+'Top'#2'1'#5'Width'#3#134#0#0#0#0#0 +#3'Top'#2'1'#5'Width'#3#135#0#0#0#0#9'TGroupBox'#12'LeftGroupBox'#7'Anchors'
+#11#5'akTop'#6'akLeft'#8'akBottom'#0#22'BorderSpacing.OnChange'#13#7'Caption'
+#6#12'LeftGroupBox'#12'ClientHeight'#2'p'#11'ClientWidth'#3#146#0#11'ParentC'
+'olor'#9#8'TabOrder'#2#4#4'Left'#2#8#6'Height'#3#129#0#3'Top'#2'@'#5'Width'#3
+#150#0#0#12'TSpeedButton'#22'LeftRefLeftSpeedButton'#22'BorderSpacing.OnChan'
+'ge'#13#10'GroupIndex'#2#2#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'
+#8#4'Left'#2#5#6'Height'#2#30#3'Top'#2'Q'#5'Width'#2#30#0#0#12'TSpeedButton'
+#23'LeftRefRightSpeedButton'#22'BorderSpacing.OnChange'#13#10'GroupIndex'#2#2
+#9'NumGlyphs'#2#0#8'ShowHint'#9#14'ParentShowHint'#8#4'Left'#2'('#6'Height'#2
+#30#3'Top'#2'Q'#5'Width'#2#30#0#0#12'TSpeedButton'#24'LeftRefCenterSpeedButt'
+'on'#22'BorderSpacing.OnChange'#13#10'GroupIndex'#2#2#9'NumGlyphs'#2#0#8'Sho'
+'wHint'#9#14'ParentShowHint'#8#4'Left'#2'K'#6'Height'#2#30#3'Top'#2'Q'#5'Wid'
+'th'#2#30#0#0#6'TLabel'#16'LeftSiblingLabel'#8'AutoSize'#9#22'BorderSpacing.'
+'OnChange'#13#7'Caption'#6#7'Sibling'#11'ParentColor'#9#4'Left'#2#2#6'Height'
+#2#12#3'Top'#2#28#5'Width'#2'&'#0#0#9'TCheckBox'#20'LeftAnchoredCheckBox'#22
+'BorderSpacing.OnChange'#13#7'Caption'#6#7'Enabled'#8'OnChange'#7#27'AnchorE'
+'nabledCheckBoxChange'#8'TabOrder'#2#0#11'UseOnChange'#9#4'Left'#2#2#6'Heigh'
+'t'#2#24#5'Width'#2'F'#0#0#9'TComboBox'#19'LeftSiblingComboBox'#7'Anchors'#11
+#5'akTop'#6'akLeft'#7'akRight'#0#22'BorderSpacing.OnChange'#13#9'MaxLength'#2
+#0#14'ParentShowHint'#8#8'ShowHint'#9#4'Text'#6#19'LeftSiblingComboBox'#4'Le'
+'ft'#2#5#6'Height'#2#25#3'Top'#2'1'#5'Width'#3#134#0#0#0#0#0
]); ]);

View File

@ -136,6 +136,7 @@ type
procedure AnchorDesignerCreate(Sender: TObject); procedure AnchorDesignerCreate(Sender: TObject);
procedure AnchorDesignerDestroy(Sender: TObject); procedure AnchorDesignerDestroy(Sender: TObject);
procedure AnchorDesignerShow(Sender: TObject); procedure AnchorDesignerShow(Sender: TObject);
procedure AnchorEnabledCheckBoxChange(Sender: TObject);
private private
FSelection: TPersistentSelectionList; FSelection: TPersistentSelectionList;
protected protected
@ -144,11 +145,13 @@ type
function AnchorDesignerNoSiblingText: string; function AnchorDesignerNoSiblingText: string;
public public
SrcTypeImageList: TImageList; SrcTypeImageList: TImageList;
Values: TAnchorDesignerValues;
procedure Refresh(Force: boolean); procedure Refresh(Force: boolean);
procedure OnRefreshPropertyValues; procedure OnRefreshPropertyValues;
function GetSelectedControls: TList;
class function ControlToStr(AControl: TControl): string; class function ControlToStr(AControl: TControl): string;
procedure CollectValues(const ASelection: TPersistentSelectionList; procedure CollectValues(const ASelection: TList;
var Values: TAnchorDesignerValues; var TheValues: TAnchorDesignerValues;
var SelectedControlCount: integer); var SelectedControlCount: integer);
procedure OnSetSelection(const ASelection: TPersistentSelectionList); procedure OnSetSelection(const ASelection: TPersistentSelectionList);
property Selection: TPersistentSelectionList read FSelection; property Selection: TPersistentSelectionList read FSelection;
@ -260,6 +263,7 @@ end;
procedure TAnchorDesigner.AnchorDesignerDestroy(Sender: TObject); procedure TAnchorDesigner.AnchorDesignerDestroy(Sender: TObject);
begin begin
FreeAndNil(Values);
GlobalDesignHook.RemoveAllHandlersForObject(Self); GlobalDesignHook.RemoveAllHandlersForObject(Self);
FreeAndNil(FSelection); FreeAndNil(FSelection);
end; end;
@ -269,6 +273,46 @@ begin
Refresh(true); Refresh(true);
end; end;
procedure TAnchorDesigner.AnchorEnabledCheckBoxChange(Sender: TObject);
var
Kind: TAnchorKind;
CurSide: TAnchorDesignerSideValues;
NewValue: Boolean;
SelectedControls: TList;
i: Integer;
CurControl: TControl;
begin
debugln('TAnchorDesigner.AnchorEnabledCheckBoxChange ',DbgSName(Sender),' ',dbgs(TCheckBox(Sender).Checked));
if Values=nil then exit;
if Sender=LeftAnchoredCheckBox then
Kind:=akLeft
else if Sender=RightAnchoredCheckBox then
Kind:=akRight
else if Sender=TopAnchoredCheckBox then
Kind:=akTop
else if Sender=BottomAnchoredCheckBox then
Kind:=akBottom
else
exit;
NewValue:=TCheckBox(Sender).Checked;
CurSide:=Values.Sides[Kind];
debugln('TAnchorDesigner.AnchorEnabledCheckBoxChange CurSide.AmbigiousEnabled=',dbgs(CurSide.AmbigiousEnabled),' CurSide.Enabled=',dbgs(CurSide.Enabled),' NewValue=',dbgs(NewValue));
if CurSide.AmbigiousEnabled or (CurSide.Enabled<>NewValue) then begin
debugln('TAnchorDesigner.AnchorEnabledCheckBoxChange ',DbgSName(Sender),' NewValue=',dbgs(NewValue));
// user changed an anchor
SelectedControls:=GetSelectedControls;
if SelectedControls=nil then exit;
for i:=0 to SelectedControls.Count-1 do begin
CurControl:=TControl(SelectedControls[i]);
if NewValue then
CurControl.Anchors:=CurControl.Anchors+[Kind]
else
CurControl.Anchors:=CurControl.Anchors-[Kind];
end;
GlobalDesignHook.RefreshPropertyValues;
end;
end;
procedure TAnchorDesigner.KeyUp(var Key: Word; Shift: TShiftState); procedure TAnchorDesigner.KeyUp(var Key: Word; Shift: TShiftState);
begin begin
inherited KeyUp(Key, Shift); inherited KeyUp(Key, Shift);
@ -282,13 +326,15 @@ var
CurControl: TControl; CurControl: TControl;
j: Integer; j: Integer;
Sibling: TControl; Sibling: TControl;
SelectedControls: TList;
begin begin
sl:=TStringList.Create; sl:=TStringList.Create;
sl.Add(AnchorDesignerNoSiblingText); sl.Add(AnchorDesignerNoSiblingText);
if FSelection<>nil then begin SelectedControls:=GetSelectedControls;
for i:=0 to FSelection.Count-1 do begin if SelectedControls<>nil then begin
if FSelection[i] is TControl then begin for i:=0 to SelectedControls.Count-1 do begin
CurControl:=TControl(FSelection[i]); if TObject(SelectedControls[i]) is TControl then begin
CurControl:=TControl(SelectedControls[i]);
if CurControl.Parent<>nil then begin if CurControl.Parent<>nil then begin
for j:=0 to CurControl.Parent.ControlCount-1 do begin for j:=0 to CurControl.Parent.ControlCount-1 do begin
Sibling:=CurControl.Parent.Controls[j]; Sibling:=CurControl.Parent.Controls[j];
@ -312,132 +358,128 @@ end;
procedure TAnchorDesigner.Refresh(Force: boolean); procedure TAnchorDesigner.Refresh(Force: boolean);
var var
SelectedControlCount: Integer; SelectedControlCount: Integer;
Values: TAnchorDesignerValues;
CurSide: TAnchorDesignerSideValues; CurSide: TAnchorDesignerSideValues;
Sibling: String; Sibling: String;
CurSelection: TList;
begin begin
debugln('TAnchorDesigner.Refresh A '); //debugln('TAnchorDesigner.Refresh A ');
if not Force then begin if not Force then begin
// check if uddate is needed // check if uddate is needed
if not Visible then exit; if not Visible then exit;
end; end;
Values:=nil; FreeAndNil(Values);
try CurSelection:=GetSelectedControls;
GlobalDesignHook.GetSelection(FSelection); CollectValues(CurSelection,Values,SelectedControlCount);
CollectValues(FSelection,Values,SelectedControlCount); //debugln('TAnchorDesigner.Refresh B ',dbgs(SelectedControlCount));
debugln('TAnchorDesigner.Refresh B ',dbgs(SelectedControlCount));
if (Values=nil) then begin if (Values=nil) then begin
Caption:='Anchor Editor - no control selected'; Caption:='Anchor Editor - no control selected';
BorderSpaceGroupBox.Enabled:=false; BorderSpaceGroupBox.Enabled:=false;
TopGroupBox.Enabled:=false; TopGroupBox.Enabled:=false;
LeftGroupBox.Enabled:=false; LeftGroupBox.Enabled:=false;
RightGroupBox.Enabled:=false; RightGroupBox.Enabled:=false;
BottomGroupBox.Enabled:=false; BottomGroupBox.Enabled:=false;
end else begin end else begin
Caption:='Anchors of selected controls'; Caption:='Anchors of selected controls';
// all // all
BorderSpaceGroupBox.Enabled:=true; BorderSpaceGroupBox.Enabled:=true;
if Values.AmbigiousBorderspaceAround then if Values.AmbigiousBorderspaceAround then
AroundBorderSpaceSpinEdit.Value:=-1 AroundBorderSpaceSpinEdit.Value:=-1
else else
AroundBorderSpaceSpinEdit.Value:=Values.BorderspaceAround; AroundBorderSpaceSpinEdit.Value:=Values.BorderspaceAround;
// Top // Top
TopGroupBox.Enabled:=true; TopGroupBox.Enabled:=true;
CurSide:=Values.Sides[akTop]; CurSide:=Values.Sides[akTop];
TopAnchoredCheckBox.AllowGrayed:=CurSide.AmbigiousEnabled; TopAnchoredCheckBox.AllowGrayed:=CurSide.AmbigiousEnabled;
if CurSide.AmbigiousEnabled then if CurSide.AmbigiousEnabled then
TopAnchoredCheckBox.State:=cbGrayed TopAnchoredCheckBox.State:=cbGrayed
else else
TopAnchoredCheckBox.Checked:=CurSide.Enabled; TopAnchoredCheckBox.Checked:=CurSide.Enabled;
if CurSide.AmbigiousBorderSpace then if CurSide.AmbigiousBorderSpace then
TopBorderSpaceSpinEdit.Value:=-1 TopBorderSpaceSpinEdit.Value:=-1
else else
TopBorderSpaceSpinEdit.Value:=CurSide.BorderSpace; TopBorderSpaceSpinEdit.Value:=CurSide.BorderSpace;
TopBorderSpaceSpinEdit.ValueEmpty:=CurSide.AmbigiousBorderSpace; TopBorderSpaceSpinEdit.ValueEmpty:=CurSide.AmbigiousBorderSpace;
Sibling:=CurSide.Sibling; Sibling:=CurSide.Sibling;
TopSiblingComboBox.Text:=Sibling; TopSiblingComboBox.Text:=Sibling;
FillComboBoxWithSiblings(TopSiblingComboBox); FillComboBoxWithSiblings(TopSiblingComboBox);
TopRefBottomSpeedButton.Enabled:=Sibling<>''; TopRefBottomSpeedButton.Enabled:=Sibling<>'';
TopRefBottomSpeedButton.Down:=(CurSide.Side=asrBottom); TopRefBottomSpeedButton.Down:=(CurSide.Side=asrBottom);
TopRefCenterSpeedButton.Enabled:=Sibling<>''; TopRefCenterSpeedButton.Enabled:=Sibling<>'';
TopRefCenterSpeedButton.Down:=(CurSide.Side=asrCenter); TopRefCenterSpeedButton.Down:=(CurSide.Side=asrCenter);
TopRefTopSpeedButton.Enabled:=Sibling<>''; TopRefTopSpeedButton.Enabled:=Sibling<>'';
TopRefTopSpeedButton.Down:=(CurSide.Side=asrTop); TopRefTopSpeedButton.Down:=(CurSide.Side=asrTop);
// Bottom // Bottom
BottomGroupBox.Enabled:=true; BottomGroupBox.Enabled:=true;
CurSide:=Values.Sides[akBottom]; CurSide:=Values.Sides[akBottom];
BottomAnchoredCheckBox.AllowGrayed:=CurSide.AmbigiousEnabled; BottomAnchoredCheckBox.AllowGrayed:=CurSide.AmbigiousEnabled;
if CurSide.AmbigiousEnabled then if CurSide.AmbigiousEnabled then
BottomAnchoredCheckBox.State:=cbGrayed BottomAnchoredCheckBox.State:=cbGrayed
else else
BottomAnchoredCheckBox.Checked:=CurSide.Enabled; BottomAnchoredCheckBox.Checked:=CurSide.Enabled;
if CurSide.AmbigiousBorderSpace then if CurSide.AmbigiousBorderSpace then
BottomBorderSpaceSpinEdit.Value:=-1 BottomBorderSpaceSpinEdit.Value:=-1
else else
BottomBorderSpaceSpinEdit.Value:=CurSide.BorderSpace; BottomBorderSpaceSpinEdit.Value:=CurSide.BorderSpace;
BottomBorderSpaceSpinEdit.ValueEmpty:=CurSide.AmbigiousBorderSpace; BottomBorderSpaceSpinEdit.ValueEmpty:=CurSide.AmbigiousBorderSpace;
Sibling:=CurSide.Sibling; Sibling:=CurSide.Sibling;
BottomSiblingComboBox.Text:=Sibling; BottomSiblingComboBox.Text:=Sibling;
FillComboBoxWithSiblings(BottomSiblingComboBox); FillComboBoxWithSiblings(BottomSiblingComboBox);
BottomRefBottomSpeedButton.Enabled:=Sibling<>''; BottomRefBottomSpeedButton.Enabled:=Sibling<>'';
BottomRefBottomSpeedButton.Down:=(CurSide.Side=asrBottom); BottomRefBottomSpeedButton.Down:=(CurSide.Side=asrBottom);
BottomRefCenterSpeedButton.Enabled:=Sibling<>''; BottomRefCenterSpeedButton.Enabled:=Sibling<>'';
BottomRefCenterSpeedButton.Down:=(CurSide.Side=asrCenter); BottomRefCenterSpeedButton.Down:=(CurSide.Side=asrCenter);
BottomRefTopSpeedButton.Enabled:=Sibling<>''; BottomRefTopSpeedButton.Enabled:=Sibling<>'';
BottomRefTopSpeedButton.Down:=(CurSide.Side=asrTop); BottomRefTopSpeedButton.Down:=(CurSide.Side=asrTop);
// Left // Left
LeftGroupBox.Enabled:=true; LeftGroupBox.Enabled:=true;
CurSide:=Values.Sides[akLeft]; CurSide:=Values.Sides[akLeft];
LeftAnchoredCheckBox.AllowGrayed:=CurSide.AmbigiousEnabled; LeftAnchoredCheckBox.AllowGrayed:=CurSide.AmbigiousEnabled;
if CurSide.AmbigiousEnabled then if CurSide.AmbigiousEnabled then
LeftAnchoredCheckBox.State:=cbGrayed LeftAnchoredCheckBox.State:=cbGrayed
else else
LeftAnchoredCheckBox.Checked:=CurSide.Enabled; LeftAnchoredCheckBox.Checked:=CurSide.Enabled;
if CurSide.AmbigiousBorderSpace then if CurSide.AmbigiousBorderSpace then
LeftBorderSpaceSpinEdit.Value:=-1 LeftBorderSpaceSpinEdit.Value:=-1
else else
LeftBorderSpaceSpinEdit.Value:=CurSide.BorderSpace; LeftBorderSpaceSpinEdit.Value:=CurSide.BorderSpace;
LeftBorderSpaceSpinEdit.ValueEmpty:=CurSide.AmbigiousBorderSpace; LeftBorderSpaceSpinEdit.ValueEmpty:=CurSide.AmbigiousBorderSpace;
Sibling:=CurSide.Sibling; Sibling:=CurSide.Sibling;
LeftSiblingComboBox.Text:=Sibling; LeftSiblingComboBox.Text:=Sibling;
FillComboBoxWithSiblings(LeftSiblingComboBox); FillComboBoxWithSiblings(LeftSiblingComboBox);
LeftRefRightSpeedButton.Enabled:=Sibling<>''; LeftRefRightSpeedButton.Enabled:=Sibling<>'';
LeftRefRightSpeedButton.Down:=(CurSide.Side=asrBottom); LeftRefRightSpeedButton.Down:=(CurSide.Side=asrBottom);
LeftRefCenterSpeedButton.Enabled:=Sibling<>''; LeftRefCenterSpeedButton.Enabled:=Sibling<>'';
LeftRefCenterSpeedButton.Down:=(CurSide.Side=asrCenter); LeftRefCenterSpeedButton.Down:=(CurSide.Side=asrCenter);
LeftRefLeftSpeedButton.Enabled:=Sibling<>''; LeftRefLeftSpeedButton.Enabled:=Sibling<>'';
LeftRefLeftSpeedButton.Down:=(CurSide.Side=asrTop); LeftRefLeftSpeedButton.Down:=(CurSide.Side=asrTop);
// Right // Right
RightGroupBox.Enabled:=true; RightGroupBox.Enabled:=true;
CurSide:=Values.Sides[akRight]; CurSide:=Values.Sides[akRight];
RightAnchoredCheckBox.AllowGrayed:=CurSide.AmbigiousEnabled; RightAnchoredCheckBox.AllowGrayed:=CurSide.AmbigiousEnabled;
if CurSide.AmbigiousEnabled then if CurSide.AmbigiousEnabled then
RightAnchoredCheckBox.State:=cbGrayed RightAnchoredCheckBox.State:=cbGrayed
else else
RightAnchoredCheckBox.Checked:=CurSide.Enabled; RightAnchoredCheckBox.Checked:=CurSide.Enabled;
if CurSide.AmbigiousBorderSpace then if CurSide.AmbigiousBorderSpace then
RightBorderSpaceSpinEdit.Value:=-1 RightBorderSpaceSpinEdit.Value:=-1
else else
RightBorderSpaceSpinEdit.Value:=CurSide.BorderSpace; RightBorderSpaceSpinEdit.Value:=CurSide.BorderSpace;
RightBorderSpaceSpinEdit.ValueEmpty:=CurSide.AmbigiousBorderSpace; RightBorderSpaceSpinEdit.ValueEmpty:=CurSide.AmbigiousBorderSpace;
Sibling:=CurSide.Sibling; Sibling:=CurSide.Sibling;
RightSiblingComboBox.Text:=Sibling; RightSiblingComboBox.Text:=Sibling;
FillComboBoxWithSiblings(RightSiblingComboBox); FillComboBoxWithSiblings(RightSiblingComboBox);
RightRefRightSpeedButton.Enabled:=Sibling<>''; RightRefRightSpeedButton.Enabled:=Sibling<>'';
RightRefRightSpeedButton.Down:=(CurSide.Side=asrBottom); RightRefRightSpeedButton.Down:=(CurSide.Side=asrBottom);
RightRefCenterSpeedButton.Enabled:=Sibling<>''; RightRefCenterSpeedButton.Enabled:=Sibling<>'';
RightRefCenterSpeedButton.Down:=(CurSide.Side=asrCenter); RightRefCenterSpeedButton.Down:=(CurSide.Side=asrCenter);
RightRefLeftSpeedButton.Enabled:=Sibling<>''; RightRefLeftSpeedButton.Enabled:=Sibling<>'';
RightRefLeftSpeedButton.Down:=(CurSide.Side=asrTop); RightRefLeftSpeedButton.Down:=(CurSide.Side=asrTop);
end;
finally
Values.Free;
end; end;
end; end;
@ -446,6 +488,26 @@ begin
Refresh(false); Refresh(false);
end; end;
function TAnchorDesigner.GetSelectedControls: TList;
var
CurPersistent: TPersistent;
AControl: TControl;
i: Integer;
begin
Result:=nil;
GlobalDesignHook.GetSelection(FSelection);
if FSelection=nil then exit;
// collect values of selected controls
for i:=0 to FSelection.Count-1 do begin
CurPersistent:=FSelection[i];
if CurPersistent is TControl then begin
AControl:=TControl(CurPersistent);
if Result=nil then Result:=TList.Create;
Result.Add(AControl);
end;
end;
end;
function TAnchorDesigner.ControlToStr(AControl: TControl): string; function TAnchorDesigner.ControlToStr(AControl: TControl): string;
begin begin
if AControl=nil then if AControl=nil then
@ -455,28 +517,28 @@ begin
end; end;
procedure TAnchorDesigner.CollectValues( procedure TAnchorDesigner.CollectValues(
const ASelection: TPersistentSelectionList; var Values: TAnchorDesignerValues; const ASelection: TList; var TheValues: TAnchorDesignerValues;
var SelectedControlCount: integer); var SelectedControlCount: integer);
var var
CurPersistent: TPersistent;
i: Integer; i: Integer;
AControl: TControl; AControl: TControl;
CurObject: TObject;
begin begin
Values:=nil; TheValues:=nil;
SelectedControlCount:=0; SelectedControlCount:=0;
debugln('TAnchorDesigner.CollectValues A '); //debugln('TAnchorDesigner.CollectValues A ');
if ASelection=nil then exit; if ASelection=nil then exit;
// collect values of selected controls // collect values of selected controls
for i:=0 to ASelection.Count-1 do begin for i:=0 to ASelection.Count-1 do begin
CurPersistent:=ASelection[i]; CurObject:=TObject(ASelection[i]);
debugln('TAnchorDesigner.CollectValues B ',dbgs(i),' ',DbgSName(CurPersistent)); //debugln('TAnchorDesigner.CollectValues B ',dbgs(i),' ',DbgSName(CurObject));
if CurPersistent is TControl then begin if CurObject is TControl then begin
AControl:=TControl(CurPersistent); AControl:=TControl(CurObject);
if SelectedControlCount=0 then begin if SelectedControlCount=0 then begin
Values:=TAnchorDesignerValues.Create; TheValues:=TAnchorDesignerValues.Create;
Values.SetValues(AControl); TheValues.SetValues(AControl);
end else begin end else begin
Values.MergeValues(AControl); TheValues.MergeValues(AControl);
end; end;
inc(SelectedControlCount); inc(SelectedControlCount);
end; end;