! Now only 1 Package for Both Components

! Working Styles on TGradTabControl

#1

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1110 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
eugene1
2010-01-03 06:42:20 +00:00
parent c93619e15b
commit f8cbbc00b8
12 changed files with 480 additions and 248 deletions

View File

@ -1,7 +1,7 @@
object Form1: TForm1
Left = 89
Left = 368
Height = 439
Top = 159
Top = 215
Width = 576
ActiveControl = TrackBar1
BorderIcons = [biSystemMenu, biMinimize]
@ -10,7 +10,7 @@ object Form1: TForm1
ClientHeight = 439
ClientWidth = 576
OnCreate = FormCreate
LCLVersion = '0.9.27'
LCLVersion = '0.9.29'
object Label1: TLabel
Left = 8
Height = 16
@ -291,7 +291,7 @@ object Form1: TForm1
end
object LabeledEdit1: TLabeledEdit
Left = 328
Height = 25
Height = 23
Top = 216
Width = 80
EditLabel.AnchorSideLeft.Control = LabeledEdit1

View File

@ -1,15 +1,15 @@
{ Das ist eine automatisch erzeugte Lazarus-Ressourcendatei }
LazarusResources.Add('TForm1','FORMDATA',[
'TPF0'#6'TForm1'#5'Form1'#4'Left'#2'Y'#6'Height'#3#183#1#3'Top'#3#159#0#5'Wid'
+'th'#3'@'#2#13'ActiveControl'#7#9'TrackBar1'#11'BorderIcons'#11#12'biSystemM'
+'enu'#10'biMinimize'#0#11'BorderStyle'#7#8'bsSingle'#7'Caption'#6#16'TGradBu'
+'tton-Demo'#12'ClientHeight'#3#183#1#11'ClientWidth'#3'@'#2#8'OnCreate'#7#10
+'FormCreate'#10'LCLVersion'#6#6'0.9.27'#0#6'TLabel'#6'Label1'#4'Left'#2#8#6
+'Height'#2#16#3'Top'#2'K'#5'Width'#2'G'#7'Caption'#6#11'NormalBlend'#11'Pare'
+'ntColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#8#6'Height'#2#16#3'Top'#3#131#0
+#5'Width'#2'8'#7'Caption'#6#9'OverBlend'#11'ParentColor'#8#0#0#6'TLabel'#6'L'
+'abel3'#4'Left'#2'X'#6'Height'#2#16#3'Top'#2'K'#5'Width'#2#1#11'ParentColor'
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'p'#1#6'Height'#3#183#1#3'Top'#3#215#0#5'W'
+'idth'#3'@'#2#13'ActiveControl'#7#9'TrackBar1'#11'BorderIcons'#11#12'biSyste'
+'mMenu'#10'biMinimize'#0#11'BorderStyle'#7#8'bsSingle'#7'Caption'#6#16'TGrad'
+'Button-Demo'#12'ClientHeight'#3#183#1#11'ClientWidth'#3'@'#2#8'OnCreate'#7
+#10'FormCreate'#10'LCLVersion'#6#6'0.9.29'#0#6'TLabel'#6'Label1'#4'Left'#2#8
+#6'Height'#2#16#3'Top'#2'K'#5'Width'#2'G'#7'Caption'#6#11'NormalBlend'#11'Pa'
+'rentColor'#8#0#0#6'TLabel'#6'Label2'#4'Left'#2#8#6'Height'#2#16#3'Top'#3#131
+#0#5'Width'#2'8'#7'Caption'#6#9'OverBlend'#11'ParentColor'#8#0#0#6'TLabel'#6
+'Label3'#4'Left'#2'X'#6'Height'#2#16#3'Top'#2'K'#5'Width'#2#1#11'ParentColor'
+#8#0#0#6'TLabel'#6'Label4'#4'Left'#2'X'#6'Height'#2#16#3'Top'#3#131#0#5'Widt'
+'h'#2#1#11'ParentColor'#8#0#0#6'TLabel'#6'Label5'#4'Left'#2'%'#6'Height'#2#16
+#3'Top'#2#16#5'Width'#2'9'#7'Caption'#6#10'Base Color'#11'ParentColor'#8#0#0
@ -90,7 +90,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'eight'#2'X'#11'ClientWidth'#2'}'#9'ItemIndex'#2#0#13'Items.Strings'#1#6#8't'
+'aCenter'#6#13'taLeftJustify'#6#14'taRightJustify'#0#7'OnClick'#7#16'RadioGr'
+'oup4Click'#8'TabOrder'#2#5#0#0#12'TLabeledEdit'#12'LabeledEdit1'#4'Left'#3
+'H'#1#6'Height'#2#25#3'Top'#3#216#0#5'Width'#2'P EditLabel.AnchorSideLeft.Co'
+'H'#1#6'Height'#2#23#3'Top'#3#216#0#5'Width'#2'P EditLabel.AnchorSideLeft.Co'
+'ntrol'#7#12'LabeledEdit1"EditLabel.AnchorSideBottom.Control'#7#12'LabeledEd'
+'it1'#14'EditLabel.Left'#3'H'#1#16'EditLabel.Height'#2#16#13'EditLabel.Top'#3
+#197#0#15'EditLabel.Width'#2'R'#17'EditLabel.Caption'#6#14'Button Caption'#21

View File

@ -1,14 +1,14 @@
object Form1: TForm1
Left = 275
Left = 229
Height = 493
Top = 161
Top = 150
Width = 884
Caption = 'TGradTabControl-Testsuite'
ClientHeight = 493
ClientWidth = 884
OnCreate = FormCreate
OnDestroy = FormDestroy
LCLVersion = '0.9.27'
LCLVersion = '0.9.29'
object Panel1: TPanel
Left = 0
Height = 493
@ -94,7 +94,7 @@ object Form1: TForm1
end
object GradTabPage2: TGradTabPage
Left = 2
Height = 488
Height = 489
Top = 22
Width = 642
PageIndex = 2
@ -247,8 +247,8 @@ object Form1: TForm1
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 95
ClientWidth = 96
ClientHeight = 113
ClientWidth = 100
ItemIndex = 0
Items.Strings = (
'tpTop'
@ -321,7 +321,7 @@ object Form1: TForm1
end
object SpinEdit2: TSpinEdit
Left = 16
Height = 25
Height = 23
Top = 176
Width = 100
OnEditingDone = SpinEdit2EditingDone
@ -329,7 +329,7 @@ object Form1: TForm1
end
object Edit1: TEdit
Left = 16
Height = 25
Height = 23
Top = 136
Width = 72
TabOrder = 6
@ -337,7 +337,7 @@ object Form1: TForm1
end
object GradButton1: TGradButton
Left = 90
Height = 19
Height = 22
Top = 136
Width = 26
Caption = 'set'
@ -402,8 +402,8 @@ object Form1: TForm1
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 87
ClientWidth = 96
ClientHeight = 105
ClientWidth = 100
ItemIndex = 0
Items.Strings = (
'blGlyphLeft'
@ -414,6 +414,41 @@ object Form1: TForm1
OnClick = RadioGroup2Click
TabOrder = 9
end
object Label2: TLabel
Left = 18
Height = 16
Top = 208
Width = 26
Caption = 'Style'
ParentColor = False
end
object ComboBox2: TComboBox
Left = 16
Height = 23
Top = 225
Width = 100
AutoDropDown = True
ItemHeight = 15
ItemIndex = 0
Items.Strings = (
'Standard'
'Vista'
'VistaBlue'
)
OnChange = ComboBox2Change
Style = csDropDownList
TabOrder = 10
Text = 'Standard'
end
object CheckBox2: TCheckBox
Left = 16
Height = 19
Top = 256
Width = 112
Caption = 'Rounded Corners'
OnChange = CheckBox2Change
TabOrder = 11
end
end
object PopupMenu1: TPopupMenu
left = 734

View File

@ -1,10 +1,10 @@
{ Das ist eine automatisch erzeugte Lazarus-Ressourcendatei }
LazarusResources.Add('TForm1','FORMDATA',[
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#19#1#6'Height'#3#237#1#3'Top'#3#161#0#5'W'
+'idth'#3't'#3#7'Caption'#6#25'TGradTabControl-Testsuite'#12'ClientHeight'#3
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#229#0#6'Height'#3#237#1#3'Top'#3#150#0#5
+'Width'#3't'#3#7'Caption'#6#25'TGradTabControl-Testsuite'#12'ClientHeight'#3
+#237#1#11'ClientWidth'#3't'#3#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11
+'FormDestroy'#10'LCLVersion'#6#6'0.9.27'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6
+'FormDestroy'#10'LCLVersion'#6#6'0.9.29'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6
+'Height'#3#237#1#3'Top'#2#0#5'Width'#3#134#2#5'Align'#7#8'alClient'#7'Captio'
+'n'#6#6'Panel1'#12'ClientHeight'#3#237#1#11'ClientWidth'#3#134#2#8'TabOrder'
+#2#0#0#15'TGradTabControl'#15'GradTabControl1'#4'Left'#2#1#6'Height'#3#235#1
@ -56,20 +56,20 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#182#255'@'#157#187#255'N'#182#218#255'z'#204#233#130#0#0'#'#0'dNF'#128'hH?'
+#142'U5-~'#132#197#217'j['#186#217#252'Y'#190#225#255'Y'#185#219#255'P'#177
+#211#255'<'#164#200#255'0'#153#189#255'1'#147#181#255'9'#153#187#255'@'#164
+#199#255'P'#175#207#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l'#195#218
+'Ol'#210#245#254'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255
+'0'#153#189#255'('#144#180#255')'#145#181#255'4'#156#192#255'O'#182#218#255
+#130#205#229'o'#0#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235#255'I'
+#175#207#255';'#166#201#255'4'#162#197#255'.'#158#195#255'-'#157#194#255'-'
+#156#191#255'/'#155#190#255'6'#158#192#255'P'#178#210#255'y'#204#234#130#0#0
+'#'#0#0#0#0#9'bB:'#188'R2('#164'z'#164#179'U7'#162#195#243#24#159#207#255#24
+#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24
+#159#207#255#24#159#207#255'.'#159#196#247'{'#184#200'i'#0#0'#'#0#0#0'#'#0'{'
,'SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159#189#158'1'#159#193#188'.'#159#195
+#199#255'P'#175#207#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l'#127#195
+#218'Ol'#210#245#254'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200
+#255'0'#153#189#255'('#144#180#255')'#145#181#255'4'#156#192#255'O'#182#218
+#255#130#205#229'o'#0#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235#255
+'I'#175#207#255';'#166#201#255'4'#162#197#255'.'#158#195#255'-'#157#194#255
+'-'#156#191#255'/'#155#190#255'6'#158#192#255'P'#178#210#255'y'#204#234#130#0
+#0'#'#0#0#0#0#9'bB:'#188'R2('#164'z'#164#179'U7'#162#195#243#24#159#207#255
+#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255
+#24#159#207#255#24#159#207#255'.'#159#196#247'{'#184#200'i'#0#0'#'#0#0#0'#'#0
,'{SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159#189#158'1'#159#193#188'.'#159#195
+#211'+'#158#196#234'+'#159#195#236'-'#159#195#214'0'#159#195#191'7'#160#192
+#164'^'#161#173'1'#0#0'#'#0#0#0'#'#0#12'TabShowGlyph'#9#15'TabButtonLayout'#7
+#11'blGlyphLeft'#0#0#12'TGradTabPage'#12'GradTabPage2'#4'Left'#2#2#6'Height'
+#3#232#1#3'Top'#2#22#5'Width'#3#130#2#9'PageIndex'#2#2#7'Caption'#6#12'GradT'
+#3#233#1#3'Top'#2#22#5'Width'#3#130#2#9'PageIndex'#2#2#7'Caption'#6#12'GradT'
+'abPage2'#15'ShowCloseButton'#9#8'TabColor'#7#6'clBlue'#16'TabTextAlignment'
+#7#13'taLeftJustify'#13'TabGlyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0
+#0'6'#0#0#0'('#0#0#0#16#0#0#0#16#0#0#0#1#0' '#0#0#0#0#0#0#4#0#0'd'#0#0#0'd'#0
@ -106,10 +106,10 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255'N'#182#218#255'z'#204#233#130#0#0'#'#0'dNF'#128'hH?'#142'U5-~'#132#197
+#217'j['#186#217#252'Y'#190#225#255'Y'#185#219#255'P'#177#211#255'<'#164#200
+#255'0'#153#189#255'1'#147#181#255'9'#153#187#255'@'#164#199#255'P'#175#207
+#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l'#195#218'Ol'#210#245#254'_'
+#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('
+#144#180#255')'#145#181#255'4'#156#192#255'O'#182#218#255#130#205#229'o'#0#0
+'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235#255'I'#175#207#255';'#166
+#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l'#127#195#218'Ol'#210#245#254
+'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255
+'('#144#180#255')'#145#181#255'4'#156#192#255'O'#182#218#255#130#205#229'o'#0
+#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235#255'I'#175#207#255';'#166
+#201#255'4'#162#197#255'.'#158#195#255'-'#157#194#255'-'#156#191#255'/'#155
+#190#255'6'#158#192#255'P'#178#210#255'y'#204#234#130#0#0'#'#0#0#0#0#9'bB:'
+#188'R2('#164'z'#164#179'U7'#162#195#243#24#159#207#255#24#159#207#255#24#159
@ -156,10 +156,10 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#255'N'#182#218#255'z'#204#233#130#0#0'#'#0'dNF'#128'hH?'#142'U5-~'#132#197
+#217'j['#186#217#252'Y'#190#225#255'Y'#185#219#255'P'#177#211#255'<'#164#200
+#255'0'#153#189#255'1'#147#181#255'9'#153#187#255'@'#164#199#255'P'#175#207
+#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l'#195#218'Ol'#210#245#254'_'
+#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('
+#144#180#255')'#145#181#255'4'#156#192#255'O'#182#218#255#130#205#229'o'#0#0
+'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235#255'I'#175#207#255';'#166
+#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l'#127#195#218'Ol'#210#245#254
+'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255
+'('#144#180#255')'#145#181#255'4'#156#192#255'O'#182#218#255#130#205#229'o'#0
+#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235#255'I'#175#207#255';'#166
+#201#255'4'#162#197#255'.'#158#195#255'-'#157#194#255'-'#156#191#255'/'#155
+#190#255'6'#158#192#255'P'#178#210#255'y'#204#234#130#0#0'#'#0#0#0#0#9'bB:'
+#188'R2('#164'z'#164#179'U7'#162#195#243#24#159#207#255#24#159#207#255#24#159
@ -184,7 +184,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'esize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing'
+'.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftTo'
+'RightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2
+'_'#11'ClientWidth'#2'`'#9'ItemIndex'#2#0#13'Items.Strings'#1#6#5'tpTop'#6#8
+'q'#11'ClientWidth'#2'd'#9'ItemIndex'#2#0#13'Items.Strings'#1#6#5'tpTop'#6#8
+'tpBottom'#6#6'tpLeft'#6#7'tpRight'#0#7'OnClick'#7#16'RadioGroup1Click'#8'Ta'
+'bOrder'#2#1#0#0#9'TCheckBox'#9'CheckBox1'#4'Left'#2#16#6'Height'#2#16#3'Top'
+#2'p'#5'Width'#2'd'#8'AutoSize'#8#7'Caption'#6#9'Long Tabs'#7'OnClick'#7#14
@ -205,11 +205,11 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'clSilver'#15'BackgroundColor'#7#9'clBtnFace'#15'ShowFocusBorder'#9#9'ShowGl'
+'yph'#8#20'GlyphBackgroundColor'#7#7'clWhite'#10'ClickColor'#7#6'clBlue'#19
+'OwnerBackgroundDraw'#8#22'AutoWidthBorderSpacing'#2#15#23'AutoHeightBorderS'
+'pacing'#2#15#0#0#9'TSpinEdit'#9'SpinEdit2'#4'Left'#2#16#6'Height'#2#25#3'To'
+'pacing'#2#15#0#0#9'TSpinEdit'#9'SpinEdit2'#4'Left'#2#16#6'Height'#2#23#3'To'
+'p'#3#176#0#5'Width'#2'd'#13'OnEditingDone'#7#20'SpinEdit2EditingDone'#8'Tab'
+'Order'#2#5#0#0#5'TEdit'#5'Edit1'#4'Left'#2#16#6'Height'#2#25#3'Top'#3#136#0
+'Order'#2#5#0#0#5'TEdit'#5'Edit1'#4'Left'#2#16#6'Height'#2#23#3'Top'#3#136#0
+#5'Width'#2'H'#8'TabOrder'#2#6#4'Text'#6#5'Edit1'#0#0#11'TGradButton'#11'Gra'
+'dButton1'#4'Left'#2'Z'#6'Height'#2#19#3'Top'#3#136#0#5'Width'#2#26#7'Captio'
+'dButton1'#4'Left'#2'Z'#6'Height'#2#22#3'Top'#3#136#0#5'Width'#2#26#7'Captio'
+'n'#6#3'set'#10'Font.Color'#7#7'clWhite'#7'OnClick'#7#16'GradButton1Click'#8
+'TabOrder'#2#7#7'TabStop'#9#11'NormalBlend'#5#0#0#0#0#0#0#0#128#254'?'#9'Ove'
+'rBlend'#5'5^'#186'I'#12#2'+'#167#254'?'#9'BaseColor'#7#6'clBlue'#5'Color'#7
@ -234,22 +234,30 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScale'
+'Childs'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.'
+'Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'
+#2#1#12'ClientHeight'#2'W'#11'ClientWidth'#2'`'#9'ItemIndex'#2#0#13'Items.St'
+#2#1#12'ClientHeight'#2'i'#11'ClientWidth'#2'd'#9'ItemIndex'#2#0#13'Items.St'
+'rings'#1#6#11'blGlyphLeft'#6#13'blGlyphBottom'#6#12'blGlyphRight'#6#10'blGl'
+'yphTop'#0#7'OnClick'#7#16'RadioGroup2Click'#8'TabOrder'#2#9#0#0#0#10'TPopup'
+'Menu'#10'PopupMenu1'#4'left'#3#222#2#3'top'#3#141#1#0#9'TMenuItem'#9'MenuIt'
+'em1'#3'Tag'#4#152''#18#0#7'Caption'#6#9'New Item1'#0#0#0#10'TImageList'#10
+'ImageList1'#4'left'#3#144#2#3'top'#3#141#1#6'Bitmap'#10#14#4#0#0'Li'#1#0#0#0
+#16#0#0#0#16#0#0#0#0#0'#'#0'{SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159#189#158
+'1'#159#193#188'.'#159#195#211'+'#158#196#234'+'#159#195#236'-'#159#195#214
+'0'#159#195#191'7'#160#192#164'^'#161#173'1'#0#0'#'#0#0#0'#'#0#0#0#0#9'bB:'
+#188'R2('#164'z'#164#179'U7'#162#195#243#24#159#207#255#24#159#207#255#24#159
+#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159
+#207#255'.'#159#196#247'{'#184#200'i'#0#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223
+'lk'#204#235#255'I'#175#207#255';'#166#201#255'4'#162#197#255'.'#158#195#255
+'-'#157#194#255'-'#156#191#255'/'#155#190#255'6'#158#192#255'P'#178#210#255
+'y'#204#234#130#0#0'#'#0'kRJ|pLE'#137'\9-l'#195#218'Ol'#210#245#254'_'#199
+#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144
+'yphTop'#0#7'OnClick'#7#16'RadioGroup2Click'#8'TabOrder'#2#9#0#0#6'TLabel'#6
+'Label2'#4'Left'#2#18#6'Height'#2#16#3'Top'#3#208#0#5'Width'#2#26#7'Caption'
+#6#5'Style'#11'ParentColor'#8#0#0#9'TComboBox'#9'ComboBox2'#4'Left'#2#16#6'H'
+'eight'#2#23#3'Top'#3#225#0#5'Width'#2'd'#12'AutoDropDown'#9#10'ItemHeight'#2
+#15#9'ItemIndex'#2#0#13'Items.Strings'#1#6#8'Standard'#6#5'Vista'#6#9'VistaB'
+'lue'#0#8'OnChange'#7#15'ComboBox2Change'#5'Style'#7#14'csDropDownList'#8'Ta'
+'bOrder'#2#10#4'Text'#6#8'Standard'#0#0#9'TCheckBox'#9'CheckBox2'#4'Left'#2
+#16#6'Height'#2#19#3'Top'#3#0#1#5'Width'#2'p'#7'Caption'#6#15'Rounded Corner'
+'s'#8'OnChange'#7#15'CheckBox2Change'#8'TabOrder'#2#11#0#0#0#10'TPopupMenu'
+#10'PopupMenu1'#4'left'#3#222#2#3'top'#3#141#1#0#9'TMenuItem'#9'MenuItem1'#3
+'Tag'#4#152#127#18#0#7'Caption'#6#9'New Item1'#0#0#0#10'TImageList'#10'Image'
+'List1'#4'left'#3#144#2#3'top'#3#141#1#6'Bitmap'#10#14#4#0#0'Li'#1#0#0#0#16#0
+#0#0#16#0#0#0#0#0'#'#0'{SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159#189#158'1'
+#159#193#188'.'#159#195#211'+'#158#196#234'+'#159#195#236'-'#159#195#214'0'
+#159#195#191'7'#160#192#164'^'#161#173'1'#0#0'#'#0#0#0'#'#0#0#0#0#9'bB:'#188
+'R2('#164'z'#164#179'U7'#162#195#243#24#159#207#255#24#159#207#255#24#159#207
+#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207
+#255'.'#159#196#247'{'#184#200'i'#0#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'
+#204#235#255'I'#175#207#255';'#166#201#255'4'#162#197#255'.'#158#195#255'-'
+#157#194#255'-'#156#191#255'/'#155#190#255'6'#158#192#255'P'#178#210#255'y'
+#204#234#130#0#0'#'#0'kRJ|pLE'#137'\9-l'#127#195#218'Ol'#210#245#254'_'#199
,#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144
+#180#255')'#145#181#255'4'#156#192#255'O'#182#218#255#130#205#229'o'#0#0'#'#0
+'dNF'#128'hH?'#142'U5-~'#132#197#217'j['#186#217#252'Y'#190#225#255'Y'#185
+#219#255'P'#177#211#255'<'#164#200#255'0'#153#189#255'1'#147#181#255'9'#153
@ -257,7 +265,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#150'G,$]{'#196#221'lj'#210#246#255'`'#189#217#255'O'#176#205#255'J'#170#200
+#255'L'#168#196#255'I'#164#193#255'='#154#184#255'6'#151#182#255'@'#157#187
+#255'N'#182#218#255'z'#204#233#130#0#0'#'#0#0#0#0#5'bD;'#177'P0('#159't'#157
,#168'Sl'#205#238#251'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200
+#168'Sl'#205#238#251'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200
+#255'0'#153#189#255'('#144#180#255')'#144#181#255'4'#156#192#255'U'#182#216
+#253#130#192#205'l'#0#0'#'#0#0#0#0#4'pND'#150'lB7'#154'z'#187#206'q]'#184#210
+#255'P'#178#212#255'I'#179#216#255'D'#176#212#255'A'#168#205#255'9'#160#196

View File

@ -19,8 +19,10 @@ type
TForm1 = class(TForm)
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckGroup1: TCheckGroup;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Edit1: TEdit;
GradButton1: TGradButton;
GradTabPage1: TGradTabPage;
@ -28,6 +30,7 @@ type
GradTabPage3: TGradTabPage;
ImageList1: TImageList;
Label1: TLabel;
Label2: TLabel;
Memo1: TMemo;
NewPageBtn: TGradButton;
DeleteBtn: TGradButton;
@ -41,9 +44,11 @@ type
RadioGroup2: TRadioGroup;
SpinEdit2: TSpinEdit;
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Change(Sender: TObject);
procedure CheckGroup1Click(Sender: TObject);
procedure CheckGroup1ItemClick(Sender: TObject; Index: integer);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure DeleteBtnClick(Sender: TObject);
@ -91,7 +96,8 @@ uses
procedure TForm1.FormCreate(Sender: TObject);
begin
GradTabControl1.Style :=TGradTabVistaStyle.Create;
GradTabControl1.Style :=TGradTabVistaBlueStyle.Create;
GradTabControl1.Style.RoundedCorners:=false;
GradTabControl1.Align:=alClient;
GradTabControl1.TabPosition:=tpTop;
SpinEdit2.Value:=GradTabControl1.TabHeight;
@ -114,6 +120,12 @@ begin
Edit1.Text:=IntToStr(GradTabControl1.LongWidth);
end;
procedure TForm1.CheckBox2Change(Sender: TObject);
begin
GradTabControl1.Style.RoundedCorners:= CheckBox2.Checked;
Invalidate;
end;
procedure TForm1.CheckGroup1Click(Sender: TObject);
begin
@ -139,6 +151,17 @@ begin
GradTabControl1.PageIndex:=GradTabControl1.Tabs.IndexOf(ComboBox1.Text);
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
case ComboBox2.ItemIndex of
0: GradTabControl1.Style := TGradTabStandardStyle.Create;
1: GradTabControl1.Style := TGradTabVistaStyle.Create;
2: GradTabControl1.Style := TGradTabVistaBlueStyle.Create;
end;
GradTabControl1.Style.RoundedCorners:= CheckBox2.Checked;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
GradTabControl1.Free;

View File

@ -30,11 +30,10 @@
</RunParams>
<RequiredPackages Count="3">
<Item1>
<PackageName Value="ImagesForLazarus"/>
<PackageName Value="gradcontrols"/>
</Item1>
<Item2>
<PackageName Value="gradbutton"/>
<MinVersion Valid="True"/>
<PackageName Value="ImagesForLazarus"/>
</Item2>
<Item3>
<PackageName Value="LCL"/>
@ -48,8 +47,8 @@
</Unit0>
<Unit1>
<Filename Value="Forms\main.pas"/>
<ComponentName Value="Form1"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="main"/>
</Unit1>
@ -60,6 +59,7 @@
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="Forms\"/>
<UnitOutputDirectory Value="Output\"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>

View File

@ -8,7 +8,7 @@ uses
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms
{ you can add units after this }, main;
{ you can add units after this }, main, gradcontrols;
begin
Application.Title:='TGradButton-Demo';

View File

@ -16,7 +16,7 @@
<VersionInfo>
<UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/>
<CurrentBuildNr Value="1166"/>
<CurrentBuildNr Value="1190"/>
<ProjectVersion Value="0.0.0.0"/>
</VersionInfo>
<PublishOptions>
@ -31,9 +31,9 @@
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local>
</RunParams>
<RequiredPackages Count="5">
<RequiredPackages Count="4">
<Item1>
<PackageName Value="gradtabcontrol_with_multilog"/>
<PackageName Value="gradcontrols"/>
</Item1>
<Item2>
<PackageName Value="multiloglaz"/>
@ -43,12 +43,8 @@
<MinVersion Major="1" Valid="True"/>
</Item3>
<Item4>
<PackageName Value="gradbutton"/>
<MinVersion Major="1" Minor="2" Valid="True"/>
</Item4>
<Item5>
<PackageName Value="LCL"/>
</Item5>
</Item4>
</RequiredPackages>
<Units Count="3">
<Unit0>
@ -58,9 +54,9 @@
</Unit0>
<Unit1>
<Filename Value="Forms\unit1.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<HasResources Value="True"/>
<IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/>
</Unit1>
@ -75,6 +71,7 @@
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="Forms\"/>
<UnitOutputDirectory Value="Output"/>
</SearchPaths>
<Parsing>
<SyntaxOptions>

View File

@ -8,7 +8,7 @@ uses
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, multiloglaz
{ you can add units after this }, unit1, gradtabcontrol_with_multilog;
{ you can add units after this }, unit1, gradcontrols;
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}

View File

@ -2,6 +2,8 @@ unit gradtabstyle;
{$mode objfpc}{$H+}
{.$DEFINE DEBUGTAB}
{-------------------------------------
Style-Class for TGradTabControl
--------------------------------------}
@ -9,7 +11,12 @@ Style-Class for TGradTabControl
interface
uses
Classes, SysUtils, Controls, Graphics, Buttons, ExtCtrls, ugradbtn;
Classes, SysUtils, Controls, Graphics, Buttons, ExtCtrls, ugradbtn
{$IFDEF DEBUGTAB}
, sharedloggerlcl
{$ELSE}
, DummyLogger
{$ENDIF};
type
TStylePaintEvent = procedure(Sender: TCustomControl; AIndex: Integer;
@ -22,6 +29,7 @@ type
TGradTabStyleBase = class
private
FRoundedCorners: Boolean;
function GetHasCloseButtonPaint: Boolean;
function GetHasTabButtonPaint: Boolean;
function GetHasLeftRightButtonPaint: Boolean;
@ -47,6 +55,7 @@ type
property HasLeftRightButtonPaint : Boolean read GetHasLeftRightButtonPaint;
property HasBorderButtonPaint : Boolean read GetHasBorderButtonPaint;
property HasCloseButtonPaint : Boolean read GetHasCloseButtonPaint;
property RoundedCorners : Boolean read FRoundedCorners write FRoundedCorners;
end;
{ TGradTabStandardStyle }
@ -69,7 +78,7 @@ type
end;
TGradTabVistaStyle = class(TGradTabStyleBase)
private
protected
Normal : TButtonVistaStyle;
Hover : TButtonVistaStyle;
ActiveButton : TButtonVistaStyle;
@ -90,11 +99,39 @@ type
procedure PrepareButton(Button: TGradButton); override;
end;
{ TGradTabVistaBlueStyle }
TGradTabVistaBlueStyle = class(TGradTabVistaStyle)
public
constructor Create; override;
end;
procedure LoggerButtonVistaStyle(Self: TButtonVistaStyle; Name: String);
implementation
uses
ugradtabcontrol, LCLProc;
procedure LoggerButtonVistaStyle(Self: TButtonVistaStyle; Name: String);
procedure C(aName: String; aColor: TColor);
begin
Logger.Send(aName, ColorToString(aColor));
end;
begin
Logger.EnterMethod('Style: '+ Name);
C('BorderColor', Self.BorderColor);
C('InnerBorderColor', Self.InnerBorderColor);
C('TopStartColor', Self.TopStartColor);
C('TopStopColor', Self.TopStopColor);
C('BottomStartColor', Self.BottomStartColor);
C('BottomStopColor', Self.BottomStopColor);
Logger.ExitMethod('Style');
end;
{ TGradTabStyleBase }
function TGradTabStyleBase.GetHasCloseButtonPaint: Boolean;
@ -120,6 +157,8 @@ end;
constructor TGradTabStyleBase.Create;
begin
FOptions:= [];
FRoundedCorners := true;
end;
procedure TGradTabStyleBase.PrepareButton(Button: TGradButton);
@ -250,7 +289,18 @@ end;
procedure TGradTabVistaStyle.TabCloseButton(Sender: TCustomControl;
AIndex: Integer; Button: TGradButton; TargetCanvas: TCanvas; R: TRect;
BState: TButtonState);
var
FGradTabControl : TGradTabControl;
begin
FGradTabControl := nil;
if Sender <> nil then
FGradTabControl := Sender as TGradTabControl;
if (FGradTabControl <> nil)
and (AIndex <> FGradTabControl.PageIndex) then
BState := bsUp;
TabButton(Sender, AIndex, Button, TargetCanvas, R, BState);
end;
@ -258,6 +308,7 @@ procedure TGradTabVistaStyle.TabButtonBorder(Sender: TCustomControl; AIndex: Int
Button: TGradButton; TargetCanvas: TCanvas; R: TRect; BState : TButtonState);
var
ColorSet: TButtonVistaStyle;
Temp : Integer;
begin
//DebugLn('Border R: ',DbgS(R));
@ -267,6 +318,25 @@ begin
else ColorSet := Normal;
end;
Temp := 0;
if not RoundedCorners then
begin
if R.Left > 0 then
R.Left := R.Left -1;
if R.Right < Button.Width then
R.Right := R.Right + 1;
if R.Top > 0 then
R.Top := R.Top - 1;
if R.Bottom < Button.Height then
R.Bottom := R.Bottom + 1;
Temp := 1;
end;
with Button do
begin
//Top
@ -307,19 +377,19 @@ begin
//TopLeft
if (bsTopLine in BorderSides) AND (bsLeftLine in BorderSides) then
TargetCanvas.Pixels[1,1]:=ColorSet.BorderColor;
TargetCanvas.Pixels[1-Temp,1-Temp]:=ColorSet.BorderColor;
//TopRight
if (bsTopLine in BorderSides) AND (bsRightLine in BorderSides) then
TargetCanvas.Pixels[Width-2,1] := ColorSet.BorderColor;
TargetCanvas.Pixels[Width-2+Temp,1-Temp] := ColorSet.BorderColor;
//BottomLeft
if (bsBottomLine in BorderSides) AND (bsLeftLine in BorderSides) then
TargetCanvas.Pixels[1, Height-2]:=ColorSet.BorderColor;
TargetCanvas.Pixels[1-Temp, Height-2+Temp]:=ColorSet.BorderColor;
//BottomRight
if (bsBottomLine in BorderSides) AND (bsRightLine in BorderSides) then
TargetCanvas.Pixels[Width-2,Height-2]:=ColorSet.BorderColor;
TargetCanvas.Pixels[Width-2+Temp,Height-2+Temp]:=ColorSet.BorderColor;
end;
end;
@ -327,7 +397,10 @@ procedure TGradTabVistaStyle.TabLeftRightButton(Sender: TGradButton;
TargetCanvas: TCanvas; R: TRect; BState: TButtonState);
begin
if BState = bsDown then
BState := bsHot;
BState := bsHot;
if Sender.Font.Color = clWhite then
Sender.Font.Color := clBlack;
TabButton(Sender.Owner as TCustomControl, 0, Sender, TargetCanvas, R, BState);
end;
@ -346,5 +419,44 @@ begin
Button.Font.Color:=clBlack;
end;
{ TGradTabVistaBlueStyle }
constructor TGradTabVistaBlueStyle.Create;
begin
inherited Create;
with Normal do
begin
BorderColor:=RGBToColor(145, 150, 162); //#9196A2
InnerBorderColor:= RGBToColor(224, 255, 255);
TopStartColor := RGBToColor(252, 253, 254);
TopStopColor := RGBToColor(231, 235, 255);
BottomStartColor := RGBToColor(207, 215, 235);
BottomStopColor := RGBToColor(221, 227, 243);
end;
with Hover do
begin
BorderColor:=RGBToColor(145, 150, 162); //#9196A2
InnerBorderColor:= RGBToColor(224, 255, 255);
TopStartColor := RGBToColor(232, 240, 251);
TopStopColor := RGBToColor(184, 212, 244);
BottomStartColor := RGBToColor(115, 176, 232);
BottomStopColor := RGBToColor(173, 208, 241);
end;
with ActiveButton do
begin
BorderColor:=RGBToColor(145, 150, 162); //#9196A2
InnerBorderColor:= TColor($FFFFFF);
TopStartColor := RGBToColor(255, 245, 224); //#FFF5E0
TopStopColor := RGBToColor(255, 222, 147); //#FFDE93
BottomStartColor := RGBToColor(255, 184, 17); //#FFB811
BottomStopColor := RGBToColor(255, 213, 114);
end;
LoggerButtonVistaStyle(ActiveButton, 'ActiveButton');
end;
end.

View File

@ -1136,16 +1136,10 @@ end;
procedure TGradButton.MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
inherited;
if PtInRect(Rect(0,0,Width,Height),Point(X,Y)) then
begin
//WriteLn('X: ',X,' Y: ',Y);
FState:=bsDown;
//FFocused:=true;
//LCLIntf.SetFocus(Handle);
InvPaint;
end else begin
FState:=bsUp;
@ -1156,33 +1150,27 @@ begin
InvPaint;
end;
inherited;
end;
procedure TGradButton.MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if PtInRect(Rect(0,0,Width,Height),Point(X,Y)) then
begin
//WriteLn('MouseUp');
if PtInRect(Rect(0,0,Width,Height),Point(X,Y)) then
begin
FState:=bsHot;
//FFocused:=true;
InvPaint(true);
if Button = mbLeft then
inherited Click; //Faster, than the Overrided Click procedure
inherited Click; //Faster, than the Overrided Click procedure
end else begin
FState := bsUp;
FFocused:=false;
InvPaint(true);
end;
{ if (Button = mbRight) AND Assigned(PopupMenu) then
PopupMenu.PopUp(X,Y);
}
end else begin
FState := bsUp;
FFocused:=false;
InvPaint(true);
end;
inherited;
inherited;
end;
//Thx to: http://www.delphipraxis.net/topic67805_farbverlauf+berechnen.html

View File

@ -3,22 +3,26 @@ unit ugradtabcontrol;
{-------------------------------------------------------------------------------
@name GradTabControl
@author Eugen Bolz
@lastchange 26.06.2009 (DD.MM.YYYY)
@version 0.1
@lastchange 13.12.2009 (DD.MM.YYYY)
@version 0.2
@comments TGradTabControl is based on TNotebook/TPageControl/TTabControl
@license http://creativecommons.org/licenses/LGPL/2.1/
------------------------------------------------------------------------------}
{$mode objfpc}{$H+}
{.$DEFINE DEBUGTAB}
interface
uses
Classes,LResources, SysUtils, Menus, LCLType,
LCLProc, LCLIntf,ExtCtrls, Graphics, ugradbtn, Controls, uRotateBitmap,
Buttons, Forms, ImgList, gradtabstyle
Classes, LResources, SysUtils, Menus, LCLType,
LCLProc, LCLIntf, ExtCtrls, Graphics, ugradbtn, Controls,
uRotateBitmap, Buttons, Forms, ImgList, gradtabstyle
{$IFDEF DEBUGTAB}
, sharedloggerlcl
{$ELSE}
, DummyLogger
{$ENDIF};
type
@ -194,6 +198,7 @@ type
TGradTabPagesBar = class(TCustomControl)
private
FActiveTabColor: TColor;
FNeedOrderButtons: Boolean;
FNormalTabColor: TColor;
FPageList : TListWithEvent;
FTabControl : TGradTabControl;
@ -225,6 +230,7 @@ type
procedure MoveTo(Num: Integer);
procedure MoveToNorm;
property TabPosition : TTabPosition read FTabPosition write SetTabPosition;
property NeedOrderButtons : Boolean read FNeedOrderButtons;
published
property OnStartDock;
property OnStartDrag;
@ -285,6 +291,7 @@ type
FAutoShowScrollButton: Boolean;
FCustomDraw: Boolean;
FImages: TImageList;
FIsUpdating: Boolean;
FMoveIncrement: Integer;
FLeftButton, FRightButton : TGradButton;
FOnCustomDraw: TGradTabControlPaintEvent;
@ -397,6 +404,8 @@ type
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure BeginUpdate;
procedure EndUpdate;
function GetTabRect(AIndex : Integer) : TRect;
function AddPage(AName: String) : Integer;
function AddPage(APage: TGradTabPage) : Integer;
@ -407,6 +416,7 @@ type
procedure UpdateAllDesignerFlags;
procedure UpdateDesignerFlags(APageIndex: integer);
property IsUpdating : Boolean read FIsUpdating;
property Page[Index: Integer] : TGradTabPage read GetPage;
property Bar : TGradTabBar read FBar;
property PagesBar : TGradTabPagesBar read FPagesBar;
@ -445,7 +455,6 @@ type
property TabPosition : TTabPosition read FTabPosition write SetTabPosition default tpTop;
property LongTabs : Boolean read FLongTabs write SetLongTabs;
property LongWidth: Integer read FLongWidth write SetLongWidth;
//property MoveIncrement : Integer read FMoveIncrement write FMoveIncrement;
property OnPageChanged: TNotifyEvent read FOnPageChanged write FOnPageChanged;
property AutoShowScrollButtons : Boolean read FAutoShowScrollButton write SetAutoShowScrollButtons default true;
property ShowLeftTopScrollButton : Boolean read FShowLeftTopScrollButton write SetShowLeftTopScrollButton;
@ -467,7 +476,7 @@ type
implementation
uses
gradtabcontroleditor, ComponentEditors;
gradtabcontroleditor, ComponentEditors;
{-------------------------------------------------------------------------------
Register
@ -495,9 +504,9 @@ var
i : Integer;
begin
Result := false;
{$IFDEF DEBUGTAB}
DebugLn('ValueInArray: Needle=%d Low=%d High=%d',[Needle, Low(Stack), High(Stack)]);
{$ENDIF}
for i := Low(Stack) to High(Stack) do
if Needle =Stack[i] then
begin
@ -673,19 +682,21 @@ procedure TGradTabPageButton.RealSetText(const Value: TCaption);
var
NewCaption : TCaption;
begin
Logger.EnterMethod(Self, 'RealSetText');
NewCaption:=Value;
inherited RealSetText(NewCaption);
AlignCloseButton;
{$IFDEF DEBUGTAB}
DebugLn('TGradTabPageButton RealSetText ',BoolToStr(Assigned(Parent),true),
BoolToStr((Parent is TGradTabPagesBar),true) );
{$ENDIF}
Logger.Send('Parent Assigned', Assigned(Parent));
Logger.Send('Parent is TGradTabPagesBar', Parent is TGradTabPagesBar);
if Assigned(Parent) AND (Parent is TGradTabPagesBar) then
(Parent as TGradTabPagesBar).OrderButtons;
Logger.ExitMethod(Self, 'RealSetText');
end;
procedure TGradTabPageButton.SetAutoHeightBorderSpacing(const AValue: Integer);
@ -729,13 +740,13 @@ begin
begin
case RotateDirection of
rdNormal: begin
TheRect.Right:=TheRect.Right-(FCloseButton.Glyph.Width);
TheRect.Right :=TheRect.Right-(FCloseButton.Glyph.Width);
end;
rdLeft: begin
TheRect.Top:= TheRect.Top+(FCloseButton.Glyph.Height);
TheRect.Top := TheRect.Top+(FCloseButton.Glyph.Height);
end;
rdRight: begin
TheRect.Bottom:= TheRect.Bottom-(FCloseButton.Glyph.Height);
TheRect.Bottom := TheRect.Bottom-(FCloseButton.Glyph.Height);
end;
end;
end;
@ -1237,6 +1248,8 @@ var
begin
LastLeft := 0;
Logger.EnterMethod(Self, 'InsertButton('+IntToStr(Index)+')');
if (Index >= 1) AND (FPageList.Count>=1) then
LastLeft := TGradTabPage(FPageList.Items[Index-1]).TabButton.Left;
@ -1292,7 +1305,7 @@ begin
OrderButtons;}
{$IFDEF DEBUGTAB}WriteLn('TGradTabPagesBar.InsertButton');{$ENDIF}
Logger.ExitMethod(Self, 'InsertButton('+IntToStr(Index)+')');
end;
procedure TGradTabPagesBar.MoveTo(Num: Integer);
@ -1357,13 +1370,21 @@ var
B : TGradButton;
begin
if csDestroying in FTabControl.ComponentState then Exit;
if FPageList.Count=0 then Exit;
{$IFDEF DEBUGTAB}DebugLn('OrderButton Start');{$ENDIF}
if (FTabControl.IsUpdating) then
begin
FNeedOrderButtons := true;
Exit;
end;
FNeedOrderButtons := false;
Logger.EnterMethod(Self, 'OrderButtons');
Logger.
FMovedTo:=0;
if FPageList.Count=0 then Exit;
for i := FShowFromButton-1 downto 0 do
begin
if i >= FPageList.Count then Continue;
@ -1427,20 +1448,28 @@ begin
FActiveIndex:=FTabControl.PageIndex;
Logger.EnterMethod(Self, 'GROUP: foreach FPageList[i]');
for i := 0 to FPageList.Count - 1 do
begin
B := TGradTabPage(FPageList.Items[i]).TabButton;
Logger.EnterMethod(Self, 'GROUP: TabButton of Page');
Logger.Send('Visible', B.Visible);
if B.Visible then
begin
B.RotateDirection := NewDirection;
B.BorderSides := NewBorderSides;
B.GradientType := NewGradientType;
{$IFDEF DEBUGTAB}
DebugLn('Begin I: %d W: %d H: %d L: %d T: %d, BW: %d, BH: %d',[i,B.Width,B.Height,B.Left,B.Top,BarWidth,BarHeight]);
{$ENDIF}
Logger.Send('Before');
Logger.Send('i', i);
Logger.Send('Width', B.Width);
Logger.Send('Height', B.Height);
Logger.Send('Left', B.Left);
Logger.Send('Top', B.Top);
Logger.Send('BarWidth', BarWidth);
Logger.Send('BarHeight', BarHeight);
case FTabPosition of
tpTop:
@ -1521,30 +1550,46 @@ begin
B.Width := FTabControl.GetTabBarSize(tpRight)-3;
end;
{$IFDEF DEBUGTAB}
DebugLn('B.Width=%d TabBarSize(tpRight)=%d FActive=%d',[B.Width, FTabControl.GetTabBarSize(tpRight), FActiveIndex]);
{$ENDIF}
Logger.Send('Width', B.Width);
Logger.Send('TabBarSize(tpRight)', FTabControl.GetTabBarSize(tpRight));
Logger.Send('FActive', FActiveIndex);
end;
end;
{$IFDEF DEBUGTAB}
DebugLn('End I: %d W: %d H: %d L: %d T: %d, BW: %d, BH: %d',[i,B.Width,B.Height,B.Left,B.Top,BarWidth,BarHeight]);
{$ENDIF}
Logger.Send('After');
Logger.Send('i', i);
Logger.Send('Width', B.Width);
Logger.Send('Height', B.Height);
Logger.Send('Left', B.Left);
Logger.Send('Top', B.Top);
Logger.Send('BarWidth', BarWidth);
Logger.Send('BarHeight', BarHeight);
end;
if B.Parent <> Self then
B.Parent := Self;
Logger.ExitMethod(Self, 'GROUP: TabButton of Page');
end;
{$IFDEF DEBUGTAB}
DebugLn('BarWidth=%d LastLeft=%d FMovedTo=%d BarHeight=%d LastTop=%d',[BarWidth,
LastLeft, FMovedTo, BarHeight, LastTop]);
Logger.ExitMethod(Self, 'GROUP: foreach FPageList[i]');
DebugLn('BarWidth < LastLeft-FMovedTo = %s BarHeight < LastTop-FMovedTo=%s',[
BoolStr(BarWidth < (LastLeft-FMovedTo)), BoolStr(BarHeight < (LastTop-FMovedTo))]);
{$ENDIF}
Logger.Send('BarWidth', BarWidth);
Logger.Send('LastLeft', LastLeft);
Logger.Send('FMovedTo', FMovedTo);
Logger.Send('BarHeight', BarHeight);
Logger.Send('LastTop', LastTop);
if not FTabControl.AutoShowScrollButtons then Exit;
Logger.Send('BarWidth < (LastLeft-FMovedTo)', BarWidth < (LastLeft-FMovedTo));
Logger.Send('BarHeight < (LastTop-FMovedTo)', BarHeight < (LastTop-FMovedTo));
Logger.Send('TabControl.AutoShowScrollButtons', FTabControl.AutoShowScrollButtons);
if not FTabControl.AutoShowScrollButtons then
begin
Logger.ExitMethod(Self, 'OrderButtons');
Exit;
end;
if ((BarWidth < (LastLeft-FMovedTo))
OR (BarHeight < (LastTop-FMovedTo))
@ -1558,11 +1603,10 @@ begin
FTabControl.FRightButton.Visible:=false;
end;
{$IFDEF DEBUGTAB}
DebugLn('FR=%s FL=%s',[BoolStr(FTabControl.FRightButton.Visible),BoolStr(FTabControl.FLeftButton.Visible)]);
Logger.Send('FR', FTabControl.FRightButton.Visible);
Logger.Send('FL', FTabControl.FLeftButton.Visible);
DebugLn('OrderButton End');
{$ENDIF}
Logger.ExitMethod(Self, 'OrderButtons');
end;
{-------------------------------------------------------------------------------
@ -1570,40 +1614,40 @@ end;
------------------------------------------------------------------------------}
procedure TGradTabPagesBar.UnFocusButton(Index: Integer);
begin
if (Index < 0) or (Index >= FPageList.Count) then Exit;
if (Index < 0) or (Index >= FPageList.Count) then Exit;
{$IFDEF DEBUGTAB}
DebugLn('TGradTabPagesBar.UnFocusButton Index: %d Assigned %s', [Index,BoolToStr(Assigned(TGradTabPage(FPageList.Items[Index]).TabButton),true)]);
{$ENDIF}
Logger.EnterMethod(Self, 'UnFocusButton('+IntToStr(Index)+')');
with TGradTabPage(FPageList.Items[Index]).TabButton do
begin
case FTabPosition of
tpTop : begin
Top:=3;
Height:=Self.Height-3;
end;
tpBottom: begin
Top:=0;
Height:=Self.Height-3;
end;
tpRight: begin
Left := 0;
Width:= Self.Width-3;
end;
tpLeft: begin
Left := 3;
Width:=Self.Width-3;
end;
end;
with TGradTabPage(FPageList.Items[Index]).TabButton do
begin
case FTabPosition of
tpTop : begin
Top:=3;
Height:=Self.Height-3;
end;
tpBottom: begin
Top:=0;
Height:=Self.Height-3;
end;
tpRight: begin
Left := 0;
Width:= Self.Width-3;
end;
tpLeft: begin
Left := 3;
Width:=Self.Width-3;
end;
end;
if TGradTabPage(FPageList.Items[Index]).OwnerTabColor then
Color := TGradTabPage(FPageList.Items[Index]).NormalTabColor
else
Color := NormalTabColor;
if TGradTabPage(FPageList.Items[Index]).OwnerTabColor then
Color := TGradTabPage(FPageList.Items[Index]).NormalTabColor
else
Color := NormalTabColor;
UpdatePositions;
end;
UpdatePositions;
end;
Logger.ExitMethod(Self, 'UnFocusButton('+IntToStr(Index)+')');
end;
{-------------------------------------------------------------------------------
@ -1618,9 +1662,7 @@ begin
if csDestroying in FTabControl.ComponentState then Exit;
if (Index < 0) or (Index >= FPageList.Count) then Exit;
{$IFDEF DEBUGTAB}
DebugLn('TGradTabPagesBar.FocusButton Index: %d Assigned %s', [Index,BoolToStr(Assigned(TGradTabPage(FPageList.Items[Index]).TabButton),true)]);
{$ENDIF}
Logger.EnterMethod(Self, 'FocusButton('+IntToStr(Index)+')');
with TGradTabPage(FPageList.Items[Index]).TabButton do
begin
@ -1647,27 +1689,16 @@ begin
else
Color := ActiveTabColor;
UpdateButton;
Invalidate;
end;
{$IFDEF DEBUGTAB}
DebugLn('FR=%s FL=%s',[BoolStr(FTabControl.FRightButton.Visible),BoolStr(FTabControl.FLeftButton.Visible)]);
{$ENDIF}
if not (FTabControl.FRightButton.Visible AND FTabControl.FLeftButton.Visible) then Exit;
C := 0;
{$IFDEF DEBUGTAB}
DebugLn('Left=%d Width=%d Width=%d',[TGradTabPage(FPageList.Items[Index]).TabButton.Left,
TGradTabPage(FPageList.Items[Index]).TabButton.Width, Width]);
DebugLn('FocusButton Before ScrollToTab');
{$ENDIF}
ScrollToTab(Index);
{$IFDEF DEBUGTAB}
DebugLn('FocusButton After ScrollToTab');
{$ENDIF}
Logger.ExitMethod(Self, 'FocusButton('+IntToStr(Index)+')');
end;
{-------------------------------------------------------------------------------
@ -1808,6 +1839,9 @@ begin
if (FPageList.Count=0) OR (PIndex>=FPageList.Count) then Exit;
if IsVisible(PIndex) then Exit;
Logger.EnterMethod(Self, 'ScrollToTab('+IntToStr(PIndex)+')');
CurTabs := GetViewedTabs;
TabsLeft:= GetTabsOfSide(CurTabs[0],true);
TabsRight:= GetTabsOfSide(CurTabs[High(CurTabs)],false);
@ -1815,19 +1849,19 @@ begin
IsInLeft:= ValueInArray(PIndex,TabsLeft);
IsInRight:= ValueInArray(PIndex,TabsRight);
{$IFDEF DEBUGTAB}
DebugLn('ScrollToTab TabInLeft=%s TabInRight=%s',[BoolStr(IsInLeft),BoolStr(IsInRight)]);
{$ENDIF}
if IsInLeft then begin
FShowFromButton := TabsLeft[0];
OrderButtons;
if IsVisible(PIndex) then Exit;
if IsVisible(PIndex) then
begin
Logger.Send('Tab is Visible');
Logger.ExitMethod(Self, 'ScrollToTab('+IntToStr(PIndex)+')');
Exit;
end;
end;
{$IFDEF DEBUGTAB} DebugLn('ScrollToTab=%d',[PIndex]); {$ENDIF}
repeat
{$IFDEF DEBUGTAB} DebugLn('Run=%d',[C]); {$ENDIF}
Logger.Watch('RepeatCount', C);
with TGradTabPage(FPageList.Items[PIndex]).TabButton do
case FTabPosition of
@ -1839,13 +1873,10 @@ begin
Inc(C);
//{$IFDEF DEBUGTAB} DebugLn('ValInAr=%s',[BoolStr(ValueInArray(PIndex,CurTabs))]); {$ENDIF}
{$IFDEF DEBUGTAB} DebugLn('IsVisible(%d)=%s',[PIndex, BoolStr(IsVisible(PIndex))]); {$ENDIF}
Logger.Watch('IsVisible', IsVisible(PIndex));
until(IsVisible(PIndex));
until({ValueInArray(PIndex,CurTabs)} IsVisible(PIndex) {OR (C=10)});
//if DoNext then MoveToNext else MoveToPrior;
{$IFDEF DEBUGTAB} DebugLn('ScrollToTab End'); {$ENDIF}
Logger.ExitMethod(Self, 'ScrollToTab('+IntToStr(PIndex)+')');
end;
procedure TGradTabPagesBar.UpdateAllButtons;
@ -1887,6 +1918,7 @@ begin
FCloseButton.OnHotBackgroundPaint := @FTabControl.StyleTabCloseButton;
FCloseButton.OwnerBackgroundDraw := true;
FCloseButton.UpdateButton;
end;
end else begin
OwnerBackgroundDraw:=false;
@ -1961,10 +1993,13 @@ end;
------------------------------------------------------------------------------}
function TGradTabPages.Get(Index: Integer): String;
begin
{$IFDEF DEBUGTAB}DebugLn('TGradTabPages.Get Index=',Index);{$ENDIF}
//Logger.Send('TGradTabPages.Get', Index);
if (Index<0) or (Index>=fPageList.Count) then
RaiseGDBException('TGradTabPages.Get Index out of bounds');
Result := TGradTabPage(fPageList[Index]).Caption;
//Logger.Send('TGradTabPages.Get', Result);
end;
{------------------------------------------------------------------------------
@ -2230,6 +2265,24 @@ begin
inherited;
end;
procedure TGradTabControl.BeginUpdate;
begin
Logger.EnterMethod(Self, 'BeginUpdate');
FIsUpdating := True;
end;
procedure TGradTabControl.EndUpdate;
begin
FIsUpdating:= False;
if FPagesBar.NeedOrderButtons then
begin
Logger.Send('OrderButtonsNeeded');
FPagesBar.OrderButtons;
end;
Logger.ExitMethod(Self, 'EndUpdate');
end;
function TGradTabControl.GetTabRect(AIndex: Integer): TRect;
begin
if (AIndex >= FPageList.Count) or (AIndex < 0) then Exit;
@ -2482,8 +2535,10 @@ procedure TGradTabControl.PageButtonMouseClick(Sender: TObject);
var
AButton : TGradTabPageButton;
begin
BeginUpdate;
AButton := TGradTabPageButton(Sender);
PageIndex:=FPageList.IndexOf(AButton.Owner);
EndUpdate;
if Assigned(FOnTabButtonClick) then
FOnTabButtonClick(Self, FPageList.IndexOf(AButton.Owner));
@ -2731,24 +2786,31 @@ end;
TGradTabControl SetCurrentPageNum(Value: Integer)
------------------------------------------------------------------------------}
procedure TGradTabControl.SetCurrentPageNum(Value: Integer);
var
Last : Integer;
begin
if (Value<0) or (Value>=fPageList.Count) then Exit;
if FPageIndex=Value then Exit;
if not Page[Value].Enabled then Exit;
if not Page[Value].TabVisible then Exit;
FPagesBar.OrderButtons;
if FPageIndex <> -1 then UnShowPage(FPageIndex);
if (Value<0) or (Value>=fPageList.Count) then Exit;
if FPageIndex=Value then Exit;
if not Page[Value].Enabled then Exit;
if not Page[Value].TabVisible then Exit;
ShowPage(Value);
Last := FPageIndex;
FPageIndex := Value;
// Set PageIndex here, that Un/FocusButton called by Un/ShowPage can
// read the current PageIndex to draw the right Style :)
FPageIndex := Value;
UpdateAllDesignerFlags;
FPagesBar.OrderButtons;
if Last <> -1 then UnShowPage(Last);
if ([csDesigning, csLoading, csDestroying] * ComponentState = [])
and Assigned(OnPageChanged) then
OnPageChanged(Self);
ShowPage(Value);
UpdateAllDesignerFlags;
if ([csDesigning, csLoading, csDestroying] * ComponentState = [])
and Assigned(OnPageChanged) then
OnPageChanged(Self);
end;
procedure TGradTabControl.SetPagesBarDragOver(const AValue: TDragOverEvent);
@ -2761,19 +2823,22 @@ end;
------------------------------------------------------------------------------}
procedure TGradTabControl.ShowPage(Index: Integer);
begin
// Focus the TabButton
FPagesBar.FocusButton(Index);
Logger.EnterMethod(Self, 'ShowPage('+IntToStr(Index)+')');
// Enable Page
with TGradTabPage(FPageList.Items[Index]) do
begin
Visible:=true;
BringToFront;
end;
// Focus the TabButton
FPagesBar.FocusButton(Index);
UpdateDesignerFlags(Index);
// Enable Page
with TGradTabPage(FPageList.Items[Index]) do
begin
Visible:=true;
BringToFront;
end;
AlignPage(TGradTabPage(FPageList.Items[Index]), GetClientRect);
UpdateDesignerFlags(Index);
AlignPage(TGradTabPage(FPageList.Items[Index]), GetClientRect);
Logger.ExitMethod(Self, 'ShowPage('+IntToStr(Index)+')');
end;
{------------------------------------------------------------------------------
@ -2781,17 +2846,21 @@ end;
------------------------------------------------------------------------------}
procedure TGradTabControl.UnShowPage(Index: Integer);
begin
// Disable Page
// Disable Page
if (Index<0) or (Index>=fPageList.Count) then Exit;
if (Index<0) or (Index>=fPageList.Count) then Exit;
// Unfocus the TabButton
FPagesBar.UnFocusButton(Index);
Logger.EnterMethod(Self, 'UnShowPage('+IntToStr(Index)+')');
UpdateDesignerFlags(Index);
// Unfocus the TabButton
FPagesBar.UnFocusButton(Index);
with TGradTabPage(FPageList.Items[Index]) do
Visible:=false;
UpdateDesignerFlags(Index);
with TGradTabPage(FPageList.Items[Index]) do
Visible:=false;
Logger.ExitMethod(Self, 'UnShowPage('+IntToStr(Index)+')');
end;
{------------------------------------------------------------------------------