GradTabControl: Added Style-Support (Standard, Vista-Like)

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@860 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
eugene1
2009-06-25 00:51:42 +00:00
parent e8729f32a8
commit 02f81dec33
8 changed files with 1058 additions and 608 deletions

View File

@ -1,7 +1,7 @@
object Form1: TForm1
Left = 243
Left = 253
Height = 492
Top = 105
Top = 145
Width = 884
Caption = 'TGradTabControl-Testsuite'
ClientHeight = 492
@ -43,12 +43,13 @@ object Form1: TForm1
ShowLeftTopScrollButton = False
ShowRightBottomScrollButton = False
Images = ImageList1
CustomDraw = False
object GradTabPage3: TGradTabPage
Left = 2
Height = 466
Top = 22
Width = 640
PageIndex = 2
PageIndex = 1
Caption = 'GradTabPage3'
TabColor = clBlue
TabTextAlignment = taLeftJustify
@ -93,10 +94,10 @@ object Form1: TForm1
end
object GradTabPage2: TGradTabPage
Left = 2
Height = 466
Height = 488
Top = 22
Width = 640
PageIndex = 1
Width = 642
PageIndex = 2
Caption = 'GradTabPage2'
ShowCloseButton = True
TabColor = clBlue

View File

@ -1,40 +1,90 @@
{ This is an automatically generated lazarus resource file }
{ Das ist eine automatisch erzeugte Lazarus-Ressourcendatei }
LazarusResources.Add('TForm1','FORMDATA',[
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#243#0#6'Height'#3#236#1#3'Top'#2'i'#5'Wid'
+'th'#3't'#3#7'Caption'#6#25'TGradTabControl-Testsuite'#12'ClientHeight'#3#236
+#1#11'ClientWidth'#3't'#3#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11'For'
+'mDestroy'#10'LCLVersion'#6#6'0.9.27'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'He'
+'ight'#3#236#1#3'Top'#2#0#5'Width'#3#134#2#5'Align'#7#8'alClient'#7'Caption'
+#6#6'Panel1'#12'ClientHeight'#3#236#1#11'ClientWidth'#3#134#2#8'TabOrder'#2#0
+#0#15'TGradTabControl'#15'GradTabControl1'#4'Left'#2#1#6'Height'#3#234#1#3'T'
+'op'#2#1#5'Width'#3#132#2#5'Align'#7#8'alClient'#10'ActivePage'#7#12'GradTab'
+'Page1'#20'OnTabButtonMouseDown'#7'!GradTabControl1TabButtonMouseDown'#18'On'
+'TabButtonMouseUp'#7#31'GradTabControl1TabButtonMouseUp'#20'OnTabButtonMouse'
+'Move'#7'!GradTabControl1TabButtonMouseMove'#21'OnTabCloseButtonClick'#7'"Gr'
+'adTabControl1TabCloseButtonClick'#10'OnDragDrop'#7#23'GradTabControl1DragDr'
+'op'#10'OnDragOver'#7#23'GradTabControl1DragOver'#11'OnMouseDown'#7#24'GradT'
+'abControl1MouseDown'#14'OnMouseWheelUp'#7#27'GradTabControl1MouseWheelUp'#16
+'OnMouseWheelDown'#7#29'GradTabControl1MouseWheelDown'#9'PageIndex'#2#0#9'Ta'
+'bHeight'#2#20#8'LongTabs'#8#9'LongWidth'#2'e'#13'OnPageChanged'#7#26'GradTa'
+'bControl1PageChanged'#23'ShowLeftTopScrollButton'#8#27'ShowRightBottomScrol'
+'lButton'#8#6'Images'#7#10'ImageList1'#0#12'TGradTabPage'#12'GradTabPage3'#4
+'Left'#2#2#6'Height'#3#210#1#3'Top'#2#22#5'Width'#3#128#2#9'PageIndex'#2#2#7
+'Caption'#6#12'GradTabPage3'#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#0
+#0#0#0#0#0#0#0#0#0'nUN'#141'pND'#166'h?5'#165#28#14#14#18#134#198#220'-k'#194
+#225#153'_'#188#221#184'U'#180#212#210'L'#169#202#232'C'#160#192#234'>'#156
+#188#213'B'#158#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0'#'#0'fNI'
+#130'Y=7pmB7pa'#134#150'Dp'#208#242#246'_'#199#235#255'S'#187#223#255'G'#176
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#253#0#6'Height'#3#236#1#3'Top'#3#145#0#5
+'Width'#3't'#3#7'Caption'#6#25'TGradTabControl-Testsuite'#12'ClientHeight'#3
+#236#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
+'Height'#3#236#1#3'Top'#2#0#5'Width'#3#134#2#5'Align'#7#8'alClient'#7'Captio'
+'n'#6#6'Panel1'#12'ClientHeight'#3#236#1#11'ClientWidth'#3#134#2#8'TabOrder'
+#2#0#0#15'TGradTabControl'#15'GradTabControl1'#4'Left'#2#1#6'Height'#3#234#1
+#3'Top'#2#1#5'Width'#3#132#2#5'Align'#7#8'alClient'#10'ActivePage'#7#12'Grad'
+'TabPage1'#20'OnTabButtonMouseDown'#7'!GradTabControl1TabButtonMouseDown'#18
+'OnTabButtonMouseUp'#7#31'GradTabControl1TabButtonMouseUp'#20'OnTabButtonMou'
+'seMove'#7'!GradTabControl1TabButtonMouseMove'#21'OnTabCloseButtonClick'#7'"'
+'GradTabControl1TabCloseButtonClick'#10'OnDragDrop'#7#23'GradTabControl1Drag'
+'Drop'#10'OnDragOver'#7#23'GradTabControl1DragOver'#11'OnMouseDown'#7#24'Gra'
+'dTabControl1MouseDown'#14'OnMouseWheelUp'#7#27'GradTabControl1MouseWheelUp'
+#16'OnMouseWheelDown'#7#29'GradTabControl1MouseWheelDown'#9'PageIndex'#2#0#9
+'TabHeight'#2#20#8'LongTabs'#8#9'LongWidth'#2'e'#13'OnPageChanged'#7#26'Grad'
+'TabControl1PageChanged'#23'ShowLeftTopScrollButton'#8#27'ShowRightBottomScr'
+'ollButton'#8#6'Images'#7#10'ImageList1'#10'CustomDraw'#8#0#12'TGradTabPage'
+#12'GradTabPage3'#4'Left'#2#2#6'Height'#3#210#1#3'Top'#2#22#5'Width'#3#128#2
+#9'PageIndex'#2#1#7'Caption'#6#12'GradTabPage3'#8'TabColor'#7#6'clBlue'#16'T'
+'abTextAlignment'#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#0#0#0#0#0#0#0#0#0#0'nUN'#141'pND'#166'h?5'#165#28#14#14#18
+#134#198#220'-k'#194#225#153'_'#188#221#184'U'#180#212#210'L'#169#202#232'C'
+#160#192#234'>'#156#188#213'B'#158#191#188'P'#168#199#159'y'#185#208';'#0#0
+'#'#0#0#0'#'#0'fNI'#130'Y=7pmB7pa'#134#150'Dp'#208#242#246'_'#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'#183#217#250#133#201#225'O'#0#0'#'#0'Q<6&nKB'
+#142'L-&kv'#187#210'ok'#210#245#255']'#186#213#255'Q'#175#205#255'R'#172#200
+#255'J'#168#199#255'E'#163#195#255'F'#159#188#255'='#153#184#255'@'#158#187
+#255'O'#181#217#255'z'#205#235#130#0#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175#193
+'m^'#187#219#252'^'#193#227#255'Z'#187#220#255'G'#176#212#255'<'#164#200#255
+'0'#153#189#255'('#144#180#255'3'#149#182#255'B'#162#196#255'T'#177#209#253
+'~'#192#210#136#0#0'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204#230'Zk'#210#246
+#255'_'#199#235#255'S'#187#223#255'G'#176#212#255'D'#164#195#255':'#154#183
+#255'('#144#180#255')'#144#181#255'4'#156#192#255'N'#182#218#255'}'#204#230
+'x'#0#0'#'#0#0#0#0#7'^?8m_8.it'#183#205'rh'#197#226#255'U'#176#205#255'N'#175
+#206#255'J'#171#205#255'C'#169#204#255'='#163#199#255'='#160#193#255'@'#161
+#193#255'I'#164#195#255'Q'#175#205#255'z'#204#233#130#0#0'#'#0#0#0#0#4'^A7'
+#138'e>3w'#133#184#196'Qi'#196#229#252'`'#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'#183#217#250#133#201#225'O'#0#0'#'#0'Q<6&nKB'#142'L-&kv'#187#210
+'ok'#210#245#255']'#186#213#255'Q'#175#205#255'R'#172#200#255'J'#168#199#255
+'E'#163#195#255'F'#159#188#255'='#153#184#255'@'#158#187#255'O'#181#217#255
+'z'#205#235#130#0#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175#193'm^'#187#219#252'^'
+#193#227#255'Z'#187#220#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('
+#144#180#255'3'#149#182#255'B'#162#196#255'T'#177#209#253'~'#192#210#136#0#0
+'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204#230'Zk'#210#246#255'_'#199#235#255
+#192#255'W'#181#213#253#135#187#204'w'#0#0'#'#0#0#0'#'#0',#'#26#29'Q2)'#138
+'p'#177#198'qj'#210#246#255'`'#199#234#255'\'#183#211#255'O'#171#199#255'B'
+#161#192#255';'#155#185#255'9'#149#176#255'8'#146#175#255'6'#156#191#255'N'
+#182#218#255'{'#206#233#129#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#255'4'#157#194#255'5'#160#198#255'@'#165#198#255'O'#172#200#255'~'
+#202#228#134#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#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'dF='#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'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
+#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'
+'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
+#0#0#0#0#0#0#0#0#0#0'nUN'#141'pND'#166'h?5'#165#28#14#14#18#134#198#220'-k'
+#194#225#153'_'#188#221#184'U'#180#212#210'L'#169#202#232'C'#160#192#234'>'
+#156#188#213'B'#158#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0'#'#0'f'
+'NI'#130'Y=7pmB7pa'#134#150'Dp'#208#242#246'_'#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'#183#217#250#133#201#225'O'#0#0'#'#0'Q<6&nKB'#142'L-&kv'#187
+#210'ok'#210#245#255']'#186#213#255'Q'#175#205#255'R'#172#200#255'J'#168#199
+#255'E'#163#195#255'F'#159#188#255'='#153#184#255'@'#158#187#255'O'#181#217
+#255'z'#205#235#130#0#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175#193'm^'#187#219#252
+'^'#193#227#255'Z'#187#220#255'G'#176#212#255'<'#164#200#255'0'#153#189#255
+'('#144#180#255'3'#149#182#255'B'#162#196#255'T'#177#209#253'~'#192#210#136#0
+#0'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204#230'Zk'#210#246#255'_'#199#235#255
+'S'#187#223#255'G'#176#212#255'D'#164#195#255':'#154#183#255'('#144#180#255
+')'#144#181#255'4'#156#192#255'N'#182#218#255'}'#204#230'x'#0#0'#'#0#0#0#0#7
+'^?8m_8.it'#183#205'rh'#197#226#255'U'#176#205#255'N'#175#206#255'J'#171#205
@ -65,223 +115,174 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#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
+#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#210#1#3'Top'#2#22
+#5'Width'#3#128#2#9'PageIndex'#2#1#7'Caption'#6#12'GradTabPage2'#15'ShowClos'
+'eButton'#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#0#0#0#0#0#0#0#0#0#0
+'nUN'#141'pND'#166'h?5'#165#28#14#14#18#134#198#220'-k'#194#225#153'_'#188
+#221#184'U'#180#212#210'L'#169#202#232'C'#160#192#234'>'#156#188#213'B'#158
+#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0'#'#0'fNI'#130'Y=7pmB7pa'
+#134#150'Dp'#208#242#246'_'#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'#183
+#217#250#133#201#225'O'#0#0'#'#0'Q<6&nKB'#142'L-&kv'#187#210'ok'#210#245#255
+']'#186#213#255'Q'#175#205#255'R'#172#200#255'J'#168#199#255'E'#163#195#255
+'F'#159#188#255'='#153#184#255'@'#158#187#255'O'#181#217#255'z'#205#235#130#0
+#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175#193'm^'#187#219#252'^'#193#227#255'Z'#187
+#220#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255'3'#149
+#182#255'B'#162#196#255'T'#177#209#253'~'#192#210#136#0#0'#'#0#0#0'#'#0'iH>'
+#131'_90'#142#133#204#230'Zk'#210#246#255'_'#199#235#255'S'#187#223#255'G'
+#176#212#255'D'#164#195#255':'#154#183#255'('#144#180#255')'#144#181#255'4'
+#156#192#255'N'#182#218#255'}'#204#230'x'#0#0'#'#0#0#0#0#7'^?8m_8.it'#183#205
+'rh'#197#226#255'U'#176#205#255'N'#175#206#255'J'#171#205#255'C'#169#204#255
+'='#163#199#255'='#160#193#255'@'#161#193#255'I'#164#195#255'Q'#175#205#255
+'z'#204#233#130#0#0'#'#0#0#0#0#4'^A7'#138'e>3w'#133#184#196'Qi'#196#229#252
+'`'#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'W'#181#213#253#135#187#204'w'#0
+#0'#'#0#0#0'#'#0',#'#26#29'Q2)'#138'p'#177#198'qj'#210#246#255'`'#199#234#255
+'\'#183#211#255'O'#171#199#255'B'#161#192#255';'#155#185#255'9'#149#176#255
+'8'#146#175#255'6'#156#191#255'N'#182#218#255'{'#206#233#129#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#255'4'#157#194#255'5'#160#198#255
+'@'#165#198#255'O'#172#200#255'~'#202#228#134#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#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'dF='#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'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#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'Ta'
+'bShowGlyph'#9#15'TabButtonLayout'#7#11'blGlyphLeft'#0#0#12'TGradTabPage'#12
+'GradTabPage1'#4'Left'#2#2#6'Height'#3#210#1#3'Top'#2#22#5'Width'#3#128#2#9
+'PageIndex'#2#0#7'Caption'#6#9'Some Memo'#15'ShowCloseButton'#9#5'Color'#7#10
+'clGrayText'#8'TabColor'#7#7'clGreen'#16'TabTextAlignment'#7#13'taLeftJustif'
+'y'#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#0#0#0#0#0#0#0#0#0
+#0'nUN'#141'pND'#166'h?5'#165#28#14#14#18#134#198#220'-k'#194#225#153'_'#188
+#221#184'U'#180#212#210'L'#169#202#232'C'#160#192#234'>'#156#188#213'B'#158
+#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0'#'#0'fNI'#130'Y=7pmB7pa'
+#134#150'Dp'#208#242#246'_'#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'#183
+#217#250#133#201#225'O'#0#0'#'#0'Q<6&nKB'#142'L-&kv'#187#210'ok'#210#245#255
,']'#186#213#255'Q'#175#205#255'R'#172#200#255'J'#168#199#255'E'#163#195#255
+'F'#159#188#255'='#153#184#255'@'#158#187#255'O'#181#217#255'z'#205#235#130#0
+#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175#193'm^'#187#219#252'^'#193#227#255'Z'#187
+#220#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255'3'#149
+#182#255'B'#162#196#255'T'#177#209#253'~'#192#210#136#0#0'#'#0#0#0'#'#0'iH>'
+#131'_90'#142#133#204#230'Zk'#210#246#255'_'#199#235#255'S'#187#223#255'G'
+#176#212#255'D'#164#195#255':'#154#183#255'('#144#180#255')'#144#181#255'4'
+#156#192#255'N'#182#218#255'}'#204#230'x'#0#0'#'#0#0#0#0#7'^?8m_8.it'#183#205
+'rh'#197#226#255'U'#176#205#255'N'#175#206#255'J'#171#205#255'C'#169#204#255
+'='#163#199#255'='#160#193#255'@'#161#193#255'I'#164#195#255'Q'#175#205#255
+'z'#204#233#130#0#0'#'#0#0#0#0#4'^A7'#138'e>3w'#133#184#196'Qi'#196#229#252
+'`'#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'W'#181#213#253#135#187#204'w'#0
+#0'#'#0#0#0'#'#0',#'#26#29'Q2)'#138'p'#177#198'qj'#210#246#255'`'#199#234#255
+'\'#183#211#255'O'#171#199#255'B'#161#192#255';'#155#185#255'9'#149#176#255
+'8'#146#175#255'6'#156#191#255'N'#182#218#255'{'#206#233#129#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#255'4'#157#194#255'5'#160#198#255
+'@'#165#198#255'O'#172#200#255'~'#202#228#134#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#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'dF='#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'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#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'Ta'
+'bShowGlyph'#9#15'TabButtonLayout'#7#11'blGlyphLeft'#0#5'TMemo'#5'Memo1'#4'L'
+'eft'#3'8'#1#6'Height'#3#210#1#3'Top'#2#0#5'Width'#3'H'#1#5'Align'#7#7'alRig'
+'ht'#13'Lines.Strings'#1#6#9'Some Memo'#6#7'alRight'#0#8'TabOrder'#2#0#0#0#0
+#0#0#6'TPanel'#6'Panel2'#4'Left'#3#134#2#6'Height'#3#236#1#3'Top'#2#0#5'Widt'
+'h'#3#238#0#5'Align'#7#7'alRight'#12'ClientHeight'#3#236#1#11'ClientWidth'#3
+#238#0#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2#16#6'Height'#2#16#3'T'
+'op'#3#160#0#5'Width'#2'9'#7'Caption'#6#9'TabHeight'#11'ParentColor'#8#0#0#9
+'TComboBox'#9'ComboBox1'#4'Left'#2#16#6'Height'#2#23#3'Top'#2#16#5'Width'#2
+'d'#10'ItemHeight'#2#15#8'OnChange'#7#15'ComboBox1Change'#5'Style'#7#14'csDr'
+'opDownList'#8'TabOrder'#2#0#0#0#11'TRadioGroup'#11'RadioGroup1'#4'Left'#3
+#128#0#6'Height'#2'q'#3'Top'#2#16#5'Width'#2'd'#8'AutoFill'#9#7'Caption'#6#12
+'Tab Position'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottom'
+'Spacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResiz'
+'e'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildS'
+'izing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'
+#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBot'
+'tom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2'_'#11'ClientWid'
+'th'#2'`'#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'TabOrder'#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'CheckBox1Click'#8
+'TabOrder'#2#2#0#0#11'TGradButton'#10'NewPageBtn'#4'Left'#2#16#6'Height'#2#25
+#3'Top'#2'0'#5'Width'#2'd'#7'Caption'#6#8'New Page'#10'Font.Color'#7#7'clWhi'
+'te'#7'OnClick'#7#15'NewPageBtnClick'#8'TabOrder'#2#3#7'TabStop'#9#11'Normal'
+'Blend'#5#0#0#0#0#0#0#0#128#254'?'#9'OverBlend'#5'5^'#186'I'#12#2'+'#167#254
+'?'#9'BaseColor'#7#6'clBlue'#5'Color'#7#6'clBlue'#16'NormalBlendColor'#7#7'c'
,'lWhite'#14'OverBlendColor'#7#8'clSilver'#15'BackgroundColor'#7#9'clBtnFace'
+#15'ShowFocusBorder'#9#9'ShowGlyph'#8#20'GlyphBackgroundColor'#7#7'clWhite'
+#10'ClickColor'#7#6'clBlue'#19'OwnerBackgroundDraw'#8#22'AutoWidthBorderSpac'
+'ing'#2#15#23'AutoHeightBorderSpacing'#2#15#0#0#11'TGradButton'#9'DeleteBtn'
+#4'Left'#2#16#6'Height'#2#25#3'Top'#2'P'#5'Width'#2'd'#7'Caption'#6#6'Delete'
+#10'Font.Color'#7#7'clWhite'#7'OnClick'#7#14'DeleteBtnClick'#8'TabOrder'#2#4
+#7'TabStop'#9#11'NormalBlend'#5#0#0#0#0#0#0#0#128#254'?'#9'OverBlend'#5'5^'
+#186'I'#12#2'+'#167#254'?'#9'BaseColor'#7#6'clBlue'#5'Color'#7#6'clBlue'#16
+'NormalBlendColor'#7#7'clWhite'#14'OverBlendColor'#7#8'clSilver'#15'Backgrou'
+'ndColor'#7#9'clBtnFace'#15'ShowFocusBorder'#9#9'ShowGlyph'#8#20'GlyphBackgr'
+'oundColor'#7#7'clWhite'#10'ClickColor'#7#6'clBlue'#19'OwnerBackgroundDraw'#8
+#22'AutoWidthBorderSpacing'#2#15#23'AutoHeightBorderSpacing'#2#15#0#0#9'TSpi'
+'nEdit'#9'SpinEdit2'#4'Left'#2#16#6'Height'#2#25#3'Top'#3#176#0#5'Width'#2'd'
+#13'OnEditingDone'#7#20'SpinEdit2EditingDone'#8'TabOrder'#2#5#0#0#5'TEdit'#5
+'Edit1'#4'Left'#2#16#6'Height'#2#25#3'Top'#3#136#0#5'Width'#2'H'#8'TabOrder'
+#2#6#4'Text'#6#5'Edit1'#0#0#11'TGradButton'#11'GradButton1'#4'Left'#2'Z'#6'H'
+'eight'#2#19#3'Top'#3#136#0#5'Width'#2#26#7'Caption'#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'OverBlend'#5'5^'#186'I'#12#2'+'
+#167#254'?'#9'BaseColor'#7#6'clBlue'#5'Color'#7#6'clBlue'#16'NormalBlendColo'
+'r'#7#7'clWhite'#14'OverBlendColor'#7#8'clSilver'#15'BackgroundColor'#7#9'cl'
+'BtnFace'#15'ShowFocusBorder'#9#9'ShowGlyph'#8#20'GlyphBackgroundColor'#7#7
+'clWhite'#10'ClickColor'#7#6'clBlue'#19'OwnerBackgroundDraw'#8#22'AutoWidthB'
+'orderSpacing'#2#15#23'AutoHeightBorderSpacing'#2#15#0#0#11'TCheckGroup'#11
+'CheckGroup1'#4'Left'#3#128#0#6'Height'#2'i'#3'Top'#3#143#0#5'Width'#2'd'#8
+'AutoFill'#9#7'Caption'#6#14'Scroll Buttons'#28'ChildSizing.LeftRightSpacing'
+#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7
+#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomoge'
+'nousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'C'
+'hildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29
+'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#13'Items'
+'.Strings'#1#6#4'Auto'#6#7'LeftTop'#6#11'RightBottom'#0#7'OnClick'#7#16'Chec'
+'kGroup1Click'#11'OnItemClick'#7#20'CheckGroup1ItemClick'#8'TabOrder'#2#8#4
+'Data'#10#7#0#0#0#3#0#0#0#3#2#2#0#0#11'TRadioGroup'#11'RadioGroup2'#4'Left'#3
+#130#0#6'Height'#2'i'#3'Top'#3#0#1#5'Width'#2'd'#8'AutoFill'#9#7'Caption'#6
+#17'Tab Button Layout'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.T'
+'opBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousCh'
+'ildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28
+'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVer'
+'tical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenT'
+'opToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2'W'#11'Cl'
+'ientWidth'#2'`'#9'ItemIndex'#2#0#13'Items.Strings'#1#6#11'blGlyphLeft'#6#13
+'blGlyphBottom'#6#12'blGlyphRight'#6#10'blGlyphTop'#0#7'OnClick'#7#16'RadioG'
+'roup2Click'#8'TabOrder'#2#9#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''#18#0#7'Cap'
+'tion'#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#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#187#255'@'#164#199#255'P'
+#175#207#253'|'#195#215#135#0#0'#'#0#0#0'#'#0'dF='#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#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#255'4'#157#194#255'5'#160
+#198#255'@'#165#198#255'O'#172#200#255'~'#202#228#134#0#0'#'#0#0#0'#'#0',#'
+#26#29'Q2)'#138'p'#177#198'qj'#210#246#255'`'#199#234#255'\'#183#211#255'O'
+#171#199#255'B'#161#192#255';'#155#185#255'9'#149#176#255'8'#146#175#255'6'
+#156#191#255'N'#182#218#255'{'#206#233#129#0#0'#'#0#0#0#0#4'^A7'#138'e>3w'
+#133#184#196'Qi'#196#229#252'`'#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'W'
+#181#213#253#135#187#204'w'#0#0'#'#0#0#0#0#7'^?8m_8.it'#183#205'rh'#197#226
+#255'U'#176#205#255'N'#175#206#255'J'#171#205#255'C'#169#204#255'='#163#199
+#255'='#160#193#255'@'#161#193#255'I'#164#195#255'Q'#175#205#255'z'#204#233
+#130#0#0'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204#230'Zk'#210#246#255'_'#199
+#235#255'S'#187#223#255'G'#176#212#255'D'#164#195#255':'#154#183#255'('#144
+#180#255')'#144#181#255'4'#156#192#255'N'#182#218#255'}'#204#230'x'#0#0'#'#0
+#0#0#0#6'X>5|`:0'#181'{'#175#193'm^'#187#219#252'^'#193#227#255'Z'#187#220
+#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255'3'#149#182
+#255'B'#162#196#255'T'#177#209#253'~'#192#210#136#0#0'#'#0'Q<6&nKB'#142'L-&k'
+'v'#187#210'ok'#210#245#255']'#186#213#255'Q'#175#205#255'R'#172#200#255'J'
+#168#199#255'E'#163#195#255'F'#159#188#255'='#153#184#255'@'#158#187#255'O'
+#181#217#255'z'#205#235#130#0#0'#'#0'fNI'#130'Y=7pmB7pa'#134#150'Dp'#208#242
+#246'_'#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'#183#217#250#133#201#225
+'O'#0#0'#'#0'nUN'#141'pND'#166'h?5'#165#28#14#14#18#134#198#220'-k'#194#225
+#153'_'#188#221#184'U'#180#212#210'L'#169#202#232'C'#160#192#234'>'#156#188
+#213'B'#158#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0'#'#0#0#0#0
+#12'TGradTabPage'#12'GradTabPage1'#4'Left'#2#2#6'Height'#3#210#1#3'Top'#2#22
+#5'Width'#3#128#2#9'PageIndex'#2#0#7'Caption'#6#9'Some Memo'#15'ShowCloseBut'
+'ton'#9#5'Color'#7#10'clGrayText'#8'TabColor'#7#7'clGreen'#16'TabTextAlignme'
+'nt'#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#0#0#0#0#0#0#0#0#0#0'nUN'#141'pND'#166'h?5'#165#28#14#14#18#134#198#220
+'-k'#194#225#153'_'#188#221#184'U'#180#212#210'L'#169#202#232'C'#160#192#234
+'>'#156#188#213'B'#158#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0'#'#0
+'fNI'#130'Y=7pmB7pa'#134#150'Dp'#208#242#246'_'#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'#183#217#250#133#201#225'O'#0#0'#'#0'Q<6&nKB'#142'L-&kv'#187
,#210'ok'#210#245#255']'#186#213#255'Q'#175#205#255'R'#172#200#255'J'#168#199
+#255'E'#163#195#255'F'#159#188#255'='#153#184#255'@'#158#187#255'O'#181#217
+#255'z'#205#235#130#0#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175#193'm^'#187#219#252
+'^'#193#227#255'Z'#187#220#255'G'#176#212#255'<'#164#200#255'0'#153#189#255
+'('#144#180#255'3'#149#182#255'B'#162#196#255'T'#177#209#253'~'#192#210#136#0
+#0'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204#230'Zk'#210#246#255'_'#199#235#255
+'S'#187#223#255'G'#176#212#255'D'#164#195#255':'#154#183#255'('#144#180#255
+')'#144#181#255'4'#156#192#255'N'#182#218#255'}'#204#230'x'#0#0'#'#0#0#0#0#7
+'^?8m_8.it'#183#205'rh'#197#226#255'U'#176#205#255'N'#175#206#255'J'#171#205
+#255'C'#169#204#255'='#163#199#255'='#160#193#255'@'#161#193#255'I'#164#195
+#255'Q'#175#205#255'z'#204#233#130#0#0'#'#0#0#0#0#4'^A7'#138'e>3w'#133#184
+#196'Qi'#196#229#252'`'#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'W'#181#213
+#253#135#187#204'w'#0#0'#'#0#0#0'#'#0',#'#26#29'Q2)'#138'p'#177#198'qj'#210
+#246#255'`'#199#234#255'\'#183#211#255'O'#171#199#255'B'#161#192#255';'#155
+#185#255'9'#149#176#255'8'#146#175#255'6'#156#191#255'N'#182#218#255'{'#206
+#233#129#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#255'4'#157
+#194#255'5'#160#198#255'@'#165#198#255'O'#172#200#255'~'#202#228#134#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#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'dF='
+#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'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#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#5
+'TMemo'#5'Memo1'#4'Left'#3'8'#1#6'Height'#3#210#1#3'Top'#2#0#5'Width'#3'H'#1
+#5'Align'#7#7'alRight'#13'Lines.Strings'#1#6#9'Some Memo'#6#7'alRight'#0#8'T'
+'abOrder'#2#0#0#0#0#0#0#6'TPanel'#6'Panel2'#4'Left'#3#134#2#6'Height'#3#236#1
+#3'Top'#2#0#5'Width'#3#238#0#5'Align'#7#7'alRight'#12'ClientHeight'#3#236#1
+#11'ClientWidth'#3#238#0#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2#16#6
+'Height'#2#16#3'Top'#3#160#0#5'Width'#2'9'#7'Caption'#6#9'TabHeight'#11'Pare'
+'ntColor'#8#0#0#9'TComboBox'#9'ComboBox1'#4'Left'#2#16#6'Height'#2#23#3'Top'
+#2#16#5'Width'#2'd'#10'ItemHeight'#2#15#8'OnChange'#7#15'ComboBox1Change'#5
+'Style'#7#14'csDropDownList'#8'TabOrder'#2#0#0#0#11'TRadioGroup'#11'RadioGro'
+'up1'#4'Left'#3#128#0#6'Height'#2'q'#3'Top'#2#16#5'Width'#2'd'#8'AutoFill'#9
+#7'Caption'#6#12'Tab Position'#28'ChildSizing.LeftRightSpacing'#2#6#28'Child'
+'Sizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomo'
+'genousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildR'
+'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
+'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
+'CheckBox1Click'#8'TabOrder'#2#2#0#0#11'TGradButton'#10'NewPageBtn'#4'Left'#2
+#16#6'Height'#2#25#3'Top'#2'0'#5'Width'#2'd'#7'Caption'#6#8'New Page'#10'Fon'
+'t.Color'#7#7'clWhite'#7'OnClick'#7#15'NewPageBtnClick'#8'TabOrder'#2#3#7'Ta'
+'bStop'#9#11'NormalBlend'#5#0#0#0#0#0#0#0#128#254'?'#9'OverBlend'#5'5^'#186
+'I'#12#2'+'#167#254'?'#9'BaseColor'#7#6'clBlue'#5'Color'#7#6'clBlue'#16'Norm'
,'alBlendColor'#7#7'clWhite'#14'OverBlendColor'#7#8'clSilver'#15'BackgroundCo'
+'lor'#7#9'clBtnFace'#15'ShowFocusBorder'#9#9'ShowGlyph'#8#20'GlyphBackground'
+'Color'#7#7'clWhite'#10'ClickColor'#7#6'clBlue'#19'OwnerBackgroundDraw'#8#22
+'AutoWidthBorderSpacing'#2#15#23'AutoHeightBorderSpacing'#2#15#0#0#11'TGradB'
+'utton'#9'DeleteBtn'#4'Left'#2#16#6'Height'#2#25#3'Top'#2'P'#5'Width'#2'd'#7
+'Caption'#6#6'Delete'#10'Font.Color'#7#7'clWhite'#7'OnClick'#7#14'DeleteBtnC'
+'lick'#8'TabOrder'#2#4#7'TabStop'#9#11'NormalBlend'#5#0#0#0#0#0#0#0#128#254
+'?'#9'OverBlend'#5'5^'#186'I'#12#2'+'#167#254'?'#9'BaseColor'#7#6'clBlue'#5
+'Color'#7#6'clBlue'#16'NormalBlendColor'#7#7'clWhite'#14'OverBlendColor'#7#8
+'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'
+'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
+#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'
+'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
+#6'clBlue'#16'NormalBlendColor'#7#7'clWhite'#14'OverBlendColor'#7#8'clSilver'
+#15'BackgroundColor'#7#9'clBtnFace'#15'ShowFocusBorder'#9#9'ShowGlyph'#8#20
+'GlyphBackgroundColor'#7#7'clWhite'#10'ClickColor'#7#6'clBlue'#19'OwnerBackg'
+'roundDraw'#8#22'AutoWidthBorderSpacing'#2#15#23'AutoHeightBorderSpacing'#2
+#15#0#0#11'TCheckGroup'#11'CheckGroup1'#4'Left'#3#128#0#6'Height'#2'i'#3'Top'
+#3#143#0#5'Width'#2'd'#8'AutoFill'#9#7'Caption'#6#14'Scroll Buttons'#28'Chil'
+'dSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'Child'
+'Sizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.Enl'
+'argeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkHorizonta'
+'l'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScaleChilds'
+#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.C'
+'ontrolsPerLine'#2#1#13'Items.Strings'#1#6#4'Auto'#6#7'LeftTop'#6#11'RightBo'
+'ttom'#0#7'OnClick'#7#16'CheckGroup1Click'#11'OnItemClick'#7#20'CheckGroup1I'
+'temClick'#8'TabOrder'#2#8#4'Data'#10#7#0#0#0#3#0#0#0#3#2#2#0#0#11'TRadioGro'
+'up'#11'RadioGroup2'#4'Left'#3#130#0#6'Height'#2'i'#3'Top'#3#0#1#5'Width'#2
+'d'#8'AutoFill'#9#7'Caption'#6#17'Tab Button Layout'#28'ChildSizing.LeftRigh'
+'tSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHo'
+'rizontal'#7#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7
+#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'
+'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
+#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
+#187#255'@'#164#199#255'P'#175#207#253'|'#195#215#135#0#0'#'#0#0#0'#'#0'dF='
+#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
+#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
+#255'4'#157#194#255'5'#160#198#255'@'#165#198#255'O'#172#200#255'~'#202#228
+#134#0#0'#'#0#0#0'#'#0',#'#26#29'Q2)'#138'p'#177#198'qj'#210#246#255'`'#199
+#234#255'\'#183#211#255'O'#171#199#255'B'#161#192#255';'#155#185#255'9'#149
+#176#255'8'#146#175#255'6'#156#191#255'N'#182#218#255'{'#206#233#129#0#0'#'#0
+#0#0#0#4'^A7'#138'e>3w'#133#184#196'Qi'#196#229#252'`'#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'W'#181#213#253#135#187#204'w'#0#0'#'#0#0#0#0#7'^?8m_8.it'
+#183#205'rh'#197#226#255'U'#176#205#255'N'#175#206#255'J'#171#205#255'C'#169
+#204#255'='#163#199#255'='#160#193#255'@'#161#193#255'I'#164#195#255'Q'#175
+#205#255'z'#204#233#130#0#0'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204#230'Zk'
+#210#246#255'_'#199#235#255'S'#187#223#255'G'#176#212#255'D'#164#195#255':'
+#154#183#255'('#144#180#255')'#144#181#255'4'#156#192#255'N'#182#218#255'}'
+#204#230'x'#0#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175#193'm^'#187#219#252'^'#193
+#227#255'Z'#187#220#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144
+#180#255'3'#149#182#255'B'#162#196#255'T'#177#209#253'~'#192#210#136#0#0'#'#0
+'Q<6&nKB'#142'L-&kv'#187#210'ok'#210#245#255']'#186#213#255'Q'#175#205#255'R'
+#172#200#255'J'#168#199#255'E'#163#195#255'F'#159#188#255'='#153#184#255'@'
+#158#187#255'O'#181#217#255'z'#205#235#130#0#0'#'#0'fNI'#130'Y=7pmB7pa'#134
+#150'Dp'#208#242#246'_'#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'#183#217
+#250#133#201#225'O'#0#0'#'#0'nUN'#141'pND'#166'h?5'#165#28#14#14#18#134#198
+#220'-k'#194#225#153'_'#188#221#184'U'#180#212#210'L'#169#202#232'C'#160#192
+#234'>'#156#188#213'B'#158#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0
+'#'#0#0#0#0
]);

View File

@ -84,10 +84,14 @@ var
implementation
uses
gradtabstyle;
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
GradTabControl1.Style :=TGradTabVistaStyle.Create;
GradTabControl1.Align:=alClient;
GradTabControl1.TabPosition:=tpTop;
SpinEdit2.Value:=GradTabControl1.TabHeight;

View File

@ -16,7 +16,7 @@
<VersionInfo>
<UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/>
<CurrentBuildNr Value="1108"/>
<CurrentBuildNr Value="1135"/>
<ProjectVersion Value="0.0.0.0"/>
</VersionInfo>
<PublishOptions>

View File

@ -25,7 +25,7 @@
</Other>
</CompilerOptions>
<Version Minor="1"/>
<Files Count="2">
<Files Count="3">
<Item1>
<Filename Value="..\src\ugradtabcontrol.pas"/>
<HasRegisterProc Value="True"/>
@ -35,6 +35,10 @@
<Filename Value="..\src\gradtabcontroleditor.pas"/>
<UnitName Value="gradtabcontroleditor"/>
</Item2>
<Item3>
<Filename Value="..\src\gradtabstyle.pas"/>
<UnitName Value="gradtabstyle"/>
</Item3>
</Files>
<Type Value="RunAndDesignTime"/>
<RequiredPkgs Count="4">

View File

@ -8,7 +8,7 @@ unit gradtabcontrol;
interface
uses
ugradtabcontrol, gradtabcontroleditor, LazarusPackageIntf;
ugradtabcontrol, gradtabcontroleditor, gradtabstyle, LazarusPackageIntf;
implementation

View File

@ -0,0 +1,322 @@
unit gradtabstyle;
{$mode objfpc}{$H+}
{-------------------------------------
Style-Class for TGradTabControl
--------------------------------------}
interface
uses
Classes, SysUtils, Controls, Graphics, Buttons, ExtCtrls, ugradbtn;
type
TStylePaintEvent = procedure(Sender: TCustomControl; AIndex: Integer;
Button: TGradButton; TargetCanvas: TCanvas; R: TRect;
BState : TButtonState) of object;
{ TGradTabStyleBase }
TStyleBaseOptions = set of (sbTabButton, sbLeftRightButton, sbBorderButton, sbCloseButton);
TGradTabStyleBase = class
private
function GetHasCloseButtonPaint: Boolean;
function GetHasTabButtonPaint: Boolean;
function GetHasLeftRightButtonPaint: Boolean;
function GetHasBorderButtonPaint: Boolean;
protected
FTheTabControl: TCustomControl;
FOptions : TStyleBaseOptions;
public
constructor Create; virtual;
procedure TabControl(Sender: TCustomControl;
TargetCanvas: TCanvas); virtual; abstract;
procedure TabButton(Sender: TCustomControl; AIndex: Integer;
Button: TGradButton; TargetCanvas: TCanvas; R: TRect; BState : TButtonState); virtual; abstract;
procedure TabCloseButton(Sender: TCustomControl; AIndex: Integer;
Button: TGradButton; TargetCanvas: TCanvas; R: TRect; BState : TButtonState); virtual; abstract;
procedure TabButtonBorder(Sender: TCustomControl; AIndex: Integer;
Button: TGradButton; TargetCanvas: TCanvas; R: TRect; BState : TButtonState); virtual; abstract;
procedure TabLeftRightButton(Sender: TGradButton; TargetCanvas: TCanvas; R: TRect; BState : TButtonState); virtual; abstract;
procedure PrepareButton(Button: TGradButton); virtual;
property TheTabControl : TCustomControl read FTheTabControl write FTheTabControl;
property HasTabButtonPaint : Boolean read GetHasTabButtonPaint;
property HasLeftRightButtonPaint : Boolean read GetHasLeftRightButtonPaint;
property HasBorderButtonPaint : Boolean read GetHasBorderButtonPaint;
property HasCloseButtonPaint : Boolean read GetHasCloseButtonPaint;
end;
{ TGradTabStandardStyle }
TGradTabStandardStyle = class(TGradTabStyleBase)
public
procedure TabControl(Sender: TCustomControl; TargetCanvas: TCanvas);
override;
end;
{ TGradTabVistaStyle }
TButtonVistaStyle = record
BorderColor : TColor;
InnerBorderColor : TColor;
TopStartColor : TColor;
TopStopColor : TColor;
BottomStartColor : TColor;
BottomStopColor : TColor;
end;
TGradTabVistaStyle = class(TGradTabStyleBase)
private
Normal : TButtonVistaStyle;
Hover : TButtonVistaStyle;
ActiveButton : TButtonVistaStyle;
public
constructor Create; override;
procedure TabControl(Sender: TCustomControl; TargetCanvas: TCanvas);
override;
procedure TabButton(Sender: TCustomControl; AIndex: Integer;
Button: TGradButton; TargetCanvas: TCanvas; R: TRect; BState : TButtonState); override;
procedure TabCloseButton(Sender: TCustomControl; AIndex: Integer;
Button: TGradButton; TargetCanvas: TCanvas; R: TRect; BState: TButtonState); override;
procedure TabButtonBorder(Sender: TCustomControl; AIndex: Integer;
Button: TGradButton; TargetCanvas: TCanvas; R: TRect; BState : TButtonState); override;
procedure PrepareButton(Button: TGradButton); override;
end;
implementation
uses
ugradtabcontrol, LCLProc;
{ TGradTabStyleBase }
function TGradTabStyleBase.GetHasCloseButtonPaint: Boolean;
begin
Result := sbCloseButton in FOptions;
end;
function TGradTabStyleBase.GetHasTabButtonPaint: Boolean;
begin
Result := sbTabButton in FOptions;
end;
function TGradTabStyleBase.GetHasLeftRightButtonPaint: Boolean;
begin
Result := sbLeftRightButton in FOptions;
end;
function TGradTabStyleBase.GetHasBorderButtonPaint: Boolean;
begin
Result := sbBorderButton in FOptions;
end;
constructor TGradTabStyleBase.Create;
begin
FOptions:= [];
end;
procedure TGradTabStyleBase.PrepareButton(Button: TGradButton);
begin
// nothing
end;
{ TGradTabStandardStyle }
procedure TGradTabStandardStyle.TabControl(Sender: TCustomControl;
TargetCanvas: TCanvas);
var
AClientRect : TRect;
begin
TargetCanvas.Brush.Color:=Sender.Color;
TargetCanvas.FillRect(0,0,Sender.Width, Sender.Height);
TargetCanvas.Pen.Color:=clBlack;
AClientRect := (Sender as TGradTabControl).GetClientRect;
TargetCanvas.Rectangle(AClientRect.Left-2, AClientRect.Top-2,
AClientRect.Right+2, AClientRect.Bottom+2);
end;
{ TGradTabVistaStyle }
constructor TGradTabVistaStyle.Create;
begin
inherited Create;
FOptions:=[sbTabButton, sbBorderButton, sbCloseButton];
with Normal do
begin
BorderColor:=TColor($8b8c90);
InnerBorderColor:= TColor($fbfcff);
TopStartColor := TColor($f2f2f2);
TopStopColor := TColor($ebebeb);
BottomStartColor := TColor($dddddb);
BottomStopColor := TColor($cfcfcf);
end;
with Hover do
begin
BorderColor:=RGBToColor(85, 121, 145);
InnerBorderColor:= RGBToColor(224, 255, 255);
TopStartColor := RGBToColor(233, 246, 254);
TopStopColor := RGBToColor(219, 238, 252);
BottomStartColor := RGBToColor(190, 231, 253);
BottomStopColor := RGBToColor(167, 217, 244);
end;
with ActiveButton do
begin
BorderColor:=TColor($8b8c91);
InnerBorderColor:= TColor($FFFFFF);
TopStartColor := TColor($FFFFFF);
TopStopColor := TColor($FFFFFF);
BottomStartColor := TColor($FFFFFF);
BottomStopColor := TColor($FFFFFF);
end;
end;
procedure TGradTabVistaStyle.TabControl(Sender: TCustomControl;
TargetCanvas: TCanvas);
var
AClientRect : TRect;
begin
TargetCanvas.Brush.Color:=clWhite;
TargetCanvas.FillRect(0,0,Sender.Width, Sender.Height);
TargetCanvas.Pen.Color:=Normal.BorderColor;
AClientRect := (Sender as TGradTabControl).GetClientRect;
TargetCanvas.Rectangle(AClientRect.Left-2, AClientRect.Top-2,
AClientRect.Right+2, AClientRect.Bottom+2);
end;
procedure TGradTabVistaStyle.TabButton(Sender: TCustomControl; AIndex: Integer;
Button: TGradButton; TargetCanvas: TCanvas; R: TRect; BState : TButtonState);
var
ColorSet: TButtonVistaStyle;
UpperRect, LowerRect : TRect;
FGradTabControl : TGradTabControl;
FGradientDirection : TGradientDirection;
begin
FGradTabControl := Sender as TGradTabControl;
if AIndex = FGradTabControl.PageIndex then
BState := bsDown;
case BState of
bsDown: ColorSet := ActiveButton;
bsHot: ColorSet := Hover;
else ColorSet := Normal;
end;
UpperRect := R;
UpperRect.Bottom:= UpperRect.Bottom div 2;
LowerRect := R;
LowerRect.Top := UpperRect.Bottom;
case FGradTabControl.TabPosition of
tpTop, tpBottom: FGradientDirection := gdVertical;
tpLeft, tpRight:
if FGradTabControl.LongTabs then
FGradientDirection := gdVertical
else
FGradientDirection := gdHorizontal;
end;
with TargetCanvas do
begin
GradientFill(UpperRect, ColorSet.TopStartColor,
ColorSet.TopStopColor, FGradientDirection);
GradientFill(LowerRect, ColorSet.BottomStartColor,
ColorSet.BottomStopColor, FGradientDirection);
end;
end;
procedure TGradTabVistaStyle.TabCloseButton(Sender: TCustomControl;
AIndex: Integer; Button: TGradButton; TargetCanvas: TCanvas; R: TRect;
BState: TButtonState);
begin
TabButton(Sender, AIndex, Button, TargetCanvas, R, BState);
end;
procedure TGradTabVistaStyle.TabButtonBorder(Sender: TCustomControl; AIndex: Integer;
Button: TGradButton; TargetCanvas: TCanvas; R: TRect; BState : TButtonState);
var
ColorSet: TButtonVistaStyle;
begin
//DebugLn('Border R: ',DbgS(R));
case BState of
bsDown: ColorSet := ActiveButton;
bsHot: ColorSet := Hover;
else ColorSet := Normal;
end;
with Button do
begin
//Top
if (bsTopLine in BorderSides) then
begin
TargetCanvas.Pen.Color:=ColorSet.BorderColor;
TargetCanvas.Line(R.Left,0,R.Right,0);
TargetCanvas.Pen.Color:=ColorSet.InnerBorderColor;
TargetCanvas.Line(R.Left,1,R.Right,1);
end;
//Left
if (bsLeftLine in BorderSides) then
begin
TargetCanvas.Pen.Color:=ColorSet.BorderColor;
TargetCanvas.Line(0,R.Top,0,R.Bottom);
TargetCanvas.Pen.Color:=ColorSet.InnerBorderColor;
TargetCanvas.Line(1,R.Top,1,R.Bottom);
end;
//Right
if (bsRightLine in BorderSides) then
begin
TargetCanvas.Pen.Color:=ColorSet.BorderColor;
TargetCanvas.Line(Width-1,R.Top,Width-1,R.Bottom);
TargetCanvas.Pen.Color:=ColorSet.InnerBorderColor;
TargetCanvas.Line(Width-2,R.Top,Width-2,R.Bottom);
end;
//Bottom
if (bsBottomLine in BorderSides) then
begin
TargetCanvas.Pen.Color:=ColorSet.BorderColor;
TargetCanvas.Line(R.Left,Height-1,R.Right,Height-1);
TargetCanvas.Pen.Color:=ColorSet.InnerBorderColor;
TargetCanvas.Line(R.Left,Height-2,R.Right,Height-2);
end;
//TopLeft
if (bsTopLine in BorderSides) AND (bsLeftLine in BorderSides) then
TargetCanvas.Pixels[1,1]:=ColorSet.BorderColor;
//TopRight
if (bsTopLine in BorderSides) AND (bsRightLine in BorderSides) then
TargetCanvas.Pixels[Width-2,1] := ColorSet.BorderColor;
//BottomLeft
if (bsBottomLine in BorderSides) AND (bsLeftLine in BorderSides) then
TargetCanvas.Pixels[1, Height-2]:=ColorSet.BorderColor;
//BottomRight
if (bsBottomLine in BorderSides) AND (bsRightLine in BorderSides) then
TargetCanvas.Pixels[Width-2,Height-2]:=ColorSet.BorderColor;
end;
end;
procedure TGradTabVistaStyle.PrepareButton(Button: TGradButton);
begin
Button.Font.Color:=clBlack;
end;
end.

View File

@ -18,7 +18,7 @@ interface
uses
Classes,LResources, SysUtils, Menus, LCLType,
LCLProc, LCLIntf,ExtCtrls, Graphics, ugradbtn, Controls, uRotateBitmap,
Buttons, Forms, ImgList;
Buttons, Forms, ImgList, gradtabstyle;
type
TGradTabControl = class;
@ -211,6 +211,8 @@ type
function GetViewableTabs(FromIndex : Integer) : TTabs;
function GetTabsOfSide(FromIndex : Integer; FromLeftSide : Boolean) : TTabs;
procedure ScrollToTab(PIndex : Integer);
procedure UpdateAllButtons;
procedure NewStyle;
public
constructor Create(AOwner: TComponent; var thePageList: TListWithEvent;
TheTabControl : TGradTabControl);
@ -271,18 +273,24 @@ type
procedure Move(CurIndex, NewIndex: Integer); override;
end;
TGradTabControlPaintEvent = procedure(Sender: TCustomControl;
TargetCanvas: TCanvas) of object;
{ TGradTabControl }
TGradTabControl = class(TCustomControl)
private
FAutoShowScrollButton: Boolean;
FCustomDraw: Boolean;
FImages: TImageList;
FMoveIncrement: Integer;
FLeftButton, FRightButton : TGradButton;
FOnCustomDraw: TGradTabControlPaintEvent;
FOnTabCloseButtonClick: TGradTabPageButtonClickEvent;
FOnPageChanged: TNotifyEvent;
FShowLeftTopScrollButton: Boolean;
FShowRightBottomScrollButton: Boolean;
FStyle: TGradTabStyleBase;
FTabStrings : TStrings; //TGradTabPages
FPageList: TList; //Is Managed by TGradTabPages
FOnTabButtonClick : TGradTabPageButtonClickEvent;
@ -305,7 +313,9 @@ type
function GetTabPopupMenu: TPopupMenu;
procedure ImageListChange(Sender: TObject);
procedure SetActiveTabColor(const AValue: TColor);
procedure SetCustomDraw(const AValue: Boolean);
procedure SetNormalTabColor(const AValue: TColor);
procedure SetStyle(const AValue: TGradTabStyleBase);
procedure SetTabPopupMenu(const AValue: TPopupMenu);
procedure UpdateTabImages;
function GetCurrentPage : TGradTabPage;
@ -350,6 +360,16 @@ type
procedure SubDragDrop(Sender, Source: TObject; X,Y: Integer);
//End
// Style Event Wrapper
procedure StyleTabButton(Sender: TGradButton;
TargetCanvas: TCanvas; R: TRect; BState : TButtonState);
procedure StyleTabCloseButton(Sender: TGradButton;
TargetCanvas: TCanvas; R: TRect; BState : TButtonState);
procedure StyleTabButtonBorder(Sender: TGradButton;
TargetCanvas: TCanvas; R: TRect; BState : TButtonState);
// End
procedure PopupTabs(Sender: TObject);
procedure MoveLeftTopClick(Sender: TObject);
procedure MoveRightBottomClick(Sender: TObject);
@ -416,7 +436,7 @@ type
property OnClick;
property OnDblClick;
property TabPopupMenu : TPopupMenu read GetTabPopupMenu write SetTabPopupMenu;
property PopupMenu;
property PageIndex : Integer read FPageIndex write SetCurrentPageNum;
property TabHeight : Integer read FTabHeight write SetTabHeight;
property TabPosition : TTabPosition read FTabPosition write SetTabPosition default tpTop;
@ -430,6 +450,9 @@ type
property Images : TImageList read FImages write SetImages;
property NormalTabColor: TColor read GetNormalTabColor write SetNormalTabColor default clBlue;
property ActiveTabColor: TColor read GetActiveTabColor write SetActiveTabColor default clGreen;
property CustomDraw : Boolean read FCustomDraw write SetCustomDraw;
property OnCustomDraw : TGradTabControlPaintEvent read FOnCustomDraw write FOnCustomDraw;
property Style : TGradTabStyleBase read FStyle write SetStyle;
end;
procedure Register;
@ -503,7 +526,7 @@ begin
inherited Create(AOwner);
ControlStyle := ControlStyle+[csNoDesignSelectable,csDesignInteractive]-[csCaptureMouse];
FCloseButton := TGradTabCloseButton.Create(Self);
FCloseButton := TGradTabCloseButton.Create(AOwner);
FCloseButton.Width:=14;
FCloseButton.Height:=14;
TextAlignment:=taCenter;
@ -557,6 +580,8 @@ begin
FCloseButton.Top:=NewTop+TheRect.Top;
FCloseButton.Left:=NewLeft+TheRect.Left;
FCloseButton.UpdateButton;
end;
{-------------------------------------------------------------------------------
@ -687,7 +712,7 @@ procedure TGradTabPageButton.GetContentRect(var TheRect: TRect);
begin
inherited GetContentRect(TheRect);
if ShowGlyph then
if ShowCloseButton then
begin
case RotateDirection of
rdNormal: begin
@ -1205,16 +1230,43 @@ begin
with AButton do
begin
Left:=-123;
Left := -123;
Parent := Self;
ShowFocusBorder:=false;
TextAlignment:=taCenter;
BorderSides:=[bsTopLine,bsRightLine,bsLeftLine];
OnMouseDown:=@FTabControl.PageButtonMouseDown;
OnMouseUp:=@FTabControl.PageButtonMouseUp;
OnClick:=@FTabControl.PageButtonMouseClick;
OnMouseMove:=@FTabControl.PageButtonMouseMove;
FCloseButton.OnMouseUp:=@FTabControl.PageCloseButtonMouseUp;
ShowFocusBorder := false;
TextAlignment := taCenter;
BorderSides := [bsTopLine,bsRightLine,bsLeftLine];
OnMouseDown := @FTabControl.PageButtonMouseDown;
OnMouseUp := @FTabControl.PageButtonMouseUp;
OnClick := @FTabControl.PageButtonMouseClick;
OnMouseMove := @FTabControl.PageButtonMouseMove;
FCloseButton.OnMouseUp := @FTabControl.PageCloseButtonMouseUp;
FTabControl.Style.PrepareButton(AButton);
if FTabControl.Style.HasTabButtonPaint then
begin
OnNormalBackgroundPaint := @FTabControl.StyleTabButton;
OnDisabledBackgroundPaint := @FTabControl.StyleTabButton;
OnDownBackgroundPaint := @FTabControl.StyleTabButton;
OnHotBackgroundPaint := @FTabControl.StyleTabButton;
if FTabControl.Style.HasBorderButtonPaint then
OnBorderBackgroundPaint := @FTabControl.StyleTabButtonBorder;
OwnerBackgroundDraw := true;
if FTabControl.Style.HasCloseButtonPaint then
begin
FCloseButton.OnNormalBackgroundPaint := @FTabControl.StyleTabCloseButton;
FCloseButton.OnDisabledBackgroundPaint := @FTabControl.StyleTabCloseButton;
FCloseButton.OnDownBackgroundPaint := @FTabControl.StyleTabCloseButton;
FCloseButton.OnHotBackgroundPaint := @FTabControl.StyleTabCloseButton;
FCloseButton.OwnerBackgroundDraw := true;
end;
end else begin
OwnerBackgroundDraw := false;
end;
end;
if Assigned(PopupMenu) then
@ -1417,7 +1469,6 @@ begin
Exit;
end;
end;
B.Height:= B.GetAutoHeight;
@ -1455,6 +1506,7 @@ begin
else 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}
@ -1779,6 +1831,53 @@ begin
{$IFDEF DEBUGTAB} DebugLn('ScrollToTab End'); {$ENDIF}
end;
procedure TGradTabPagesBar.UpdateAllButtons;
var
i : Integer;
begin
for i:= 0 to FPageList.Count-1 do
begin
TGradTabPage(FPageList[i]).TabButton.UpdateButton;
end;
end;
procedure TGradTabPagesBar.NewStyle;
var
i : Integer;
begin
for i:= 0 to FPageList.Count-1 do
begin
with TGradTabPage(FPageList[i]).TabButton do
begin
FTabControl.Style.PrepareButton(TGradTabPage(FPageList[i]).TabButton);
if FTabControl.Style.HasTabButtonPaint then
begin
OnNormalBackgroundPaint:=@FTabControl.StyleTabButton;
OnDisabledBackgroundPaint:=@FTabControl.StyleTabButton;
OnDownBackgroundPaint:=@FTabControl.StyleTabButton;
OnHotBackgroundPaint:=@FTabControl.StyleTabButton;
if FTabControl.Style.HasBorderButtonPaint then
OnBorderBackgroundPaint := @FTabControl.StyleTabButtonBorder;
OwnerBackgroundDraw:=true;
if FTabControl.Style.HasCloseButtonPaint then
begin
FCloseButton.OnNormalBackgroundPaint := @FTabControl.StyleTabCloseButton;
FCloseButton.OnDisabledBackgroundPaint := @FTabControl.StyleTabCloseButton;
FCloseButton.OnDownBackgroundPaint := @FTabControl.StyleTabCloseButton;
FCloseButton.OnHotBackgroundPaint := @FTabControl.StyleTabCloseButton;
FCloseButton.OwnerBackgroundDraw := true;
end;
end else begin
OwnerBackgroundDraw:=false;
end;
end;
end;
end;
{-------------------------------------------------------------------------------
TGradTabPagesBar Create(AOwner: TComponent)
------------------------------------------------------------------------------}
@ -2074,6 +2173,8 @@ begin
Height:=200;
Width:=200;
FStyle := TGradTabStandardStyle.Create;
end;
{------------------------------------------------------------------------------
@ -2190,11 +2291,41 @@ begin
FPagesBar.ActiveTabColor:= AValue;
end;
procedure TGradTabControl.SetCustomDraw(const AValue: Boolean);
begin
if FCustomDraw=AValue then exit;
FCustomDraw:=AValue;
Invalidate;
end;
procedure TGradTabControl.SetNormalTabColor(const AValue: TColor);
begin
FPagesBar.NormalTabColor:=AValue;
end;
procedure TGradTabControl.SetStyle(const AValue: TGradTabStyleBase);
begin
if FStyle = AValue then Exit;
if FStyle <> nil then
begin
FStyle.Free;
FStyle := nil;
end;
FStyle := AValue;
if FStyle = nil then
begin
FStyle := TGradTabStandardStyle.Create;
end;
// Update all Tab Paintings
InvPaint;
PagesBar.NewStyle;
PagesBar.UpdateAllButtons;
end;
procedure TGradTabControl.SetTabPopupMenu(const AValue: TPopupMenu);
var
i : Integer;
@ -2468,6 +2599,30 @@ begin
OnDragDrop(Sender, Source, X, Y);
end;
procedure TGradTabControl.StyleTabButton(Sender: TGradButton;
TargetCanvas: TCanvas; R: TRect; BState: TButtonState);
begin
if FStyle.HasTabButtonPaint then
FStyle.TabButton(Self, FPageList.IndexOf(Sender.Owner), Sender,
TargetCanvas, R, BState);
end;
procedure TGradTabControl.StyleTabCloseButton(Sender: TGradButton;
TargetCanvas: TCanvas; R: TRect; BState: TButtonState);
begin
if FStyle.HasCloseButtonPaint then
FStyle.TabCloseButton(Self, FPageList.IndexOf(Sender.Owner), Sender,
TargetCanvas, R, BState);
end;
procedure TGradTabControl.StyleTabButtonBorder(Sender: TGradButton;
TargetCanvas: TCanvas; R: TRect; BState: TButtonState);
begin
if FStyle.HasBorderButtonPaint then
FStyle.TabButtonBorder(Self, FPageList.IndexOf(Sender.Owner), Sender,
TargetCanvas, R, BState);
end;
procedure TGradTabControl.PopupTabs(Sender: TObject);
var
tempMenu : TMenuItem;
@ -2876,6 +3031,7 @@ begin
AlignPages;
FPagesBar.UpdateAllButtons;
InvPaint;
end;
@ -2978,46 +3134,8 @@ end;
TGradTabControl Paint
------------------------------------------------------------------------------}
procedure TGradTabControl.Paint;
var
AClientRect : TRect;
begin
Canvas.Brush.Color:=Color;
Canvas.FillRect(0,0,Width,Height);
Canvas.Pen.Color:=clBlack;
{case FTabPosition of
tpTop: begin
Canvas.Line(0,FTabHeight,0,Height);
Canvas.Line(0,FTabHeight,Width,FTabHeight);
Canvas.Line(Width-1,FTabHeight,Width-1,Height);
Canvas.Line(0,Height-1,Width,Height-1);
end;
tpBottom: begin
Canvas.Line(0,0,0,Height-FTabHeight);
Canvas.Line(0,0,Width,0); //Top
Canvas.Line(Width-1,0,Width-1,Height-FTabHeight);
Canvas.Line(0,Height-FTabHeight-1,Width,Height-FTabHeight-1);
end;
tpRight: begin
Canvas.Line(0,0,0,Height); //Left
Canvas.Line(0,0,Width-GetTabBarSize(tpRight),0); //Top
Canvas.Line(Width-1-GetTabBarSize(tpRight),0,Width-1-GetTabBarSize(tpRight),Height); //Right
Canvas.Line(0,Height-1,Width-GetTabBarSize(tpRight),Height-1);//Bottom
end;
tpLeft: begin
Canvas.Line(GetTabBarSize(tpLeft),0,GetTabBarSize(tpLeft),Height); //Left
Canvas.Line(GetTabBarSize(tpLeft),0,Width,0); //Top
Canvas.Line(Width-1,0,Width-1,Height); //Right
Canvas.Line(GetTabBarSize(tpLeft),Height-1,Width,Height-1);//Bottom
end;
end;}
AClientRect := GetClientRect;
Canvas.Rectangle(AClientRect.Left-2, AClientRect.Top-2,
AClientRect.Right+2, AClientRect.Bottom+2);
FStyle.TabControl(Self, Self.Canvas);
end;
{------------------------------------------------------------------------------