jvcllaz: Add TJvTabBar incl demo.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6260 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2018-03-19 21:17:45 +00:00
parent 9d3f64653b
commit df4851ec84
13 changed files with 3387 additions and 1 deletions

View File

@ -1,3 +1,6 @@
tjvtabbar.bmp
tjvmoderntabbarpainter.bmp
Tjvtabbarxppainter.bmp
tjvoutlookbar.bmp tjvoutlookbar.bmp
tjvtimeline.bmp tjvtimeline.bmp
tjvtmtimeline.bmp tjvtmtimeline.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -15,12 +15,15 @@ implementation
uses uses
Classes, ImgList, Controls, PropEdits, GraphPropEdits, ComponentEditors, Classes, ImgList, Controls, PropEdits, GraphPropEdits, ComponentEditors,
JvDsgnConsts, JvOutlookBar, JvOutlookBarEditors, JvDsgnConsts,
JvOutlookBar, JvOutlookBarEditors,
JvTabBar, JvTabBarXPPainter,
JvTimeLine, JvTMTimeline, JvTimeLineEditor; JvTimeLine, JvTMTimeline, JvTimeLineEditor;
procedure Register; procedure Register;
begin begin
RegisterComponents(RsPaletteJvcl, [ RegisterComponents(RsPaletteJvcl, [
TJvTabBar, TJvModernTabBarPainter, TJvTabBarXPPainter,
TJvOutlookBar, TJvOutlookBar,
TJvTimeLine, TJvTimeLine,
TJvTMTimeLine TJvTMTimeLine

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<ProjectOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<General>
<SessionStorage Value="InProjectDir"/>
<MainUnit Value="0"/>
<Title Value="JvTabBarDemo"/>
<Scaled Value="True"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<XPManifest>
<DpiAware Value="True"/>
</XPManifest>
<Icon Value="0"/>
</General>
<BuildModes Count="1">
<Item1 Name="Default" Default="True"/>
</BuildModes>
<PublishOptions>
<Version Value="2"/>
</PublishOptions>
<RunParams>
<FormatVersion Value="2"/>
<Modes Count="0"/>
</RunParams>
<RequiredPackages Count="2">
<Item1>
<PackageName Value="JvCustomLazR"/>
</Item1>
<Item2>
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="JvTabBarDemo.lpr"/>
<IsPartOfProject Value="True"/>
</Unit0>
<Unit1>
<Filename Value="main.pas"/>
<IsPartOfProject Value="True"/>
<ComponentName Value="Form1"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Main"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="..\..\bin\JvTabBarDemo"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Linking>
<Debugging>
<UseExternalDbgSyms Value="True"/>
</Debugging>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
</CompilerOptions>
<Debugging>
<Exceptions Count="3">
<Item1>
<Name Value="EAbort"/>
</Item1>
<Item2>
<Name Value="ECodetoolError"/>
</Item2>
<Item3>
<Name Value="EFOpenError"/>
</Item3>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -0,0 +1,22 @@
program JvTabBarDemo;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Interfaces, // this includes the LCL widgetset
Forms, Main
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource := True;
Application.Scaled := True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

View File

@ -0,0 +1,303 @@
object Form1: TForm1
Left = 310
Height = 335
Top = 127
Width = 614
Caption = 'Form1'
ClientHeight = 315
ClientWidth = 614
Menu = MainMenu1
OnCreate = FormCreate
OnDestroy = FormDestroy
LCLVersion = '1.9.0.0'
object JvTabBar1: TJvTabBar
Left = 0
Top = 40
Width = 614
Visible = False
HotTracking = True
Painter = JvModernTabBarPainter1
Images = ImageList1
Tabs = <>
OnTabClosing = JvTabBar1TabClosing
OnTabClosed = JvTabBar1TabClosed
OnTabSelected = JvTabBar1TabSelected
end
object ToolBar: TToolBar
Left = 0
Height = 40
Top = 0
Width = 614
AutoSize = True
ButtonHeight = 40
ButtonWidth = 40
Caption = 'ToolBar'
Images = ImageList1
ShowCaptions = True
TabOrder = 1
object TbOpen: TToolButton
Left = 1
Top = 0
Action = AcFileOpen
end
object TbQuit: TToolButton
Left = 102
Top = 0
Action = AcFileQuit
end
object TbStyle: TToolButton
Left = 47
Top = 0
Caption = 'Style'
DropdownMenu = PopupMenu1
ImageIndex = 3
Style = tbsButtonDrop
end
object ToolButton2: TToolButton
Left = 97
Height = 40
Top = 0
Caption = 'ToolButton2'
Style = tbsDivider
end
end
object Memo1: TMemo
Left = 4
Height = 244
Top = 67
Width = 606
Align = alClient
BorderSpacing.Around = 4
Font.CharSet = ANSI_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Courier New'
Font.Pitch = fpFixed
Font.Quality = fqDraft
ParentFont = False
TabOrder = 2
end
object JvModernTabBarPainter1: TJvModernTabBarPainter
Font.Color = clWindowText
DisabledFont.Color = clGrayText
SelectedFont.Color = clWindowText
left = 360
top = 192
end
object JvTabBarXPPainter1: TJvTabBarXPPainter
Font.Color = clWindowText
DisabledFont.Color = clGrayText
SelectedFont.Color = clWindowText
FixedTabSize = 0
left = 360
top = 120
end
object ImageList1: TImageList
left = 208
top = 120
Bitmap = {
4C69040000001000000010000000FFFFFF00FFFFFF00459AD3EF4498D2FF4197
D1FF3F95D1FF3D94D0FF3B93D0FF3B92CFFF3B92CFFF3B92CFFF3D94D0FF4398
D2EF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF004297D2FF3B93D0FF62AD
DCFF93CDEDFFBBE7FAFFD9FCFFFFD9FAFFFFD7F9FFFFD7F9FFFFD9FBFFFF3D94
D0FF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF003C93D0FFE9FFFFFFA8DA
F3FF7BBDE4FF4398D1FF3493D1FF46AAE0FF53BDEBFF61D3FBFFCEF8FFFF3B92
CFFF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF003991CFFFE9FFFFFFAFF0
FFFFCEF7FFFFDAFAFFFFC5EBFBFF90C8EAFF66ADDBFF47A8DDFFCBF8FFFF3C92
CFFF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF003A91CEFFD2FCFFFF7AE2
FCFF77DDFCFF7FDFFBFF9BE6FCFFB4EDFFFFD8FAFFFF318ACBFFC6F8FFFF3D93
CFFF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF003B91CEFFC9F9FFFF7EE2
FCFF7CDEFCFF78DCFBFF72D9FAFF6AD6FAFFD4F7FFFF318ACBFFC1F8FFFF3D93
CFFF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF003C91CEFFC0F8FFFF7FE2
FCFF7DDFFCFF7ADDFBFF75DAFAFF6DD7FAFFC7F3FFFF338BCBFFBCF7FFFF3D92
CFFF00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF003C92CEFFB6F6FFFF80E3
FCFF7DDFFCFF7ADDFBFF76DAFAFF6ED7FAFFBAEFFFFF338BCBFFB5F7FFFF3A8F
CDFF4397D1E7FFFFFF00FFFFFF00FFFFFF00FFFFFF003D92CEFFADF3FFFF81E3
FCFF7EDFFCFF7ADDFBFF76DAFAFF6FD8FAFFADEBFFFF358ACBFFB0F4FFFFABF4
FFFF3F94D0FFFFFFFF00FFFFFF00FFFFFF00FFFFFF003E92CEFFA3F1FFFF82E3
FCFF7EDFFCFF7ADDFBFF76DAFAFF71D9FBFFA0E8FFFF368ACAFF87EBFFFFA3F2
FFFF3E92CEFFFFFFFF00FFFFFF00FFFFFF00FFFFFF003E92CEFF9AF0FFFF83E4
FDFF7EDFFCFF7ADDFBFF76DAFAFF8AE2FEFF4EA9DDFF54ABDCFF8DEDFFFF9FF3
FFFF3E92CFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF004094CFFF92F1FFFF85E7
FFFF80E1FDFF7ADEFBFF77DBFBFF85E2FFFF3B8DCBFF93F1FFFF96F3FFFF9FF9
FFFF4094D0FFFFFFFF00FFFFFF00FFFFFF00FFFFFF004295CEEF58B0DFFF6DC9
EFFF7FE2FDFF7EE3FEFF7ADEFCFF80E2FFFF3F92CEFF4094CFFF4093CFFF4094
D0FF4396CFF1FFFFFF00FFFFFF00FFFFFF00FFFFFF000000002F326F997C3D8A
C1C74092CEFF54ADDEFF66C4EDFF7AE0FEFF4295D0FF1F455F502653725A2859
7A5F0000002FFFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000120000
002500000033326E987A3E8BC1C84396D1FF4496CFF1000000070000000A0000
000B00000000FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000
0000000000000000001200000025000000330000002F00000000000000000000
000000000000FFFFFF00FFFFFF004A7CA5004A7CA5004A7CA5004A7CA5004A7E
A7004A7EA8004A7EA8004A7EA8004A7EA800497DA7004579A400709BBE00B5D2
EA00C3DAEF58CDE3F5FB3F75A1FF4B7CA7004B7CA7004B7CA7004B7EA8B04B81
AEFF4B83B0FF4A83B0FF4A83B0FF4A83B0FF4A82AFFF447DA9FF709CBFFFB9D5
EBFFB3D1EAFFC1DBF2FF4279A5FF5179AD005079AD004F7AAC004C7EAFFF4438
32FF433B37FF433D38FF433D38FF433D38FF423B36FF3C332CFFB9DAF5FF7FB0
DAFF5495CCFFC0DAEFFF467CA8FF0091460000914600009243004C7AAEFF4742
3FFF4A4443FF484644FF484644FF484644FF474542FF433C36FF5FA1D8FF5C9A
CCFF5896C9FFB8D3EBFF4980ACFF008F4D00008F4C00008E4900009046FF0387
4AFF524449FF4E484AFF4D494AFF4C4A4AFF4C4848FF4A423DFF60A0D5FF5D98
C9FF5894C6FFAFCCE6FF4B83B0FF008F4E00008C4A00008843FFA2E6DAFF0090
47FF5B414BFF57474DFF544A4EFF514C4EFF4F4D4CFF4D4641FF5E9CD2FF5C95
C5FF5990C1FFA6C4DFFF4E86B5FF008D4B00008743FF9BE0D1FF00C1A0FF0086
3FFF008D44FF009247FF177A4CFF584E51FF54504FFF524B45FF5B9ACDFF5C91
C1FF20B7F5FF9EBCD7FF5189B8FF008A48FF86DEC8FF00C59CFF00C49BFF63DC
C8FF5FDECAFF5EE4CFFF009247FF5E4F55FF585353FF574F4AFF5A96CAFF5B8F
BEFF22B9F7FF95B5D3FF548DBCFF008A48FF74DABDFF00CD9CFF00CC9CFF00D2
9EFF00D5A0FF5FF0D0FF009146FF635358FF5D5756FF5B534DFF5794C5FF588E
BCFF47749BFF88AFCFFF5790C0FF00000033008744FF65D7B4FF00DAA2FF0086
41FF008B44FF008F46FF1C7D50FF645A5CFF605C5AFF605852FF5490C2FF558C
BAFF4E81ADFF7EA6C8FF5A94C4FF00924D0000000033008945FF52DCB0FF008E
47FF725760FF6B5B60FF675E60FF646060FF62605FFF645D57FF518DBEFF528A
B7FF5187B4FF739FC2FF5D97C9FF6A545E0000964C0000000033009147FF068A
4EFF6E6064FF696364FF676463FF676463FF676462FF68615BFF4F8ABBFF5086
B4FF4F84B1FF6895B9FF5F9BCDFF605A5C0064585D0066565B003A6BA1FF6B69
66FF6F6869FF6C6A69FF6C6A69FF6C6A69FF6C6A68FF6E6762FF4C89BAFF4E85
B2FF4D83AEFF5D8CB2FF629ED1FF5C5C5CFF5D5B5CFF5E5B5BFF5E5A5AFF5D5A
5AFF5B5A5BFF5A5B5BFF5A5B5BFF5A5B5BFF5B5A5AFF5C5956FF576876FF4E7E
A4FF4C80ACFF5082ABFF65A2D5FF000000330000003300000033000000330000
0033000000330000003300000033000000330000003300000033000000330000
0033365D7B79497BA2FC68A4D9FF000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000120000003200000033FFFFFF00008C4AEF008743FF00843FFF0084
3FFF00843FFF00843FFF00843FFF00843FFF008641FF008946EA000000000000
000000000000FFFFFF00FFFFFF00FFFFFF00008743FFF8FFFFFFF1FFFFFFF2FF
FFFFF2FFFFFFF2FFFFFFEFFFFFFFEEFFFFFFF4FFFFFF91DBC0FF008540A60000
000000000000FFFFFF00FFFFFF00FFFFFF0000843FFFF0FFFFFF3CD9B5FF41DA
B6FF43DAB7FF41DAB6FF3BD9B4FFE9FFFFFF00772CFFF1FFFFFF8ED9BEFF0085
41A700000000FFFFFF00FFFFFF00FFFFFF0000843FFFF0FFFFFF4EDCBBFF55DD
BCFF57DDBDFF55DDBCFF4EDCBAFFEBFFFFFF00792FFFADF5E2FFF1FFFFFF91DB
C1FF008945ACFFFFFF00FFFFFF00FFFFFF0000843FFFF0FFFFFF5CE0BFFF62E1
C0FF64E1C1FF62E1C0FF5CDFBEFFEAFFFFFF40AF7EFF00792FFF00772CFFF4FF
FFFF008641FFFFFFFF00FFFFFF00FFFFFF0000843FFFEFFFFFFF68E2C3FF6DE3
C4FF6FE3C5FF6EE3C5FF6AE2C3FF97EFD8FFE7FFFFFFE8FFFFFFE6FFFFFFEDFF
FFFF00843FFFFFFFFF00FFFFFF00FFFFFF0000843FFFEEFFFFFF74E4C7FF78E5
C8FF7AE5C9FF7AE5C9FF78E5C8FF75E4C7FF73E4C7FF72E3C6FF6FE3C6FFECFF
FFFF00843FFFFFFFFF00FFFFFF00FFFFFF0000843FFFEDFFFFFF80E8CCFF84E8
CCFF85E8CDFF85E8CDFF85E8CDFF84E8CDFF84E8CCFF82E7CCFF7FE8CBFFECFF
FFFF00843FFFFFFFFF00FFFFFF00FFFFFF0000843FFFEBFFFFFF8DEAD0FF8FEA
D1FF90EAD1FF90EAD1FF90EAD1FF90EAD1FF90EAD1FF8FEAD1FF8DEAD0FFEBFF
FFFF00843FFFFFFFFF00FFFFFF00FFFFFF0000843FFFEAFFFFFF9AECD5FF9BEC
D5FF9CECD5FF9CECD5FF9CECD5FF9CECD5FF9CECD5FF9BECD5FF9AECD5FFEAFF
FFFF00843FFFFFFFFF00FFFFFF00FFFFFF0000843EFFE9FFFFFFA6EFD8FFA6EF
D8FFA7EFD8FFA7EFD8FFA7EFD8FFA7EFD8FFA7EFD8FFA6EFD8FFA6EFD8FFE9FF
FFFF00843EFFFFFFFF00FFFFFF00FFFFFF0000843EFFE8FFFFFFB2F2DCFFB2F1
DCFFB2F1DCFFB2F1DCFFB2F1DCFFB2F1DCFFB2F1DCFFB2F1DCFFB2F2DCFFE8FF
FFFF00843EFFFFFFFF00FFFFFF00FFFFFF0000843FFFE9FFFFFFC1F5E3FFBFF5
E2FFBFF5E3FFBFF5E3FFBFF5E3FFBFF5E3FFBFF5E3FFBFF5E2FFC1F5E3FFE9FF
FFFF00843FFFFFFFFF00FFFFFF00FFFFFF00008743FFF5FFFFFFE0FFF5FFDEFF
F4FFDEFFF4FFDEFFF4FFDEFFF4FFDEFFF4FFDEFFF4FFDEFFF4FFE0FFF5FFF5FF
FFFF008743FFFFFFFF00FFFFFF00FFFFFF00008044C0008743FF008440FF0084
3FFF00843FFF00843FFF00843FFF00843FFF00843FFF00843FFF008440FF0087
43FF008044C0FFFFFF00FFFFFF00FFFFFF000000002300000033000000330000
0033000000330000003300000033000000330000003300000033000000330000
003300000023FFFFFF00FFFFFF00000000000000000000000000000000000000
0000CF9043EACD8D3FFFCE8E40FFD19247AF0000000000000000000000000000
00000000000000000000FFFFFF0000000000000000000000000000000000CF90
4482E1B681FFFFFEF3FFFFFFF5FFD08F41FF0000000000000000000000000000
00000000000000000000FFFFFF0000000000000000000000000000000000CD8C
3FFFFBE6C6FFFBD291FFFFF6E1FFCF8D3EFFB27C3596B37B34FFB37A32FFB47C
34FFB6803AEF00000000FFFFFF00000000000000000000000000CF904480E1B4
7CFFF5D29EF2E0A85DF0FFF1D2FFBF8135FFC19255FFFAE6CCFFFAE4C9FFFDE7
CCFFB47C35FF00000000FFFFFF00000000000000000000000000CD8D40FFFCE4
BEFFE2AE68DFC8873AF0FCE3BAFFB1762DFFE4C49BFFEBB575FFE3A55AFFF9E2
C5FFB37A33FF00000000FFFFFF000000000000000000CF90447FE0B275FFFFE2
ADFFDBA256FFCD8B3DFFCFA261FFC7995FFFE8C297FFC18437FFE29942FFF5D3
AAFFB27B34FF00000000FFFFFF0000000000D0924709CD8D41FFFDE3B6FFFFE2
A4FFFFF2CBFFF2D7A9FFB17A34FFF2CFA4FFC08B46F7AA7734E4E6A049FFF6CF
A2FFB37C35FF00000000FFFFFF0000000000CC8E43A2E3B374FFFADA9FFFD89D
54FFD08E41FFB67B33FFD2A56DFFE7B373FF00000031A57434C3EAA34EFFF4CA
97FFB37C36FF00000000FFFFFF00CF9146FFD49A52FFFFE7B5FFD6994FFF0000
0033704E2366B7823FFFF4C78EFFC68B41FFB88138FFAE7935F3EBA650FFF4C6
8DFFB37C37FF00000000FFFFFF00CF9045FFFFFACAFFF4D196FFCA8C43E50000
0000B37D38FFDDAF73FFF2B568FFF6C68AFFF9C98FFFF8C98FFFECA753FFF3C2
83FFB27C37FF00000000FFFFFF00D09248FFCF9044FFD09145FF0000002CB37E
3988BF8B4AFFF8C07CFFC0873EFFB17B36FFB17B36FFAF7935FFF0AC57FFF4BE
79FFB27C38FF00000000FFFFFF00000000330000003300000033B37D3A32B27C
38FFE9B471FFE3A658E9855E2B7F0000003300000033AF7B37FFF2AF5BFFF4BA
6FFFB17C38FF00000000FFFFFF000000000000000000B47F3AFFC08A44FFCC97
51FFF8BB6CFFBA843DFF0000001300000000B9823EFFD09952FFF4B25FFFF4B5
65FFD0984FFFB57F3BFFFFFFFF000000000000000000B57F3BFFFFC06EFFFBBC
69FFFCBB69FFB37E3AFF0000000000000000B9833EFFFDBF6EFFF9B763FFF9B8
64FFFDBF6EFFB57F3BFFFFFFFF000000000000000000B6813CFFB47F3AFFB37D
3AFFB47F3AFFB6803CFF0000000000000000B6803CFFB47F3AFFB27D3AFFB27D
3AFFB47F3AFFB6803CFFFFFFFF00000000000000000000000033000000330000
0033000000330000003300000000000000000000003300000033000000330000
00330000003300000033FFFFFF00
}
end
object OpenDialog1: TOpenDialog
Options = [ofAllowMultiSelect, ofEnableSizing, ofViewDetail]
left = 209
top = 191
end
object PopupMenu1: TPopupMenu
left = 77
top = 109
object MenuItem1: TMenuItem
Action = AcModernPainter
AutoCheck = True
GroupIndex = 1
end
object MenuItem2: TMenuItem
Action = AcXPPainter
AutoCheck = True
GroupIndex = 1
end
end
object ActionList1: TActionList
Images = ImageList1
left = 78
top = 184
object AcFileOpen: TAction
Category = 'File'
Caption = 'Open...'
ImageIndex = 0
OnExecute = AcFileOpenExecute
end
object AcFileQuit: TAction
Category = 'File'
Caption = 'Quit'
ImageIndex = 1
OnExecute = AcFileQuitExecute
end
object AcModernPainter: TAction
AutoCheck = True
Caption = 'Modern painter'
Checked = True
GroupIndex = 1
OnExecute = AcModernPainterExecute
end
object AcXPPainter: TAction
AutoCheck = True
Caption = 'XP painter'
GroupIndex = 1
OnExecute = AcXPPainterExecute
end
end
object MainMenu1: TMainMenu
left = 77
top = 253
object MenuItem3: TMenuItem
Caption = 'File'
object MenuItem4: TMenuItem
Action = AcFileOpen
end
object MenuItem5: TMenuItem
Action = AcFileQuit
end
end
object MenuItem6: TMenuItem
Caption = 'Style'
object MenuItem7: TMenuItem
Action = AcModernPainter
AutoCheck = True
end
object MenuItem8: TMenuItem
Action = AcXPPainter
AutoCheck = True
end
end
end
end

View File

@ -0,0 +1,171 @@
unit Main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, StdCtrls,
Menus, ActnList, JvTabBar, JvTabBarXPPainter;
type
{ TForm1 }
TForm1 = class(TForm)
AcFileOpen: TAction;
AcFileQuit: TAction;
AcModernPainter: TAction;
AcXPPainter: TAction;
ActionList1: TActionList;
ImageList1: TImageList;
JvModernTabBarPainter1: TJvModernTabBarPainter;
JvTabBar1: TJvTabBar;
JvTabBarXPPainter1: TJvTabBarXPPainter;
MainMenu1: TMainMenu;
Memo1: TMemo;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
MenuItem8: TMenuItem;
OpenDialog1: TOpenDialog;
PopupMenu1: TPopupMenu;
ToolBar: TToolBar;
TbOpen: TToolButton;
TbQuit: TToolButton;
TbStyle: TToolButton;
ToolButton2: TToolButton;
procedure AcFileOpenExecute(Sender: TObject);
procedure AcFileQuitExecute(Sender: TObject);
procedure AcModernPainterExecute(Sender: TObject);
procedure AcXPPainterExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure JvTabBar1TabClosed(Sender: TObject; Item: TJvTabBarItem);
procedure JvTabBar1TabClosing(Sender: TObject; Item: TJvTabBarItem;
var AllowClose: Boolean);
procedure JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem);
private
FLoading: integer;
procedure LoadFile(AFileName: String);
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
type
TTabInfo = class
Filename: string;
end;
{ TForm1 }
procedure TForm1.AcFileOpenExecute(Sender: TObject);
var
fn: String;
begin
if OpenDialog1.Execute then
for fn in OpenDialog1.Files do LoadFile(fn);
end;
procedure TForm1.AcFileQuitExecute(Sender: TObject);
begin
Close;
end;
procedure TForm1.AcModernPainterExecute(Sender: TObject);
begin
JvTabBar1.Painter := JvModernTabBarPainter1;
end;
procedure TForm1.AcXPPainterExecute(Sender: TObject);
begin
JvTabBar1.Painter := JvTabBarXPPainter1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
OpenDialog1.InitialDir := '..\examples\JvTabBar';
LoadFile('..\examples\JvTabBar\main.pas');
LoadFile('..\examples\JvTabBar\main.lfm');
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i: Integer;
info: TTabInfo;
begin
for i := JvTabBar1.Tabs.Count-1 downto 0 do begin
info := TTabInfo((JvTabBar1.Tabs[i]).Tag);
FreeAndNil(info);
end;
end;
procedure TForm1.JvTabBar1TabClosed(Sender: TObject; Item: TJvTabBarItem);
begin
if JvTabBar1.Tabs.Count = 1 then begin
JvTabBar1.Visible := false;
Memo1.Clear;
end;
end;
procedure TForm1.JvTabBar1TabClosing(Sender: TObject; Item: TJvTabBarItem;
var AllowClose: Boolean);
var
info: TTabInfo;
begin
info := TTabInfo(Item.Tag);
FreeAndNil(info);
AllowClose := true;
end;
procedure TForm1.JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem);
var
tab: TJvTabBarItem;
info: TTabInfo;
fn: String;
begin
if FLoading <> 0 then
exit;
tab := JvTabBar1.SelectedTab;
if tab = nil then exit;
info := TTabInfo(tab.Tag);
Memo1.Lines.LoadfromFile(info.FileName);
end;
procedure TForm1.Loadfile(AFileName: String);
var
tab: TJvTabBarItem;
info: TTabInfo;
begin
if not FileExists(ExpandFileName(AFileName)) then begin
ShowMessage('File "' + AFileName + '" does not exist.');
exit;
end;
Memo1.Lines.LoadfromFile(AFileName);
inc(FLoading);
tab := TJvTabBarItem(JvTabBar1.Tabs.Add);
tab.Caption := ExtractFileName(AFileName);
info := TTabInfo.Create;
info.FileName := AFileName;
tab.Tag := PtrInt(info);
tab.ImageIndex := 2;
JvTabBar1.Visible := JvTabBar1.Tabs.Count > 0;
tab.Selected := true;
dec(FLoading);
end;
end.

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<CONFIG>
<Package Version="4">
<PathDelim Value="\"/>
<Name Value="JvCustomLazR"/>
<Author Value="Various authors - see header of each unit for original author."/>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="..\run\JvCustomControls"/>
<UnitOutputDirectory Value="..\lib\$(TargetCPU)-$(TargetOS)\run\JvCustom"/>
</SearchPaths>
</CompilerOptions>
<Description Value="Custom controls of the JVCL library (https://sourceforge.net/projects/jvcl/) (runtime code):
- TimeLine components
- OutlookBar component
"/>
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
<Version Major="1" Release="4"/>
<Files Count="5">
<Item1>
<Filename Value="..\run\JvCustomControls\jvtimeline.pas"/>
<UnitName Value="JvTimeLine"/>
</Item1>
<Item2>
<Filename Value="..\run\JvCustomControls\jvtmtimeline.pas"/>
<UnitName Value="JvTMTimeLine"/>
</Item2>
<Item3>
<Filename Value="..\run\JvCustomControls\jvoutlookbar.pas"/>
<UnitName Value="JvOutlookBar"/>
</Item3>
<Item4>
<Filename Value="..\run\JvCustomControls\JvTabBar.pas"/>
<UnitName Value="JvTabBar"/>
</Item4>
<Item5>
<Filename Value="..\run\JvCustomControls\JvTabBarXPPainter.pas"/>
<UnitName Value="JvTabBarXPPainter"/>
</Item5>
</Files>
<RequiredPkgs Count="2">
<Item1>
<PackageName Value="JvCoreLazR"/>
</Item1>
<Item2>
<PackageName Value="FCL"/>
</Item2>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
</PublishOptions>
</Package>
</CONFIG>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,194 @@
{-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.
The Original Code is: JvTabBarXPPainter.pas, released on 2007-05-07.
The Initial Developer of the Original Code is Valdir Stiebe Junior <valdir att dype dott com dott br>
All Rights Reserved.
Contributor(s):
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.delphi-jedi.org
Known Issues:
-----------------------------------------------------------------------------}
// $Id$
unit JvTabBarXPPainter;
interface
uses
LCLType, Types, SysUtils, Classes, Graphics, JvTabBar;
type
TJvTabBarXPPainter = class(TJvTabBarModernPainter)
private
FFixedTabSize: Integer;
procedure SetFixedTabSize(const Value: Integer);
protected
procedure DrawBackground(Canvas: TCanvas; TabBar: TJvCustomTabBar; R: TRect); override;
procedure DrawTab(Canvas: TCanvas; Tab: TJvTabBarItem; R: TRect); override;
procedure DrawDivider(Canvas: TCanvas; LeftTab: TJvTabBarItem; R: TRect); override;
procedure DrawMoveDivider(Canvas: TCanvas; Tab: TJvTabBarItem; MoveLeft: Boolean); override;
function GetDividerWidth(Canvas: TCanvas; LeftTab: TJvTabBarItem): Integer; override;
function GetTabSize(Canvas: TCanvas; Tab: TJvTabBarItem): TSize; override;
function GetCloseRect(Canvas: TCanvas; Tab: TJvTabBarItem; R: TRect): TRect; override;
published
property FixedTabSize: Integer read FFixedTabSize write SetFixedTabSize;
end;
implementation
uses
Math, Themes;
{ TJvTabBarXPPainter }
procedure TJvTabBarXPPainter.DrawBackground(Canvas: TCanvas;
TabBar: TJvCustomTabBar; R: TRect);
var
Details: TThemedElementDetails;
begin
if ThemeServices.ThemesEnabled then
begin
Details := ThemeServices.GetElementDetails(ttTabRoot);
ThemeServices.DrawElement(Canvas.Handle, Details, R);
end
else
inherited DrawBackground(Canvas, TabBar, R);
end;
procedure TJvTabBarXPPainter.DrawDivider(Canvas: TCanvas; LeftTab: TJvTabBarItem; R: TRect);
begin
if not ThemeServices.ThemesEnabled then
inherited DrawDivider(Canvas, LeftTab, R);
end;
procedure TJvTabBarXPPainter.DrawMoveDivider(Canvas: TCanvas; Tab: TJvTabBarItem;
MoveLeft: Boolean);
begin
if not ThemeServices.ThemesEnabled then
inherited DrawMoveDivider(Canvas, Tab, MoveLeft);
end;
procedure TJvTabBarXPPainter.DrawTab(Canvas: TCanvas; Tab: TJvTabBarItem;
R: TRect);
var
TabDetails, ButtonDetails: TThemedElementDetails;
CloseRect, TextRect: TRect;
begin
if ThemeServices.ThemesEnabled then
begin
if Tab.Selected then
begin
ButtonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonNormal);
TabDetails := ThemeServices.GetElementDetails(ttTabItemSelected);
end
else if Tab.Hot then
begin
ButtonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonHot);
TabDetails := ThemeServices.GetElementDetails(ttTabItemHot);
end
else
begin
ButtonDetails := ThemeServices.GetElementDetails(twSmallCloseButtonNormal);
TabDetails := ThemeServices.GetElementDetails(ttTabItemNormal);
end;
if Tab.Closing then
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);
end;
TextRect := R;
TextRect.Left := TextRect.Left + Tab.TabBar.Margin;
if Tab.TabBar.CloseButton then
begin
CloseRect := GetCloseRect(Canvas, Tab, R);
TextRect.Right := CloseRect.Left - 3;
end
else
Dec(TextRect.Right, 3);
ThemeServices.DrawText(Canvas.Handle, TabDetails, Tab.Caption, TextRect, DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS, 0);
if Tab.TabBar.CloseButton then
ThemeServices.DrawElement(Canvas.Handle, ButtonDetails, CloseRect);
end
else
inherited DrawTab(Canvas, Tab, R);
end;
function TJvTabBarXPPainter.GetCloseRect(Canvas: TCanvas; Tab: TJvTabBarItem;
R: TRect): TRect;
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;
end
else
Result := inherited GetCloseRect(Canvas, Tab, R);
end;
function TJvTabBarXPPainter.GetDividerWidth(Canvas: TCanvas; LeftTab: TJvTabBarItem): Integer;
begin
if ThemeServices.ThemesEnabled then
Result := 1
else
Result := inherited GetDividerWidth(Canvas, LeftTab);
end;
function TJvTabBarXPPainter.GetTabSize(Canvas: TCanvas; Tab: TJvTabBarItem): TSize;
begin
if FixedTabSize > 0 then
begin
if ThemeServices.ThemesEnabled then
Result.cx := FixedTabSize
else
Result.cx := Min(FixedTabSize + 40, Canvas.TextWidth(Tab.Caption) + 26);
end
else
begin
if ThemeServices.ThemesEnabled then
begin
Result.cx := Canvas.TextWidth(Tab.Caption) + 16;
if (Tab.ImageIndex <> -1) and (Tab.GetImages <> nil) then
Inc(Result.cx, Tab.GetImages.Width + 2);
if Tab.TabBar.CloseButton then
Inc(Result.cx, 18);
end
else
Result := inherited GetTabSize(Canvas, Tab);
end;
Result.cy := Tab.TabBar.Height - 3;
end;
procedure TJvTabBarXPPainter.SetFixedTabSize(const Value: Integer);
begin
if Value <> FixedTabSize then
begin
FFixedTabSize := Value;
Changed;
end;
end;
end.