ThemePageControl.h 4.4 KB

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