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

对话框与窗口

开发平台:

Visual C++

  1. // XTPPropertyGridItemNumber.h interface for the CXTPPropertyGridItemNumber 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(__XTPPROPERTYGRIDITEMNUMBER_H__)
  22. #define __XTPPROPERTYGRIDITEMNUMBER_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. //===========================================================================
  28. // Summary:
  29. //     CXTPPropertyGridItemNumber is a CXTPPropertyGridItem derived class.
  30. //     It is used to create an integer value item in a Property Grid control.
  31. //===========================================================================
  32. class _XTP_EXT_CLASS CXTPPropertyGridItemNumber : public CXTPPropertyGridItem
  33. {
  34. public:
  35. //-----------------------------------------------------------------------
  36. // Summary:
  37. //     Constructs a CXTPPropertyGridItemNumber object
  38. // Parameters:
  39. //     strCaption  - Caption of the item.
  40. //     nID         - Identifier of the item.
  41. //     nValue      - Initial value of item.
  42. //     pBindNumber - If not NULL, then the value of this item
  43. //                   is bound the value of this variable.
  44. // Remarks:
  45. //     Class CXTPPropertyGridItemNumber 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. //            BindToNumber 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: BindToNumber
  70. //-----------------------------------------------------------------------
  71. CXTPPropertyGridItemNumber(LPCTSTR strCaption, long nValue = 0, long* pBindNumber = NULL);
  72. CXTPPropertyGridItemNumber(UINT nID, long nValue = 0, long* pBindNumber = NULL);  // <COMBINE CXTPPropertyGridItemNumber::CXTPPropertyGridItemNumber@LPCTSTR@long@long*>
  73. //-----------------------------------------------------------------------
  74. // Summary:
  75. //     Destroys a CXTPPropertyGridItemNumber object
  76. //-----------------------------------------------------------------------
  77. virtual ~CXTPPropertyGridItemNumber();
  78. public:
  79. //-----------------------------------------------------------------------
  80. // Summary:
  81. //     Call this method to change the item's value.
  82. // Parameters:
  83. //     nValue - The new integer value of the item.
  84. //-----------------------------------------------------------------------
  85. virtual void SetNumber(long nValue);
  86. //-----------------------------------------------------------------------
  87. // Summary:
  88. //     Call this method to get the integer value of the item.
  89. // Returns:
  90. //     The integer value of the item.
  91. //-----------------------------------------------------------------------
  92. virtual long GetNumber() const;
  93. //-----------------------------------------------------------------------
  94. // Summary:
  95. //     Call this method to bind an item to a long value.
  96. // Parameters:
  97. //     pBindNumber - Long value 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. //     BindToNumber 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 BindToNumber(long* pBindNumber);
  118. protected:
  119. //-----------------------------------------------------------------------
  120. // Summary:
  121. //     Call this method to change an item's value.
  122. //     Override this method to add new functionality.
  123. //     You should call the base class version of this function from your
  124. //     override.
  125. // Parameters:
  126. //     strValue - New value of the item.
  127. //-----------------------------------------------------------------------
  128. virtual void SetValue(CString strValue);
  129. //-------------------------------------------------------------------------
  130. // Summary:
  131. //     This member is called before the item becomes visible in the
  132. //     property grid.
  133. // Remarks:
  134. //     Before the item is inserted, it is first check to see if it
  135. //     is bound to a variable, if it is, then the value of the item
  136. //     is updated with the value stored in the bound variable.
  137. //
  138. //          OnBeforeInsert is called when an item is inserted,
  139. //          when a category is inserted, when a category or item is
  140. //          expanded, and when the sort property has changed.
  141. //-------------------------------------------------------------------------
  142. virtual void OnBeforeInsert();
  143. protected:
  144. long m_nValue;          // Value of the item.
  145. long* m_pBindNumber;    // Binded object.  This is a pointer to the variable bound to this item.
  146. private:
  147. DECLARE_DYNAMIC(CXTPPropertyGridItemNumber)
  148. };
  149. //===========================================================================
  150. // Summary:
  151. //     CXTPPropertyGridItemDouble is a CXTPPropertyGridItem derived class.
  152. //     It is used to create an double value item in a Property Grid control.
  153. //===========================================================================
  154. class _XTP_EXT_CLASS CXTPPropertyGridItemDouble : public CXTPPropertyGridItem
  155. {
  156. public:
  157. //-----------------------------------------------------------------------
  158. // Summary:
  159. //     Constructs a CXTPPropertyGridItemDouble object.
  160. // Parameters:
  161. //     strCaption  - Caption of the item.
  162. //     nID         - Identifier of the item.
  163. //     fValue      - Initial value.
  164. //     strFormat   - The number of digits after the decimal point.
  165. //                   For example "%0.5f" would display 5 digits
  166. //                   past the decimal place.
  167. //     pBindNumber - If not NULL, then the value of this item
  168. //                   is bound the value of this variable.
  169. // Remarks:
  170. //     Class CXTPPropertyGridItemDouble has no default constructor.
  171. //
  172. //          When using the second constructor, the Identifier (nID) of the
  173. //          second constructor can be linked with a STRINGTABLE resource
  174. //          with the same id in such form "Caption\nDescription".
  175. //
  176. //          BINDING:
  177. //            Variables can be bound to an item in two ways, the first is
  178. //            to pass in a variable at the time of creation, the second allows
  179. //            variables to be bound to an item after creation with the
  180. //            BindToDouble member.
  181. //
  182. //            Bound variables store the values of the property grid items
  183. //            and can be accessed without using the property grid methods
  184. //            and properties.  Bound variables allow the property grid to
  185. //            store data in variables.  When the value of a PropertyGridItem
  186. //            is changed, the value of the bound variable will be changed to
  187. //            the PropertyGridItem value.  The advantage of binding is that
  188. //            the variable can be used and manipulated without using
  189. //            PropertyGridItem methods and properties.
  190. //
  191. //            NOTE:  If the value of the variable is changed without using
  192. //            the PropertyGrid, the PropertyGridItem value will not be
  193. //            updated until you call CXTPPropertyGrid::Refresh.
  194. // See Also: BindToDouble
  195. //-----------------------------------------------------------------------
  196. CXTPPropertyGridItemDouble(LPCTSTR strCaption, double fValue = 0, LPCTSTR strFormat = NULL, double* pBindNumber = NULL);
  197. CXTPPropertyGridItemDouble(UINT nID, double fValue = 0, LPCTSTR strFormat = NULL, double* pBindNumber = NULL); // <COMBINE CXTPPropertyGridItemDouble::CXTPPropertyGridItemDouble@LPCTSTR@double@LPCTSTR@double*>
  198. //-----------------------------------------------------------------------
  199. // Summary:
  200. //     Destroys a CXTPPropertyGridItemDouble object.
  201. //-----------------------------------------------------------------------
  202. virtual ~CXTPPropertyGridItemDouble();
  203. public:
  204. //-----------------------------------------------------------------------
  205. // Summary:
  206. //     Call this method to change the item's value.
  207. // Parameters:
  208. //     fValue - The new double value of the item.
  209. //-----------------------------------------------------------------------
  210. virtual void SetDouble(double fValue);
  211. //-----------------------------------------------------------------------
  212. // Summary:
  213. //     Call this method to get the double value of the item.
  214. // Returns:
  215. //     The double value of the item.
  216. //-----------------------------------------------------------------------
  217. virtual double GetDouble() const;
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //     Call this method to bind the item to a double value.
  221. // Parameters:
  222. //     pBindDouble - Double value to bind to item.
  223. // Remarks:
  224. //     Variables can be bound to an item in two ways, the first is
  225. //     to pass in a variable at the time of creation, the second allows
  226. //     variables to be bound to an item after creation with the
  227. //     BindToDouble member.
  228. //
  229. //     Bound variables store the values of the property grid items
  230. //     and can be accessed without using the property grid methods
  231. //     and properties.  Bound variables allow the property grid to
  232. //     store data in variables.  When the value of a PropertyGridItem
  233. //     is changed, the value of the bound variable will be changed to
  234. //     the PropertyGridItem value.  The advantage of binding is that
  235. //     the variable can be used and manipulated without using
  236. //     PropertyGridItem methods and properties.
  237. //
  238. //     NOTE:  If the value of the variable is changed without using
  239. //     the PropertyGrid, the PropertyGridItem value will not be
  240. //     updated until you call CXTPPropertyGrid::Refresh.
  241. //-----------------------------------------------------------------------
  242. virtual void BindToDouble(double* pBindDouble);
  243. //-----------------------------------------------------------------------
  244. // Summary:
  245. //     Specifies which type of symbol is used to divide the whole numbers
  246. //      from the decimal parts.
  247. // Remarks:
  248. //      Setting UseSystemDecimalSymbol to False causes the decimal point
  249. //      "." to separate the whole numbers from the decimal parts.
  250. //      Setting UseSystemDecimalSymbol to True will cause the system
  251. //      defined symbol to separate the whole numbers from the decimal
  252. //      parts.
  253. //
  254. //      For example, when True, a comma "," will be used in Europe to
  255. //      separate the whole numbers from the decimal parts.
  256. // Parameters:
  257. //     bUseSystemDecimalSymbol - TRUE to use system defined decimal symbol.
  258. //                              FALSE to always use a decimal point ".".
  259. //-----------------------------------------------------------------------
  260. void UseSystemDecimalSymbol(BOOL bUseSystemDecimalSymbol);
  261. protected:
  262. //-----------------------------------------------------------------------
  263. // Summary:
  264. //     Call this method to change an item's value.
  265. //     Override this method to add new functionality.
  266. //     You should call the base class version of this function from your
  267. //     override.
  268. // Parameters:
  269. //     strValue - New value of the item.
  270. //-----------------------------------------------------------------------
  271. virtual void SetValue(CString strValue);
  272. //-------------------------------------------------------------------------
  273. // Summary:
  274. //     This member is called before the item becomes visible in the
  275. //     property grid.
  276. // Remarks:
  277. //     Before the item is inserted, it is first check to see if it
  278. //     is bound to a variable, if it is, then the value of the item
  279. //     is updated with the value stored in the bound variable.
  280. //
  281. //          OnBeforeInsert is called when an item is inserted,
  282. //          when a category is inserted, when a category or item is
  283. //          expanded, and when the sort property has changed.
  284. //-------------------------------------------------------------------------
  285. virtual void OnBeforeInsert();
  286. protected:
  287. //-----------------------------------------------------------------------
  288. // Summary:
  289. //      Converts a String vale to a double value.
  290. // Parameters:
  291. //      lpszValue - String value to be converted to a double.
  292. // Returns:
  293. //      Double representation of the String value.
  294. // See Also: DoubleToString
  295. //-----------------------------------------------------------------------
  296. double StringToDouble(LPCTSTR lpszValue);
  297. //-----------------------------------------------------------------------
  298. // Summary:
  299. //     Converts a double vale to a CString value.
  300. // Parameters:
  301. //     dValue - double value to be converted to a CString.
  302. // Returns:
  303. //     CString representation of the double value.
  304. // See Also: StringToDouble
  305. //-----------------------------------------------------------------------
  306. CString DoubleToString(double dValue);
  307. protected:
  308. double m_fValue;        // Double value of item.
  309. double* m_pBindDouble;  // Binded value.  This is a pointer to the variable bound to this item.
  310. BOOL m_bUseSystemDecimalSymbol;  // TRUE to use system defined decimal symbol, FALSE to always use a decimal point ".".
  311. private:
  312. DECLARE_DYNAMIC(CXTPPropertyGridItemDouble)
  313. };
  314. //////////////////////////////////////////////////////////////////////
  315. AFX_INLINE long CXTPPropertyGridItemNumber::GetNumber() const {
  316. return m_nValue;
  317. }
  318. //////////////////////////////////////////////////////////////////////
  319. AFX_INLINE double CXTPPropertyGridItemDouble::GetDouble() const {
  320. return m_fValue;
  321. }
  322. AFX_INLINE void CXTPPropertyGridItemDouble::UseSystemDecimalSymbol(BOOL bUseSystemDecimalSymbol) {
  323. m_bUseSystemDecimalSymbol = bUseSystemDecimalSymbol;
  324. m_strValue = DoubleToString(m_fValue);
  325. }
  326. #endif // #if !defined(__XTPPROPERTYGRIDITEMNUMBER_H__)