123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- //---------------------------------------------------------------------------
- #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 * TabTheme = { read = FTabTheme, write = SetTabTheme };
- __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, TTBXTheme * ATabTheme);
- void __fastcall DrawTabItem(HDC DC, int Item, TRect Rect, int State, bool Shadowed, TTBXTheme * ATabTheme);
- 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 SetTabTheme(TTBXTheme * value);
- void SetActiveTabTheme(TTBXTheme * value);
- int FOldTabIndex;
- int FHotTabButton;
- int FClickedButton;
- TPageControlTabButtonClick FOnTabButtonClick;
- TPageControlTabHint FOnTabHint;
- int FSessionTabShrink;
- TTBXTheme * FTabTheme;
- TTBXTheme * FActiveTabTheme;
- int FTextHeight;
- };
- //---------------------------------------------------------------------------
- #endif
|