You've already forked lazarus-ccr
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:
@ -1,3 +1,6 @@
|
||||
tjvtabbar.bmp
|
||||
tjvmoderntabbarpainter.bmp
|
||||
Tjvtabbarxppainter.bmp
|
||||
tjvoutlookbar.bmp
|
||||
tjvtimeline.bmp
|
||||
tjvtmtimeline.bmp
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
BIN
components/jvcllaz/design/JvCustomControls/images/tjvtabbar.bmp
Normal file
BIN
components/jvcllaz/design/JvCustomControls/images/tjvtabbar.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
@ -15,12 +15,15 @@ implementation
|
||||
|
||||
uses
|
||||
Classes, ImgList, Controls, PropEdits, GraphPropEdits, ComponentEditors,
|
||||
JvDsgnConsts, JvOutlookBar, JvOutlookBarEditors,
|
||||
JvDsgnConsts,
|
||||
JvOutlookBar, JvOutlookBarEditors,
|
||||
JvTabBar, JvTabBarXPPainter,
|
||||
JvTimeLine, JvTMTimeline, JvTimeLineEditor;
|
||||
|
||||
procedure Register;
|
||||
begin
|
||||
RegisterComponents(RsPaletteJvcl, [
|
||||
TJvTabBar, TJvModernTabBarPainter, TJvTabBarXPPainter,
|
||||
TJvOutlookBar,
|
||||
TJvTimeLine,
|
||||
TJvTMTimeLine
|
||||
|
84
components/jvcllaz/examples/JvTabBar/JvTabBarDemo.lpi
Normal file
84
components/jvcllaz/examples/JvTabBar/JvTabBarDemo.lpi
Normal 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>
|
22
components/jvcllaz/examples/JvTabBar/JvTabBarDemo.lpr
Normal file
22
components/jvcllaz/examples/JvTabBar/JvTabBarDemo.lpr
Normal 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.
|
||||
|
303
components/jvcllaz/examples/JvTabBar/main.lfm
Normal file
303
components/jvcllaz/examples/JvTabBar/main.lfm
Normal 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
|
171
components/jvcllaz/examples/JvTabBar/main.pas
Normal file
171
components/jvcllaz/examples/JvTabBar/main.pas
Normal 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.
|
||||
|
58
components/jvcllaz/packages/jvcustomlazr.lpk
Normal file
58
components/jvcllaz/packages/jvcustomlazr.lpk
Normal 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>
|
Binary file not shown.
2548
components/jvcllaz/run/JvCustomControls/JvTabBar.pas
Normal file
2548
components/jvcllaz/run/JvCustomControls/JvTabBar.pas
Normal file
File diff suppressed because it is too large
Load Diff
194
components/jvcllaz/run/JvCustomControls/JvTabBarXPPainter.pas
Normal file
194
components/jvcllaz/run/JvCustomControls/JvTabBarXPPainter.pas
Normal 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.
|
Reference in New Issue
Block a user