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,51 +292,39 @@ 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);
begin begin
case RadioGroup1.ItemIndex of case RadioGroup1.ItemIndex of
0: GradTabControl1.TabPosition := tpTop; 0: GradTabControl1.TabPosition := tpTop;
1: GradTabControl1.TabPosition := tpBottom; 1: GradTabControl1.TabPosition := tpBottom;
2: GradTabControl1.TabPosition := tpLeft; 2: GradTabControl1.TabPosition := tpLeft;
3: GradTabControl1.TabPosition := tpRight; 3: GradTabControl1.TabPosition := tpRight;
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;
end; end;

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

@ -19,168 +19,165 @@ uses
LCLIntf ,Buttons, urotatebitmap, types; LCLIntf ,Buttons, urotatebitmap, types;
type type
TGradButton = class; TGradButton = class;
TTextAlignment = (taLeftJustify, taRightJustify, taCenter); TTextAlignment = (taLeftJustify, taRightJustify, taCenter);
TBorderSide = (bsTopLine, bsBottomLine, bsLeftLine, bsRightLine); TBorderSide = (bsTopLine, bsBottomLine, bsLeftLine, bsRightLine);
TBorderSides = set of TBorderSide; TBorderSides = set of TBorderSide;
TGradientType = (gtHorizontal,gtVertical); TGradientType = (gtHorizontal,gtVertical);
TGBBackgroundPaintEvent = procedure(Sender: TGradButton; TGBBackgroundPaintEvent = procedure(Sender: TGradButton;
TargetCanvas: TCanvas; R: TRect; BState : TButtonState) of object; TargetCanvas: TCanvas; R: TRect; BState : TButtonState) of object;
{ TGradButton } { TGradButton }
TGradButton = class(TCustomControl) TGradButton = class(TCustomControl)
private private
FAutoHeight: Boolean; FAutoHeight: Boolean;
FAutoHeightBorderSpacing: Integer; FAutoHeightBorderSpacing: Integer;
FAutoWidthBorderSpacing: Integer; FAutoWidthBorderSpacing: Integer;
FRotateDirection : TRotateDirection; FRotateDirection : TRotateDirection;
FTextAlignment : TTextAlignment; FTextAlignment : TTextAlignment;
FButtonLayout: TButtonLayout; FButtonLayout: TButtonLayout;
FTextPoint, FGlyphPoint : TPoint; FTextPoint, FGlyphPoint : TPoint;
FTextSize, FGlyphSize : TSize; FTextSize, FGlyphSize : TSize;
FBackground, bm, FBackground, bm,
FNormalBackgroundCache, FHotBackgroundCache, FNormalBackgroundCache, FHotBackgroundCache,
FDownBackgroundCache, FDisabledBackgroundCache : TBitmap; FDownBackgroundCache, FDisabledBackgroundCache : TBitmap;
FRotatedGlyph : TRotatedGlyph; FRotatedGlyph : TRotatedGlyph;
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 FState, FOldState: TButtonState;
FState, FOldState: TButtonState; 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;
procedure InvPaint(StateCheck:Boolean=false); procedure InvPaint(StateCheck:Boolean=false);
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;
function GetGlyph : TBitmap; procedure GetContentRect(var TheRect: TRect); virtual;
procedure SetEnabled(Value: Boolean); override; function GetGlyph : TBitmap;
procedure SetAutoWidth(const Value : Boolean); virtual; procedure SetEnabled(Value: Boolean); override;
procedure SetNormalBlend(const Value: Extended); virtual; procedure SetAutoWidth(const Value : Boolean); virtual;
procedure SetOverBlend(const Value: Extended); virtual; procedure SetNormalBlend(const Value: Extended); virtual;
procedure SetBaseColor(const Value: TColor); virtual; procedure SetOverBlend(const Value: Extended); virtual;
procedure SetNormalBlendColor(const Value: TColor); virtual; procedure SetBaseColor(const Value: TColor); virtual;
procedure SetOverBlendColor(const Value: TColor); virtual; procedure SetNormalBlendColor(const Value: TColor); virtual;
procedure SetBackgroundColor(const Value: TColor); virtual; procedure SetOverBlendColor(const Value: TColor); virtual;
procedure SetBorderSides(const Value: TBorderSides); virtual; procedure SetBackgroundColor(const Value: TColor); virtual;
procedure SetOwnerBackgroundDraw(const Value: Boolean); virtual; procedure SetBorderSides(const Value: TBorderSides); virtual;
procedure SetGradientType(const Value: TGradientType); virtual; procedure SetOwnerBackgroundDraw(const Value: Boolean); virtual;
procedure SetRotateDirection(const Value: TRotateDirection); virtual; procedure SetGradientType(const Value: TGradientType); virtual;
procedure SetShowGlyph(const Value: Boolean); virtual; procedure SetRotateDirection(const Value: TRotateDirection); virtual;
procedure SetGlyphBackgroundColor(const Value: TColor); virtual; procedure SetShowGlyph(const Value: Boolean); virtual;
procedure SetTextAlignment(const Value: TTextAlignment); virtual; procedure SetGlyphBackgroundColor(const Value: TColor); virtual;
procedure SetTextGlyphSpacing(const Value: Integer); virtual; procedure SetTextAlignment(const Value: TTextAlignment); virtual;
procedure SetButtonLayout(const Value: TButtonLayout); virtual; procedure SetTextGlyphSpacing(const Value: Integer); virtual;
procedure SetClickColor(const Value: TColor); virtual; procedure SetButtonLayout(const Value: TButtonLayout); virtual;
procedure SetDisabledColor(const Value: TColor); virtual; procedure SetClickColor(const Value: TColor); virtual;
procedure SetName(const Value: TComponentName); override; procedure SetDisabledColor(const Value: TColor); virtual;
procedure SetShowFocusBorder(const Value: Boolean); virtual; procedure SetName(const Value: TComponentName); override;
procedure SetGlyph(const Value: TBitmap); virtual; procedure SetShowFocusBorder(const Value: Boolean); virtual;
procedure TextChanged; override; procedure SetGlyph(const Value: TBitmap); virtual;
public procedure TextChanged; override;
constructor Create(AOwner: TComponent); override; public
destructor Destroy; override; constructor Create(AOwner: TComponent); override;
//procedure CreateParams(var Params: TCreateParams); override; destructor Destroy; override;
procedure Paint; override; //procedure CreateParams(var Params: TCreateParams); override;
procedure MouseEnter; override; procedure Paint; override;
procedure MouseLeave; override; procedure MouseEnter; override;
procedure MouseDown(Button: TMouseButton; procedure MouseLeave; override;
Shift: TShiftState; X, Y: Integer); override; procedure MouseDown(Button: TMouseButton;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
Shift: TShiftState; X, Y: Integer); override; procedure MouseUp(Button: TMouseButton;
procedure MouseMove(Shift: TShiftState; Shift: TShiftState; X, Y: Integer); override;
X, Y: Integer); override; procedure MouseMove(Shift: TShiftState;
procedure DoEnter; override; X, Y: Integer); override;
procedure DoExit; override; procedure DoEnter; override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override; procedure DoExit; override;
function GetBackground : TCanvas; procedure KeyUp(var Key: Word; Shift: TShiftState); override;
procedure Click; override; function GetBackground : TCanvas;
procedure Resize; override; procedure Click; override;
function Focused: Boolean; override; procedure Resize; override;
procedure UpdateButton; function Focused: Boolean; override;
procedure UpdatePositions; procedure UpdateButton;
function GetAutoWidth : Integer; procedure UpdatePositions;
function GetAutoHeight : Integer; function GetAutoWidth : Integer;
published function GetAutoHeight : Integer;
property Action; published
property Anchors; property Action;
property Align; property Anchors;
property Caption; property Align;
property Enabled; property Caption;
property PopupMenu; property Enabled;
property Font; property PopupMenu;
property Visible; property Font;
property OnClick; property Visible;
property OnMouseDown; property OnClick;
property OnMouseEnter; property OnMouseDown;
property OnMouseLeave; property OnMouseEnter;
property OnMouseMove; property OnMouseLeave;
property OnMouseUp; property OnMouseMove;
property OnPaint; property OnMouseUp;
property OnResize; property OnPaint;
property OnStartDrag; property OnResize;
property DragMode; property OnStartDrag;
property DragKind; property DragMode;
property DragCursor; property DragKind;
property TabOrder; property DragCursor;
property TabStop; property TabOrder;
property NormalBlend : Extended read FNormalBlend write SetNormalBlend; property TabStop;
property OverBlend : Extended read FOverBlend write SetOverBlend; property NormalBlend : Extended read FNormalBlend write SetNormalBlend;
property BaseColor: TColor read FBaseColor write SetBaseColor; property OverBlend : Extended read FOverBlend write SetOverBlend;
property Color: TColor read FBaseColor write SetBaseColor; property BaseColor: TColor read FBaseColor write SetBaseColor;
property NormalBlendColor: TColor read FNormalBlendColor write SetNormalBlendColor; property Color: TColor read FBaseColor write SetBaseColor;
property OverBlendColor: TColor read FOverBlendColor write SetOverBlendColor; property NormalBlendColor: TColor read FNormalBlendColor write SetNormalBlendColor;
property BackgroundColor: TColor read FBackgroundColor write SetBackgroundColor; property OverBlendColor: TColor read FOverBlendColor write SetOverBlendColor;
property AutoWidth : Boolean read FAutoWidth write SetAutoWidth default false; property BackgroundColor: TColor read FBackgroundColor write SetBackgroundColor;
property AutoHeight: Boolean read FAutoHeight write SetAutoHeight default false; property AutoWidth : Boolean read FAutoWidth write SetAutoWidth default false;
property BorderSides : TBorderSides read FBorderSides write SetBorderSides default [bsTopLine,bsBottomLine,bsLeftLine,bsRightLine]; property AutoHeight: Boolean read FAutoHeight write SetAutoHeight default false;
property GradientType : TGradientType read FGradientType write SetGradientType default gtHorizontal; property BorderSides : TBorderSides read FBorderSides write SetBorderSides default [bsTopLine,bsBottomLine,bsLeftLine,bsRightLine];
property ShowFocusBorder : Boolean read FShowFocusBorder write SetShowFocusBorder; property GradientType : TGradientType read FGradientType write SetGradientType default gtHorizontal;
property RotateDirection : TRotateDirection read FRotateDirection write SetRotateDirection default rdNormal; property ShowFocusBorder : Boolean read FShowFocusBorder write SetShowFocusBorder;
property ButtonLayout : TButtonLayout read FButtonLayout write SetButtonLayout default blGlyphLeft; property RotateDirection : TRotateDirection read FRotateDirection write SetRotateDirection default rdNormal;
property Glyph : TBitmap read GetGlyph write SetGlyph; property ButtonLayout : TButtonLayout read FButtonLayout write SetButtonLayout default blGlyphLeft;
property ShowGlyph : Boolean read FShowGlyph write SetShowGlyph; property Glyph : TBitmap read GetGlyph write SetGlyph;
property GlyphBackgroundColor : TColor read FGlyphBackgroundColor write SetGlyphBackgroundColor; property ShowGlyph : Boolean read FShowGlyph write SetShowGlyph;
property TextAlignment : TTextAlignment read FTextAlignment write SetTextAlignment default taCenter; property GlyphBackgroundColor : TColor read FGlyphBackgroundColor write SetGlyphBackgroundColor;
property TextGlyphSpacing : Integer read FTextGlyphSpacing write SetTextGlyphSpacing default 2; property TextAlignment : TTextAlignment read FTextAlignment write SetTextAlignment default taCenter;
property ClickColor : TColor read FClickColor write SetClickColor; property TextGlyphSpacing : Integer read FTextGlyphSpacing write SetTextGlyphSpacing default 2;
property DisabledColor : TColor read FDisabledColor write SetDisabledColor default clGray; property ClickColor : TColor read FClickColor write SetClickColor;
property OwnerBackgroundDraw : Boolean read FOwnerBackgroundDraw write SetOwnerBackgroundDraw; property DisabledColor : TColor read FDisabledColor write SetDisabledColor default clGray;
property AutoWidthBorderSpacing : Integer read FAutoWidthBorderSpacing write SetAutoWidthBorderSpacing; property OwnerBackgroundDraw : Boolean read FOwnerBackgroundDraw write SetOwnerBackgroundDraw;
property AutoHeightBorderSpacing : Integer read FAutoHeightBorderSpacing write SetAutoHeightBorderSpacing; property AutoWidthBorderSpacing : Integer read FAutoWidthBorderSpacing write SetAutoWidthBorderSpacing;
property AutoHeightBorderSpacing : Integer read FAutoHeightBorderSpacing write SetAutoHeightBorderSpacing;
//property OnGetBackgroundRect { TODO } property OnNormalBackgroundPaint : TGBBackgroundPaintEvent read FOnNormalBackgroundPaint write FOnNormalBackgroundPaint;
property OnHotBackgroundPaint : TGBBackgroundPaintEvent read FOnHotBackgroundPaint write FOnHotBackgroundPaint;
property OnDownBackgroundPaint : TGBBackgroundPaintEvent read FOnDownBackgroundPaint write FOnDownBackgroundPaint;
property OnDisabledBackgroundPaint : TGBBackgroundPaintEvent read FOnDisabledBackgroundPaint write FOnDisabledBackgroundPaint;
end;
//BackgroundPaintEvents function ColorBetween(C1, C2 : TColor; blend:Extended):TColor;
property OnNormalBackgroundPaint : TGBBackgroundPaintEvent read FOnNormalBackgroundPaint write FOnNormalBackgroundPaint; function ColorsBetween(colors:array of TColor; blend:Extended):TColor;
property OnHotBackgroundPaint : TGBBackgroundPaintEvent read FOnHotBackgroundPaint write FOnHotBackgroundPaint; function AlignItem(ItemLength, AreaLength,Spacing: Integer; ATextAlignment: TTextAlignment):Integer;
property OnDownBackgroundPaint : TGBBackgroundPaintEvent read FOnDownBackgroundPaint write FOnDownBackgroundPaint;
property OnDisabledBackgroundPaint : TGBBackgroundPaintEvent read FOnDisabledBackgroundPaint write FOnDisabledBackgroundPaint;
end;
function ColorBetween(C1, C2 : TColor; blend:Extended):TColor; procedure Register;
function ColorsBetween(colors:array of TColor; blend:Extended):TColor;
function AlignItem(ItemLength, AreaLength,Spacing: Integer; ATextAlignment: TTextAlignment):Integer;
procedure DbgsGradButton(AButton : TGradButton);
procedure Register;
implementation implementation
@ -189,21 +186,15 @@ uses
function AlignItem(ItemLength, AreaLength,Spacing: Integer; ATextAlignment: TTextAlignment):Integer; function AlignItem(ItemLength, AreaLength,Spacing: Integer; ATextAlignment: TTextAlignment):Integer;
begin begin
case ATextAlignment of case ATextAlignment of
taLeftJustify : Result := Spacing; taLeftJustify : Result := Spacing;
taRightJustify: begin taRightJustify: begin
Result := AreaLength-ItemLength-Spacing; Result := AreaLength-ItemLength-Spacing;
end; end;
taCenter : begin taCenter : begin
Result := (AreaLength div 2)-(ItemLength div 2); Result := (AreaLength div 2)-(ItemLength div 2);
end; end;
end; end;
end;
procedure DbgsGradButton(AButton: TGradButton);
begin
DebugLn('######GradButton#####');
end; end;
procedure TGradButton.SetShowFocusBorder(const Value: Boolean); procedure TGradButton.SetShowFocusBorder(const Value: Boolean);
@ -224,37 +215,28 @@ begin
inherited TextChanged; inherited TextChanged;
FRotatedText.Text := Caption; FRotatedText.Text := Caption;
if FAutoWidth then if FAutoWidth then
UpdateButton UpdateButton
else else
UpdatePositions; UpdatePositions;
InvPaint; InvPaint;
end; end;
procedure TGradButton.SetName(const Value: TComponentName); procedure TGradButton.SetName(const Value: TComponentName);
begin begin
if (Caption='') OR (Caption=Name) then if (Caption='') OR (Caption=Name) then
begin begin
Caption:=Value; Caption:=Value;
end; end;
inherited; inherited;
end; end;
function TGradButton.Focused: Boolean; function TGradButton.Focused: Boolean;
begin begin
FFocused:=FFocused OR (Inherited Focused); FFocused:=FFocused OR (Inherited Focused);
Result := FFocused; Result := FFocused;
end;
procedure TGradButton.UpdateText;
begin
//UpdatePositions;
//FRotatedText.Canvas.Font.Color := Canvas.Font.Color;
//FRotatedText.Canvas.Font := Canvas.Font;
//FRotatedText.Update;
end; end;
procedure TGradButton.SetAutoWidth(const Value : Boolean); procedure TGradButton.SetAutoWidth(const Value : Boolean);
@ -283,91 +265,72 @@ end;
procedure TGradButton.UpdatePositions; procedure TGradButton.UpdatePositions;
var var
tempTS,tempGS : TSize; tempTS,tempGS : TSize;
p,t,midx, midy, textmidx, textmidy, p,t,midx, midy, textmidx, textmidy,
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;
AreaHeight := FBackgroundRect.Bottom-FBackgroundRect.Top;
AreaWidth := FBackgroundRect.Right-FBackgroundRect.Left; tempGS.cx:=0;
AreaHeight := FBackgroundRect.Bottom-FBackgroundRect.Top; tempGS.cy:=0;
tempGS.cx:=0; if FShowGlyph and not FRotatedGlyph.Empty then
tempGS.cy:=0; begin
tempGS.cx:=FRotatedGlyph.Width;
tempGS.cy:=FRotatedGlyph.Height;
end;
if FShowGlyph and not FRotatedGlyph.Empty then //tempTS := Canvas.TextExtent(Caption);
begin tempTS.cx:= FRotatedText.Width;
tempGS.cx:=FRotatedGlyph.Width; tempTS.cy:= FRotatedText.Height;
tempGS.cy:=FRotatedGlyph.Height;
tempBL := FButtonLayout;
if FShowGlyph and not FRotatedGlyph.Empty then begin
case tempBL of
blGlyphLeft: begin
FGlyphPoint.x := AlignItem(tempGS.cx+FTextGlyphSpacing+tempTS.cx,AreaWidth,4,FTextAlignment);
FGlyphPoint.y := AlignItem(tempGS.cy,AreaHeight,0, taCenter);
FTextPoint.x := FGlyphPoint.x+tempGS.cx+FTextGlyphSpacing;
FTextPoint.y := AlignItem(tempTS.cy,AreaHeight,0, taCenter);
end;
blGlyphRight: begin
//Glyph Right, Text Left
FTextPoint.x := AlignItem(tempTS.cx+FTextGlyphSpacing+tempGS.cx,AreaWidth,4, FTextAlignment);
FTextPoint.y := AlignItem(tempTS.cy,AreaHeight,0, taCenter);
FGlyphPoint.x := FTextPoint.x+tempTS.cx+FTextGlyphSpacing;
FGlyphPoint.y := AlignItem(tempGS.cy,AreaHeight,0, taCenter);
end;
blGlyphTop: begin
//Glyph Top, Text Bottom
FGlyphPoint.x := AlignItem(tempGS.cx,AreaWidth, 0, FTextAlignment);
FTextPoint.x := AlignItem(tempTS.cx, AreaWidth, 0, FTextAlignment);
FGlyphPoint.y := AlignItem(tempGS.cy+FTextGlyphSpacing+tempTS.cy, AreaHeight, 4, taCenter);
FTextPoint.y := FGlyphPoint.y+tempGS.cy+FTextGlyphSpacing;
end;
blGlyphBottom: begin
//Glyph Bottom, Text Top
FGlyphPoint.x := AlignItem(tempGS.cx,AreaWidth, 0, FTextAlignment);
FTextPoint.x := AlignItem(tempTS.cx, AreaWidth, 0, FTextAlignment);
FTextPoint.y := AlignItem(tempGS.cy+FTextGlyphSpacing+tempTS.cy, AreaHeight, 4, taCenter);
FGlyphPoint.y := FTextPoint.y+tempTS.cy+FTextGlyphSpacing;
end;
end; end;
end else begin
FGlyphPoint.x := 0;
FGlyphPoint.y := 0;
//tempTS := Canvas.TextExtent(Caption); FTextPoint.x := AlignItem(tempTS.cx,AreaWidth,4, FTextAlignment);
tempTS.cx:= FRotatedText.Width; FTextPoint.y := AlignItem(tempTS.cy,AreaHeight,0, taCenter);
tempTS.cy:= FRotatedText.Height; end;
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
case tempBL of
blGlyphLeft: begin
FGlyphPoint.x := AlignItem(tempGS.cx+FTextGlyphSpacing+tempTS.cx,AreaWidth,4,FTextAlignment);
FGlyphPoint.y := AlignItem(tempGS.cy,AreaHeight,0, taCenter);
FTextPoint.x := FGlyphPoint.x+tempGS.cx+FTextGlyphSpacing;
FTextPoint.y := AlignItem(tempTS.cy,AreaHeight,0, taCenter);
end;
blGlyphRight: begin
//Glyph Right, Text Left
FTextPoint.x := AlignItem(tempTS.cx+FTextGlyphSpacing+tempGS.cx,AreaWidth,4, FTextAlignment);
FTextPoint.y := AlignItem(tempTS.cy,AreaHeight,0, taCenter);
FGlyphPoint.x := FTextPoint.x+tempTS.cx+FTextGlyphSpacing;
FGlyphPoint.y := AlignItem(tempGS.cy,AreaHeight,0, taCenter);
end;
blGlyphTop: begin
//Glyph Top, Text Bottom
FGlyphPoint.x := AlignItem(tempGS.cx,AreaWidth, 0, FTextAlignment);
FTextPoint.x := AlignItem(tempTS.cx, AreaWidth, 0, FTextAlignment);
FGlyphPoint.y := AlignItem(tempGS.cy+FTextGlyphSpacing+tempTS.cy, AreaHeight, 4, taCenter);
FTextPoint.y := FGlyphPoint.y+tempGS.cy+FTextGlyphSpacing;
end;
blGlyphBottom: begin
//Glyph Bottom, Text Top
FGlyphPoint.x := AlignItem(tempGS.cx,AreaWidth, 0, FTextAlignment);
FTextPoint.x := AlignItem(tempTS.cx, AreaWidth, 0, FTextAlignment);
FTextPoint.y := AlignItem(tempGS.cy+FTextGlyphSpacing+tempTS.cy, AreaHeight, 4, taCenter);
FGlyphPoint.y := FTextPoint.y+tempTS.cy+FTextGlyphSpacing;
end;
end;
end else begin
FGlyphPoint.x := 0;
FGlyphPoint.y := 0;
FTextPoint.x := AlignItem(tempTS.cx,AreaWidth,4, FTextAlignment);
FTextPoint.y := AlignItem(tempTS.cy,AreaHeight,0, taCenter);
end;
//WritePoints([TP^, GP^]); //WritePoints([TP^, GP^]);
{TP^.x := TP^.x + p; {TP^.x := TP^.x + p;
@ -376,25 +339,24 @@ begin
GP^.x := GP^.x + p; GP^.x := GP^.x + p;
GP^.y := GP^.y + p; } GP^.y := GP^.y + p; }
FTextPoint.x := FTextPoint.x+FBackgroundRect.Left; FTextPoint.x := FTextPoint.x+FBackgroundRect.Left;
FTextPoint.y := FTextPoint.y+FBackgroundRect.Top; FTextPoint.y := FTextPoint.y+FBackgroundRect.Top;
FGlyphPoint.x := FGlyphPoint.x+FBackgroundRect.Left; FGlyphPoint.x := FGlyphPoint.x+FBackgroundRect.Left;
FGlyphPoint.y := FGlyphPoint.y+FBackgroundRect.Top; FGlyphPoint.y := FGlyphPoint.y+FBackgroundRect.Top;
{$IFDEF DEBUGGRADBUTTON} {$IFDEF DEBUGGRADBUTTON}
WriteLn('Text'); WriteLn('Text');
WritePoint(FTextPoint); WritePoint(FTextPoint);
WriteLn('Glyph'); WriteLn('Glyph');
WritePoint(FGlyphPoint); WritePoint(FGlyphPoint);
{$ENDIF} {$ENDIF}
//tempTS := Canvas.TextExtent(Caption); //tempTS := Canvas.TextExtent(Caption);
FTextSize:=tempTS;
FGlyphSize:=tempGS;
FTextSize:=tempTS;
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;
@ -915,13 +907,13 @@ end;
procedure TGradButton.SetOwnerBackgroundDraw(const Value: Boolean); procedure TGradButton.SetOwnerBackgroundDraw(const Value: Boolean);
begin begin
FOwnerBackgroundDraw:=Value; FOwnerBackgroundDraw:=Value;
if Value then if Value then
begin begin
UpdateBackground; UpdateBackground;
InvPaint; InvPaint;
end; end;
end; end;
procedure TGradButton.SetNormalBlend(const Value: Extended); procedure TGradButton.SetNormalBlend(const Value: Extended);
@ -1047,45 +1039,47 @@ begin
with bm do with bm do
begin begin
Width := Self.Width;
Height := Self.Height;
Width := Self.Width; FBackground.Width:=Width;
Height := Self.Height; FBackground.Height:=Height;
FBackground.Width:=Width; Canvas.Brush.Color:=clBlack;
FBackground.Height:=Height; Canvas.FillRect(0,0,Width, Height);
p := 0; p := 0;
if tempState = bsDown then if tempState = bsDown then
p := 1; p := 1;
if not FEnabled then tempState := bsDisabled; if not FEnabled then tempState := bsDisabled;
case tempState of case tempState of
bsUp : Canvas.Draw(0,0,FNormalBackgroundCache); bsUp : Canvas.Draw(0,0,FNormalBackgroundCache);
bsDown: Canvas.Draw(0,0,FDownBackgroundCache); bsDown: Canvas.Draw(0,0,FDownBackgroundCache);
bsHot : Canvas.Draw(0,0,FHotBackgroundCache); bsHot : Canvas.Draw(0,0,FHotBackgroundCache);
else Canvas.Draw(0,0,FDisabledBackgroundCache); else Canvas.Draw(0,0,FDisabledBackgroundCache);
end; end;
if Caption <> '' then if Caption <> '' then
FRotatedText.Draw(bm.Canvas, FTextPoint.x+p, FTextPoint.y+p); FRotatedText.Draw(bm.Canvas, FTextPoint.x+p, FTextPoint.y+p);
if FShowGlyph AND FRotatedGlyph.IsBitmapStored then if FShowGlyph AND FRotatedGlyph.IsBitmapStored then
begin begin
if not FEnabled then if not FEnabled then
tempState := bsDisabled tempState := bsDisabled
else else
tempState := FState; tempState := FState;
FRotatedGlyph.State:=tempState; FRotatedGlyph.State:=tempState;
FRotatedGlyph.Draw(bm.Canvas, FGlyphPoint.x+p, FGlyphPoint.y+p); FRotatedGlyph.Draw(bm.Canvas, FGlyphPoint.x+p, FGlyphPoint.y+p);
end; end;
if not (csDesigning in ComponentState) then if not (csDesigning in ComponentState) then
if FFocused AND FShowFocusBorder then if FFocused AND FShowFocusBorder then
Canvas.DrawFocusRect(RECT(FBackgroundRect.Left+2, FBackgroundRect.Top+2, Canvas.DrawFocusRect(RECT(FBackgroundRect.Left+2, FBackgroundRect.Top+2,
FBackgroundRect.Right-2, FBackgroundRect.Bottom-2)); FBackgroundRect.Right-2, FBackgroundRect.Bottom-2));
end; end;
Canvas.Draw(0,0,bm); Canvas.Draw(0,0,bm);

File diff suppressed because it is too large Load Diff

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;