Linux GTK2 Caption Bug - Fixed

Linux Background Draw Bug
Close Buttons on TGradTabControl
Updated TGradTabControl-Demo

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@824 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
eugene1
2009-06-06 13:14:46 +00:00
parent 7ae85c5538
commit beee4476aa
10 changed files with 1365 additions and 1328 deletions

View File

@ -1,7 +1,11 @@
Package GradButton: Package GradButton:
- Still some errors during loading / showing Glyphs - Glyphs should be working now
The Package gradtabcontrol is atm to buggy to use it. Package GradTabControl:
- Is now useable, or more or less, it should be =)
- with 2 CloseButton-Modes
- ShowCloseButton := true; // The CloseButton is always visible
- ShowCloseButtonOnMouseOver := true; // The CloseBUtton is only visible if the Mouse if is over it
Some Glyphs are from http://www.famfamfam.com/lab/icons/silk/ Some Glyphs are from http://www.famfamfam.com/lab/icons/silk/

View File

@ -1,17 +1,18 @@
object Form1: TForm1 object Form1: TForm1
Left = 292 Left = 243
Height = 492 Height = 492
Top = 130 Top = 105
Width = 884 Width = 884
Caption = 'Form1' Caption = 'TGradTabControl-Testsuite'
ClientHeight = 492 ClientHeight = 492
ClientWidth = 884 ClientWidth = 884
OnCreate = FormCreate OnCreate = FormCreate
OnDestroy = FormDestroy OnDestroy = FormDestroy
ParentFont = False
LCLVersion = '0.9.27' LCLVersion = '0.9.27'
object Panel1: TPanel object Panel1: TPanel
Left = 0
Height = 492 Height = 492
Top = 0
Width = 646 Width = 646
Align = alClient Align = alClient
Caption = 'Panel1' Caption = 'Panel1'
@ -24,181 +25,33 @@ object Form1: TForm1
Top = 1 Top = 1
Width = 644 Width = 644
Align = alClient Align = alClient
ControlStyle = [csAcceptsControls, csOwnedChildsSelectable] ActivePage = GradTabPage1
ActivePage = GradTabPage2
OnTabButtonMouseDown = GradTabControl1TabButtonMouseDown OnTabButtonMouseDown = GradTabControl1TabButtonMouseDown
OnTabButtonMouseUp = GradTabControl1TabButtonMouseUp OnTabButtonMouseUp = GradTabControl1TabButtonMouseUp
OnTabButtonMouseMove = GradTabControl1TabButtonMouseMove OnTabButtonMouseMove = GradTabControl1TabButtonMouseMove
OnTabCloseButtonClick = GradTabControl1TabCloseButtonClick
OnDragDrop = GradTabControl1DragDrop OnDragDrop = GradTabControl1DragDrop
OnDragOver = GradTabControl1DragOver OnDragOver = GradTabControl1DragOver
OnMouseDown = GradTabControl1MouseDown OnMouseDown = GradTabControl1MouseDown
OnMouseWheelUp = GradTabControl1MouseWheelUp OnMouseWheelUp = GradTabControl1MouseWheelUp
OnMouseWheelDown = GradTabControl1MouseWheelDown OnMouseWheelDown = GradTabControl1MouseWheelDown
PageIndex = 1 PageIndex = 0
TabHeight = 20 TabHeight = 20
MoveIncrement = 1 LongTabs = False
LongWidth = 101
OnPageChanged = GradTabControl1PageChanged OnPageChanged = GradTabControl1PageChanged
ShowLeftTopScrollButton = False
ShowRightBottomScrollButton = False
Images = ImageList1 Images = ImageList1
object GradTabPage1: TGradTabPage
Left = 2
Height = 464
Top = 22
Width = 640
Caption = 'abc'
Color = clGrayText
TabColor = clBlue
TabGlyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
20000000000000040000640000006400000000000000000000006E554E8D704E
44A6683F35A51C0E0E1286C6DC2D6BC2E1995FBCDDB855B4D4D24CA9CAE843A0
C0EA3E9CBCD5429EBFBC50A8C79F79B9D03B0000230000002300664E4982593D
37706D4237706186964470D0F2F65FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF55B7D9FA85C9E14F00002300513C36266E4B
428E4C2D266B76BBD26F6BD2F5FF5DBAD5FF51AFCDFF52ACC8FF4AA8C7FF45A3
C3FF469FBCFF3D99B8FF409EBBFF4FB5D9FF7ACDEB820000230000000006583E
357C603A30B57BAFC16D5EBBDBFC5EC1E3FF5ABBDCFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF3395B6FF42A2C4FF54B1D1FD7EC0D28800002300000023006948
3E835F39308E85CCE65A6BD2F6FF5FC7EBFF53BBDFFF47B0D4FF44A4C3FF3A9A
B7FF2890B4FF2990B5FF349CC0FF4EB6DAFF7DCCE67800002300000000075E3F
386D5F382E6974B7CD7268C5E2FF55B0CDFF4EAFCEFF4AABCDFF43A9CCFF3DA3
C7FF3DA0C1FF40A1C1FF49A4C3FF51AFCDFF7ACCE98200002300000000045E41
378A653E337785B8C45169C4E5FC60C7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF57B5D5FD87BBCC7700002300000023002C23
1A1D5132298A70B1C6716AD2F6FF60C7EAFF5CB7D3FF4FABC7FF42A1C0FF3B9B
B9FF3995B0FF3892AFFF369CBFFF4EB6DAFF7BCEE9810000230000000004704E
44966C42379A7ABBCE715DB8D2FF50B2D4FF49B3D8FF44B0D4FF41A8CDFF39A0
C4FF349DC2FF35A0C6FF40A5C6FF4FACC8FF7ECAE48600002300000000056244
3BB15030289F749DA8536CCDEEFB5FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF55B6D8FD82C0CD6C00002300000023006446
3D96472C245D7BC4DD6C6AD2F6FF60BDD9FF4FB0CDFF4AAAC8FF4CA8C4FF49A4
C1FF3D9AB8FF3697B6FF409DBBFF4EB6DAFF7ACCE98200002300644E46806848
3F8E55352D7E84C5D96A5BBAD9FC59BEE1FF59B9DBFF50B1D3FF3CA4C8FF3099
BDFF3193B5FF3999BBFF40A4C7FF50AFCFFD7CC3D787000023006B524A7C704C
45895C392D6C7FC3DA4F6CD2F5FE5FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2991B5FF349CC0FF4FB6DAFF82CDE56F00002300000000063622
1B264D2E28747DC6DF6C6BCCEBFF49AFCFFF3BA6C9FF34A2C5FF2E9EC3FF2D9D
C2FF2D9CBFFF2F9BBEFF369EC0FF50B2D2FF79CCEA8200002300000000096242
3ABC523228A47AA4B35537A2C3F3189FCFFF189FCFFF189FCFFF189FCFFF189F
CFFF189FCFFF189FCFFF189FCFFF2E9FC4F77BB8C86900002300000023007B53
4966674034941A00000A71A1A2243A9FBD9E319FC1BC2E9FC3D32B9EC4EA2B9F
C3EC2D9FC3D6309FC3BF37A0C0A45EA1AD310000230000002300
}
object ToggleBox2: TToggleBox
Left = 357
Height = 23
Top = 155
Width = 90
Caption = 'ToggleBox2'
TabOrder = 0
end
end
object GradTabPage4: TGradTabPage
Left = 2
Height = 464
Top = 22
Width = 640
PageIndex = 2
Caption = 'äöü-test'
TabColor = clBlue
TabGlyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
20000000000000040000640000006400000000000000000000006E554E8D704E
44A6683F35A51C0E0E1286C6DC2D6BC2E1995FBCDDB855B4D4D24CA9CAE843A0
C0EA3E9CBCD5429EBFBC50A8C79F79B9D03B0000230000002300664E4982593D
37706D4237706186964470D0F2F65FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF55B7D9FA85C9E14F00002300513C36266E4B
428E4C2D266B76BBD26F6BD2F5FF5DBAD5FF51AFCDFF52ACC8FF4AA8C7FF45A3
C3FF469FBCFF3D99B8FF409EBBFF4FB5D9FF7ACDEB820000230000000006583E
357C603A30B57BAFC16D5EBBDBFC5EC1E3FF5ABBDCFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF3395B6FF42A2C4FF54B1D1FD7EC0D28800002300000023006948
3E835F39308E85CCE65A6BD2F6FF5FC7EBFF53BBDFFF47B0D4FF44A4C3FF3A9A
B7FF2890B4FF2990B5FF349CC0FF4EB6DAFF7DCCE67800002300000000075E3F
386D5F382E6974B7CD7268C5E2FF55B0CDFF4EAFCEFF4AABCDFF43A9CCFF3DA3
C7FF3DA0C1FF40A1C1FF49A4C3FF51AFCDFF7ACCE98200002300000000045E41
378A653E337785B8C45169C4E5FC60C7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF57B5D5FD87BBCC7700002300000023002C23
1A1D5132298A70B1C6716AD2F6FF60C7EAFF5CB7D3FF4FABC7FF42A1C0FF3B9B
B9FF3995B0FF3892AFFF369CBFFF4EB6DAFF7BCEE9810000230000000004704E
44966C42379A7ABBCE715DB8D2FF50B2D4FF49B3D8FF44B0D4FF41A8CDFF39A0
C4FF349DC2FF35A0C6FF40A5C6FF4FACC8FF7ECAE48600002300000000056244
3BB15030289F749DA8536CCDEEFB5FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF55B6D8FD82C0CD6C00002300000023006446
3D96472C245D7BC4DD6C6AD2F6FF60BDD9FF4FB0CDFF4AAAC8FF4CA8C4FF49A4
C1FF3D9AB8FF3697B6FF409DBBFF4EB6DAFF7ACCE98200002300644E46806848
3F8E55352D7E84C5D96A5BBAD9FC59BEE1FF59B9DBFF50B1D3FF3CA4C8FF3099
BDFF3193B5FF3999BBFF40A4C7FF50AFCFFD7CC3D787000023006B524A7C704C
45895C392D6C7FC3DA4F6CD2F5FE5FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2991B5FF349CC0FF4FB6DAFF82CDE56F00002300000000063622
1B264D2E28747DC6DF6C6BCCEBFF49AFCFFF3BA6C9FF34A2C5FF2E9EC3FF2D9D
C2FF2D9CBFFF2F9BBEFF369EC0FF50B2D2FF79CCEA8200002300000000096242
3ABC523228A47AA4B35537A2C3F3189FCFFF189FCFFF189FCFFF189FCFFF189F
CFFF189FCFFF189FCFFF189FCFFF2E9FC4F77BB8C86900002300000023007B53
4966674034941A00000A71A1A2243A9FBD9E319FC1BC2E9FC3D32B9EC4EA2B9F
C3EC2D9FC3D6309FC3BF37A0C0A45EA1AD310000230000002300
}
end
object GradTabPage3: TGradTabPage object GradTabPage3: TGradTabPage
Left = 2 Left = 2
Height = 466 Height = 466
Top = 22 Top = 22
Width = 640 Width = 640
PageIndex = 3 PageIndex = 2
Caption = 'GradTabPage3' Caption = 'GradTabPage3'
TabColor = clBlue TabColor = clBlue
TabGlyph.Data = { TabTextAlignment = taLeftJustify
36040000424D3604000000000000360000002800000010000000100000000100
20000000000000040000640000006400000000000000000000006E554E8D704E
44A6683F35A51C0E0E1286C6DC2D6BC2E1995FBCDDB855B4D4D24CA9CAE843A0
C0EA3E9CBCD5429EBFBC50A8C79F79B9D03B0000230000002300664E4982593D
37706D4237706186964470D0F2F65FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF55B7D9FA85C9E14F00002300513C36266E4B
428E4C2D266B76BBD26F6BD2F5FF5DBAD5FF51AFCDFF52ACC8FF4AA8C7FF45A3
C3FF469FBCFF3D99B8FF409EBBFF4FB5D9FF7ACDEB820000230000000006583E
357C603A30B57BAFC16D5EBBDBFC5EC1E3FF5ABBDCFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF3395B6FF42A2C4FF54B1D1FD7EC0D28800002300000023006948
3E835F39308E85CCE65A6BD2F6FF5FC7EBFF53BBDFFF47B0D4FF44A4C3FF3A9A
B7FF2890B4FF2990B5FF349CC0FF4EB6DAFF7DCCE67800002300000000075E3F
386D5F382E6974B7CD7268C5E2FF55B0CDFF4EAFCEFF4AABCDFF43A9CCFF3DA3
C7FF3DA0C1FF40A1C1FF49A4C3FF51AFCDFF7ACCE98200002300000000045E41
378A653E337785B8C45169C4E5FC60C7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF57B5D5FD87BBCC7700002300000023002C23
1A1D5132298A70B1C6716AD2F6FF60C7EAFF5CB7D3FF4FABC7FF42A1C0FF3B9B
B9FF3995B0FF3892AFFF369CBFFF4EB6DAFF7BCEE9810000230000000004704E
44966C42379A7ABBCE715DB8D2FF50B2D4FF49B3D8FF44B0D4FF41A8CDFF39A0
C4FF349DC2FF35A0C6FF40A5C6FF4FACC8FF7ECAE48600002300000000056244
3BB15030289F749DA8536CCDEEFB5FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF55B6D8FD82C0CD6C00002300000023006446
3D96472C245D7BC4DD6C6AD2F6FF60BDD9FF4FB0CDFF4AAAC8FF4CA8C4FF49A4
C1FF3D9AB8FF3697B6FF409DBBFF4EB6DAFF7ACCE98200002300644E46806848
3F8E55352D7E84C5D96A5BBAD9FC59BEE1FF59B9DBFF50B1D3FF3CA4C8FF3099
BDFF3193B5FF3999BBFF40A4C7FF50AFCFFD7CC3D787000023006B524A7C704C
45895C392D6C7FC3DA4F6CD2F5FE5FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2991B5FF349CC0FF4FB6DAFF82CDE56F00002300000000063622
1B264D2E28747DC6DF6C6BCCEBFF49AFCFFF3BA6C9FF34A2C5FF2E9EC3FF2D9D
C2FF2D9CBFFF2F9BBEFF369EC0FF50B2D2FF79CCEA8200002300000000096242
3ABC523228A47AA4B35537A2C3F3189FCFFF189FCFFF189FCFFF189FCFFF189F
CFFF189FCFFF189FCFFF189FCFFF2E9FC4F77BB8C86900002300000023007B53
4966674034941A00000A71A1A2243A9FBD9E319FC1BC2E9FC3D32B9EC4EA2B9F
C3EC2D9FC3D6309FC3BF37A0C0A45EA1AD310000230000002300
}
object Button3: TButton
Left = 99
Height = 25
Top = 71
Width = 75
Caption = 'Button3'
TabOrder = 0
end
end
object GradTabPage2: TGradTabPage
Left = 2
Height = 466
Top = 22
Width = 640
PageIndex = 1
Caption = 'GradTabPage2'
TabPopupMenu = PopupMenu1
TabColor = clGreen
TabGlyph.Data = { TabGlyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100 36040000424D3604000000000000360000002800000010000000100000000100
20000000000000040000640000006400000000000000000000006E554E8D704E 20000000000000040000640000006400000000000000000000006E554E8D704E
@ -236,41 +89,117 @@ object Form1: TForm1
C3EC2D9FC3D6309FC3BF37A0C0A45EA1AD310000230000002300 C3EC2D9FC3D6309FC3BF37A0C0A45EA1AD310000230000002300
} }
TabShowGlyph = True TabShowGlyph = True
object PageControl1: TPageControl TabButtonLayout = blGlyphLeft
Left = 173 end
Height = 200 object GradTabPage2: TGradTabPage
Top = 57 Left = 2
Width = 200 Height = 466
ActivePage = TabSheet3 Top = 22
TabIndex = 2 Width = 640
PageIndex = 1
Caption = 'GradTabPage2'
ShowCloseButton = True
TabColor = clBlue
TabTextAlignment = taLeftJustify
TabGlyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
20000000000000040000640000006400000000000000000000006E554E8D704E
44A6683F35A51C0E0E1286C6DC2D6BC2E1995FBCDDB855B4D4D24CA9CAE843A0
C0EA3E9CBCD5429EBFBC50A8C79F79B9D03B0000230000002300664E4982593D
37706D4237706186964470D0F2F65FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF55B7D9FA85C9E14F00002300513C36266E4B
428E4C2D266B76BBD26F6BD2F5FF5DBAD5FF51AFCDFF52ACC8FF4AA8C7FF45A3
C3FF469FBCFF3D99B8FF409EBBFF4FB5D9FF7ACDEB820000230000000006583E
357C603A30B57BAFC16D5EBBDBFC5EC1E3FF5ABBDCFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF3395B6FF42A2C4FF54B1D1FD7EC0D28800002300000023006948
3E835F39308E85CCE65A6BD2F6FF5FC7EBFF53BBDFFF47B0D4FF44A4C3FF3A9A
B7FF2890B4FF2990B5FF349CC0FF4EB6DAFF7DCCE67800002300000000075E3F
386D5F382E6974B7CD7268C5E2FF55B0CDFF4EAFCEFF4AABCDFF43A9CCFF3DA3
C7FF3DA0C1FF40A1C1FF49A4C3FF51AFCDFF7ACCE98200002300000000045E41
378A653E337785B8C45169C4E5FC60C7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF57B5D5FD87BBCC7700002300000023002C23
1A1D5132298A70B1C6716AD2F6FF60C7EAFF5CB7D3FF4FABC7FF42A1C0FF3B9B
B9FF3995B0FF3892AFFF369CBFFF4EB6DAFF7BCEE9810000230000000004704E
44966C42379A7ABBCE715DB8D2FF50B2D4FF49B3D8FF44B0D4FF41A8CDFF39A0
C4FF349DC2FF35A0C6FF40A5C6FF4FACC8FF7ECAE48600002300000000056244
3BB15030289F749DA8536CCDEEFB5FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF55B6D8FD82C0CD6C00002300000023006446
3D96472C245D7BC4DD6C6AD2F6FF60BDD9FF4FB0CDFF4AAAC8FF4CA8C4FF49A4
C1FF3D9AB8FF3697B6FF409DBBFF4EB6DAFF7ACCE98200002300644E46806848
3F8E55352D7E84C5D96A5BBAD9FC59BEE1FF59B9DBFF50B1D3FF3CA4C8FF3099
BDFF3193B5FF3999BBFF40A4C7FF50AFCFFD7CC3D787000023006B524A7C704C
45895C392D6C7FC3DA4F6CD2F5FE5FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2991B5FF349CC0FF4FB6DAFF82CDE56F00002300000000063622
1B264D2E28747DC6DF6C6BCCEBFF49AFCFFF3BA6C9FF34A2C5FF2E9EC3FF2D9D
C2FF2D9CBFFF2F9BBEFF369EC0FF50B2D2FF79CCEA8200002300000000096242
3ABC523228A47AA4B35537A2C3F3189FCFFF189FCFFF189FCFFF189FCFFF189F
CFFF189FCFFF189FCFFF189FCFFF2E9FC4F77BB8C86900002300000023007B53
4966674034941A00000A71A1A2243A9FBD9E319FC1BC2E9FC3D32B9EC4EA2B9F
C3EC2D9FC3D6309FC3BF37A0C0A45EA1AD310000230000002300
}
TabShowGlyph = True
TabButtonLayout = blGlyphLeft
end
object GradTabPage1: TGradTabPage
Left = 2
Height = 466
Top = 22
Width = 640
PageIndex = 0
Caption = 'Some Memo'
ShowCloseButton = True
Color = clGrayText
TabColor = clGreen
TabTextAlignment = taLeftJustify
TabGlyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
20000000000000040000640000006400000000000000000000006E554E8D704E
44A6683F35A51C0E0E1286C6DC2D6BC2E1995FBCDDB855B4D4D24CA9CAE843A0
C0EA3E9CBCD5429EBFBC50A8C79F79B9D03B0000230000002300664E4982593D
37706D4237706186964470D0F2F65FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF55B7D9FA85C9E14F00002300513C36266E4B
428E4C2D266B76BBD26F6BD2F5FF5DBAD5FF51AFCDFF52ACC8FF4AA8C7FF45A3
C3FF469FBCFF3D99B8FF409EBBFF4FB5D9FF7ACDEB820000230000000006583E
357C603A30B57BAFC16D5EBBDBFC5EC1E3FF5ABBDCFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF3395B6FF42A2C4FF54B1D1FD7EC0D28800002300000023006948
3E835F39308E85CCE65A6BD2F6FF5FC7EBFF53BBDFFF47B0D4FF44A4C3FF3A9A
B7FF2890B4FF2990B5FF349CC0FF4EB6DAFF7DCCE67800002300000000075E3F
386D5F382E6974B7CD7268C5E2FF55B0CDFF4EAFCEFF4AABCDFF43A9CCFF3DA3
C7FF3DA0C1FF40A1C1FF49A4C3FF51AFCDFF7ACCE98200002300000000045E41
378A653E337785B8C45169C4E5FC60C7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF57B5D5FD87BBCC7700002300000023002C23
1A1D5132298A70B1C6716AD2F6FF60C7EAFF5CB7D3FF4FABC7FF42A1C0FF3B9B
B9FF3995B0FF3892AFFF369CBFFF4EB6DAFF7BCEE9810000230000000004704E
44966C42379A7ABBCE715DB8D2FF50B2D4FF49B3D8FF44B0D4FF41A8CDFF39A0
C4FF349DC2FF35A0C6FF40A5C6FF4FACC8FF7ECAE48600002300000000056244
3BB15030289F749DA8536CCDEEFB5FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2990B5FF349CC0FF55B6D8FD82C0CD6C00002300000023006446
3D96472C245D7BC4DD6C6AD2F6FF60BDD9FF4FB0CDFF4AAAC8FF4CA8C4FF49A4
C1FF3D9AB8FF3697B6FF409DBBFF4EB6DAFF7ACCE98200002300644E46806848
3F8E55352D7E84C5D96A5BBAD9FC59BEE1FF59B9DBFF50B1D3FF3CA4C8FF3099
BDFF3193B5FF3999BBFF40A4C7FF50AFCFFD7CC3D787000023006B524A7C704C
45895C392D6C7FC3DA4F6CD2F5FE5FC7EBFF53BBDFFF47B0D4FF3CA4C8FF3099
BDFF2890B4FF2991B5FF349CC0FF4FB6DAFF82CDE56F00002300000000063622
1B264D2E28747DC6DF6C6BCCEBFF49AFCFFF3BA6C9FF34A2C5FF2E9EC3FF2D9D
C2FF2D9CBFFF2F9BBEFF369EC0FF50B2D2FF79CCEA8200002300000000096242
3ABC523228A47AA4B35537A2C3F3189FCFFF189FCFFF189FCFFF189FCFFF189F
CFFF189FCFFF189FCFFF189FCFFF2E9FC4F77BB8C86900002300000023007B53
4966674034941A00000A71A1A2243A9FBD9E319FC1BC2E9FC3D32B9EC4EA2B9F
C3EC2D9FC3D6309FC3BF37A0C0A45EA1AD310000230000002300
}
TabShowGlyph = True
TabButtonLayout = blGlyphLeft
object Memo1: TMemo
Left = 312
Height = 466
Top = 0
Width = 328
Align = alRight
Lines.Strings = (
'Some Memo'
'alRight'
)
TabOrder = 0 TabOrder = 0
OnDragDrop = PageControl1DragDrop
OnDragOver = PageControl1DragOver
object TabSheet1: TTabSheet
Caption = 'TabSheet1'
end
object TabSheet2: TTabSheet
Caption = 'TabSheet2'
end
object TabSheet3: TTabSheet
Caption = 'TabSheet3'
end
end
object Button2: TButton
Left = 47
Height = 25
Top = 28
Width = 75
Caption = 'Button2'
TabOrder = 1
end
object Panel3: TPanel
Left = 429
Height = 50
Top = 89
Width = 170
Caption = 'Panel3'
TabOrder = 2
end end
end end
end end
@ -278,6 +207,7 @@ object Form1: TForm1
object Panel2: TPanel object Panel2: TPanel
Left = 646 Left = 646
Height = 492 Height = 492
Top = 0
Width = 238 Width = 238
Align = alRight Align = alRight
ClientHeight = 492 ClientHeight = 492
@ -285,18 +215,18 @@ object Form1: TForm1
TabOrder = 1 TabOrder = 1
object Label1: TLabel object Label1: TLabel
Left = 16 Left = 16
Height = 14 Height = 16
Top = 160 Top = 160
Width = 50 Width = 57
Caption = 'TabHeight' Caption = 'TabHeight'
ParentColor = False ParentColor = False
end end
object ComboBox1: TComboBox object ComboBox1: TComboBox
Left = 16 Left = 16
Height = 21 Height = 23
Top = 16 Top = 16
Width = 100 Width = 100
ItemHeight = 13 ItemHeight = 15
OnChange = ComboBox1Change OnChange = ComboBox1Change
Style = csDropDownList Style = csDropDownList
TabOrder = 0 TabOrder = 0
@ -356,8 +286,10 @@ object Form1: TForm1
OverBlendColor = clSilver OverBlendColor = clSilver
BackgroundColor = clBtnFace BackgroundColor = clBtnFace
ShowFocusBorder = True ShowFocusBorder = True
ShowGlyph = False
GlyphBackgroundColor = clWhite GlyphBackgroundColor = clWhite
ClickColor = clBlue ClickColor = clBlue
OwnerBackgroundDraw = False
AutoWidthBorderSpacing = 15 AutoWidthBorderSpacing = 15
AutoHeightBorderSpacing = 15 AutoHeightBorderSpacing = 15
end end
@ -379,14 +311,16 @@ object Form1: TForm1
OverBlendColor = clSilver OverBlendColor = clSilver
BackgroundColor = clBtnFace BackgroundColor = clBtnFace
ShowFocusBorder = True ShowFocusBorder = True
ShowGlyph = False
GlyphBackgroundColor = clWhite GlyphBackgroundColor = clWhite
ClickColor = clBlue ClickColor = clBlue
OwnerBackgroundDraw = False
AutoWidthBorderSpacing = 15 AutoWidthBorderSpacing = 15
AutoHeightBorderSpacing = 15 AutoHeightBorderSpacing = 15
end end
object SpinEdit2: TSpinEdit object SpinEdit2: TSpinEdit
Left = 16 Left = 16
Height = 19 Height = 25
Top = 176 Top = 176
Width = 100 Width = 100
OnEditingDone = SpinEdit2EditingDone OnEditingDone = SpinEdit2EditingDone
@ -394,7 +328,7 @@ object Form1: TForm1
end end
object Edit1: TEdit object Edit1: TEdit
Left = 16 Left = 16
Height = 19 Height = 25
Top = 136 Top = 136
Width = 72 Width = 72
TabOrder = 6 TabOrder = 6
@ -418,8 +352,10 @@ object Form1: TForm1
OverBlendColor = clSilver OverBlendColor = clSilver
BackgroundColor = clBtnFace BackgroundColor = clBtnFace
ShowFocusBorder = True ShowFocusBorder = True
ShowGlyph = False
GlyphBackgroundColor = clWhite GlyphBackgroundColor = clWhite
ClickColor = clBlue ClickColor = clBlue
OwnerBackgroundDraw = False
AutoWidthBorderSpacing = 15 AutoWidthBorderSpacing = 15
AutoHeightBorderSpacing = 15 AutoHeightBorderSpacing = 15
end end
@ -450,6 +386,33 @@ object Form1: TForm1
03000000030202 03000000030202
} }
end end
object RadioGroup2: TRadioGroup
Left = 130
Height = 105
Top = 256
Width = 100
AutoFill = True
Caption = 'Tab Button Layout'
ChildSizing.LeftRightSpacing = 6
ChildSizing.TopBottomSpacing = 6
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.EnlargeVertical = crsHomogenousChildResize
ChildSizing.ShrinkHorizontal = crsScaleChilds
ChildSizing.ShrinkVertical = crsScaleChilds
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 1
ClientHeight = 87
ClientWidth = 96
ItemIndex = 0
Items.Strings = (
'blGlyphLeft'
'blGlyphBottom'
'blGlyphRight'
'blGlyphTop'
)
OnClick = RadioGroup2Click
TabOrder = 9
end
end end
object PopupMenu1: TPopupMenu object PopupMenu1: TPopupMenu
left = 734 left = 734
@ -460,7 +423,6 @@ object Form1: TForm1
end end
end end
object ImageList1: TImageList object ImageList1: TImageList
OnChange = nil
left = 656 left = 656
top = 397 top = 397
Bitmap = { Bitmap = {

View File

@ -1,292 +1,251 @@
{ Das ist eine automatisch erzeugte Lazarus-Ressourcendatei } { This is an automatically generated lazarus resource file }
LazarusResources.Add('TForm1','FORMDATA',[ LazarusResources.Add('TForm1','FORMDATA',[
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'$'#1#6'Height'#3#236#1#3'Top'#3#130#0#5'W' 'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#243#0#6'Height'#3#236#1#3'Top'#2'i'#5'Wid'
+'idth'#3't'#3#7'Caption'#6#5'Form1'#12'ClientHeight'#3#236#1#11'ClientWidth' +'th'#3't'#3#7'Caption'#6#25'TGradTabControl-Testsuite'#12'ClientHeight'#3#236
+#3't'#3#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#10'Paren' +#1#11'ClientWidth'#3't'#3#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11'For'
+'tFont'#8#10'LCLVersion'#6#6'0.9.27'#0#6'TPanel'#6'Panel1'#6'Height'#3#236#1 +'mDestroy'#10'LCLVersion'#6#6'0.9.27'#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'He'
+#5'Width'#3#134#2#5'Align'#7#8'alClient'#7'Caption'#6#6'Panel1'#12'ClientHei' +'ight'#3#236#1#3'Top'#2#0#5'Width'#3#134#2#5'Align'#7#8'alClient'#7'Caption'
+'ght'#3#236#1#11'ClientWidth'#3#134#2#8'TabOrder'#2#0#0#15'TGradTabControl' +#6#6'Panel1'#12'ClientHeight'#3#236#1#11'ClientWidth'#3#134#2#8'TabOrder'#2#0
+#15'GradTabControl1'#4'Left'#2#1#6'Height'#3#234#1#3'Top'#2#1#5'Width'#3#132 +#0#15'TGradTabControl'#15'GradTabControl1'#4'Left'#2#1#6'Height'#3#234#1#3'T'
+#2#5'Align'#7#8'alClient'#12'ControlStyle'#11#17'csAcceptsControls'#23'csOwn' +'op'#2#1#5'Width'#3#132#2#5'Align'#7#8'alClient'#10'ActivePage'#7#12'GradTab'
+'edChildsSelectable'#0#10'ActivePage'#7#12'GradTabPage2'#20'OnTabButtonMouse' +'Page1'#20'OnTabButtonMouseDown'#7'!GradTabControl1TabButtonMouseDown'#18'On'
+'Down'#7'!GradTabControl1TabButtonMouseDown'#18'OnTabButtonMouseUp'#7#31'Gra' +'TabButtonMouseUp'#7#31'GradTabControl1TabButtonMouseUp'#20'OnTabButtonMouse'
+'dTabControl1TabButtonMouseUp'#20'OnTabButtonMouseMove'#7'!GradTabControl1Ta' +'Move'#7'!GradTabControl1TabButtonMouseMove'#21'OnTabCloseButtonClick'#7'"Gr'
+'bButtonMouseMove'#10'OnDragDrop'#7#23'GradTabControl1DragDrop'#10'OnDragOve' +'adTabControl1TabCloseButtonClick'#10'OnDragDrop'#7#23'GradTabControl1DragDr'
+'r'#7#23'GradTabControl1DragOver'#11'OnMouseDown'#7#24'GradTabControl1MouseD' +'op'#10'OnDragOver'#7#23'GradTabControl1DragOver'#11'OnMouseDown'#7#24'GradT'
+'own'#14'OnMouseWheelUp'#7#27'GradTabControl1MouseWheelUp'#16'OnMouseWheelDo' +'abControl1MouseDown'#14'OnMouseWheelUp'#7#27'GradTabControl1MouseWheelUp'#16
+'wn'#7#29'GradTabControl1MouseWheelDown'#9'PageIndex'#2#1#9'TabHeight'#2#20 +'OnMouseWheelDown'#7#29'GradTabControl1MouseWheelDown'#9'PageIndex'#2#0#9'Ta'
+#13'MoveIncrement'#2#1#13'OnPageChanged'#7#26'GradTabControl1PageChanged'#6 +'bHeight'#2#20#8'LongTabs'#8#9'LongWidth'#2'e'#13'OnPageChanged'#7#26'GradTa'
+'Images'#7#10'ImageList1'#0#12'TGradTabPage'#12'GradTabPage1'#4'Left'#2#2#6 +'bControl1PageChanged'#23'ShowLeftTopScrollButton'#8#27'ShowRightBottomScrol'
+'Height'#3#208#1#3'Top'#2#22#5'Width'#3#128#2#7'Caption'#6#3'abc'#5'Color'#7 +'lButton'#8#6'Images'#7#10'ImageList1'#0#12'TGradTabPage'#12'GradTabPage3'#4
+#10'clGrayText'#8'TabColor'#7#6'clBlue'#13'TabGlyph.Data'#10':'#4#0#0'6'#4#0 +'Left'#2#2#6'Height'#3#210#1#3'Top'#2#22#5'Width'#3#128#2#9'PageIndex'#2#2#7
+#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 +'Caption'#6#12'GradTabPage3'#8'TabColor'#7#6'clBlue'#16'TabTextAlignment'#7
+#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 +#13'taLeftJustify'#13'TabGlyph.Data'#10':'#4#0#0'6'#4#0#0'BM6'#4#0#0#0#0#0#0
+#18#134#198#220'-k'#194#225#153'_'#188#221#184'U'#180#212#210'L'#169#202#232 +'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
+'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#0'nUN'#141'pND'#166'h?5'#165#28#14#14#18#134#198#220'-k'#194
+#0'#'#0#0#0'#'#0'fNI'#130'Y=7pmB7pa'#134#150'Dp'#208#242#246'_'#199#235#255 +#225#153'_'#188#221#184'U'#180#212#210'L'#169#202#232'C'#160#192#234'>'#156
+'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255 +#188#213'B'#158#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0'#'#0'fNI'
+')'#144#181#255'4'#156#192#255'U'#183#217#250#133#201#225'O'#0#0'#'#0'Q<6&nK' +#130'Y=7pmB7pa'#134#150'Dp'#208#242#246'_'#199#235#255'S'#187#223#255'G'#176
+'B'#142'L-&kv'#187#210'ok'#210#245#255']'#186#213#255'Q'#175#205#255'R'#172 +#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255')'#144#181#255'4'#156
+#200#255'J'#168#199#255'E'#163#195#255'F'#159#188#255'='#153#184#255'@'#158 +#192#255'U'#183#217#250#133#201#225'O'#0#0'#'#0'Q<6&nKB'#142'L-&kv'#187#210
+#187#255'O'#181#217#255'z'#205#235#130#0#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175 +'ok'#210#245#255']'#186#213#255'Q'#175#205#255'R'#172#200#255'J'#168#199#255
+#193'm^'#187#219#252'^'#193#227#255'Z'#187#220#255'G'#176#212#255'<'#164#200 +'E'#163#195#255'F'#159#188#255'='#153#184#255'@'#158#187#255'O'#181#217#255
+#255'0'#153#189#255'('#144#180#255'3'#149#182#255'B'#162#196#255'T'#177#209 +'z'#205#235#130#0#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175#193'm^'#187#219#252'^'
+#253'~'#192#210#136#0#0'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204#230'Zk'#210 +#193#227#255'Z'#187#220#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('
+#246#255'_'#199#235#255'S'#187#223#255'G'#176#212#255'D'#164#195#255':'#154 +#144#180#255'3'#149#182#255'B'#162#196#255'T'#177#209#253'~'#192#210#136#0#0
+#183#255'('#144#180#255')'#144#181#255'4'#156#192#255'N'#182#218#255'}'#204 +'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204#230'Zk'#210#246#255'_'#199#235#255
+#230'x'#0#0'#'#0#0#0#0#7'^?8m_8.it'#183#205'rh'#197#226#255'U'#176#205#255'N' +'S'#187#223#255'G'#176#212#255'D'#164#195#255':'#154#183#255'('#144#180#255
+#175#206#255'J'#171#205#255'C'#169#204#255'='#163#199#255'='#160#193#255'@' +')'#144#181#255'4'#156#192#255'N'#182#218#255'}'#204#230'x'#0#0'#'#0#0#0#0#7
+#161#193#255'I'#164#195#255'Q'#175#205#255'z'#204#233#130#0#0'#'#0#0#0#0#4'^' +'^?8m_8.it'#183#205'rh'#197#226#255'U'#176#205#255'N'#175#206#255'J'#171#205
+'A7'#138'e>3w'#133#184#196'Qi'#196#229#252'`'#199#235#255'S'#187#223#255'G' +#255'C'#169#204#255'='#163#199#255'='#160#193#255'@'#161#193#255'I'#164#195
+#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255')'#144#181#255'4' +#255'Q'#175#205#255'z'#204#233#130#0#0'#'#0#0#0#0#4'^A7'#138'e>3w'#133#184
+#156#192#255'W'#181#213#253#135#187#204'w'#0#0'#'#0#0#0'#'#0',#'#26#29'Q2)' +#196'Qi'#196#229#252'`'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200
+#138'p'#177#198'qj'#210#246#255'`'#199#234#255'\'#183#211#255'O'#171#199#255 +#255'0'#153#189#255'('#144#180#255')'#144#181#255'4'#156#192#255'W'#181#213
+'B'#161#192#255';'#155#185#255'9'#149#176#255'8'#146#175#255'6'#156#191#255 +#253#135#187#204'w'#0#0'#'#0#0#0'#'#0',#'#26#29'Q2)'#138'p'#177#198'qj'#210
+'N'#182#218#255'{'#206#233#129#0#0'#'#0#0#0#0#4'pND'#150'lB7'#154'z'#187#206 +#246#255'`'#199#234#255'\'#183#211#255'O'#171#199#255'B'#161#192#255';'#155
+'q]'#184#210#255'P'#178#212#255'I'#179#216#255'D'#176#212#255'A'#168#205#255 +#185#255'9'#149#176#255'8'#146#175#255'6'#156#191#255'N'#182#218#255'{'#206
+'9'#160#196#255'4'#157#194#255'5'#160#198#255'@'#165#198#255'O'#172#200#255 +#233#129#0#0'#'#0#0#0#0#4'pND'#150'lB7'#154'z'#187#206'q]'#184#210#255'P'#178
+'~'#202#228#134#0#0'#'#0#0#0#0#5'bD;'#177'P0('#159't'#157#168'Sl'#205#238#251 +#212#255'I'#179#216#255'D'#176#212#255'A'#168#205#255'9'#160#196#255'4'#157
+'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255 +#194#255'5'#160#198#255'@'#165#198#255'O'#172#200#255'~'#202#228#134#0#0'#'#0
+'('#144#180#255')'#144#181#255'4'#156#192#255'U'#182#216#253#130#192#205'l'#0 +#0#0#0#5'bD;'#177'P0('#159't'#157#168'Sl'#205#238#251'_'#199#235#255'S'#187
+#0'#'#0#0#0'#'#0'dF='#150'G,$]{'#196#221'lj'#210#246#255'`'#189#217#255'O' +#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255')'#144
+#176#205#255'J'#170#200#255'L'#168#196#255'I'#164#193#255'='#154#184#255'6' +#181#255'4'#156#192#255'U'#182#216#253#130#192#205'l'#0#0'#'#0#0#0'#'#0'dF='
+#151#182#255'@'#157#187#255'N'#182#218#255'z'#204#233#130#0#0'#'#0'dNF'#128 +#150'G,$]{'#196#221'lj'#210#246#255'`'#189#217#255'O'#176#205#255'J'#170#200
+'hH?'#142'U5-~'#132#197#217'j['#186#217#252'Y'#190#225#255'Y'#185#219#255'P' +#255'L'#168#196#255'I'#164#193#255'='#154#184#255'6'#151#182#255'@'#157#187
+#177#211#255'<'#164#200#255'0'#153#189#255'1'#147#181#255'9'#153#187#255'@' +#255'N'#182#218#255'z'#204#233#130#0#0'#'#0'dNF'#128'hH?'#142'U5-~'#132#197
+#164#199#255'P'#175#207#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l'#195 +#217'j['#186#217#252'Y'#190#225#255'Y'#185#219#255'P'#177#211#255'<'#164#200
+#218'Ol'#210#245#254'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200 +#255'0'#153#189#255'1'#147#181#255'9'#153#187#255'@'#164#199#255'P'#175#207
+#255'0'#153#189#255'('#144#180#255')'#145#181#255'4'#156#192#255'O'#182#218 +#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l'#195#218'Ol'#210#245#254'_'
+#255#130#205#229'o'#0#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235#255 +#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('
+'I'#175#207#255';'#166#201#255'4'#162#197#255'.'#158#195#255'-'#157#194#255 +#144#180#255')'#145#181#255'4'#156#192#255'O'#182#218#255#130#205#229'o'#0#0
+'-'#156#191#255'/'#155#190#255'6'#158#192#255'P'#178#210#255'y'#204#234#130#0 +'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235#255'I'#175#207#255';'#166
+#0'#'#0#0#0#0#9'bB:'#188'R2('#164'z'#164#179'U7'#162#195#243#24#159#207#255 +#201#255'4'#162#197#255'.'#158#195#255'-'#157#194#255'-'#156#191#255'/'#155
+#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255 +#190#255'6'#158#192#255'P'#178#210#255'y'#204#234#130#0#0'#'#0#0#0#0#9'bB:'
+#24#159#207#255#24#159#207#255'.'#159#196#247'{'#184#200'i'#0#0'#'#0#0#0'#'#0 +#188'R2('#164'z'#164#179'U7'#162#195#243#24#159#207#255#24#159#207#255#24#159
+'{SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159#189#158'1'#159#193#188'.'#159#195 +#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159
+#211'+'#158#196#234'+'#159#195#236'-'#159#195#214'0'#159#195#191'7'#160#192 +#207#255'.'#159#196#247'{'#184#200'i'#0#0'#'#0#0#0'#'#0'{SIfg@4'#148#26#0#0
,#164'^'#161#173'1'#0#0'#'#0#0#0'#'#0#0#10'TToggleBox'#10'ToggleBox2'#4'Left' ,#10'q'#161#162'$:'#159#189#158'1'#159#193#188'.'#159#195#211'+'#158#196#234
+#3'e'#1#6'Height'#2#23#3'Top'#3#155#0#5'Width'#2'Z'#7'Caption'#6#10'ToggleBo' +'+'#159#195#236'-'#159#195#214'0'#159#195#191'7'#160#192#164'^'#161#173'1'#0
+'x2'#8'TabOrder'#2#0#0#0#0#12'TGradTabPage'#12'GradTabPage4'#4'Left'#2#2#6'H' +#0'#'#0#0#0'#'#0#12'TabShowGlyph'#9#15'TabButtonLayout'#7#11'blGlyphLeft'#0#0
+'eight'#3#208#1#3'Top'#2#22#5'Width'#3#128#2#9'PageIndex'#2#2#7'Caption'#6#11 +#12'TGradTabPage'#12'GradTabPage2'#4'Left'#2#2#6'Height'#3#210#1#3'Top'#2#22
+#195#164#195#182#195#188'-test'#8'TabColor'#7#6'clBlue'#13'TabGlyph.Data'#10 +#5'Width'#3#128#2#9'PageIndex'#2#1#7'Caption'#6#12'GradTabPage2'#15'ShowClos'
+':'#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 +'eButton'#9#8'TabColor'#7#6'clBlue'#16'TabTextAlignment'#7#13'taLeftJustify'
+' '#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?' +#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
+'5'#165#28#14#14#18#134#198#220'-k'#194#225#153'_'#188#221#184'U'#180#212#210 +#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
+'L'#169#202#232'C'#160#192#234'>'#156#188#213'B'#158#191#188'P'#168#199#159 +'nUN'#141'pND'#166'h?5'#165#28#14#14#18#134#198#220'-k'#194#225#153'_'#188
+'y'#185#208';'#0#0'#'#0#0#0'#'#0'fNI'#130'Y=7pmB7pa'#134#150'Dp'#208#242#246 +#221#184'U'#180#212#210'L'#169#202#232'C'#160#192#234'>'#156#188#213'B'#158
+'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255 +#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0'#'#0'fNI'#130'Y=7pmB7pa'
+'('#144#180#255')'#144#181#255'4'#156#192#255'U'#183#217#250#133#201#225'O'#0 +#134#150'Dp'#208#242#246'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164
+#0'#'#0'Q<6&nKB'#142'L-&kv'#187#210'ok'#210#245#255']'#186#213#255'Q'#175#205 +#200#255'0'#153#189#255'('#144#180#255')'#144#181#255'4'#156#192#255'U'#183
+#255'R'#172#200#255'J'#168#199#255'E'#163#195#255'F'#159#188#255'='#153#184 +#217#250#133#201#225'O'#0#0'#'#0'Q<6&nKB'#142'L-&kv'#187#210'ok'#210#245#255
+#255'@'#158#187#255'O'#181#217#255'z'#205#235#130#0#0'#'#0#0#0#0#6'X>5|`:0' +']'#186#213#255'Q'#175#205#255'R'#172#200#255'J'#168#199#255'E'#163#195#255
+#181'{'#175#193'm^'#187#219#252'^'#193#227#255'Z'#187#220#255'G'#176#212#255 +'F'#159#188#255'='#153#184#255'@'#158#187#255'O'#181#217#255'z'#205#235#130#0
+'<'#164#200#255'0'#153#189#255'('#144#180#255'3'#149#182#255'B'#162#196#255 +#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175#193'm^'#187#219#252'^'#193#227#255'Z'#187
+'T'#177#209#253'~'#192#210#136#0#0'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204 +#220#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255'3'#149
+#230'Zk'#210#246#255'_'#199#235#255'S'#187#223#255'G'#176#212#255'D'#164#195 +#182#255'B'#162#196#255'T'#177#209#253'~'#192#210#136#0#0'#'#0#0#0'#'#0'iH>'
+#255':'#154#183#255'('#144#180#255')'#144#181#255'4'#156#192#255'N'#182#218 +#131'_90'#142#133#204#230'Zk'#210#246#255'_'#199#235#255'S'#187#223#255'G'
+#255'}'#204#230'x'#0#0'#'#0#0#0#0#7'^?8m_8.it'#183#205'rh'#197#226#255'U'#176 +#176#212#255'D'#164#195#255':'#154#183#255'('#144#180#255')'#144#181#255'4'
+#205#255'N'#175#206#255'J'#171#205#255'C'#169#204#255'='#163#199#255'='#160 +#156#192#255'N'#182#218#255'}'#204#230'x'#0#0'#'#0#0#0#0#7'^?8m_8.it'#183#205
+#193#255'@'#161#193#255'I'#164#195#255'Q'#175#205#255'z'#204#233#130#0#0'#'#0 +'rh'#197#226#255'U'#176#205#255'N'#175#206#255'J'#171#205#255'C'#169#204#255
+#0#0#0#4'^A7'#138'e>3w'#133#184#196'Qi'#196#229#252'`'#199#235#255'S'#187#223 +'='#163#199#255'='#160#193#255'@'#161#193#255'I'#164#195#255'Q'#175#205#255
+#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255')'#144#181 +'z'#204#233#130#0#0'#'#0#0#0#0#4'^A7'#138'e>3w'#133#184#196'Qi'#196#229#252
+#255'4'#156#192#255'W'#181#213#253#135#187#204'w'#0#0'#'#0#0#0'#'#0',#'#26#29 +'`'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255
+'Q2)'#138'p'#177#198'qj'#210#246#255'`'#199#234#255'\'#183#211#255'O'#171#199 +'('#144#180#255')'#144#181#255'4'#156#192#255'W'#181#213#253#135#187#204'w'#0
+#255'B'#161#192#255';'#155#185#255'9'#149#176#255'8'#146#175#255'6'#156#191 +#0'#'#0#0#0'#'#0',#'#26#29'Q2)'#138'p'#177#198'qj'#210#246#255'`'#199#234#255
+#255'N'#182#218#255'{'#206#233#129#0#0'#'#0#0#0#0#4'pND'#150'lB7'#154'z'#187 +'\'#183#211#255'O'#171#199#255'B'#161#192#255';'#155#185#255'9'#149#176#255
+#206'q]'#184#210#255'P'#178#212#255'I'#179#216#255'D'#176#212#255'A'#168#205 +'8'#146#175#255'6'#156#191#255'N'#182#218#255'{'#206#233#129#0#0'#'#0#0#0#0#4
+#255'9'#160#196#255'4'#157#194#255'5'#160#198#255'@'#165#198#255'O'#172#200 +'pND'#150'lB7'#154'z'#187#206'q]'#184#210#255'P'#178#212#255'I'#179#216#255
+#255'~'#202#228#134#0#0'#'#0#0#0#0#5'bD;'#177'P0('#159't'#157#168'Sl'#205#238 +'D'#176#212#255'A'#168#205#255'9'#160#196#255'4'#157#194#255'5'#160#198#255
+#251'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189 +'@'#165#198#255'O'#172#200#255'~'#202#228#134#0#0'#'#0#0#0#0#5'bD;'#177'P0('
+#255'('#144#180#255')'#144#181#255'4'#156#192#255'U'#182#216#253#130#192#205 +#159't'#157#168'Sl'#205#238#251'_'#199#235#255'S'#187#223#255'G'#176#212#255
+'l'#0#0'#'#0#0#0'#'#0'dF='#150'G,$]{'#196#221'lj'#210#246#255'`'#189#217#255 +'<'#164#200#255'0'#153#189#255'('#144#180#255')'#144#181#255'4'#156#192#255
+'O'#176#205#255'J'#170#200#255'L'#168#196#255'I'#164#193#255'='#154#184#255 +'U'#182#216#253#130#192#205'l'#0#0'#'#0#0#0'#'#0'dF='#150'G,$]{'#196#221'lj'
+'6'#151#182#255'@'#157#187#255'N'#182#218#255'z'#204#233#130#0#0'#'#0'dNF' +#210#246#255'`'#189#217#255'O'#176#205#255'J'#170#200#255'L'#168#196#255'I'
+#128'hH?'#142'U5-~'#132#197#217'j['#186#217#252'Y'#190#225#255'Y'#185#219#255 +#164#193#255'='#154#184#255'6'#151#182#255'@'#157#187#255'N'#182#218#255'z'
+'P'#177#211#255'<'#164#200#255'0'#153#189#255'1'#147#181#255'9'#153#187#255 +#204#233#130#0#0'#'#0'dNF'#128'hH?'#142'U5-~'#132#197#217'j['#186#217#252'Y'
+'@'#164#199#255'P'#175#207#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l' +#190#225#255'Y'#185#219#255'P'#177#211#255'<'#164#200#255'0'#153#189#255'1'
+#195#218'Ol'#210#245#254'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164 +#147#181#255'9'#153#187#255'@'#164#199#255'P'#175#207#253'|'#195#215#135#0#0
+#200#255'0'#153#189#255'('#144#180#255')'#145#181#255'4'#156#192#255'O'#182 +'#'#0'kRJ|pLE'#137'\9-l'#195#218'Ol'#210#245#254'_'#199#235#255'S'#187#223
+#218#255#130#205#229'o'#0#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235 +#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255')'#145#181
+#255'I'#175#207#255';'#166#201#255'4'#162#197#255'.'#158#195#255'-'#157#194 +#255'4'#156#192#255'O'#182#218#255#130#205#229'o'#0#0'#'#0#0#0#0#6'6"'#27'&M'
+#255'-'#156#191#255'/'#155#190#255'6'#158#192#255'P'#178#210#255'y'#204#234 +'.(t}'#198#223'lk'#204#235#255'I'#175#207#255';'#166#201#255'4'#162#197#255
+#130#0#0'#'#0#0#0#0#9'bB:'#188'R2('#164'z'#164#179'U7'#162#195#243#24#159#207 +'.'#158#195#255'-'#157#194#255'-'#156#191#255'/'#155#190#255'6'#158#192#255
+#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207 +'P'#178#210#255'y'#204#234#130#0#0'#'#0#0#0#0#9'bB:'#188'R2('#164'z'#164#179
+#255#24#159#207#255#24#159#207#255'.'#159#196#247'{'#184#200'i'#0#0'#'#0#0#0 +'U7'#162#195#243#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255
+'#'#0'{SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159#189#158'1'#159#193#188'.'#159 +#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255'.'#159#196#247
+#195#211'+'#158#196#234'+'#159#195#236'-'#159#195#214'0'#159#195#191'7'#160 +'{'#184#200'i'#0#0'#'#0#0#0'#'#0'{SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159
+#192#164'^'#161#173'1'#0#0'#'#0#0#0'#'#0#0#0#12'TGradTabPage'#12'GradTabPage' +#189#158'1'#159#193#188'.'#159#195#211'+'#158#196#234'+'#159#195#236'-'#159
+'3'#4'Left'#2#2#6'Height'#3#210#1#3'Top'#2#22#5'Width'#3#128#2#9'PageIndex'#2 +#195#214'0'#159#195#191'7'#160#192#164'^'#161#173'1'#0#0'#'#0#0#0'#'#0#12'Ta'
+#3#7'Caption'#6#12'GradTabPage3'#8'TabColor'#7#6'clBlue'#13'TabGlyph.Data'#10 +'bShowGlyph'#9#15'TabButtonLayout'#7#11'blGlyphLeft'#0#0#12'TGradTabPage'#12
+':'#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 +'GradTabPage1'#4'Left'#2#2#6'Height'#3#210#1#3'Top'#2#22#5'Width'#3#128#2#9
+' '#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?' +'PageIndex'#2#0#7'Caption'#6#9'Some Memo'#15'ShowCloseButton'#9#5'Color'#7#10
+'5'#165#28#14#14#18#134#198#220'-k'#194#225#153'_'#188#221#184'U'#180#212#210 +'clGrayText'#8'TabColor'#7#7'clGreen'#16'TabTextAlignment'#7#13'taLeftJustif'
+'L'#169#202#232'C'#160#192#234'>'#156#188#213'B'#158#191#188'P'#168#199#159 +'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
+'y'#185#208';'#0#0'#'#0#0#0'#'#0'fNI'#130'Y=7pmB7pa'#134#150'Dp'#208#242#246 +#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
+'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255 +#0'nUN'#141'pND'#166'h?5'#165#28#14#14#18#134#198#220'-k'#194#225#153'_'#188
+'('#144#180#255')'#144#181#255'4'#156#192#255'U'#183#217#250#133#201#225'O'#0 +#221#184'U'#180#212#210'L'#169#202#232'C'#160#192#234'>'#156#188#213'B'#158
+#0'#'#0'Q<6&nKB'#142'L-&kv'#187#210'ok'#210#245#255']'#186#213#255'Q'#175#205 +#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0'#'#0'fNI'#130'Y=7pmB7pa'
+#255'R'#172#200#255'J'#168#199#255'E'#163#195#255'F'#159#188#255'='#153#184 +#134#150'Dp'#208#242#246'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164
+#255'@'#158#187#255'O'#181#217#255'z'#205#235#130#0#0'#'#0#0#0#0#6'X>5|`:0' +#200#255'0'#153#189#255'('#144#180#255')'#144#181#255'4'#156#192#255'U'#183
+#181'{'#175#193'm^'#187#219#252'^'#193#227#255'Z'#187#220#255'G'#176#212#255 +#217#250#133#201#225'O'#0#0'#'#0'Q<6&nKB'#142'L-&kv'#187#210'ok'#210#245#255
,'<'#164#200#255'0'#153#189#255'('#144#180#255'3'#149#182#255'B'#162#196#255 ,']'#186#213#255'Q'#175#205#255'R'#172#200#255'J'#168#199#255'E'#163#195#255
+'T'#177#209#253'~'#192#210#136#0#0'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204 +'F'#159#188#255'='#153#184#255'@'#158#187#255'O'#181#217#255'z'#205#235#130#0
+#230'Zk'#210#246#255'_'#199#235#255'S'#187#223#255'G'#176#212#255'D'#164#195 +#0'#'#0#0#0#0#6'X>5|`:0'#181'{'#175#193'm^'#187#219#252'^'#193#227#255'Z'#187
+#255':'#154#183#255'('#144#180#255')'#144#181#255'4'#156#192#255'N'#182#218 +#220#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255'3'#149
+#255'}'#204#230'x'#0#0'#'#0#0#0#0#7'^?8m_8.it'#183#205'rh'#197#226#255'U'#176 +#182#255'B'#162#196#255'T'#177#209#253'~'#192#210#136#0#0'#'#0#0#0'#'#0'iH>'
+#205#255'N'#175#206#255'J'#171#205#255'C'#169#204#255'='#163#199#255'='#160 +#131'_90'#142#133#204#230'Zk'#210#246#255'_'#199#235#255'S'#187#223#255'G'
+#193#255'@'#161#193#255'I'#164#195#255'Q'#175#205#255'z'#204#233#130#0#0'#'#0 +#176#212#255'D'#164#195#255':'#154#183#255'('#144#180#255')'#144#181#255'4'
+#0#0#0#4'^A7'#138'e>3w'#133#184#196'Qi'#196#229#252'`'#199#235#255'S'#187#223 +#156#192#255'N'#182#218#255'}'#204#230'x'#0#0'#'#0#0#0#0#7'^?8m_8.it'#183#205
+#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255')'#144#181 +'rh'#197#226#255'U'#176#205#255'N'#175#206#255'J'#171#205#255'C'#169#204#255
+#255'4'#156#192#255'W'#181#213#253#135#187#204'w'#0#0'#'#0#0#0'#'#0',#'#26#29 +'='#163#199#255'='#160#193#255'@'#161#193#255'I'#164#195#255'Q'#175#205#255
+'Q2)'#138'p'#177#198'qj'#210#246#255'`'#199#234#255'\'#183#211#255'O'#171#199 +'z'#204#233#130#0#0'#'#0#0#0#0#4'^A7'#138'e>3w'#133#184#196'Qi'#196#229#252
+#255'B'#161#192#255';'#155#185#255'9'#149#176#255'8'#146#175#255'6'#156#191 +'`'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255
+#255'N'#182#218#255'{'#206#233#129#0#0'#'#0#0#0#0#4'pND'#150'lB7'#154'z'#187 +'('#144#180#255')'#144#181#255'4'#156#192#255'W'#181#213#253#135#187#204'w'#0
+#206'q]'#184#210#255'P'#178#212#255'I'#179#216#255'D'#176#212#255'A'#168#205 +#0'#'#0#0#0'#'#0',#'#26#29'Q2)'#138'p'#177#198'qj'#210#246#255'`'#199#234#255
+#255'9'#160#196#255'4'#157#194#255'5'#160#198#255'@'#165#198#255'O'#172#200 +'\'#183#211#255'O'#171#199#255'B'#161#192#255';'#155#185#255'9'#149#176#255
+#255'~'#202#228#134#0#0'#'#0#0#0#0#5'bD;'#177'P0('#159't'#157#168'Sl'#205#238 +'8'#146#175#255'6'#156#191#255'N'#182#218#255'{'#206#233#129#0#0'#'#0#0#0#0#4
+#251'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189 +'pND'#150'lB7'#154'z'#187#206'q]'#184#210#255'P'#178#212#255'I'#179#216#255
+#255'('#144#180#255')'#144#181#255'4'#156#192#255'U'#182#216#253#130#192#205 +'D'#176#212#255'A'#168#205#255'9'#160#196#255'4'#157#194#255'5'#160#198#255
+'l'#0#0'#'#0#0#0'#'#0'dF='#150'G,$]{'#196#221'lj'#210#246#255'`'#189#217#255 +'@'#165#198#255'O'#172#200#255'~'#202#228#134#0#0'#'#0#0#0#0#5'bD;'#177'P0('
+'O'#176#205#255'J'#170#200#255'L'#168#196#255'I'#164#193#255'='#154#184#255 +#159't'#157#168'Sl'#205#238#251'_'#199#235#255'S'#187#223#255'G'#176#212#255
+'6'#151#182#255'@'#157#187#255'N'#182#218#255'z'#204#233#130#0#0'#'#0'dNF' +'<'#164#200#255'0'#153#189#255'('#144#180#255')'#144#181#255'4'#156#192#255
+#128'hH?'#142'U5-~'#132#197#217'j['#186#217#252'Y'#190#225#255'Y'#185#219#255 +'U'#182#216#253#130#192#205'l'#0#0'#'#0#0#0'#'#0'dF='#150'G,$]{'#196#221'lj'
+'P'#177#211#255'<'#164#200#255'0'#153#189#255'1'#147#181#255'9'#153#187#255 +#210#246#255'`'#189#217#255'O'#176#205#255'J'#170#200#255'L'#168#196#255'I'
+'@'#164#199#255'P'#175#207#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l' +#164#193#255'='#154#184#255'6'#151#182#255'@'#157#187#255'N'#182#218#255'z'
+#195#218'Ol'#210#245#254'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164 +#204#233#130#0#0'#'#0'dNF'#128'hH?'#142'U5-~'#132#197#217'j['#186#217#252'Y'
+#200#255'0'#153#189#255'('#144#180#255')'#145#181#255'4'#156#192#255'O'#182 +#190#225#255'Y'#185#219#255'P'#177#211#255'<'#164#200#255'0'#153#189#255'1'
+#218#255#130#205#229'o'#0#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235 +#147#181#255'9'#153#187#255'@'#164#199#255'P'#175#207#253'|'#195#215#135#0#0
+#255'I'#175#207#255';'#166#201#255'4'#162#197#255'.'#158#195#255'-'#157#194 +'#'#0'kRJ|pLE'#137'\9-l'#195#218'Ol'#210#245#254'_'#199#235#255'S'#187#223
+#255'-'#156#191#255'/'#155#190#255'6'#158#192#255'P'#178#210#255'y'#204#234 +#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255')'#145#181
+#130#0#0'#'#0#0#0#0#9'bB:'#188'R2('#164'z'#164#179'U7'#162#195#243#24#159#207 +#255'4'#156#192#255'O'#182#218#255#130#205#229'o'#0#0'#'#0#0#0#0#6'6"'#27'&M'
+#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207 +'.(t}'#198#223'lk'#204#235#255'I'#175#207#255';'#166#201#255'4'#162#197#255
+#255#24#159#207#255#24#159#207#255'.'#159#196#247'{'#184#200'i'#0#0'#'#0#0#0 +'.'#158#195#255'-'#157#194#255'-'#156#191#255'/'#155#190#255'6'#158#192#255
+'#'#0'{SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159#189#158'1'#159#193#188'.'#159 +'P'#178#210#255'y'#204#234#130#0#0'#'#0#0#0#0#9'bB:'#188'R2('#164'z'#164#179
+#195#211'+'#158#196#234'+'#159#195#236'-'#159#195#214'0'#159#195#191'7'#160 +'U7'#162#195#243#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255
+#192#164'^'#161#173'1'#0#0'#'#0#0#0'#'#0#0#7'TButton'#7'Button3'#4'Left'#2'c' +#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255'.'#159#196#247
+#6'Height'#2#25#3'Top'#2'G'#5'Width'#2'K'#7'Caption'#6#7'Button3'#8'TabOrder' +'{'#184#200'i'#0#0'#'#0#0#0'#'#0'{SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159
+#2#0#0#0#0#12'TGradTabPage'#12'GradTabPage2'#4'Left'#2#2#6'Height'#3#210#1#3 +#189#158'1'#159#193#188'.'#159#195#211'+'#158#196#234'+'#159#195#236'-'#159
+'Top'#2#22#5'Width'#3#128#2#9'PageIndex'#2#1#7'Caption'#6#12'GradTabPage2'#12 +#195#214'0'#159#195#191'7'#160#192#164'^'#161#173'1'#0#0'#'#0#0#0'#'#0#12'Ta'
+'TabPopupMenu'#7#10'PopupMenu1'#8'TabColor'#7#7'clGreen'#13'TabGlyph.Data'#10 +'bShowGlyph'#9#15'TabButtonLayout'#7#11'blGlyphLeft'#0#5'TMemo'#5'Memo1'#4'L'
+':'#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 +'eft'#3'8'#1#6'Height'#3#210#1#3'Top'#2#0#5'Width'#3'H'#1#5'Align'#7#7'alRig'
+' '#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?' +'ht'#13'Lines.Strings'#1#6#9'Some Memo'#6#7'alRight'#0#8'TabOrder'#2#0#0#0#0
+'5'#165#28#14#14#18#134#198#220'-k'#194#225#153'_'#188#221#184'U'#180#212#210 +#0#0#6'TPanel'#6'Panel2'#4'Left'#3#134#2#6'Height'#3#236#1#3'Top'#2#0#5'Widt'
+'L'#169#202#232'C'#160#192#234'>'#156#188#213'B'#158#191#188'P'#168#199#159 +'h'#3#238#0#5'Align'#7#7'alRight'#12'ClientHeight'#3#236#1#11'ClientWidth'#3
+'y'#185#208';'#0#0'#'#0#0#0'#'#0'fNI'#130'Y=7pmB7pa'#134#150'Dp'#208#242#246 +#238#0#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2#16#6'Height'#2#16#3'T'
+'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189#255 +'op'#3#160#0#5'Width'#2'9'#7'Caption'#6#9'TabHeight'#11'ParentColor'#8#0#0#9
+'('#144#180#255')'#144#181#255'4'#156#192#255'U'#183#217#250#133#201#225'O'#0 +'TComboBox'#9'ComboBox1'#4'Left'#2#16#6'Height'#2#23#3'Top'#2#16#5'Width'#2
+#0'#'#0'Q<6&nKB'#142'L-&kv'#187#210'ok'#210#245#255']'#186#213#255'Q'#175#205 +'d'#10'ItemHeight'#2#15#8'OnChange'#7#15'ComboBox1Change'#5'Style'#7#14'csDr'
+#255'R'#172#200#255'J'#168#199#255'E'#163#195#255'F'#159#188#255'='#153#184 +'opDownList'#8'TabOrder'#2#0#0#0#11'TRadioGroup'#11'RadioGroup1'#4'Left'#3
+#255'@'#158#187#255'O'#181#217#255'z'#205#235#130#0#0'#'#0#0#0#0#6'X>5|`:0' +#128#0#6'Height'#2'q'#3'Top'#2#16#5'Width'#2'd'#8'AutoFill'#9#7'Caption'#6#12
+#181'{'#175#193'm^'#187#219#252'^'#193#227#255'Z'#187#220#255'G'#176#212#255 +'Tab Position'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottom'
+'<'#164#200#255'0'#153#189#255'('#144#180#255'3'#149#182#255'B'#162#196#255 +'Spacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResiz'
+'T'#177#209#253'~'#192#210#136#0#0'#'#0#0#0'#'#0'iH>'#131'_90'#142#133#204 +'e'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildS'
+#230'Zk'#210#246#255'_'#199#235#255'S'#187#223#255'G'#176#212#255'D'#164#195 +'izing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'
+#255':'#154#183#255'('#144#180#255')'#144#181#255'4'#156#192#255'N'#182#218 +#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBot'
+#255'}'#204#230'x'#0#0'#'#0#0#0#0#7'^?8m_8.it'#183#205'rh'#197#226#255'U'#176 +'tom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2'_'#11'ClientWid'
+#205#255'N'#175#206#255'J'#171#205#255'C'#169#204#255'='#163#199#255'='#160 +'th'#2'`'#9'ItemIndex'#2#0#13'Items.Strings'#1#6#5'tpTop'#6#8'tpBottom'#6#6
+#193#255'@'#161#193#255'I'#164#195#255'Q'#175#205#255'z'#204#233#130#0#0'#'#0 +'tpLeft'#6#7'tpRight'#0#7'OnClick'#7#16'RadioGroup1Click'#8'TabOrder'#2#1#0#0
+#0#0#0#4'^A7'#138'e>3w'#133#184#196'Qi'#196#229#252'`'#199#235#255'S'#187#223 +#9'TCheckBox'#9'CheckBox1'#4'Left'#2#16#6'Height'#2#16#3'Top'#2'p'#5'Width'#2
+#255'G'#176#212#255'<'#164#200#255'0'#153#189#255'('#144#180#255')'#144#181 +'d'#8'AutoSize'#8#7'Caption'#6#9'Long Tabs'#7'OnClick'#7#14'CheckBox1Click'#8
+#255'4'#156#192#255'W'#181#213#253#135#187#204'w'#0#0'#'#0#0#0'#'#0',#'#26#29 +'TabOrder'#2#2#0#0#11'TGradButton'#10'NewPageBtn'#4'Left'#2#16#6'Height'#2#25
+'Q2)'#138'p'#177#198'qj'#210#246#255'`'#199#234#255'\'#183#211#255'O'#171#199 +#3'Top'#2'0'#5'Width'#2'd'#7'Caption'#6#8'New Page'#10'Font.Color'#7#7'clWhi'
+#255'B'#161#192#255';'#155#185#255'9'#149#176#255'8'#146#175#255'6'#156#191 +'te'#7'OnClick'#7#15'NewPageBtnClick'#8'TabOrder'#2#3#7'TabStop'#9#11'Normal'
+#255'N'#182#218#255'{'#206#233#129#0#0'#'#0#0#0#0#4'pND'#150'lB7'#154'z'#187 +'Blend'#5#0#0#0#0#0#0#0#128#254'?'#9'OverBlend'#5'5^'#186'I'#12#2'+'#167#254
+#206'q]'#184#210#255'P'#178#212#255'I'#179#216#255'D'#176#212#255'A'#168#205 +'?'#9'BaseColor'#7#6'clBlue'#5'Color'#7#6'clBlue'#16'NormalBlendColor'#7#7'c'
,#255'9'#160#196#255'4'#157#194#255'5'#160#198#255'@'#165#198#255'O'#172#200 ,'lWhite'#14'OverBlendColor'#7#8'clSilver'#15'BackgroundColor'#7#9'clBtnFace'
+#255'~'#202#228#134#0#0'#'#0#0#0#0#5'bD;'#177'P0('#159't'#157#168'Sl'#205#238 +#15'ShowFocusBorder'#9#9'ShowGlyph'#8#20'GlyphBackgroundColor'#7#7'clWhite'
+#251'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164#200#255'0'#153#189 +#10'ClickColor'#7#6'clBlue'#19'OwnerBackgroundDraw'#8#22'AutoWidthBorderSpac'
+#255'('#144#180#255')'#144#181#255'4'#156#192#255'U'#182#216#253#130#192#205 +'ing'#2#15#23'AutoHeightBorderSpacing'#2#15#0#0#11'TGradButton'#9'DeleteBtn'
+'l'#0#0'#'#0#0#0'#'#0'dF='#150'G,$]{'#196#221'lj'#210#246#255'`'#189#217#255 +#4'Left'#2#16#6'Height'#2#25#3'Top'#2'P'#5'Width'#2'd'#7'Caption'#6#6'Delete'
+'O'#176#205#255'J'#170#200#255'L'#168#196#255'I'#164#193#255'='#154#184#255 +#10'Font.Color'#7#7'clWhite'#7'OnClick'#7#14'DeleteBtnClick'#8'TabOrder'#2#4
+'6'#151#182#255'@'#157#187#255'N'#182#218#255'z'#204#233#130#0#0'#'#0'dNF' +#7'TabStop'#9#11'NormalBlend'#5#0#0#0#0#0#0#0#128#254'?'#9'OverBlend'#5'5^'
+#128'hH?'#142'U5-~'#132#197#217'j['#186#217#252'Y'#190#225#255'Y'#185#219#255 +#186'I'#12#2'+'#167#254'?'#9'BaseColor'#7#6'clBlue'#5'Color'#7#6'clBlue'#16
+'P'#177#211#255'<'#164#200#255'0'#153#189#255'1'#147#181#255'9'#153#187#255 +'NormalBlendColor'#7#7'clWhite'#14'OverBlendColor'#7#8'clSilver'#15'Backgrou'
+'@'#164#199#255'P'#175#207#253'|'#195#215#135#0#0'#'#0'kRJ|pLE'#137'\9-l' +'ndColor'#7#9'clBtnFace'#15'ShowFocusBorder'#9#9'ShowGlyph'#8#20'GlyphBackgr'
+#195#218'Ol'#210#245#254'_'#199#235#255'S'#187#223#255'G'#176#212#255'<'#164 +'oundColor'#7#7'clWhite'#10'ClickColor'#7#6'clBlue'#19'OwnerBackgroundDraw'#8
+#200#255'0'#153#189#255'('#144#180#255')'#145#181#255'4'#156#192#255'O'#182 +#22'AutoWidthBorderSpacing'#2#15#23'AutoHeightBorderSpacing'#2#15#0#0#9'TSpi'
+#218#255#130#205#229'o'#0#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235 +'nEdit'#9'SpinEdit2'#4'Left'#2#16#6'Height'#2#25#3'Top'#3#176#0#5'Width'#2'd'
+#255'I'#175#207#255';'#166#201#255'4'#162#197#255'.'#158#195#255'-'#157#194 +#13'OnEditingDone'#7#20'SpinEdit2EditingDone'#8'TabOrder'#2#5#0#0#5'TEdit'#5
+#255'-'#156#191#255'/'#155#190#255'6'#158#192#255'P'#178#210#255'y'#204#234 +'Edit1'#4'Left'#2#16#6'Height'#2#25#3'Top'#3#136#0#5'Width'#2'H'#8'TabOrder'
+#130#0#0'#'#0#0#0#0#9'bB:'#188'R2('#164'z'#164#179'U7'#162#195#243#24#159#207 +#2#6#4'Text'#6#5'Edit1'#0#0#11'TGradButton'#11'GradButton1'#4'Left'#2'Z'#6'H'
+#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207 +'eight'#2#19#3'Top'#3#136#0#5'Width'#2#26#7'Caption'#6#3'set'#10'Font.Color'
+#255#24#159#207#255#24#159#207#255'.'#159#196#247'{'#184#200'i'#0#0'#'#0#0#0 +#7#7'clWhite'#7'OnClick'#7#16'GradButton1Click'#8'TabOrder'#2#7#7'TabStop'#9
+'#'#0'{SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159#189#158'1'#159#193#188'.'#159 +#11'NormalBlend'#5#0#0#0#0#0#0#0#128#254'?'#9'OverBlend'#5'5^'#186'I'#12#2'+'
+#195#211'+'#158#196#234'+'#159#195#236'-'#159#195#214'0'#159#195#191'7'#160 +#167#254'?'#9'BaseColor'#7#6'clBlue'#5'Color'#7#6'clBlue'#16'NormalBlendColo'
+#192#164'^'#161#173'1'#0#0'#'#0#0#0'#'#0#12'TabShowGlyph'#9#0#12'TPageContro' +'r'#7#7'clWhite'#14'OverBlendColor'#7#8'clSilver'#15'BackgroundColor'#7#9'cl'
+'l'#12'PageControl1'#4'Left'#3#173#0#6'Height'#3#200#0#3'Top'#2'9'#5'Width'#3 +'BtnFace'#15'ShowFocusBorder'#9#9'ShowGlyph'#8#20'GlyphBackgroundColor'#7#7
+#200#0#10'ActivePage'#7#9'TabSheet3'#8'TabIndex'#2#2#8'TabOrder'#2#0#10'OnDr' +'clWhite'#10'ClickColor'#7#6'clBlue'#19'OwnerBackgroundDraw'#8#22'AutoWidthB'
+'agDrop'#7#20'PageControl1DragDrop'#10'OnDragOver'#7#20'PageControl1DragOver' +'orderSpacing'#2#15#23'AutoHeightBorderSpacing'#2#15#0#0#11'TCheckGroup'#11
+#0#9'TTabSheet'#9'TabSheet1'#7'Caption'#6#9'TabSheet1'#0#0#9'TTabSheet'#9'Ta' +'CheckGroup1'#4'Left'#3#128#0#6'Height'#2'i'#3'Top'#3#143#0#5'Width'#2'd'#8
+'bSheet2'#7'Caption'#6#9'TabSheet2'#0#0#9'TTabSheet'#9'TabSheet3'#7'Caption' +'AutoFill'#9#7'Caption'#6#14'Scroll Buttons'#28'ChildSizing.LeftRightSpacing'
+#6#9'TabSheet3'#0#0#0#7'TButton'#7'Button2'#4'Left'#2'/'#6'Height'#2#25#3'To' +#2#6#28'ChildSizing.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7
+'p'#2#28#5'Width'#2'K'#7'Caption'#6#7'Button2'#8'TabOrder'#2#1#0#0#6'TPanel'
+#6'Panel3'#4'Left'#3#173#1#6'Height'#2'2'#3'Top'#2'Y'#5'Width'#3#170#0#7'Cap'
+'tion'#6#6'Panel3'#8'TabOrder'#2#2#0#0#0#0#0#6'TPanel'#6'Panel2'#4'Left'#3
+#134#2#6'Height'#3#236#1#5'Width'#3#238#0#5'Align'#7#7'alRight'#12'ClientHei'
+'ght'#3#236#1#11'ClientWidth'#3#238#0#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4
+'Left'#2#16#6'Height'#2#14#3'Top'#3#160#0#5'Width'#2'2'#7'Caption'#6#9'TabHe'
+'ight'#11'ParentColor'#8#0#0#9'TComboBox'#9'ComboBox1'#4'Left'#2#16#6'Height'
+#2#21#3'Top'#2#16#5'Width'#2'd'#10'ItemHeight'#2#13#8'OnChange'#7#15'ComboBo'
+'x1Change'#5'Style'#7#14'csDropDownList'#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.TopBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7
+#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomoge' +#24'crsHomogenousChildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomoge'
+'nousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'C' +'nousChildResize'#28'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'C'
+'hildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29 +'hildSizing.ShrinkVertical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29
+'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'Clien' +'cclLeftToRightThenTopToBottom'#27'ChildSizing.ControlsPerLine'#2#1#13'Items'
+'tHeight'#2'_'#11'ClientWidth'#2'`'#9'ItemIndex'#2#0#13'Items.Strings'#1#6#5 +'.Strings'#1#6#4'Auto'#6#7'LeftTop'#6#11'RightBottom'#0#7'OnClick'#7#16'Chec'
+'tpTop'#6#8'tpBottom'#6#6'tpLeft'#6#7'tpRight'#0#7'OnClick'#7#16'RadioGroup1' +'kGroup1Click'#11'OnItemClick'#7#20'CheckGroup1ItemClick'#8'TabOrder'#2#8#4
+'Click'#8'TabOrder'#2#1#0#0#9'TCheckBox'#9'CheckBox1'#4'Left'#2#16#6'Height' +'Data'#10#7#0#0#0#3#0#0#0#3#2#2#0#0#11'TRadioGroup'#11'RadioGroup2'#4'Left'#3
+#2#16#3'Top'#2'p'#5'Width'#2'd'#8'AutoSize'#8#7'Caption'#6#9'Long Tabs'#7'On' +#130#0#6'Height'#2'i'#3'Top'#3#0#1#5'Width'#2'd'#8'AutoFill'#9#7'Caption'#6
+'Click'#7#14'CheckBox1Click'#8'TabOrder'#2#2#0#0#11'TGradButton'#10'NewPageB' +#17'Tab Button Layout'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.T'
+'tn'#4'Left'#2#16#6'Height'#2#25#3'Top'#2'0'#5'Width'#2'd'#7'Caption'#6#8'Ne' +'opBottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousCh'
+'w Page'#10'Font.Color'#7#7'clWhite'#7'OnClick'#7#15'NewPageBtnClick'#8'TabO' +'ildResize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28
+'rder'#2#3#7'TabStop'#9#11'NormalBlend'#5#0#0#0#0#0#0#0#128#254'?'#9'OverBle' +'ChildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVer'
+'nd'#5'5^'#186'I'#12#2'+'#167#254'?'#9'BaseColor'#7#6'clBlue'#5'Color'#7#6'c' +'tical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenT'
+'lBlue'#16'NormalBlendColor'#7#7'clWhite'#14'OverBlendColor'#7#8'clSilver'#15 +'opToBottom'#27'ChildSizing.ControlsPerLine'#2#1#12'ClientHeight'#2'W'#11'Cl'
+'BackgroundColor'#7#9'clBtnFace'#15'ShowFocusBorder'#9#20'GlyphBackgroundCol' +'ientWidth'#2'`'#9'ItemIndex'#2#0#13'Items.Strings'#1#6#11'blGlyphLeft'#6#13
+'or'#7#7'clWhite'#10'ClickColor'#7#6'clBlue'#22'AutoWidthBorderSpacing'#2#15 +'blGlyphBottom'#6#12'blGlyphRight'#6#10'blGlyphTop'#0#7'OnClick'#7#16'RadioG'
+#23'AutoHeightBorderSpacing'#2#15#0#0#11'TGradButton'#9'DeleteBtn'#4'Left'#2 +'roup2Click'#8'TabOrder'#2#9#0#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3
+#16#6'Height'#2#25#3'Top'#2'P'#5'Width'#2'd'#7'Caption'#6#6'Delete'#10'Font.' +#222#2#3'top'#3#141#1#0#9'TMenuItem'#9'MenuItem1'#3'Tag'#4#152''#18#0#7'Cap'
+'Color'#7#7'clWhite'#7'OnClick'#7#14'DeleteBtnClick'#8'TabOrder'#2#4#7'TabSt' +'tion'#6#9'New Item1'#0#0#0#10'TImageList'#10'ImageList1'#4'left'#3#144#2#3
+'op'#9#11'NormalBlend'#5#0#0#0#0#0#0#0#128#254'?'#9'OverBlend'#5'5^'#186'I' +'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'{'
+#12#2'+'#167#254'?'#9'BaseColor'#7#6'clBlue'#5'Color'#7#6'clBlue'#16'NormalB' +'SIfg@4'#148#26#0#0#10'q'#161#162'$:'#159#189#158'1'#159#193#188'.'#159#195
+'lendColor'#7#7'clWhite'#14'OverBlendColor'#7#8'clSilver'#15'BackgroundColor' +#211'+'#158#196#234'+'#159#195#236'-'#159#195#214'0'#159#195#191'7'#160#192
+#7#9'clBtnFace'#15'ShowFocusBorder'#9#20'GlyphBackgroundColor'#7#7'clWhite' +#164'^'#161#173'1'#0#0'#'#0#0#0'#'#0#0#0#0#9'bB:'#188'R2('#164'z'#164#179'U7'
+#10'ClickColor'#7#6'clBlue'#22'AutoWidthBorderSpacing'#2#15#23'AutoHeightBor' +#162#195#243#24#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255#24
+'derSpacing'#2#15#0#0#9'TSpinEdit'#9'SpinEdit2'#4'Left'#2#16#6'Height'#2#19#3 +#159#207#255#24#159#207#255#24#159#207#255#24#159#207#255'.'#159#196#247'{'
,'Top'#3#176#0#5'Width'#2'd'#13'OnEditingDone'#7#20'SpinEdit2EditingDone'#8'T' +#184#200'i'#0#0'#'#0#0#0#0#6'6"'#27'&M.(t}'#198#223'lk'#204#235#255'I'#175
+'abOrder'#2#5#0#0#5'TEdit'#5'Edit1'#4'Left'#2#16#6'Height'#2#19#3'Top'#3#136
+#0#5'Width'#2'H'#8'TabOrder'#2#6#4'Text'#6#5'Edit1'#0#0#11'TGradButton'#11'G'
+'radButton1'#4'Left'#2'Z'#6'Height'#2#19#3'Top'#3#136#0#5'Width'#2#26#7'Capt'
+'ion'#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'O'
+'verBlend'#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'clSilv'
+'er'#15'BackgroundColor'#7#9'clBtnFace'#15'ShowFocusBorder'#9#20'GlyphBackgr'
+'oundColor'#7#7'clWhite'#10'ClickColor'#7#6'clBlue'#22'AutoWidthBorderSpacin'
+'g'#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'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#13'Items.Strings'
+#1#6#4'Auto'#6#7'LeftTop'#6#11'RightBottom'#0#7'OnClick'#7#16'CheckGroup1Cli'
+'ck'#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#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#222#2#3't'
+'op'#3#141#1#0#9'TMenuItem'#9'MenuItem1'#3'Tag'#4#152''#18#0#7'Caption'#6#9
+'New Item1'#0#0#0#10'TImageList'#10'ImageList1'#8'OnChange'#13#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 +#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 +#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' +'kRJ|pLE'#137'\9-l'#195#218'Ol'#210#245#254'_'#199#235#255'S'#187#223#255'G'
@ -298,7 +257,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#246#255'`'#189#217#255'O'#176#205#255'J'#170#200#255'L'#168#196#255'I'#164 +#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 +#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 +#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 ,#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 +#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 +#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 +#216#255'D'#176#212#255'A'#168#205#255'9'#160#196#255'4'#157#194#255'5'#160
@ -321,7 +280,7 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#168#199#255'E'#163#195#255'F'#159#188#255'='#153#184#255'@'#158#187#255'O' +#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 +#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 +#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 +#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 +'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 +#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 +#213'B'#158#191#188'P'#168#199#159'y'#185#208';'#0#0'#'#0#0#0'#'#0#0#0#0

View File

@ -7,7 +7,7 @@ interface
uses uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls, Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
ugradbtn, StdCtrls, ComCtrls, LCLType, LCLProc, LCLIntf, Buttons, ugradtabcontrol, ugradbtn, StdCtrls, ComCtrls, LCLType, LCLProc, LCLIntf, Buttons, ugradtabcontrol,
Menus, Spin, EditBtn; Menus, Spin, EditBtn, types;
type type
@ -18,8 +18,6 @@ type
{ TForm1 } { TForm1 }
TForm1 = class(TForm) TForm1 = class(TForm)
Button2: TButton;
Button3: TButton;
CheckBox1: TCheckBox; CheckBox1: TCheckBox;
CheckGroup1: TCheckGroup; CheckGroup1: TCheckGroup;
ComboBox1: TComboBox; ComboBox1: TComboBox;
@ -28,25 +26,20 @@ type
GradTabPage1: TGradTabPage; GradTabPage1: TGradTabPage;
GradTabPage2: TGradTabPage; GradTabPage2: TGradTabPage;
GradTabPage3: TGradTabPage; GradTabPage3: TGradTabPage;
GradTabPage4: TGradTabPage;
ImageList1: TImageList; ImageList1: TImageList;
Label1: TLabel; Label1: TLabel;
Memo1: TMemo;
NewPageBtn: TGradButton; NewPageBtn: TGradButton;
DeleteBtn: TGradButton; DeleteBtn: TGradButton;
GradTabControl1: TGradTabControl; GradTabControl1: TGradTabControl;
Memo2: TMemo; Memo2: TMemo;
MenuItem1: TMenuItem; MenuItem1: TMenuItem;
PageControl1: TPageControl;
Panel1: TPanel; Panel1: TPanel;
Panel2: TPanel; Panel2: TPanel;
Panel3: TPanel;
PopupMenu1: TPopupMenu; PopupMenu1: TPopupMenu;
RadioGroup1: TRadioGroup; RadioGroup1: TRadioGroup;
RadioGroup2: TRadioGroup;
SpinEdit2: TSpinEdit; SpinEdit2: TSpinEdit;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
ToggleBox2: TToggleBox;
procedure CheckBox1Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject);
procedure CheckGroup1Click(Sender: TObject); procedure CheckGroup1Click(Sender: TObject);
procedure CheckGroup1ItemClick(Sender: TObject; Index: integer); procedure CheckGroup1ItemClick(Sender: TObject; Index: integer);
@ -73,12 +66,11 @@ type
); );
procedure GradTabControl1TabButtonMouseUp(GradTabControl: TGradTabControl; procedure GradTabControl1TabButtonMouseUp(GradTabControl: TGradTabControl;
Button: TMouseButton; Shift: TShiftState; X, Y, AIndex: Integer); Button: TMouseButton; Shift: TShiftState; X, Y, AIndex: Integer);
procedure ImageList1Change(Sender: TObject); procedure GradTabControl1TabCloseButtonClick(
GradTabControl: TGradTabControl; AIndex: Integer);
procedure NewPageBtnClick(Sender: TObject); procedure NewPageBtnClick(Sender: TObject);
procedure PageControl1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure PageControl1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure RadioGroup1Click(Sender: TObject); procedure RadioGroup1Click(Sender: TObject);
procedure RadioGroup2Click(Sender: TObject);
procedure SpinEdit2EditingDone(Sender: TObject); procedure SpinEdit2EditingDone(Sender: TObject);
private private
{ private declarations } { private declarations }
@ -216,12 +208,19 @@ begin
B := Random(255)+1; B := Random(255)+1;
//WriteLn(R, ' ', G, ' ', B, ColorToString(RGBToColor(R,G,B))); //WriteLn(R, ' ', G, ' ', B, ColorToString(RGBToColor(R,G,B)));
GradTabControl1.ActivePage.Caption:='tab_'+IntToStr(C); with GradTabControl1.ActivePage do
//GradTabControl1.CurrentPage.Color:=RGBToColor(R, G, B); begin
GradTabControl1.ActivePage.TabPopupMenu := PopupMenu1; Caption:='tab_'+IntToStr(C);
GradTabControl1.ActivePage.PopupMenu:= PopupMenu1; TabPopupMenu := PopupMenu1;
PopupMenu:= PopupMenu1;
ImageIndex:=0;
TabShowGlyph:=true;
ShowCloseButton:=true;
ShowCloseButtonOnMouseOver:=true;
end;
ComboBox1.ItemIndex:=ComboBox1.Items.Add('tab_'+IntToStr(C)); ComboBox1.ItemIndex:=ComboBox1.Items.Add('tab_'+IntToStr(C));
RadioGroup2Click(nil);
end; end;
procedure TForm1.GradTabControl1DragOver(Sender, Source: TObject; X, procedure TForm1.GradTabControl1DragOver(Sender, Source: TObject; X,
@ -232,13 +231,13 @@ var
begin begin
//DebugLn('Name=%s',[Sender.ClassName]); //DebugLn('Name=%s',[Sender.ClassName]);
Accept := false; Accept := false;
if (Sender is TGradTabPageButton) then Accept := True; if (Sender is TGradTabPageButton) OR (Sender is TGradTabPagesBar) then Accept := True;
end; end;
procedure TForm1.GradTabControl1MouseDown(Sender: TObject; procedure TForm1.GradTabControl1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin begin
DebugLn('MouseDown on %s',[Sender.ClassName]); //DebugLn('MouseDown on %s',[Sender.ClassName]);
end; end;
procedure TForm1.GradTabControl1MouseWheelDown(Sender: TObject; procedure TForm1.GradTabControl1MouseWheelDown(Sender: TObject;
@ -293,42 +292,16 @@ begin
if Button=mbMiddle then if Button=mbMiddle then
begin begin
//GradTabControl.Tabs.Delete(AIndex); //GradTabControl.Tabs.Delete(AIndex);
ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(GradTabControl.Page[AIndex].Caption));
GradTabControl.Page[AIndex].Free; GradTabControl.Page[AIndex].Free;
end; end;
end; end;
procedure TForm1.ImageList1Change(Sender: TObject); procedure TForm1.GradTabControl1TabCloseButtonClick(
GradTabControl: TGradTabControl; AIndex: Integer);
begin begin
ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(GradTabControl.Page[AIndex].Caption));
end; GradTabControl.Page[AIndex].Free;
procedure TForm1.PageControl1DragDrop(Sender, Source: TObject; X, Y: Integer);
const
TCM_GETITEMRECT = $130A;
var
TabRect: TRect;
j: Integer;
begin
if (Sender is TGradTabControl) then
for j := 0 to GradTabControl1.PageCount - 1 do
begin
//GradTabControl1.Perform(TCM_GETITEMRECT, j, LParam(@TabRect)) ;
TabRect := GradTabControl1.GetTabRect(j);
DebugLn('X=%d Y=%d T.L=%d T.T=%d T.R=%d T.B=%d',[X,Y,TabRect.Left, TabRect.Top, TabRect.Right, TabRect.Bottom]);
if PtInRect(TabRect, Point(X, Y)) then
begin
if GradTabControl1.ActivePage.PageIndex <> j then
GradTabControl1.ActivePage.PageIndex := j;
Exit;
end;
end;
end;
procedure TForm1.PageControl1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
DebugLn('Name=%s',[Sender.ClassName]);
if (Sender is TGradTabControl) then Accept := True;
end; end;
procedure TForm1.RadioGroup1Click(Sender: TObject); procedure TForm1.RadioGroup1Click(Sender: TObject);
@ -341,6 +314,20 @@ begin
end; end;
end; end;
procedure TForm1.RadioGroup2Click(Sender: TObject);
var
i : Integer;
begin
for i := 0 to GradTabControl1.PageCount - 1 do
with GradTabControl1.Page[i] do
case RadioGroup2.ItemIndex of
0: TabButtonLayout := blGlyphLeft;
1: TabButtonLayout := blGlyphBottom;
2: TabButtonLayout := blGlyphRight;
3: TabButtonLayout := blGlyphTop;
end;
end;
procedure TForm1.SpinEdit2EditingDone(Sender: TObject); procedure TForm1.SpinEdit2EditingDone(Sender: TObject);
begin begin
GradTabControl1.TabHeight:=SpinEdit2.Value; GradTabControl1.TabHeight:=SpinEdit2.Value;

View File

@ -2,10 +2,11 @@
<CONFIG> <CONFIG>
<ProjectOptions> <ProjectOptions>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Version Value="6"/> <Version Value="7"/>
<General> <General>
<Flags> <Flags>
<AlwaysBuild Value="False"/> <AlwaysBuild Value="False"/>
<LRSInOutputDirectory Value="False"/>
</Flags> </Flags>
<SessionStorage Value="InProjectDir"/> <SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/> <MainUnit Value="0"/>
@ -50,7 +51,6 @@
<ComponentName Value="Form1"/> <ComponentName Value="Form1"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<ResourceFilename Value="Forms\main.lrs"/>
<UnitName Value="main"/> <UnitName Value="main"/>
</Unit1> </Unit1>
</Units> </Units>

View File

@ -2,8 +2,11 @@
<CONFIG> <CONFIG>
<ProjectOptions> <ProjectOptions>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Version Value="6"/> <Version Value="7"/>
<General> <General>
<Flags>
<LRSInOutputDirectory Value="False"/>
</Flags>
<SessionStorage Value="InProjectDir"/> <SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/> <MainUnit Value="0"/>
<TargetFileExt Value=".exe"/> <TargetFileExt Value=".exe"/>
@ -13,7 +16,7 @@
<VersionInfo> <VersionInfo>
<UseVersionInfo Value="True"/> <UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/> <AutoIncrementBuild Value="True"/>
<CurrentBuildNr Value="1051"/> <CurrentBuildNr Value="1108"/>
<ProjectVersion Value="0.0.0.0"/> <ProjectVersion Value="0.0.0.0"/>
</VersionInfo> </VersionInfo>
<PublishOptions> <PublishOptions>
@ -56,7 +59,6 @@
<HasResources Value="True"/> <HasResources Value="True"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<ResourceFilename Value="Forms\unit1.lrs"/>
<UnitName Value="Unit1"/> <UnitName Value="Unit1"/>
</Unit1> </Unit1>
<Unit2> <Unit2>
@ -76,10 +78,15 @@
<CStyleOperator Value="False"/> <CStyleOperator Value="False"/>
</SyntaxOptions> </SyntaxOptions>
</Parsing> </Parsing>
<CodeGeneration>
<SmartLinkUnit Value="True"/>
</CodeGeneration>
<Linking> <Linking>
<Debugging> <Options>
<UseHeaptrc Value="True"/> <Win32>
</Debugging> <GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking> </Linking>
<Other> <Other>
<CompilerPath Value="$(CompPath)"/> <CompilerPath Value="$(CompPath)"/>

View File

@ -4,15 +4,14 @@
<PathDelim Value="\"/> <PathDelim Value="\"/>
<Name Value="gradbutton"/> <Name Value="gradbutton"/>
<CompilerOptions> <CompilerOptions>
<Version Value="5"/> <Version Value="8"/>
<PathDelim Value="\"/> <PathDelim Value="\"/>
<SearchPaths> <SearchPaths>
<IncludeFiles Value="..\src\"/>
<OtherUnitFiles Value="..\src\"/> <OtherUnitFiles Value="..\src\"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/> <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
<SrcPath Value="..\src\"/>
</SearchPaths> </SearchPaths>
<CodeGeneration>
<Generate Value="Faster"/>
</CodeGeneration>
<Other> <Other>
<CompilerPath Value="$(CompPath)"/> <CompilerPath Value="$(CompPath)"/>
</Other> </Other>

View File

@ -48,14 +48,13 @@ type
FRotatedText : TRotatedText; FRotatedText : TRotatedText;
FTextGlyphSpacing: Integer; FTextGlyphSpacing: Integer;
FGradientType : TGradientType; FGradientType : TGradientType;
FShowFocusBorder, FOnlyBackground, FOwnerBackgroundDraw, FShowFocusBorder, FOnlyBackground,
FAutoWidth, FShowGlyph, FEnabled, FFocused : Boolean; FAutoWidth, FShowGlyph, FEnabled, FFocused : Boolean;
FBackgroundRect: TRect; FBackgroundRect: TRect;
FBorderSides: TBorderSides; FBorderSides: TBorderSides;
FOnNormalBackgroundPaint, FOnHotBackgroundPaint, FOnNormalBackgroundPaint, FOnHotBackgroundPaint,
FOnDownBackgroundPaint, FOnDisabledBackgroundPaint : TGBBackgroundPaintEvent; FOnDownBackgroundPaint, FOnDisabledBackgroundPaint : TGBBackgroundPaintEvent;
procedure PaintGradient(TrgCanvas: TCanvas; pr : TRect); procedure PaintGradient(TrgCanvas: TCanvas; pr : TRect);
procedure UpdateText;
procedure UpdateBackground; procedure UpdateBackground;
procedure PaintBackground(AState: TButtonState; TrgBitmap: TBitmap); procedure PaintBackground(AState: TButtonState; TrgBitmap: TBitmap);
protected protected
@ -63,6 +62,7 @@ type
FNormalBlend,FOverBlend : Extended; FNormalBlend,FOverBlend : Extended;
FBaseColor, FNormalBlendColor, FOverBlendColor, FDisabledColor, FBaseColor, FNormalBlendColor, FOverBlendColor, FDisabledColor,
FBackgroundColor, FGlyphBackgroundColor, FClickColor: TColor; FBackgroundColor, FGlyphBackgroundColor, FClickColor: TColor;
FOwnerBackgroundDraw : Boolean;
procedure SetAutoHeight(const AValue: Boolean); virtual; procedure SetAutoHeight(const AValue: Boolean); virtual;
procedure SetAutoHeightBorderSpacing(const AValue: Integer); virtual; procedure SetAutoHeightBorderSpacing(const AValue: Integer); virtual;
procedure SetAutoWidthBorderSpacing(const AValue: Integer); virtual; procedure SetAutoWidthBorderSpacing(const AValue: Integer); virtual;
@ -70,6 +70,7 @@ type
procedure FontChanged(Sender: TObject); override; procedure FontChanged(Sender: TObject); override;
procedure GlyphChanged(Sender: TObject); virtual; procedure GlyphChanged(Sender: TObject); virtual;
procedure GetBackgroundRect(var TheRect : TRect); virtual; procedure GetBackgroundRect(var TheRect : TRect); virtual;
procedure GetContentRect(var TheRect: TRect); virtual;
function GetGlyph : TBitmap; function GetGlyph : TBitmap;
procedure SetEnabled(Value: Boolean); override; procedure SetEnabled(Value: Boolean); override;
procedure SetAutoWidth(const Value : Boolean); virtual; procedure SetAutoWidth(const Value : Boolean); virtual;
@ -166,9 +167,6 @@ type
property AutoWidthBorderSpacing : Integer read FAutoWidthBorderSpacing write SetAutoWidthBorderSpacing; property AutoWidthBorderSpacing : Integer read FAutoWidthBorderSpacing write SetAutoWidthBorderSpacing;
property AutoHeightBorderSpacing : Integer read FAutoHeightBorderSpacing write SetAutoHeightBorderSpacing; property AutoHeightBorderSpacing : Integer read FAutoHeightBorderSpacing write SetAutoHeightBorderSpacing;
//property OnGetBackgroundRect { TODO }
//BackgroundPaintEvents
property OnNormalBackgroundPaint : TGBBackgroundPaintEvent read FOnNormalBackgroundPaint write FOnNormalBackgroundPaint; property OnNormalBackgroundPaint : TGBBackgroundPaintEvent read FOnNormalBackgroundPaint write FOnNormalBackgroundPaint;
property OnHotBackgroundPaint : TGBBackgroundPaintEvent read FOnHotBackgroundPaint write FOnHotBackgroundPaint; property OnHotBackgroundPaint : TGBBackgroundPaintEvent read FOnHotBackgroundPaint write FOnHotBackgroundPaint;
property OnDownBackgroundPaint : TGBBackgroundPaintEvent read FOnDownBackgroundPaint write FOnDownBackgroundPaint; property OnDownBackgroundPaint : TGBBackgroundPaintEvent read FOnDownBackgroundPaint write FOnDownBackgroundPaint;
@ -178,7 +176,6 @@ type
function ColorBetween(C1, C2 : TColor; blend:Extended):TColor; function ColorBetween(C1, C2 : TColor; blend:Extended):TColor;
function ColorsBetween(colors:array of TColor; blend:Extended):TColor; function ColorsBetween(colors:array of TColor; blend:Extended):TColor;
function AlignItem(ItemLength, AreaLength,Spacing: Integer; ATextAlignment: TTextAlignment):Integer; function AlignItem(ItemLength, AreaLength,Spacing: Integer; ATextAlignment: TTextAlignment):Integer;
procedure DbgsGradButton(AButton : TGradButton);
procedure Register; procedure Register;
@ -200,12 +197,6 @@ begin
end; end;
end; end;
procedure DbgsGradButton(AButton: TGradButton);
begin
DebugLn('######GradButton#####');
end;
procedure TGradButton.SetShowFocusBorder(const Value: Boolean); procedure TGradButton.SetShowFocusBorder(const Value: Boolean);
begin begin
FShowFocusBorder:=Value; FShowFocusBorder:=Value;
@ -248,15 +239,6 @@ begin
Result := FFocused; Result := FFocused;
end; end;
procedure TGradButton.UpdateText;
begin
//UpdatePositions;
//FRotatedText.Canvas.Font.Color := Canvas.Font.Color;
//FRotatedText.Canvas.Font := Canvas.Font;
//FRotatedText.Update;
end;
procedure TGradButton.SetAutoWidth(const Value : Boolean); procedure TGradButton.SetAutoWidth(const Value : Boolean);
begin begin
if FAutoWidth = Value then if FAutoWidth = Value then
@ -288,8 +270,7 @@ var
groupwidth, groupheight, AreaWidth, AreaHeight :Integer; groupwidth, groupheight, AreaWidth, AreaHeight :Integer;
tempBL : TButtonLayout; tempBL : TButtonLayout;
begin begin
GetContentRect(FBackgroundRect);
GetBackgroundRect(FBackgroundRect);
AreaWidth := FBackgroundRect.Right-FBackgroundRect.Left; AreaWidth := FBackgroundRect.Right-FBackgroundRect.Left;
AreaHeight := FBackgroundRect.Bottom-FBackgroundRect.Top; AreaHeight := FBackgroundRect.Bottom-FBackgroundRect.Top;
@ -309,24 +290,6 @@ begin
tempBL := FButtonLayout; tempBL := FButtonLayout;
{if FRotateDirection=rdRight then
begin
case FButtonLayout of
blGlyphTop : tempBL := blGlyphBottom;
blGlyphBottom: tempBL := blGlyphTop;
end;
end;}
{if FRotateDirection in [rdRight,rdLeft] then
begin
p := tempTS.cx;
tempTS.cx := tempTS.cy;
tempTS.cy := p;
p := tempGS.cx;
tempGS.cx:=tempGS.cy;
tempGS.cy := p;
end; }
if FShowGlyph and not FRotatedGlyph.Empty then begin if FShowGlyph and not FRotatedGlyph.Empty then begin
case tempBL of case tempBL of
blGlyphLeft: begin blGlyphLeft: begin
@ -394,7 +357,6 @@ begin
FTextSize:=tempTS; FTextSize:=tempTS;
FGlyphSize:=tempGS; FGlyphSize:=tempGS;
end; end;
function TGradButton.GetAutoWidth: Integer; function TGradButton.GetAutoWidth: Integer;
@ -579,6 +541,37 @@ begin
end; end;
end; end;
procedure TGradButton.GetContentRect(var TheRect: TRect);
begin
TheRect := Rect(0,0,Width,Height);
//Top
if (bsTopLine in BorderSides) then
begin
TheRect.Top := 2;
end else
TheRect.Top := 0;
//Left
if (bsLeftLine in BorderSides) then
begin
TheRect.Left := 2;
end else
TheRect.Left := 0;
//Right
if (bsRightLine in BorderSides) then
begin
TheRect.Right := TheRect.Right-{$IFDEF windows}2{$ELSE}3{$ENDIF};
end;
//Bottom
if (bsBottomLine in BorderSides) then
begin
TheRect.Bottom := TheRect.Bottom - 2;
end;
end;
function TGradButton.GetGlyph : TBitmap; function TGradButton.GetGlyph : TBitmap;
begin begin
Result := FRotatedGlyph.Bitmap; Result := FRotatedGlyph.Bitmap;
@ -654,7 +647,6 @@ begin
if FAutoHeight then Height := GetAutoHeight; if FAutoHeight then Height := GetAutoHeight;
UpdateBackground; UpdateBackground;
UpdateText;
UpdatePositions; UpdatePositions;
end; end;
@ -1047,13 +1039,15 @@ begin
with bm do with bm do
begin begin
Width := Self.Width; Width := Self.Width;
Height := Self.Height; Height := Self.Height;
FBackground.Width:=Width; FBackground.Width:=Width;
FBackground.Height:=Height; FBackground.Height:=Height;
Canvas.Brush.Color:=clBlack;
Canvas.FillRect(0,0,Width, Height);
p := 0; p := 0;
if tempState = bsDown then if tempState = bsDown then

View File

@ -7,14 +7,6 @@ unit ugradtabcontrol;
@version 0.1 @version 0.1
@comments TGradTabControl is based on TNotebook/TPageControl/TTabControl @comments TGradTabControl is based on TNotebook/TPageControl/TTabControl
@license http://creativecommons.org/licenses/LGPL/2.1/ @license http://creativecommons.org/licenses/LGPL/2.1/
@todo:
- If a Button isnt visible but focused the bar should move to the button - working
- Close Button at Tabs
- Drawer needed or first style wishes
- Button Events accessable from Page-Events
- TabBar Events accessable from TGradTabControl
- Maybe rename TGradTabControl to TCustomPageControl and of these
TGradTabControl and TGradPageControl
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
{$mode objfpc}{$H+} {$mode objfpc}{$H+}
@ -25,32 +17,50 @@ interface
uses uses
Classes,LResources, SysUtils, Menus, LCLType, Classes,LResources, SysUtils, Menus, LCLType,
LCLProc, ExtCtrls, Graphics, ugradbtn, Controls, uRotateBitmap, LCLProc, LCLIntf,ExtCtrls, Graphics, ugradbtn, Controls, uRotateBitmap,
Buttons, Forms, ImgList; Buttons, Forms, ImgList;
type type
TGradTabControl = class; TGradTabControl = class;
TGradTabPage = class;
{ TGradTabCloseButton }
TGradTabCloseButton = class(TGradButton)
public
constructor Create(AOwner: TComponent); override;
end;
{ TGradTabPageButton } { TGradTabPageButton }
TGradTabPageButton = class( TGradButton ) TGradTabPageButton = class( TGradButton )
private private
FCloseButton : TGradButton; FCloseButton : TGradTabCloseButton;
FPage: TGradTabPage;
FShowCloseButton : Boolean; FShowCloseButton : Boolean;
FShowCloseButtonOnMouseOver: Boolean;
procedure AlignCloseButton; procedure AlignCloseButton;
procedure SetShowCloseButton(AValue: Boolean); procedure SetShowCloseButton(AValue: Boolean);
procedure SetShowCloseButtonOnMouseOver(const AValue: Boolean);
protected protected
procedure SetRotateDirection(const Value: TRotateDirection); override; procedure SetRotateDirection(const Value: TRotateDirection); override;
procedure RealSetText(const Value: TCaption); override; procedure RealSetText(const Value: TCaption); override;
procedure SetAutoHeightBorderSpacing(const AValue: Integer); override; procedure SetAutoHeightBorderSpacing(const AValue: Integer); override;
procedure SetAutoWidthBorderSpacing(const AValue: Integer); override; procedure SetAutoWidthBorderSpacing(const AValue: Integer); override;
procedure SetShowGlyph(const Value: Boolean); override; procedure SetShowGlyph(const Value: Boolean); override;
procedure CloseBtnBackgroundPaint(Sender: TGradButton;
TargetCanvas: TCanvas; R: TRect; BState: TButtonState);
procedure GetContentRect(var TheRect: TRect); override;
procedure SetBaseColor(const Value: TColor); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure Resize; override; procedure Resize; override;
procedure SetBounds(aLeft, aTop, aWidth, aHeight: integer); override; procedure SetBounds(aLeft, aTop, aWidth, aHeight: integer); override;
property ShowCloseButton : Boolean read FShowCloseButton write SetShowCloseButton default false; property ShowCloseButton : Boolean read FShowCloseButton write SetShowCloseButton default false;
property ShowCloseButtonOnMouseOver : Boolean read FShowCloseButtonOnMouseOver write SetShowCloseButtonOnMouseOver default false;
property Page : TGradTabPage read FPage write FPage;
published published
property OnStartDock; property OnStartDock;
property OnStartDrag; property OnStartDrag;
@ -85,6 +95,7 @@ type
FImageIndex: Integer; FImageIndex: Integer;
FNormalTabColor: TColor; FNormalTabColor: TColor;
FOwnerTabColor: Boolean; FOwnerTabColor: Boolean;
FShowCloseButtonOnMouseOver: Boolean;
FTabVisible,FCurrentlyDestroying,FShowCloseButton : Boolean; FTabVisible,FCurrentlyDestroying,FShowCloseButton : Boolean;
function GetTabButtonLayout: TButtonLayout; function GetTabButtonLayout: TButtonLayout;
function GetTabColor: TColor; function GetTabColor: TColor;
@ -94,6 +105,7 @@ type
function GetTabPopupMenu : TPopupMenu; function GetTabPopupMenu : TPopupMenu;
function GetText : TCaption; function GetText : TCaption;
procedure SetImageIndex(const AValue: Integer); procedure SetImageIndex(const AValue: Integer);
procedure SetShowCloseButtonOnMouseOver(const AValue: Boolean);
procedure SetTabButtonLayout(const AValue: TButtonLayout); procedure SetTabButtonLayout(const AValue: TButtonLayout);
procedure SetTabColor(const AValue: TColor); procedure SetTabColor(const AValue: TColor);
procedure SetTabGlyph(const AValue: TBitmap); procedure SetTabGlyph(const AValue: TBitmap);
@ -121,6 +133,7 @@ type
property PageIndex : Integer read GetPageIndex write SetPageIndex; property PageIndex : Integer read GetPageIndex write SetPageIndex;
property Caption : TCaption read GetText write SetText; property Caption : TCaption read GetText write SetText;
property ShowCloseButton : Boolean read FShowCloseButton write SetShowCloseButton default false; property ShowCloseButton : Boolean read FShowCloseButton write SetShowCloseButton default false;
property ShowCloseButtonOnMouseOver : Boolean read FShowCloseButtonOnMouseOver write SetShowCloseButtonOnMouseOver default false;
property TabPopupMenu : TPopupMenu read GetTabPopupMenu write SetTabPopupMenu; property TabPopupMenu : TPopupMenu read GetTabPopupMenu write SetTabPopupMenu;
property Color; property Color;
property TabColor : TColor read GetTabColor write SetTabColor; property TabColor : TColor read GetTabColor write SetTabColor;
@ -266,6 +279,7 @@ type
FImages: TImageList; FImages: TImageList;
FMoveIncrement: Integer; FMoveIncrement: Integer;
FLeftButton, FRightButton : TGradButton; FLeftButton, FRightButton : TGradButton;
FOnTabCloseButtonClick: TGradTabPageButtonClickEvent;
FOnPageChanged: TNotifyEvent; FOnPageChanged: TNotifyEvent;
FShowLeftTopScrollButton: Boolean; FShowLeftTopScrollButton: Boolean;
FShowRightBottomScrollButton: Boolean; FShowRightBottomScrollButton: Boolean;
@ -288,9 +302,11 @@ type
procedure AlignPages; procedure AlignPages;
function GetActiveTabColor: TColor; function GetActiveTabColor: TColor;
function GetNormalTabColor: TColor; function GetNormalTabColor: TColor;
function GetTabPopupMenu: TPopupMenu;
procedure ImageListChange(Sender: TObject); procedure ImageListChange(Sender: TObject);
procedure SetActiveTabColor(const AValue: TColor); procedure SetActiveTabColor(const AValue: TColor);
procedure SetNormalTabColor(const AValue: TColor); procedure SetNormalTabColor(const AValue: TColor);
procedure SetTabPopupMenu(const AValue: TPopupMenu);
procedure UpdateTabImages; procedure UpdateTabImages;
function GetCurrentPage : TGradTabPage; function GetCurrentPage : TGradTabPage;
function GetPage(AIndex: Integer) : TGradTabPage; function GetPage(AIndex: Integer) : TGradTabPage;
@ -303,6 +319,8 @@ type
procedure PageButtonMouseUp(Sender: TObject; Button: TMouseButton; procedure PageButtonMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
procedure PageButtonMouseClick(Sender: TObject); procedure PageButtonMouseClick(Sender: TObject);
procedure PageCloseButtonMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PopupMouseClick(Sender: TObject); procedure PopupMouseClick(Sender: TObject);
procedure PageButtonMouseMove(Sender: TObject; Shift: TShiftState; procedure PageButtonMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer); X, Y: Integer);
@ -375,13 +393,12 @@ type
property PageCount : Integer read GetCount; property PageCount : Integer read GetCount;
published published
property Align; property Align;
property ControlState;
property ControlStyle;
property ActivePage : TGradTabPage read GetCurrentPage write SetCurrentPage; property ActivePage : TGradTabPage read GetCurrentPage write SetCurrentPage;
property OnTabButtonClick : TGradTabPageButtonClickEvent read FOnTabButtonClick write FOnTabButtonClick; property OnTabButtonClick : TGradTabPageButtonClickEvent read FOnTabButtonClick write FOnTabButtonClick;
property OnTabButtonMouseDown : TGradTabPageButtonMouseDownUpEvent read FOnTabButtonMouseDown write FOnTabButtonMouseDown; property OnTabButtonMouseDown : TGradTabPageButtonMouseDownUpEvent read FOnTabButtonMouseDown write FOnTabButtonMouseDown;
property OnTabButtonMouseUp : TGradTabPageButtonMouseDownUpEvent read FOnTabButtonMouseUp write FOnTabButtonMouseUp; property OnTabButtonMouseUp : TGradTabPageButtonMouseDownUpEvent read FOnTabButtonMouseUp write FOnTabButtonMouseUp;
property OnTabButtonMouseMove : TGradTabPageButtonMouseMoveEvent read FOnTabButtonMouseMove write FOnTabButtonMouseMove; property OnTabButtonMouseMove : TGradTabPageButtonMouseMoveEvent read FOnTabButtonMouseMove write FOnTabButtonMouseMove;
property OnTabCloseButtonClick : TGradTabPageButtonClickEvent read FOnTabCloseButtonClick write FOnTabCloseButtonClick;
property OnStartDock; property OnStartDock;
property OnStartDrag; property OnStartDrag;
property OnDockDrop; property OnDockDrop;
@ -398,13 +415,14 @@ type
property OnMouseWheelDown; property OnMouseWheelDown;
property OnClick; property OnClick;
property OnDblClick; property OnDblClick;
property TabPopupMenu : TPopupMenu read GetTabPopupMenu write SetTabPopupMenu;
property PageIndex : Integer read FPageIndex write SetCurrentPageNum; property PageIndex : Integer read FPageIndex write SetCurrentPageNum;
property TabHeight : Integer read FTabHeight write SetTabHeight; property TabHeight : Integer read FTabHeight write SetTabHeight;
property TabPosition : TTabPosition read FTabPosition write SetTabPosition default tpTop; property TabPosition : TTabPosition read FTabPosition write SetTabPosition default tpTop;
property LongTabs : Boolean read FLongTabs write SetLongTabs; property LongTabs : Boolean read FLongTabs write SetLongTabs;
property LongWidth: Integer read FLongWidth write SetLongWidth; property LongWidth: Integer read FLongWidth write SetLongWidth;
property MoveIncrement : Integer read FMoveIncrement write FMoveIncrement; //property MoveIncrement : Integer read FMoveIncrement write FMoveIncrement;
property OnPageChanged: TNotifyEvent read FOnPageChanged write FOnPageChanged; property OnPageChanged: TNotifyEvent read FOnPageChanged write FOnPageChanged;
property AutoShowScrollButtons : Boolean read FAutoShowScrollButton write SetAutoShowScrollButtons default true; property AutoShowScrollButtons : Boolean read FAutoShowScrollButton write SetAutoShowScrollButtons default true;
property ShowLeftTopScrollButton : Boolean read FShowLeftTopScrollButton write SetShowLeftTopScrollButton; property ShowLeftTopScrollButton : Boolean read FShowLeftTopScrollButton write SetShowLeftTopScrollButton;
@ -412,7 +430,6 @@ type
property Images : TImageList read FImages write SetImages; property Images : TImageList read FImages write SetImages;
property NormalTabColor: TColor read GetNormalTabColor write SetNormalTabColor default clBlue; property NormalTabColor: TColor read GetNormalTabColor write SetNormalTabColor default clBlue;
property ActiveTabColor: TColor read GetActiveTabColor write SetActiveTabColor default clGreen; property ActiveTabColor: TColor read GetActiveTabColor write SetActiveTabColor default clGreen;
//property ShowTabs : Boolean; { TODO }
end; end;
procedure Register; procedure Register;
@ -424,10 +441,7 @@ type
implementation implementation
uses uses
gradtabcontroleditor, ComponentEditors, math; gradtabcontroleditor, ComponentEditors;
const
FPageCount : Integer = 0;
{------------------------------------------------------------------------------- {-------------------------------------------------------------------------------
Register Register
@ -485,36 +499,20 @@ end;
TGradTabPageButton Create(AOwner: TComponent TGradTabPageButton Create(AOwner: TComponent
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
constructor TGradTabPageButton.Create(AOwner: TComponent); constructor TGradTabPageButton.Create(AOwner: TComponent);
var
tempPic : TPicture;
begin begin
inherited Create(AOwner); inherited Create(AOwner);
ControlStyle := ControlStyle+[csNoDesignSelectable,csDesignInteractive]-[csCaptureMouse]; ControlStyle := ControlStyle+[csNoDesignSelectable,csDesignInteractive]-[csCaptureMouse];
FCloseButton := TGradButton.Create(Self); FCloseButton := TGradTabCloseButton.Create(Self);
FCloseButton.Width:=12; FCloseButton.Width:=14;
FCloseButton.Height:=12; FCloseButton.Height:=14;
TextAlignment:=taCenter; TextAlignment:=taCenter;
FCloseButton.Left:=1; FCloseButton.Left:=1;
FCloseButton.Top:=1; FCloseButton.Top:=1;
FCloseButton.Caption:=''; FCloseButton.Caption:='';
FCloseButton.ShowGlyph:=true;
try
tempPic := TPicture.Create;
tempPic.LoadFromLazarusResource('close_btn');
FCloseButton.Glyph.Assign(tempPic.Graphic);
finally
tempPic.Free;
end;
FCloseButton.BorderSides:=[];
FCloseButton.Color:=clRed;
FShowCloseButton:=false; FShowCloseButton:=false;
FShowCloseButtonOnMouseOver:=false;
SetSubComponent(true); SetSubComponent(true);
end; end;
@ -544,11 +542,11 @@ begin
case RotateDirection of case RotateDirection of
rdNormal: begin rdNormal: begin
NewTop:=(DisplayHeight div 2)-(FCloseButton.Height div 2)-1; NewTop:=(DisplayHeight div 2)-(FCloseButton.Height div 2);
NewLeft:=DisplayWidth-(FCloseButton.Width)+1; NewLeft:=DisplayWidth-(FCloseButton.Width);
end; end;
rdRight: begin rdRight: begin
NewTop:=DisplayHeight-(FCloseButton.Height)+1; NewTop:=DisplayHeight-(FCloseButton.Height);
NewLeft:=(DisplayWidth div 2)-(FCloseButton.Width div 2); NewLeft:=(DisplayWidth div 2)-(FCloseButton.Width div 2);
end; end;
rdLeft: begin rdLeft: begin
@ -578,6 +576,22 @@ begin
end; end;
end; end;
procedure TGradTabPageButton.SetShowCloseButtonOnMouseOver(const AValue: Boolean
);
begin
{*
IF ShowCloseButton AND ShowCloseButtonOnMouseOver
then the CloseButton is Invisible until the Mouse is Over the CloseButton
*}
if FShowCloseButtonOnMouseOver=AValue then exit;
if not FShowCloseButton then Exit;
FShowCloseButtonOnMouseOver:=AValue;
FCloseButton.Visible:=false;
end;
{------------------------------------------------------------------------------- {-------------------------------------------------------------------------------
TGradTabPageButton Resize TGradTabPageButton Resize
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
@ -592,21 +606,9 @@ procedure TGradTabPageButton.SetBounds(aLeft, aTop, aWidth, aHeight: integer);
var var
ParentControl : TGradTabControl; ParentControl : TGradTabControl;
begin begin
{if Parent = nil then Exit;
ParentControl := TGradTabPagesBar(Parent).FTabControl;
if ParentControl.TabPosition in [tpLeft, tpRight] then
begin
if ParentControl.LongTabs then
begin
if ParentControl.LongWidth <> aWidth then
if ParentControl.LongWidth < aWidth then
begin
ParentControl.LongWidth:=aWidth;
end;
end;
end;}
inherited SetBounds(aLeft, aTop, aWidth, aHeight); inherited SetBounds(aLeft, aTop, aWidth, aHeight);
AlignCloseButton;
end; end;
{------------------------------------------------------------------------------- {-------------------------------------------------------------------------------
@ -616,6 +618,11 @@ procedure TGradTabPageButton.SetRotateDirection(const Value: TRotateDirection);
begin begin
inherited; inherited;
case Value of
rdNormal: TextAlignment := taLeftJustify;
rdLeft, rdRight: TextAlignment := taCenter;
end;
FCloseButton.RotateDirection:=Value; FCloseButton.RotateDirection:=Value;
if FShowCloseButton then if FShowCloseButton then
AlignCloseButton; AlignCloseButton;
@ -645,6 +652,9 @@ end;
procedure TGradTabPageButton.SetAutoHeightBorderSpacing(const AValue: Integer); procedure TGradTabPageButton.SetAutoHeightBorderSpacing(const AValue: Integer);
begin begin
if ShowGlyph then
inherited SetAutoHeightBorderSpacing(AValue+Glyph.Height)
else
inherited SetAutoHeightBorderSpacing(AValue); inherited SetAutoHeightBorderSpacing(AValue);
if Parent <> nil then (Parent AS TGradTabPagesBar).OrderButtons; if Parent <> nil then (Parent AS TGradTabPagesBar).OrderButtons;
@ -652,6 +662,9 @@ end;
procedure TGradTabPageButton.SetAutoWidthBorderSpacing(const AValue: Integer); procedure TGradTabPageButton.SetAutoWidthBorderSpacing(const AValue: Integer);
begin begin
if ShowGlyph then
inherited SetAutoWidthBorderSpacing(AValue+Glyph.Width)
else
inherited SetAutoWidthBorderSpacing(AValue); inherited SetAutoWidthBorderSpacing(AValue);
if Parent <> nil then (Parent AS TGradTabPagesBar).OrderButtons; if Parent <> nil then (Parent AS TGradTabPagesBar).OrderButtons;
@ -664,6 +677,56 @@ begin
if Parent <> nil then (Parent AS TGradTabPagesBar).OrderButtons; if Parent <> nil then (Parent AS TGradTabPagesBar).OrderButtons;
end; end;
procedure TGradTabPageButton.CloseBtnBackgroundPaint(Sender: TGradButton;
TargetCanvas: TCanvas; R: TRect; BState: TButtonState);
begin
// nothing
end;
procedure TGradTabPageButton.GetContentRect(var TheRect: TRect);
begin
inherited GetContentRect(TheRect);
if ShowGlyph then
begin
case RotateDirection of
rdNormal: begin
TheRect.Right:=TheRect.Right-(FCloseButton.Glyph.Width);
end;
rdLeft: begin
TheRect.Top:= TheRect.Top+(FCloseButton.Glyph.Height);
end;
rdRight: begin
TheRect.Bottom:= TheRect.Bottom-(FCloseButton.Glyph.Height);
end;
end;
end;
end;
procedure TGradTabPageButton.SetBaseColor(const Value: TColor);
begin
inherited SetBaseColor(Value);
FCloseButton.Color:=Value;
end;
procedure TGradTabPageButton.MouseMove(Shift: TShiftState; X, Y: Integer);
var
CloseBtnRect : TRect;
begin
inherited MouseMove(Shift, X, Y);
if not FShowCloseButton then Exit;
if not FShowCloseButtonOnMouseOver then Exit;
CloseBtnRect.Top:=FCloseButton.Top;
CloseBtnRect.Left:=FCloseButton.Left;
CloseBtnRect.Right:=FCloseButton.Left+FCloseButton.Width;
CloseBtnRect.Bottom:=FCloseButton.Top+FCloseButton.Height;
FCloseButton.Visible:=PtInRect(CloseBtnRect, Point(X,Y));
end;
{------------------------------------------------------------------------------- {-------------------------------------------------------------------------------
TGradTabPage Create(AOwner: TGradTabPageButton) TGradTabPage Create(AOwner: TGradTabPageButton)
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
@ -678,6 +741,7 @@ begin
Align := alClient; Align := alClient;
FButton := TGradTabPageButton.Create(Self); FButton := TGradTabPageButton.Create(Self);
FButton.Page := Self;
FTabVisible:=true; FTabVisible:=true;
FShowCloseButton:=false; FShowCloseButton:=false;
@ -916,6 +980,14 @@ begin
end; end;
end; end;
procedure TGradTabPage.SetShowCloseButtonOnMouseOver(const AValue: Boolean);
begin
if FShowCloseButtonOnMouseOver=AValue then exit;
FShowCloseButtonOnMouseOver:=AValue;
FButton.ShowCloseButtonOnMouseOver:=AValue;
end;
procedure TGradTabPage.SetTabButtonLayout(const AValue: TButtonLayout); procedure TGradTabPage.SetTabButtonLayout(const AValue: TButtonLayout);
begin begin
FButton.ButtonLayout:=AValue; FButton.ButtonLayout:=AValue;
@ -1142,8 +1214,12 @@ begin
OnMouseUp:=@FTabControl.PageButtonMouseUp; OnMouseUp:=@FTabControl.PageButtonMouseUp;
OnClick:=@FTabControl.PageButtonMouseClick; OnClick:=@FTabControl.PageButtonMouseClick;
OnMouseMove:=@FTabControl.PageButtonMouseMove; OnMouseMove:=@FTabControl.PageButtonMouseMove;
FCloseButton.OnMouseUp:=@FTabControl.PageCloseButtonMouseUp;
end; end;
if Assigned(PopupMenu) then
AButton.PopupMenu := PopupMenu;
if (Index >= 1) AND (FPageList.Count>=1) then if (Index >= 1) AND (FPageList.Count>=1) then
UnFocusButton(Index-1); UnFocusButton(Index-1);
@ -1819,8 +1895,6 @@ end;
procedure TGradTabPages.Delete(Index: Integer); procedure TGradTabPages.Delete(Index: Integer);
var var
APage: TGradTabPage; APage: TGradTabPage;
AButton : TGradTabPageButton;
CurrentPageNum,i : Integer;
begin begin
// Make sure Index is in the range of valid pages to delete // Make sure Index is in the range of valid pages to delete
{$IFDEF DEBUGTAB} {$IFDEF DEBUGTAB}
@ -1854,7 +1928,6 @@ end;
procedure TGradTabPages.Insert(Index: Integer; const S: String); procedure TGradTabPages.Insert(Index: Integer; const S: String);
var var
NewPage: TGradTabPage; NewPage: TGradTabPage;
NewButton: TGradTabPageButton;
NewOwner: TComponent; NewOwner: TComponent;
begin begin
{$IFDEF DEBUGTAB} {$IFDEF DEBUGTAB}
@ -2102,6 +2175,11 @@ begin
Result := FPagesBar.NormalTabColor; Result := FPagesBar.NormalTabColor;
end; end;
function TGradTabControl.GetTabPopupMenu: TPopupMenu;
begin
Result := FPagesBar.PopupMenu;
end;
procedure TGradTabControl.ImageListChange(Sender: TObject); procedure TGradTabControl.ImageListChange(Sender: TObject);
begin begin
UpdateTabImages; UpdateTabImages;
@ -2117,6 +2195,16 @@ begin
FPagesBar.NormalTabColor:=AValue; FPagesBar.NormalTabColor:=AValue;
end; end;
procedure TGradTabControl.SetTabPopupMenu(const AValue: TPopupMenu);
var
i : Integer;
begin
FPagesBar.PopupMenu := AValue;
for i := 0 to PageCount -1 do
Page[i].TabButton.PopupMenu := AValue;
end;
procedure TGradTabControl.UpdateTabImages; procedure TGradTabControl.UpdateTabImages;
var var
i : Integer; i : Integer;
@ -2144,9 +2232,6 @@ end;
TGradTabControl GetPage(AIndex: Integer) : TGradTabPage TGradTabControl GetPage(AIndex: Integer) : TGradTabPage
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
function TGradTabControl.GetPage(AIndex: Integer) : TGradTabPage; function TGradTabControl.GetPage(AIndex: Integer) : TGradTabPage;
var
LastTabPage : TGradTabPage;
LastTab : Integer;
begin begin
Result := nil; Result := nil;
@ -2237,6 +2322,17 @@ begin
FOnTabButtonClick(Self, FPageList.IndexOf(AButton.Owner)); FOnTabButtonClick(Self, FPageList.IndexOf(AButton.Owner));
end; end;
procedure TGradTabControl.PageCloseButtonMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
AButton : TGradTabPageButton;
begin
AButton := TGradTabPageButton(TControl(Sender).Parent);
if Assigned(FOnTabCloseButtonClick) then
FOnTabCloseButtonClick(Self, FPageList.IndexOf(AButton.Owner));
end;
procedure TGradTabControl.PopupMouseClick(Sender: TObject); procedure TGradTabControl.PopupMouseClick(Sender: TObject);
var var
AButton : TGradTabPageButton; AButton : TGradTabPageButton;
@ -2538,8 +2634,6 @@ end;
procedure TGradTabControl.InsertPage(APage: TGradTabPage; Index: Integer); procedure TGradTabControl.InsertPage(APage: TGradTabPage; Index: Integer);
var var
NewZPosition: integer; NewZPosition: integer;
cRect : TRect;
tempName : String;
begin begin
if FPageList.IndexOf(APage)>=0 then exit; if FPageList.IndexOf(APage)>=0 then exit;
{$IFDEF DEBUGTAB} {$IFDEF DEBUGTAB}
@ -2885,7 +2979,6 @@ end;
------------------------------------------------------------------------------} ------------------------------------------------------------------------------}
procedure TGradTabControl.Paint; procedure TGradTabControl.Paint;
var var
i,j : Integer;
AClientRect : TRect; AClientRect : TRect;
begin begin
Canvas.Brush.Color:=Color; Canvas.Brush.Color:=Color;
@ -3080,6 +3173,34 @@ begin
FOldForm := nil; FOldForm := nil;
end; end;
{ TGradTabCloseButton }
constructor TGradTabCloseButton.Create(AOwner: TComponent);
var
tempPic : TPicture;
begin
//FOwnerBackgroundDraw:=true;
inherited Create(AOwner);
try
tempPic := TPicture.Create;
tempPic.LoadFromLazarusResource('btn_cancel');
Glyph.Assign(tempPic.Graphic);
finally
tempPic.Free;
end;
ShowGlyph:=true;
BorderSides:=[];
//Color:=clRed;
SetSubComponent(true);
end;
initialization initialization
{$I ugradtabcontrol.lrs} {$I ugradtabcontrol.lrs}

View File

@ -113,6 +113,7 @@ begin
RotateImg := TLazIntfImage.Create(NormalImg.Height, NormalImg.Width); RotateImg := TLazIntfImage.Create(NormalImg.Height, NormalImg.Width);
RotateImg.DataDescription := NormalImg.DataDescription; RotateImg.DataDescription := NormalImg.DataDescription;
RotateImg.SetSize(NormalImg.Height, NormalImg.Width); RotateImg.SetSize(NormalImg.Height, NormalImg.Width);
RotateImg.FillPixels(TColorToFPColor(clBlack));
for px := 0 to NormalImg.Width - 1 do for px := 0 to NormalImg.Width - 1 do
for py := 0 to NormalImg.Height - 1 do for py := 0 to NormalImg.Height - 1 do
@ -277,6 +278,9 @@ begin
UpdateActiveBitmap; UpdateActiveBitmap;
R := Rect(0, 0, FActiveBitmap.Width, FActiveBitmap.Height); R := Rect(0, 0, FActiveBitmap.Width, FActiveBitmap.Height);
P := Point(X, Y); P := Point(X, Y);
//DebugLn(DbgS(R));
//DebugLn(DbgS(P));
//DebugLn('Transparent: '+BoolToStr(Transparent, true));
FGlyph.Draw(Canvas, R, P, FButtonState, Transparent, 0); FGlyph.Draw(Canvas, R, P, FButtonState, Transparent, 0);
end; end;