XTPPropertyGridItemSize.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:7k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPPropertyGridItemSize.h interface for the CXTPPropertyGridItemSize class.
  2. //
  3. // This file is a part of the XTREME PROPERTYGRID MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTPPROPERTYGRIDITEMSIZE_H__)
  22. #define __XTPPROPERTYGRIDITEMSIZE_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. //===========================================================================
  28. // Summary:
  29. //     CXTPPropertyGridItemSize is a CXTPPropertyGridItem derived class.
  30. //     It is used to create a size value item in a Property Grid control.
  31. //===========================================================================
  32. class _XTP_EXT_CLASS CXTPPropertyGridItemSize : public CXTPPropertyGridItem
  33. {
  34. public:
  35. //-----------------------------------------------------------------------
  36. // Summary:
  37. //     Constructs a CXTPPropertyGridItemSize object.
  38. // Parameters:
  39. //     strCaption - Caption of the item.
  40. //     nID        - Identifier of the item.
  41. //     size       - Initial value of item.
  42. //     pBindSize  - If not NULL, then the value of this item
  43. //                   is bound the value of this variable.
  44. // Remarks:
  45. //     Class CXTPPropertyGridItemSize has no default constructor.
  46. //
  47. //          When using the second constructor, the Identifier (nID) of the
  48. //          second constructor can be linked with a STRINGTABLE resource
  49. //          with the same id in such form "Caption\nDescription".
  50. //
  51. //          BINDING:
  52. //            Variables can be bound to an item in two ways, the first is
  53. //            to pass in a variable at the time of creation, the second allows
  54. //            variables to be bound to an item after creation with the
  55. //            BindToSize member.
  56. //
  57. //            Bound variables store the values of the property grid items
  58. //            and can be accessed without using the property grid methods
  59. //            and properties.  Bound variables allow the property grid to
  60. //            store data in variables.  When the value of a PropertyGridItem
  61. //            is changed, the value of the bound variable will be changed to
  62. //            the PropertyGridItem value.  The advantage of binding is that
  63. //            the variable can be used and manipulated without using
  64. //            PropertyGridItem methods and properties.
  65. //
  66. //            NOTE:  If the value of the variable is changed without using
  67. //            the PropertyGrid, the PropertyGridItem value will not be
  68. //            updated until you call CXTPPropertyGrid::Refresh.
  69. // See Also: BindToSize
  70. //-----------------------------------------------------------------------
  71. CXTPPropertyGridItemSize(LPCTSTR strCaption, CSize size = 0, CSize* pBindSize = NULL);
  72. CXTPPropertyGridItemSize(UINT nID, CSize size = 0, CSize* pBindSize = NULL); //<COMBINE CXTPPropertyGridItemSize::CXTPPropertyGridItemSize@LPCTSTR@CSize@CSize*>
  73. //-----------------------------------------------------------------------
  74. // Summary:
  75. //     Destroys a CXTPPropertyGridItemSize object.
  76. //-----------------------------------------------------------------------
  77. virtual ~CXTPPropertyGridItemSize();
  78. public:
  79. //-----------------------------------------------------------------------
  80. // Summary:
  81. //     Call this method to change the item's value.
  82. // Parameters:
  83. //     size - The new size value of the item.
  84. //-----------------------------------------------------------------------
  85. virtual void SetSize(CSize size);
  86. //-----------------------------------------------------------------------
  87. // Summary:
  88. //     Call this method to get the size value of the item.
  89. // Returns:
  90. //     A CSize object representing the size value of the item.
  91. //-----------------------------------------------------------------------
  92. virtual CSize GetSize() const;
  93. //-----------------------------------------------------------------------
  94. // Summary:
  95. //     Call this method to bind an item to a CSize object.
  96. // Parameters:
  97. //     pBindSize - CSize object to bind to item.
  98. // Remarks:
  99. //     Variables can be bound to an item in two ways, the first is
  100. //     to pass in a variable at the time of creation, the second allows
  101. //     variables to be bound to an item after creation with the
  102. //     BindToSize member.
  103. //
  104. //     Bound variables store the values of the property grid items
  105. //     and can be accessed without using the property grid methods
  106. //     and properties.  Bound variables allow the property grid to
  107. //     store data in variables.  When the value of a PropertyGridItem
  108. //     is changed, the value of the bound variable will be changed to
  109. //     the PropertyGridItem value.  The advantage of binding is that
  110. //     the variable can be used and manipulated without using
  111. //     PropertyGridItem methods and properties.
  112. //
  113. //     NOTE:  If the value of the variable is changed without using
  114. //     the PropertyGrid, the PropertyGridItem value will not be
  115. //     updated until you call CXTPPropertyGrid::Refresh.
  116. //-----------------------------------------------------------------------
  117. virtual void BindToSize(CSize* pBindSize);
  118. protected:
  119. //-------------------------------------------------------------------------
  120. // Summary:
  121. //     This member is called before the item becomes visible in the
  122. //     property grid.
  123. // Remarks:
  124. //     Before the item is inserted, it is first check to see if it
  125. //     is bound to a variable, if it is, then the value of the item
  126. //     is updated with the value stored in the bound variable.
  127. //
  128. //          OnBeforeInsert is called when an item is inserted,
  129. //          when a category is inserted, when a category or item is
  130. //          expanded, and when the sort property has changed.
  131. //-------------------------------------------------------------------------
  132. virtual void OnBeforeInsert();
  133. private:
  134. void SetWidth(LPCTSTR strWidth);
  135. void SetHeight(LPCTSTR strHeight);
  136. CString SizeToString(CSize size);
  137. CSize StringToSize(LPCTSTR str);
  138. virtual void OnAddChildItem();
  139. virtual void SetValue(CString strValue);
  140. void UpdateChilds();
  141. private:
  142. class CXTPPropertyGridItemSizeWidth;
  143. class CXTPPropertyGridItemSizeHeight;
  144. CSize                          m_szValue;
  145. CXTPPropertyGridItemSizeWidth*  m_pItemWidth;
  146. CXTPPropertyGridItemSizeHeight* m_pItemHeight;
  147. CSize* m_pBindSize;
  148. private:
  149. DECLARE_DYNAMIC(CXTPPropertyGridItemSize)
  150. friend class CXTPPropertyGridItemSizeWidth;
  151. friend class CXTPPropertyGridItemSizeHeight;
  152. };
  153. //////////////////////////////////////////////////////////////////////
  154. AFX_INLINE CSize CXTPPropertyGridItemSize::GetSize() const {
  155. return m_szValue;
  156. }
  157. #endif // #if !defined(__XTPPROPERTYGRIDITEMSIZE_H__)