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

对话框与窗口

开发平台:

Visual C++

  1. // XTPDatePickerDaysCollection.h: interface for the CXTPDatePickerDaysCollection class.
  2. //
  3. // This file is a part of the XTREME CALENDAR 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(_XTPDATEPICKERDAYSCOLLECTION_H__)
  22. #define _XTPDATEPICKERDAYSCOLLECTION_H__
  23. #if _MSC_VER > 1000
  24. #pragma once
  25. #endif // _MSC_VER > 1000
  26. //}}AFX_CODEJOCK_PRIVATE
  27. // XTPDatePickerDaysCollection.h : header file
  28. ///
  29. class CXTPDatePickerControl;
  30. class CXTPDatePickerItemDay;
  31. // ----------------------------------------------------------------------
  32. // Remarks:
  33. //     Class CXTPDatePickerDaysCollection provides facilities to build various
  34. //     collection of days, for using in groups. For example, the selected days
  35. //     collection. To create an object of this class, simply call the constructor
  36. //     and provide a pointer to the DatePicker controller.
  37. // ----------------------------------------------------------------------
  38. class _XTP_EXT_CLASS CXTPDatePickerDaysCollection : public CXTPCmdTarget
  39. {
  40. friend class CXTPDatePickerControl;
  41. public:
  42. //-----------------------------------------------------------------------
  43. // Summary:
  44. //     Selected block structure.
  45. //     Each member is represented by an integer part of a corresponding
  46. //     COleDateTime value.
  47. // Example:
  48. //     You can create COleDateTime in a following manner:
  49. // <code>
  50. // COleDateTime dtValue;
  51. // dtValue = (DATE)(double)block.nDateBegin;
  52. // </code>
  53. //-----------------------------------------------------------------------
  54. struct SELECTED_BLOCK
  55. {
  56. long nDateBegin;   // Begin date
  57. long nDateEnd;     // End date
  58. };
  59. public:
  60. //-----------------------------------------------------------------------
  61. // Summary:
  62. //     Default collection constructor.
  63. // Parameters:
  64. //     pControl - Pointer to the DatePicker control object.
  65. // Remarks:
  66. //     Handles initial initialization.
  67. //-----------------------------------------------------------------------
  68. CXTPDatePickerDaysCollection(CXTPDatePickerControl* pControl);
  69. // -------------------------------------
  70. // Summary:
  71. //     Default collection destructor.
  72. // Remarks:
  73. //     Handles member item deallocation.
  74. // See Also:
  75. //     Clear()
  76. // -------------------------------------
  77. virtual ~CXTPDatePickerDaysCollection();
  78. //-----------------------------------------------------------------------
  79. // Summary:
  80. //     Call this member function to clear the day collection.
  81. //-----------------------------------------------------------------------
  82. void Clear();
  83. // ---------------------------------------------------------------------
  84. // Summary:
  85. //     Call this member function to add a day to the collection.
  86. // Parameters:
  87. //     dtDay :  Date of a day, the key of the new element.
  88. // Remarks:
  89. //     The primary means to insert an element into a map. First, search
  90. //     for the key. If the key is found, then the corresponding value is
  91. //     changed. Otherwise, a new key-value pair is created an added to
  92. //     the map.
  93. // See Also:
  94. //     Remove
  95. // ---------------------------------------------------------------------
  96. void Add(const COleDateTime& dtDay);
  97. // ---------------------------------------------------------------------
  98. // Summary:
  99. //     Call this member function to select a day
  100. // Parameters:
  101. //     dtDay :  Date of a day, the key of the new element.
  102. // See Also:
  103. //     Add, SelectRange
  104. // ---------------------------------------------------------------------
  105. void Select(const COleDateTime& dtDay);
  106. // ---------------------------------------------------------------------
  107. // Summary:
  108. //     Call this member function to select days
  109. // Parameters:
  110. //     dtDayBegin :  First Date of a day
  111. //     dtDayEnd :  Last Date of a day
  112. // See Also:
  113. //     Select
  114. // ---------------------------------------------------------------------
  115. void SelectRange(const COleDateTime& dtDayBegin, const COleDateTime& dtDayEnd);
  116. // --------------------------------------------------------------------------
  117. // Summary:
  118. //     Call this member function to remove a day from the collection.
  119. // Parameters:
  120. //     dtDay :  A COleDateTime reference that contains the date of a day. The
  121. //              key for the element to be removed.
  122. // Remarks:
  123. //     Searches the map for the entry corresponding to the supplied key.
  124. //     If the key is found, then the entry is removed.
  125. // See Also:
  126. //     Add(COleDateTime&)
  127. // --------------------------------------------------------------------------
  128. void Remove(const COleDateTime& dtDay);
  129. //-----------------------------------------------------------------------
  130. // Summary:
  131. //     Call this member function to determine if a day is contained in
  132. //     the collection.
  133. // Parameters:
  134. //     dtDay - Date of a day. The key that identifies the element to
  135. //             search for.
  136. // Remarks:
  137. //     This function uses a hash algorithm to quickly find the map
  138. //     element using a key that exactly matches the given key.
  139. // Returns:
  140. //     Nonzero if the element was found. Otherwise 0.
  141. //-----------------------------------------------------------------------
  142. BOOL Contains(const COleDateTime& dtDay) const;
  143. //-----------------------------------------------------------------------
  144. // Summary:
  145. //     Call this member function to count the number of days in the
  146. //     collection.
  147. // Returns:
  148. //     An integer value representing the number of day items in
  149. //     the collection.
  150. //-----------------------------------------------------------------------
  151. int GetSelectedDaysCount();
  152. //-----------------------------------------------------------------------
  153. // Summary:
  154. //     Call this member function to count the number of selected blocks.
  155. // Returns:
  156. //     An integer value representing the number of selected blocks.
  157. //-----------------------------------------------------------------------
  158. int GetSelectedBlocksCount();
  159. //-----------------------------------------------------------------------
  160. // Summary:
  161. //     Call this member function to get the selected block by its index.
  162. // Parameters:
  163. //     nIndex - Selected block to retrieve.
  164. //-----------------------------------------------------------------------
  165. SELECTED_BLOCK GetSelectedBlock(int nIndex);
  166. // -----------------------------------------------------------------------
  167. // Summary:
  168. //     Call this member function to determine the minimum and the maximum
  169. //     day in the collection.
  170. // Parameters:
  171. //     refMinRange :  A COleDateTime reference to the minimum date storage
  172. //                    variable.
  173. //     refMaxRange :  A COleDateTime reference to maximum date storage
  174. //                    variable.
  175. // Returns:
  176. //     A boolean value. TRUE if successful. Otherwise FALSE.
  177. // -----------------------------------------------------------------------
  178. BOOL GetMinMaxRange(COleDateTime& refMinRange, COleDateTime& refMaxRange) const;
  179. private:
  180. void _InsertBlock(int nIndexInsert, long nDateBegin, long nDateEnd);
  181. void AddBlock(long nBegin, long nEnd);
  182. // Attributes
  183. protected:
  184. CXTPDatePickerControl* m_pControl;        // --------------------------------------------------------
  185.                                           // This member variable is a pointer to the parent control.
  186.                                           // --------------------------------------------------------
  187. CArray<SELECTED_BLOCK, SELECTED_BLOCK&> m_arrSelectedBlocks; // Contains an array of the selected dates blocks.
  188. };
  189. AFX_INLINE int CXTPDatePickerDaysCollection::GetSelectedBlocksCount() {
  190. return (int)m_arrSelectedBlocks.GetSize();
  191. }
  192. AFX_INLINE CXTPDatePickerDaysCollection::SELECTED_BLOCK CXTPDatePickerDaysCollection::GetSelectedBlock(int nIndex) {
  193. ASSERT(nIndex >= 0 && nIndex < (int)m_arrSelectedBlocks.GetSize());
  194. return m_arrSelectedBlocks[nIndex];
  195. }
  196. #endif // !defined(_XTPDATEPICKERDAYSCOLLECTION_H__)