You've already forked lazarus-ccr
jvcllaz: Fix LCL scaling of TJvTabBarXPPainter.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7419 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -57,7 +57,7 @@
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Target>
|
||||
<Filename Value="../../bin/$(TargetCPU)-$(TargetOS)/JvTabBarDemo_PageList/JvTabBarDemo_PageList"/>
|
||||
<Filename Value="../../bin/$(TargetCPU)-$(TargetOS)/JvTabBarDemo_PageList"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||
|
@ -788,6 +788,7 @@ object MainForm: TMainForm
|
||||
end
|
||||
object ImageList1: TImageList
|
||||
Height = 24
|
||||
Scaled = True
|
||||
Width = 24
|
||||
left = 493
|
||||
top = 150
|
||||
@ -836,5 +837,155 @@ object MainForm: TMainForm
|
||||
C41A1E1E86ECEC6C49D856E3CBEBC1F291C7CE03E563389D4E496AFEF5D69BFA
|
||||
A60AB7FFC7FBFB3D9EF13F63520965
|
||||
}
|
||||
BitmapAdv = {
|
||||
4C69020000004C7A040000002400000024000000570700000000000078DAED9B
|
||||
7D4C13671CC78BBC487DD9E6B219C3A6738912D1E15C18BD2263B298F9C79C84
|
||||
18F0AF69B69954E9159C9BD9A69BC2E6A6222051E8E4AD99BA6922A09BA0288E
|
||||
F600D14D44790D03A310793102CE1714C2FB6FCF735068CB5D7B072D77E2FD92
|
||||
6FB83EF7BC7CEEF772CF5D536432C944684EB2A9410B64533FF244C7CEF46721
|
||||
59DC562D9AE2FC77E7DAB5255D735E0F50A0B6A9B6B8727591606F5D488B8493
|
||||
09DB61D6AC22387204202EAE137C7DB3BAE42FFB2E474BCA91A658E3B1A70D0C
|
||||
0C404B4B0B24A7A4404C742644473F86952B1BC0D3B31CDCE5FBDA653367BE32
|
||||
E42787F36096A6E66628BA7C196ED7D541EEC58B1012BAF7FEC285C5209F9635
|
||||
E0E2F2C11E7777F737D0B2D31DCD83594AEFDC81DDC78E417E4101CD5372FD3A
|
||||
A4E974B0C45BD5EAE2EA1FEFEAEA4AC8E5F2798EE631B228AAAA602F45C1D1AC
|
||||
2C3883949D9D0D3A9DEE899FBFFF0F2EEEEE016E6E6E8BD092BCE3E5E3E36353
|
||||
A62C6588C5B7BC1CE24B4B21F6FE7D5875EF1E7C959000BB76ED04FF152B760E
|
||||
B12C46CBCD76643E0FB3545440DC8D1B1083F2F863D43EE5DC3970D6EBE16BF2
|
||||
13606071B67693182B8F698C62AF5D83FD432C4E393920436CEA5F7E8103DB37
|
||||
02038B135F1E2E3132B2C4219698B6B6411694333294C36AAD162E151541DA4F
|
||||
24F061198B7F4C6384F3657F6BEB084B490990432CD5D5D570327E1BF061E1CB
|
||||
63992FFB51DE0EC708F985443132B2E07B62D6E1EF80EFBE652B5EA62CE50D0D
|
||||
237E3165B1F00B66E9ECEC84F3A9BB80EF1ECAD53FDDDDDDB0FE900E7666FE39
|
||||
12A333675859FAFAFAE87D8CEF26CC8507FBE682BE100AAB9F8236230F56F7F4
|
||||
80D3E9D32043B91C9198C8C882C7E0B9EDC163595749494970489709650DE89A
|
||||
CB9EC2A63D99E0545C0C11E89E87594CFB1A59B0D98BC7D23A3A3A20F2C79F21
|
||||
EB9F1688CEA887E0AD47E0FB84447ADF64F28BD11CC57321371762636321E2CB
|
||||
1D70EC4406BD5F16A358D5D6D6422BCA2526167BF258D657575717B4A075F1FA
|
||||
959595505353030D8D8D70F0E041B3985A9AA3FCD383F2B7BDBD1DDAD05ED98A
|
||||
EEC50F1F3DA26388DBFBFBFB59C7398A67ACE6A8FA3255727232A73D6E32FB47
|
||||
ECF1628B1153BB142F8947681E474AFA8A4732C924139BA9542A109BC462A2E7
|
||||
D9FD8E3062E3890D14466C3CDA20ABBAF5BB0A52A844D877E528FDF7F66F2A9B
|
||||
6338898D47B79E516DC7D510525F0C4E300032D4CD28FC39B4EE2A7D9E6D2C27
|
||||
B1F19CD08C52DBA96F61617BAB1987A5F079DC8F693C27B1F1FCB16394429A2B
|
||||
ADB218B5AEA982713C27B1F19C8F36D3AD82641413E0C483FBD5E5278D9A8393
|
||||
D878F20F9B29A5369F138B516935D4A83938898DE7EA0933ED692CE3C583FB5B
|
||||
CEC1496C3C1567CD94DA54CECF3F8DE5A3E6E024369E9B97CC74ABFE1ABFFC41
|
||||
FD2DE7E024161EAAF4F82805DECC01593D6553B81FD3782E62E399113D4310B1
|
||||
F1CC4D9C2B88D878BC7FF516446C3C01190182888D2728274810B1F16C28D820
|
||||
88D87822AE470822369EC89A4841F4CC3CCF8B84474C92DED025934C32315870
|
||||
70F093356BD6C04409AF678D07F7B97BF7EE8409AFF7ACF14CB4B8FA071FDB32
|
||||
2E7D6C8D9F0C3CE8949998782CFBB0C9748C142F71C7ABAAAA6A52FA47AA2F29
|
||||
5E527D3D3FF1128A476CCFABE3314AA30C349004509F06BA8BE15D40281E4A1D
|
||||
388352FB2DB05CD794272A4A36A540A378B3E873FF996CF35CD9EA27CF23159E
|
||||
94DA77CE5838F49BFD5EA348C280D7446A47EAA634C4164B1E4398DF0AF4B70E
|
||||
E92952BF41439C35E54A8F5AE286E68947E73A913A06FB280FF0E5C90B2396EA
|
||||
35C436EA8B652F0DFA49B109CDD57351E3EF61C6431245056AA5D7601FDF65E8
|
||||
7333A5266286AF8B54A4A2B6C6BC7045002A2E27CC8A78FCC71D3714177C6D7A
|
||||
35B1CA94C7F8D96806521981DAFFC3C77F6DF19947FB234CB17ABCEBA787863A
|
||||
531AC546E4FF5368CE7F0DA4A28BF6875AB9D62C7F86FC37E20FDFF771FBA5B0
|
||||
F766E9358A5074DC8B63365E1EC4A1C5798162F65981C6CF3B5BE5338DCE010B
|
||||
1E9CA766E3902F507B1F6640BE5A87AF03E7FBB87948E28141ADD8609ADF4CFE
|
||||
31842BDE36F78F621F6AAFC5C7F83A06734C49D881A781522B0FE36BA36B9E54
|
||||
A6E3EB1EC5431254EEE6E5B3E91A20890F712D9AD5A19A28D4934405A5F15B44
|
||||
E794CAE7455C93FCEF3B44C8509D3F407A8CE346D7AB058F9E54860DD5FA435C
|
||||
7FB8B64CE353181EF02A6A3F873480F39CBE6F90CA6FC6E2A3DC6D4BA7E78513
|
||||
8B73C28917ACF5C3E7A9CDEFBE85AF9DAD0FE6C2F1B3D64732664B494979827F
|
||||
D3ED68A17558CFA5A6A60E1879F067FCBF1D8E96F177EC4C86CF09C9535F5F4F
|
||||
CB16CF62F40A6094A37830C7FCF9F3691999D87864E9558CB2174F6F6F2F7879
|
||||
798156ABA5858F71DB58793C3C3C7889C93F4D4D4DC371321E0BE59FB1E67354
|
||||
549443F2C79A84E0C9CEBFCC28BE3CF6A83B7BF2D823AFC6CB63AAF1D4DD64F5
|
||||
8F98F359AAAFE7A3BE26B37FA4FA9AF8E743BE3C8E7EFEB1370FDF67C2C9E69F
|
||||
E7ADBEECF5BC6AAFFDCB5ECFF3F6BA3FF37DDF71F4FEC5F77D904DF6F40F9FF7
|
||||
65B17D9F2086EF5BC4F67D9498EC7F08F3F2454C7A0400000030000000300000
|
||||
00F10A00000000000078DAED9D0B5015D719C741AFAFF898441D131D93D6198D
|
||||
0F6CD421DC7B4D6D478C334CAAC44E1C4CDA69896D2C817BC1C4C7686350F081
|
||||
623BE018B523356626828A170D2A5210810B828009A2C3C388150BA2B49AF840
|
||||
1441E07E3DE7B84B96651F775FDEBDBADFCC7FD8C7D9B3BF73EEFF7C67772FB3
|
||||
D7C7C7082304C397435EC43E7C581FD31717868F5AB410ADF7473221F5F18276
|
||||
1076DF3E298D3366007CFC719DEBB571F343D1F6C1543BFAEAB80DDDEC0B1600
|
||||
6464002424B4426060A96BF8CB7396A0FDC39006506D108C937B63E0692AFBCB
|
||||
1848DFF519C47CBE1282831D70EF1E405C5C2BCC9BD70466F36578F5D5E35DFD
|
||||
5EF8F547541BFAEB891FB31FFDC71A48F9720724A7A4C0D163C760F19F0EDFA7
|
||||
D9C78DAB8021430AC0D7B430D367F0E097292FB9C5AF75B85C2E686E6E86B4C3
|
||||
87E1E2F7DF434B4B0B9CCCC981430E074C9BFEF7E69FD87F5FDEAF5FBF193E83
|
||||
06BD467D061EE7C7EC7710FB8EAFBE828C1327E0CA952BA40DF5F5F570E0E041
|
||||
48DCB6CD3562C49A165FD3FB15A68103E7E8899F669F8CFAFA0FE7CF43417131
|
||||
14161642595919EC3F7000724E9D8284C444D7DB73E79E320D1810641A346866
|
||||
FFFEFD2721FFBCE269FF74B39F3C0951683D11FD8D46DC47B2B2E0606A2AA4A5
|
||||
A541FAD1A3AE90458BBEA1D87F89D8FD50DF8F953A7ED9E1EFEF2F49EEB0EF7A
|
||||
F408FE8C96C71714C0D69D5FC0A6B84D306FFEFC4C06FB548AFD45A9F9534D7E
|
||||
367B42767637FB44B4DD1779C674341D3EFA701188B0FB3E6DFF60F6BBF7EFC3
|
||||
14E47736FB24CC8EBCE373F52A8C8D5E0D9B5784821276B5F9B9D877D2EC68A2
|
||||
A2D95FDFBA95B06FFB7C09286157E21F3E76BFDC5CC2FE37942769F689981D79
|
||||
06B34FDABC99E47DCCFECF8D3650C2AE167F373B5FBFA375CC3E11F53B663F53
|
||||
5242D8F7272C0725EC6AF847889DD9EF93E3E2BAD9ABABAB09FB911DAB4109BB
|
||||
527E3ACFF821469223317B6B6BCF7EAFAB83C91B37F6606FBC7E9DB09F488A06
|
||||
A5D7C9EEFA47323B1EABE83A610A07FBDDBB77097BD69E75A0F41A5F0E3F667F
|
||||
843C62DDB79FB0C7A7A773B2FF821AAB6CF6B6B636C28EAF4795DE48C8F14F57
|
||||
57171CCFCA831365FF851DFBB220F1F66DC2FE3A62F345731666F75BBF9EB097
|
||||
9496F662EFECEC24ECF8BC4F9B1FF73D3E7FC2EE5428A96D85EFEA5AE1836359
|
||||
3001F1F9666612F6A9B1B1DDFD5E5353D38B1DD7419F572B7EBEBC495FC7A766
|
||||
5F800BD73AA1B8B61DF6396FC1BB6BF610F6691B361076F6714C761C9EE2C7DE
|
||||
493DE480B4ECB3843DA5F0366C3AD4008BD66543407474B767D8C731D99F063F
|
||||
5F74747440F4DAB59089BCB26E7B3AD8E3332074C576D8BD3719F29D4E283B7B
|
||||
162E5EBCC8E91966788AFFF1E3C7B03B2909C22322602FBA9F2A3E73064E1715
|
||||
913EAFA8A880DADA5AB8D1D484EECBEFF1B27BC23F4C7EECFFEB376EC0A54B97
|
||||
A0B2B212AAAAAA0877434303E778E10A4FF163FF3C78F0007E443913B7E15A63
|
||||
23E9EF5B3FFC40FA5C6CDEF3B47FF0F86D6F6F276DC09F03165EC6F319FE6C68
|
||||
BFF0F5BBA7F9D50A4FE54F3E7F48BD5F30F89F6DFF3CABFE97BBDFE037FC6FF0
|
||||
1BFC9EFEFE8BADE79DDF08238C30C208238C503FC2C2C2C090E7E56DF1CCF26F
|
||||
98A66F89F1C7BFA56F89F16F9BAB6F89F1EF5AA06F89F1EFF99D5BAA3CB20A96
|
||||
566781DF9D4618DCD14684973FA9CA82AAC3ABDCAE47B2C4F8BF5E22A8B69470
|
||||
88B8E4843E2E17F8A0E25CEAEBEA02FBA57C684F0E17AD4FB2C4F85397F2AACD
|
||||
B11C026F5EE6E5666BCEFF6AA1DDB14CB04EC912E3FFE6335E855F2D739B9D56
|
||||
645D89609D9225C67F6223A72A0B93043DC3EF25175417EEE6AD57B2C4F87312
|
||||
39B5B4A142323BAD65F5E778EB952C317EDC571C9AF2F08E6CFEA90F6EF3D62B
|
||||
5962FCA5FB3835A4B34336FFD0CEC7BCF54A9618FFB9239C1AAA807F18E6E7A9
|
||||
57B2C4F8D1FCC3A5296D2DF2FDF3A885B75EC912E3BF7C9A539FDCBD2E9B7FF9
|
||||
9DEBBCF54A96187F7D39A7AA6ED4405F90913FD1313537AA79EB952C11FE90D4
|
||||
DFF26ABC6321F8A68548D204748C509D5225C63F74EB505D4B8C7FF4F6D1BA96
|
||||
18FF84A409BA9618FFF47DD3752D31FE598E59BA96187FD0F1205D4B8C7F61CE
|
||||
425D4B8C3FF474A8AE25C66FFBD6A66B89F1AFAA5CA56B89F1AFBFBC5ED77AE6
|
||||
9FDF7A29BF21CFC8F806D008238C30C208233C1FC1C1C14548A0331549E0073D
|
||||
4A2A7F5353932EF4BCF27BBB7F9E15FFD3EBEE86D4F2EED667F03F095484537C
|
||||
FC7CE5C564F01BFE7F1EFD6FF01BFE37F2BF91FF0DFF1BF9DFE037FCEF297E2F
|
||||
BE7FF4EAE7575A445EA43924DF6E01A7CDBAD81B9F491AFC063F5F3823CD6F3A
|
||||
ED163BE2DB9C6F332FCB8B9A6916E24789C437D7660974DACC31F81874EC078E
|
||||
583FDEF7203BC3FC47E2E3F2EDD6385476A3D36EFEB02862D64B6AB0A3F33B31
|
||||
17D2A3FC484B13FAEBA2D6D771F2DBAD4B901C54991F913AF1729EDD52E9B405
|
||||
BCD2ABDD36EB5FD0FE16AAFC4D7A392FD21AAB0ABFCD528ACE114CF79F33DCFA
|
||||
73547F1DE6724659C6B2F991FE8DFA301F9723E56DB387A06DDBA97D993DD8ED
|
||||
963F526DFE3637C2F206BD3DD7161080F8DF51839FEB7347E7FDF4C979CDF339
|
||||
F81B31732F8FD82D25647FC49B13F17A4698FF0BF976F32DB4ED9AF3D3E92F3E
|
||||
8D71703ACC7F746E94F95788651B61B1596C6CFE3CBB399E7B7C5BA398E31BB7
|
||||
9DCB876A47BE3DE0ED3CBB35039DE71E753EAC2ECAA351BDF8919F39EB89B4BE
|
||||
4B8E8D34AF7AC26F5DFDA40FACEF699777ACEF53E3B5DA69B3AC408C73F2EC6F
|
||||
FD0CADFF868F9F2F7FA2BC15CA3C86CA4DA096CF79724F35F628DBCFF4B8E3E2
|
||||
A7FBB7779E316F62F25279077D96D6A51AF23F40FA8E63FC1EE4E5B75B8A81F5
|
||||
3E61E7E2D903A9DCDB4CF70595C7706E3DE78C9D6DD288FF3C523B9E8B482E0A
|
||||
09E99B176959893904F8DB11EBAE932BDF20BF3B80E721C67CB0AEE798B0ECA2
|
||||
E686349C1BBAF327CA1178BC28E68F340721FFB45163A011E921523D620DE7F7
|
||||
3FF6B5B5012D77205D457A4CB1EF65F7F3BFA2DE1980DAF0352327FCE7A7BEB1
|
||||
AC54650CDB668ECFB359FE8AE7207C0D8173359E47312FDED75D0ECD65641BF2
|
||||
052983CB465A77E079D41961B10AF65384C51FE5E2B5E81C3BF16784F30478D7
|
||||
6F08196184E69194945484045EA2660E7EF026F1F1E3F71F0B09BF435848F8DD
|
||||
C342C2EFACE6127D7EB150C2AF153B1F3FBD4F0D7E2DD9B9F8F131F8D9555050
|
||||
107977B41CFE29D5D0435AB1633E263FCD4E3F9366B6416D7E35D8D9FC515151
|
||||
847BD4A8514478196F93CAEFE3A816945AEC6CFE9B376F4260602079EF3B165E
|
||||
C6DBA4F0E3BE75977FCC9831B2C4C7AF34FFD0DEF0467EA6B7E5F8478A67B8F8
|
||||
95CE5F5C6334363696484DBFEB8D5F093B933FA3E08CA0D4E467E757B9ECADAD
|
||||
AD9AF1634E25FCEEB06BC54F73D2FC6C898D6F77D9B5E067F6B3527EA11CAA05
|
||||
3FDB276CFFD0DED0233F576E61F233BD2DC73F4CCF68E11F217EA539928F5D0F
|
||||
FC4AD83DC5CFCE9F72D91F3E7CA8193FE654C2EF0EBB56FC34A7DCFCE92EBB16
|
||||
FCCC7E56CA2F943FB5E067FB84ED1FDA1B7AE4E7CA2D4C7EA6B7E5F887E9192D
|
||||
FC2327BF481DAB7AE457C28E7F1F4C0B7E77AF0F94B27B925F6C7C0A8D599ADD
|
||||
53FCEEE4173E7E26BB16FC72F38B14CF70F12BBD7FE7BA16A3F3A79A7ED78A9F
|
||||
2BB730F9B56067F22B7D7E25C4CF6665E757B9EC5CFCF8B722B9963DC12FC6DE
|
||||
D2D2D283BFBCBC1C468E1C09C9C9C9E0703860C48811505A5AAA985FEAF59BBB
|
||||
EC6CFE2D5BB69067E6269389082FE36D72F8713FCBE5A719857229173F798D7C
|
||||
7C7CF7F717F85C72FC233656B5E4C7111313432467FCBA9367DCE5E7F30C536A
|
||||
E61FAD72241FBB9AFC5EFCFDB557FFFF80119E89FF031F73DEA7
|
||||
}
|
||||
end
|
||||
end
|
||||
|
@ -153,7 +153,8 @@ type
|
||||
function GetTabBar(ATab: TJvTabBarItem): TJvCustomTabBar;
|
||||
function GetTabSize(Canvas: TCanvas; Tab: TJvTabBarItem): TSize; virtual; abstract;
|
||||
function Options: TJvTabBarPainterOptions; virtual; abstract;
|
||||
public
|
||||
function Scale(ABar: TJvCustomTabBar; n: Integer): Integer;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
end;
|
||||
@ -314,12 +315,6 @@ type
|
||||
procedure SetOrientation(const Value: TJvTabBarOrientation);
|
||||
procedure TimerExpired(Sender: TObject);
|
||||
procedure SetHeight(AValue: Integer);
|
||||
{$IF LCL_FullVersion >= 1090000}
|
||||
private
|
||||
procedure SetImagesWidth(const AValue: Integer);
|
||||
protected
|
||||
property ImagesWidth: Integer read FImagesWidth write SetImagesWidth default 0;
|
||||
{$ENDIF}
|
||||
protected
|
||||
procedure CalcTabsRects;
|
||||
procedure CalculatePreferredSize(var PreferredWidth, PreferredHeight: integer;
|
||||
@ -371,6 +366,9 @@ type
|
||||
procedure DoAutoAdjustLayout(const AMode: TLayoutAdjustmentPolicy;
|
||||
const AXProportion, AYProportion: Double); override;
|
||||
{$IFEND}
|
||||
{$IF LCL_FullVersion >= 1090000}
|
||||
procedure SetImagesWidth(const AValue: Integer);
|
||||
{$ENDIF}
|
||||
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
@ -389,6 +387,9 @@ type
|
||||
property PageList: TCustomControl read FPageList write SetPageList;
|
||||
property Painter: TJvTabBarPainter read FPainter write SetPainter;
|
||||
property Images: TCustomImageList read FImages write SetImages;
|
||||
{$IF LCL_FullVersion >= 1090000}
|
||||
property ImagesWidth: Integer read FImagesWidth write SetImagesWidth default 0;
|
||||
{$ENDIF}
|
||||
property Tabs: TJvTabBarItems read FTabs write SetTabs;
|
||||
|
||||
// Status
|
||||
@ -2226,11 +2227,27 @@ begin
|
||||
end;
|
||||
{$ELSE}
|
||||
begin
|
||||
Result.CX := ATab.GetImages.Width;
|
||||
Result.CY := ATab.GetImages.Height;
|
||||
if Assigned(ATab.GetImages) then
|
||||
begin
|
||||
Result.CX := ATab.GetImages.Width;
|
||||
Result.CY := ATab.GetImages.Height;
|
||||
end else
|
||||
begin
|
||||
Result.CX := 0;
|
||||
Result.CY := 0;
|
||||
end;
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
function TJvTabBarPainter.Scale(ABar: TJvCustomTabBar; n: Integer): Integer;
|
||||
begin
|
||||
{$IF LCL_FullVersion >= 1080000}
|
||||
Result := ABar.Scale96ToFont(n);
|
||||
{$ELSE}
|
||||
Result := MulDiv(n, Screen.PixelsPerInch, 96);
|
||||
{$IFEND}
|
||||
end;
|
||||
|
||||
procedure TJvTabBarPainter.GetScrollButtons(TabBar: TJvCustomTabBar; var LeftButton, RightButton: TRect);
|
||||
begin
|
||||
{ reserved for future use }
|
||||
@ -2366,18 +2383,21 @@ begin
|
||||
end;
|
||||
|
||||
procedure TJvModernTabBarPainter.DrawDivider(Canvas: TCanvas; LeftTab: TJvTabBarItem; R: TRect);
|
||||
var
|
||||
delta: Integer;
|
||||
begin
|
||||
if not LeftTab.Selected then
|
||||
begin
|
||||
if (LeftTab.TabBar.SelectedTab = nil) or
|
||||
(LeftTab.GetNextVisible <> LeftTab.TabBar.SelectedTab) then
|
||||
begin
|
||||
delta := Scale(LeftTab.TabBar, 3);
|
||||
with Canvas do
|
||||
begin
|
||||
Pen.Color := DividerColor;
|
||||
Pen.Width := 1;
|
||||
MoveTo(R.Right - 1, R.Top + 3);
|
||||
LineTo(R.Right - 1, R.Bottom - 3);
|
||||
MoveTo(R.Right - 1, R.Top + delta);
|
||||
LineTo(R.Right - 1, R.Bottom - delta);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -2386,21 +2406,23 @@ end;
|
||||
procedure TJvModernTabBarPainter.DrawMoveDivider(Canvas: TCanvas; Tab: TJvTabBarItem; MoveLeft: Boolean);
|
||||
var
|
||||
R: TRect;
|
||||
delta: integer;
|
||||
begin
|
||||
delta := Scale(Tab.TabBar, 4);
|
||||
with Canvas do
|
||||
begin
|
||||
R := Tab.DisplayRect;
|
||||
Inc(R.Top, 4);
|
||||
Dec(R.Bottom, 2);
|
||||
Inc(R.Top, delta);
|
||||
Dec(R.Bottom, delta div 2);
|
||||
if MoveLeft then
|
||||
begin
|
||||
Dec(R.Left);
|
||||
R.Right := R.Left + 4
|
||||
R.Right := R.Left + delta
|
||||
end
|
||||
else
|
||||
begin
|
||||
Dec(R.Right, 1);
|
||||
R.Left := R.Right - 4;
|
||||
R.Left := R.Right - delta;
|
||||
end;
|
||||
Brush.Color := MoveDividerColor;
|
||||
FillRect(R);
|
||||
|
@ -53,7 +53,7 @@ type
|
||||
implementation
|
||||
|
||||
uses
|
||||
Math, Themes;
|
||||
LCLVersion, Math, Themes, imgList;
|
||||
|
||||
{ TJvTabBarXPPainter }
|
||||
|
||||
@ -87,36 +87,55 @@ end;
|
||||
procedure TJvTabBarXPPainter.DrawTab(Canvas: TCanvas; Tab: TJvTabBarItem;
|
||||
R: TRect);
|
||||
var
|
||||
TabDetails, ButtonDetails: TThemedElementDetails;
|
||||
tabBar: TJvCustomTabBar;
|
||||
tabDetails, buttonDetails: TThemedElementDetails;
|
||||
CloseRect, TextRect: TRect;
|
||||
imgsize: TSize;
|
||||
x, y: Integer;
|
||||
{$IF LCL_FullVersion >= 1090000}
|
||||
imageRes: TScaledImageListResolution;
|
||||
f: Double;
|
||||
ppi: Integer;
|
||||
{$IFEND}
|
||||
begin
|
||||
tabBar := GetTabBar(Tab);
|
||||
|
||||
if ThemeServices.ThemesEnabled then
|
||||
begin
|
||||
if Tab.Selected then
|
||||
begin
|
||||
ButtonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonNormal);
|
||||
TabDetails := ThemeServices.GetElementDetails(ttTabItemSelected);
|
||||
buttonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonNormal);
|
||||
tabDetails := ThemeServices.GetElementDetails(ttTabItemSelected);
|
||||
end
|
||||
else if Tab.Hot then
|
||||
begin
|
||||
ButtonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonHot);
|
||||
TabDetails := ThemeServices.GetElementDetails(ttTabItemHot);
|
||||
buttonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonHot);
|
||||
tabDetails := ThemeServices.GetElementDetails(ttTabItemHot);
|
||||
end
|
||||
else
|
||||
begin
|
||||
ButtonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonNormal);
|
||||
TabDetails := ThemeServices.GetElementDetails(ttTabItemNormal);
|
||||
buttonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonNormal);
|
||||
tabDetails := ThemeServices.GetElementDetails(ttTabItemNormal);
|
||||
end;
|
||||
|
||||
if Tab.Closing then
|
||||
ButtonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonPushed);
|
||||
ThemeServices.DrawElement(Canvas.Handle, TabDetails, R);
|
||||
buttonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonPushed);
|
||||
ThemeServices.DrawElement(Canvas.Handle, tabDetails, R);
|
||||
|
||||
if (Tab.ImageIndex <> -1) and (Tab.GetImages <> nil) then
|
||||
begin
|
||||
Tab.GetImages.Draw(Canvas, R.Left + 4, R.Top + (R.Bottom - R.Top - Tab.GetImages.Height) div 2,
|
||||
Tab.ImageIndex, Tab.Enabled);
|
||||
Inc(R.Left, Tab.GetImages.Width + 2);
|
||||
imgSize := GetRealImageSize(Tab);
|
||||
x := R.Left + Scale(tabBar, 4);
|
||||
y := (R.Top + R.Bottom - imgSize.CY) div 2;
|
||||
{$IF LCL_FullVersion >= 1090000}
|
||||
f := tabBar.GetCanvasScaleFactor;
|
||||
ppi := GetPixelsPerInch;
|
||||
imageRes := Tab.GetImages.ResolutionForPPI[tabBar.ImagesWidth, ppi, f];
|
||||
imageRes.Draw(Canvas, x, y, Tab.ImageIndex, Tab.Enabled);
|
||||
{$ELSE}
|
||||
Tab.GetImages.Draw(Canvas, x, y, Tab.ImageIndex, Tab.Enabled);
|
||||
{$IFEND}
|
||||
Inc(R.Left, imgSize.CX + Scale(tabBar, 2));
|
||||
end;
|
||||
|
||||
TextRect := R;
|
||||
@ -124,10 +143,10 @@ begin
|
||||
if Tab.TabBar.CloseButton then
|
||||
begin
|
||||
CloseRect := GetCloseRect(Canvas, Tab, R);
|
||||
TextRect.Right := CloseRect.Left - 3;
|
||||
TextRect.Right := CloseRect.Left - Scale(tabBar, 3);
|
||||
end
|
||||
else
|
||||
Dec(TextRect.Right, 3);
|
||||
Dec(TextRect.Right, Scale(tabBar, 3));
|
||||
Canvas.Brush.Style := bsClear;
|
||||
ThemeServices.DrawText(Canvas.Handle, TabDetails, Tab.Caption, TextRect, DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS, 0);
|
||||
|
||||
@ -140,13 +159,19 @@ end;
|
||||
|
||||
function TJvTabBarXPPainter.GetCloseRect(Canvas: TCanvas; Tab: TJvTabBarItem;
|
||||
R: TRect): TRect;
|
||||
var
|
||||
tabBar: TJvCustomTabBar;
|
||||
p15: Integer;
|
||||
begin
|
||||
if ThemeServices.ThemesEnabled then
|
||||
begin
|
||||
Result.Right := R.Right - 5;
|
||||
Result.Top := R.Top + ((R.Bottom div 2) - 8);
|
||||
Result.Left := Result.Right - 15;
|
||||
Result.Bottom := Result.Top + 15;
|
||||
tabBar := GetTabBar(Tab);
|
||||
p15 := Scale(tabBar, 15);
|
||||
// Result.Top := R.Top + R.Bottom div 2 - Scale(tabBar, 8);
|
||||
Result.Top := (R.Top + R.Bottom - p15) div 2;
|
||||
Result.Bottom := Result.Top + p15;
|
||||
Result.Right := R.Right - Scale(tabBar, 5);
|
||||
Result.Left := Result.Right - p15;
|
||||
end
|
||||
else
|
||||
Result := inherited GetCloseRect(Canvas, Tab, R);
|
||||
@ -161,28 +186,31 @@ begin
|
||||
end;
|
||||
|
||||
function TJvTabBarXPPainter.GetTabSize(Canvas: TCanvas; Tab: TJvTabBarItem): TSize;
|
||||
var
|
||||
tabBar: TJvCustomTabBar;
|
||||
begin
|
||||
tabBar := GetTabBar(Tab);
|
||||
if FixedTabSize > 0 then
|
||||
begin
|
||||
if ThemeServices.ThemesEnabled then
|
||||
Result.cx := FixedTabSize
|
||||
else
|
||||
Result.cx := Min(FixedTabSize + 40, Canvas.TextWidth(Tab.Caption) + 26);
|
||||
Result.cx := Min(FixedTabSize + Scale(tabBar, 40), Canvas.TextWidth(Tab.Caption) + Scale(tabBar, 26));
|
||||
end
|
||||
else
|
||||
begin
|
||||
if ThemeServices.ThemesEnabled then
|
||||
begin
|
||||
Result.cx := Canvas.TextWidth(Tab.Caption) + 16;
|
||||
Result.cx := Canvas.TextWidth(Tab.Caption) + Scale(tabBar, 16);
|
||||
if (Tab.ImageIndex <> -1) and (Tab.GetImages <> nil) then
|
||||
Inc(Result.cx, Tab.GetImages.Width + 2);
|
||||
Inc(Result.cx, GetRealImageSize(Tab).CX + Scale(tabBar, 2));
|
||||
if Tab.TabBar.CloseButton then
|
||||
Inc(Result.cx, 18);
|
||||
Inc(Result.cx, Scale(tabBar, 18));
|
||||
end
|
||||
else
|
||||
Result := inherited GetTabSize(Canvas, Tab);
|
||||
end;
|
||||
Result.cy := Tab.TabBar.Height - 3;
|
||||
Result.cy := Tab.TabBar.Height - Scale(tabBar, 3);
|
||||
end;
|
||||
|
||||
procedure TJvTabBarXPPainter.SetFixedTabSize(const Value: Integer);
|
||||
|
Reference in New Issue
Block a user