/
ThemePageControl.h
110 lines (99 loc) · 4.54 KB
/
ThemePageControl.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//---------------------------------------------------------------------------
#ifndef ThemePageControlH
#define ThemePageControlH
//---------------------------------------------------------------------------
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
enum TThemeTabSheetButtons { ttbNone, ttbClose, ttbDropDown };
enum TThemeTabCaptionTruncation { tttNone, tttEllipsis, tttNoText };
class TThemePageControl;
//---------------------------------------------------------------------------
class TThemeTabSheet : public TTabSheet
{
friend class TThemePageControl;
public:
__fastcall TThemeTabSheet(TComponent * Owner);
__property UnicodeString BaseCaption = { read = GetBaseCaption, write = SetBaseCaption };
__property bool Shadowed = { read = FShadowed, write = SetShadowed };
__property TThemeTabSheetButtons Button = { read = FButton, write = SetButton };
__property TThemeTabCaptionTruncation CaptionTruncation = { read = FCaptionTruncation, write = SetCaptionTruncation };
private:
void __fastcall SetShadowed(bool Value);
void __fastcall SetButton(TThemeTabSheetButtons Value);
void __fastcall Invalidate();
void SetBaseCaption(const UnicodeString & value);
UnicodeString GetBaseCaption();
TThemePageControl * GetParentPageControl();
void SetCaptionTruncation(TThemeTabCaptionTruncation Value);
void UpdateCaption();
UnicodeString TruncatedCaption();
bool FShadowed;
TThemeTabSheetButtons FButton;
UnicodeString FBaseCaption;
TThemeTabCaptionTruncation FCaptionTruncation;
};
//---------------------------------------------------------------------------
typedef void __fastcall (__closure *TPageControlTabButtonClick)(TPageControl * Sender, int Index);
typedef void __fastcall (__closure *TPageControlTabHint)(TPageControl * Sender, int Index, UnicodeString & Hint);
namespace Tbxthemes
{
class TTBXTheme;
}
//---------------------------------------------------------------------------
class TThemePageControl : public TPageControl
{
friend class TThemeTabSheet;
__published:
__property TPageControlTabButtonClick OnTabButtonClick = { read = FOnTabButtonClick, write = FOnTabButtonClick };
__property TPageControlTabHint OnTabHint = { read = FOnTabHint, write = FOnTabHint };
public:
__fastcall TThemePageControl(TComponent * Owner);
__property TThemeTabSheet * Pages[int Index] = { read = GetPage };
__property TThemeTabSheet * ActivePage = { read = GetActivePage };
__property TTBXTheme * ActiveTabTheme = { read = FActiveTabTheme, write = SetActiveTabTheme };
int __fastcall GetTabsHeight();
TRect __fastcall TabButtonRect(int Index);
int TotalTabsWidth();
void UpdateTabsCaptionTruncation();
protected:
virtual void __fastcall PaintWindow(HDC DC);
DYNAMIC bool __fastcall CanChange();
DYNAMIC void __fastcall Change();
DYNAMIC void __fastcall MouseMove(TShiftState Shift, int X, int Y);
virtual void __fastcall Dispatch(void * Message);
void TabChanged(int Index);
#ifdef _DEBUG
virtual void __fastcall RequestAlign();
#endif
private:
void __fastcall DrawThemesXpTab(HDC DC, HTHEME Theme, int Tab);
void __fastcall DrawThemesXpTabItem(HDC DC, HTHEME Theme, int Item, const TRect & Rect, int State, bool Selected);
void __fastcall DrawTabItem(HDC DC, int Item, TRect Rect, int State, bool Shadowed);
void __fastcall InvalidateTab(int Index);
int __fastcall TabButtonSize();
int __fastcall GetCrossPadding();
int __fastcall IndexOfTabButtonAt(int X, int Y);
void __fastcall ItemContentsRect(int Item, TRect & Rect);
bool __fastcall HasItemImage(int Item);
void __fastcall ItemTextRect(int Item, TRect & Rect);
void __fastcall ItemTabRect(int Item, TRect & Rect);
TThemeTabSheetButtons __fastcall GetTabButton(int Index);
void UpdateHotButton(int & Ref, int Index);
void DrawCross(HDC DC, int Width, COLORREF Color, const TRect & Rect);
void DrawDropDown(HDC DC, int Radius, int X, int Y, COLORREF Color, int Grow);
void __fastcall WMLButtonDown(TWMLButtonDown & Message);
bool IsHotButton(int Index);
TThemeTabSheet * GetPage(int Index);
TThemeTabSheet * GetActivePage();
void CMHintShow(TCMHintShow & Message);
void SetActiveTabTheme(TTBXTheme * value);
int FOldTabIndex;
int FHotTabButton;
int FClickedButton;
TPageControlTabButtonClick FOnTabButtonClick;
TPageControlTabHint FOnTabHint;
int FSessionTabShrink;
TTBXTheme * FActiveTabTheme;
};
//---------------------------------------------------------------------------
#endif