ThemePageControl.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //---------------------------------------------------------------------------
  2. #ifndef ThemePageControlH
  3. #define ThemePageControlH
  4. //---------------------------------------------------------------------------
  5. #include <ComCtrls.hpp>
  6. //---------------------------------------------------------------------------
  7. enum TThemeTabSheetButtons { ttbNone, ttbClose, ttbDropDown };
  8. //---------------------------------------------------------------------------
  9. class TThemeTabSheet : public TTabSheet
  10. {
  11. public:
  12. __fastcall TThemeTabSheet(TComponent * Owner);
  13. __property bool Shadowed = { read = FShadowed, write = SetShadowed };
  14. __property TThemeTabSheetButtons Button = { read = FButton, write = SetButton };
  15. private:
  16. void __fastcall SetShadowed(bool Value);
  17. void __fastcall SetButton(TThemeTabSheetButtons Value);
  18. void __fastcall Invalidate();
  19. bool FShadowed;
  20. TThemeTabSheetButtons FButton;
  21. };
  22. //---------------------------------------------------------------------------
  23. typedef void __fastcall (__closure *TPageControlTabButtonClick)(TPageControl * Sender, int Index);
  24. //---------------------------------------------------------------------------
  25. class TThemePageControl : public TPageControl
  26. {
  27. friend class TThemeTabSheet;
  28. __published:
  29. __property TPageControlTabButtonClick OnTabButtonClick = { read = FOnTabButtonClick, write = FOnTabButtonClick };
  30. public:
  31. __fastcall TThemePageControl(TComponent * Owner);
  32. int __fastcall GetTabsHeight();
  33. UnicodeString __fastcall FormatCaptionWithTabButton(const UnicodeString & Caption);
  34. TRect __fastcall TabButtonRect(int Index);
  35. protected:
  36. virtual void __fastcall PaintWindow(HDC DC);
  37. DYNAMIC bool __fastcall CanChange();
  38. DYNAMIC void __fastcall Change();
  39. DYNAMIC void __fastcall MouseMove(TShiftState Shift, int X, int Y);
  40. virtual void __fastcall Dispatch(void * Message);
  41. #ifdef _DEBUG
  42. virtual void __fastcall RequestAlign();
  43. #endif
  44. private:
  45. void __fastcall DrawThemesXpTab(HDC DC, int Tab);
  46. void __fastcall DrawThemesXpTabItem(HDC DC, int Item, const TRect & Rect, bool Body, int State, bool Selected);
  47. void __fastcall DrawTabItem(HDC DC, int Item, TRect TabRect, TRect Rect, bool Selected, bool Shadowed);
  48. void __fastcall DrawThemesPart(HDC DC, int PartId, int StateId, LPCWSTR PartNameID, LPRECT Rect);
  49. void __fastcall InvalidateTab(int Index);
  50. int __fastcall TabButtonSize();
  51. int __fastcall GetCrossPadding();
  52. int __fastcall IndexOfTabButtonAt(int X, int Y);
  53. void __fastcall ItemContentsRect(int Item, TRect & Rect);
  54. bool __fastcall HasItemImage(int Item);
  55. void __fastcall ItemTextRect(int Item, TRect & Rect);
  56. void __fastcall ItemTabRect(int Item, TRect & Rect);
  57. TThemeTabSheetButtons __fastcall GetTabButton(int Index);
  58. void UpdateHotButton(int & Ref, int Index);
  59. void DrawCross(HDC DC, int Width, COLORREF Color, const TRect & Rect);
  60. void DrawDropDown(HDC DC, int Radius, int X, int Y, COLORREF Color, int Grow);
  61. void __fastcall WMLButtonDown(TWMLButtonDown & Message);
  62. bool IsHotButton(int Index);
  63. int FOldTabIndex;
  64. int FHotTabButton;
  65. int FClickedButton;
  66. TPageControlTabButtonClick FOnTabButtonClick;
  67. };
  68. //---------------------------------------------------------------------------
  69. #endif