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

对话框与窗口

开发平台:

Visual C++

  1. // XTPReportRecords.h: interface for the CXTPReportRecords class.
  2. //
  3. // This file is a part of the XTREME REPORTCONTROL 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(__XTPREPORTRECORDS_H__)
  22. #define __XTPREPORTRECORDS_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPReportRecord;
  28. class CXTPPropExchange;
  29. class CXTPMarkupContext;
  30. //===========================================================================
  31. // Summary:
  32. //     This class represents a records collection class.
  33. //     It supports an array of CXTPReportRecord pointers.
  34. // Example:
  35. //     See example for CXTPReportRecords::Add method.
  36. // See Also: CXTPReportRecord
  37. //===========================================================================
  38. class _XTP_EXT_CLASS CXTPReportRecords : public CXTPHeapObjectT<CCmdTarget, CXTPReportDataAllocator>
  39. {
  40. DECLARE_DYNAMIC(CXTPReportRecords)
  41. public:
  42. //-----------------------------------------------------------------------
  43. // Summary:
  44. //     Constructs an empty CXTPReportRecord pointer array.
  45. // Example:
  46. // <code>
  47. // // Declare a local CXTPReportRecords object.
  48. // CXTPReportRecords myList;
  49. //
  50. // // Declare a dynamic CXTPReportRecords object.
  51. // CXTPReportRecords* pTree = new CXTPReportRecords();
  52. // </code>
  53. //-----------------------------------------------------------------------
  54. CXTPReportRecords(BOOL bArray = FALSE);
  55. //-----------------------------------------------------------------------
  56. // Summary:
  57. //     Constructs an empty CXTPReportRecord pointer array in case if it is
  58. //     used as a member of CXTPReportRecord object to store children.
  59. // Parameters:
  60. //     pOwnerRecord - A pointer to owner CXTPReportRecord object.
  61. //-----------------------------------------------------------------------
  62. CXTPReportRecords(CXTPReportRecord* pOwnerRecord);
  63. //-----------------------------------------------------------------------
  64. // Summary:
  65. //     Destroys CXTPReportRecords object. Performs cleanup operations.
  66. //-----------------------------------------------------------------------
  67. virtual ~CXTPReportRecords();
  68. //-----------------------------------------------------------------------
  69. // Summary:
  70. //     Used to get CXTPReportRecord owner object;
  71. // Returns:
  72. //     A pointer to owner CXTPReportRecord object or NULL.
  73. //-----------------------------------------------------------------------
  74. CXTPReportRecord* GetOwnerRecord() const;
  75. public:
  76. //-----------------------------------------------------------------------
  77. // Summary:
  78. //     Gets the number of CXTPReportRecord elements in this collection.
  79. // Remarks:
  80. //     Call this method to retrieve the number of elements in the array.
  81. //     Because indexes are zero-based, the size is 1 greater than
  82. //     the largest index.
  83. // Returns:
  84. //     The number of items in the collection.
  85. // Example:
  86. //     See example for CXTPReportRecords::Add method.
  87. // See Also: CXTPReportRecords overview
  88. //-----------------------------------------------------------------------
  89. int GetCount() const;
  90. //-----------------------------------------------------------------------
  91. // Summary:
  92. //     Returns a record at the specified numeric index.
  93. // Parameters:
  94. //     nIndex - An integer index that is greater than or equal to 0
  95. //              and less than the value returned by GetCount.
  96. // Remarks:
  97. //     Returns the array element at the specified index.
  98. // Returns:
  99. //     The record element currently at this index.
  100. // Example:
  101. //     See example for CXTPReportRecords::Add method.
  102. //-----------------------------------------------------------------------
  103. CXTPReportRecord* GetAt(int nIndex) const;
  104. //-----------------------------------------------------------------------
  105. // Summary:
  106. //     Adds a new Record element to the end of an array.
  107. // Parameters:
  108. //     pRecord - The record element to be added to this array.
  109. // Remarks:
  110. //     Use this method to add the specified CXTPReportRecord pointer
  111. //     to the end of the CXTPReportRecords collection.
  112. // Example:
  113. // <code>
  114. // CXTPReportRecords* pList = new CXTPReportRecords();
  115. // pList->Add(new CXTPReportRecord());
  116. // pList->Add(new CXTPReportRecord());
  117. // CXTPReportRecord* pRecord0 = pList->GetAt(0);
  118. // CXTPReportRecord* pRecord1 = pList->GetAt(1);
  119. // ASSERT(2 == pList->GetCount());
  120. // pList->RemoveAll();
  121. // ASSERT(0 == pList->GetCount());
  122. // </code>
  123. // See Also: CXTPReportRecords overview, GetAt, RemoveAll, GetCount
  124. //-----------------------------------------------------------------------
  125. CXTPReportRecord* Add(CXTPReportRecord* pRecord);
  126. //-----------------------------------------------------------------------
  127. // Summary:
  128. //     Call this member function to Store/Load a report records
  129. // Parameters:
  130. //     pPX - Source or destination CXTPPropExchange data object reference.
  131. //-----------------------------------------------------------------------
  132. virtual void DoPropExchange(CXTPPropExchange* pPX);
  133. //-----------------------------------------------------------------------
  134. // Summary:
  135. //     Removes all the elements from this array.
  136. // Remarks:
  137. //     Removes all the pointers from this array and releases instances
  138. //     of all stored CXTPReportRecord objects.
  139. // Example:
  140. //     See example for CXTPReportRecords::Add method.
  141. // See Also: CXTPReportRecords overview
  142. //-----------------------------------------------------------------------
  143. void RemoveAll();
  144. //-----------------------------------------------------------------------
  145. // Summary:
  146. //     Removes record by its index.
  147. // Parameters:
  148. //     nIndex - index of record to remove.
  149. //-----------------------------------------------------------------------
  150. void RemoveAt(int nIndex);
  151. //-----------------------------------------------------------------------
  152. // Summary:
  153. //     Removes specified record from collection.
  154. // Parameters:
  155. //     pRecord - Record to be removed.
  156. // Returns:
  157. //     Removed record index or -1 if specified record is not in this
  158. //     collection.
  159. //-----------------------------------------------------------------------
  160. int RemoveRecord(CXTPReportRecord* pRecord);
  161. //-----------------------------------------------------------------------
  162. // Summary:
  163. //     Call this method to add record in the specified position.
  164. // Parameters:
  165. //     nIndex - Index of record to insert.
  166. //     pRecord - Record to be inserted.
  167. //-----------------------------------------------------------------------
  168. void InsertAt(int nIndex, CXTPReportRecord* pRecord);
  169. //-----------------------------------------------------------------------
  170. // Summary:
  171. //     Call this method to move records to specified position
  172. // Parameters:
  173. //     nIndex - index to move records
  174. //     pRecords - Records to move
  175. //-----------------------------------------------------------------------
  176. void Move(int nIndex, CXTPReportRecords* pRecords);
  177. public:
  178. //-------------------------------------------------------------------------
  179. // Summary:
  180. //     Call this method to enable markup for tab captions
  181. // Parameters:
  182. //     bEnable - TRUE to enable markup
  183. //-------------------------------------------------------------------------
  184. void EnableMarkup(BOOL bEnable = TRUE);
  185. //-------------------------------------------------------------------------
  186. // Summary:
  187. //     Returns markup context
  188. //-------------------------------------------------------------------------
  189. CXTPMarkupContext* GetMarkupContext() const;
  190. public:
  191. //-----------------------------------------------------------------------
  192. // Summary:
  193. //     Sets a value indicating whether string comparisons are case-sensitive.
  194. // Parameters:
  195. //     bCaseSensitive - TRUE if string comparisons are case-sensitive; otherwise, FALSE. The default is FALSE.
  196. // See Also: IsCaseSensitive
  197. //-----------------------------------------------------------------------
  198. void SetCaseSensitive(BOOL bCaseSensitive);
  199. //-----------------------------------------------------------------------
  200. // Summary:
  201. //     Determines whether string comparisons are case-sensitive.
  202. // See Also: SetCaseSensitive
  203. //-----------------------------------------------------------------------
  204. BOOL IsCaseSensitive() const;
  205. //-----------------------------------------------------------------------
  206. // Summary:
  207. //     Helper function to compares two strings.
  208. // Parameters:
  209. //     str1 - First string to compare
  210. //     str2 - Second string to compare
  211. // Returns:
  212. //     Zero if the strings are identical, < 0 if this str1 object is less than str2,
  213. //     or > 0 if this str1 object is greater than str2.
  214. // See Also: SetCaseSensitive
  215. //-----------------------------------------------------------------------
  216. virtual int Compare(const CString& str1, const CString& str2) const;
  217. //-----------------------------------------------------------------------
  218. // Summary:
  219. //     This member function is used to change the array size.
  220. // Parameters:
  221. //     nNewSize - An int that contains the new array size.
  222. //     nGrowBy  - The minimum number of element slots to allocate if a size
  223. //                increase is necessary.
  224. //-----------------------------------------------------------------------
  225. virtual void SetSize(INT_PTR nNewSize, INT_PTR nGrowBy = -1);
  226. //-----------------------------------------------------------------------
  227. // Summary:
  228. //     This member function is used to set a new element to the position
  229. //     specified in the nIndex parameter.
  230. // Parameters:
  231. //     nIndex      - An integer index that is greater than or equal
  232. //                   to 0 and less than the value returned by
  233. //                   GetCount.
  234. //     pRecord    - A pointer to a CXTPReportRecord object.
  235. //                  The element to add to the array.
  236. //-----------------------------------------------------------------------
  237. virtual void SetAt(INT_PTR nIndex, CXTPReportRecord* pRecord);
  238. //-----------------------------------------------------------------------
  239. // Summary:
  240. //     This member function is used to record indexes.
  241. // Parameters:
  242. //     nStart      - An integer index to start update from.
  243. //-----------------------------------------------------------------------
  244. virtual void UpdateIndexes(int nStart = 0);
  245. protected:
  246. //{{AFX_CODEJOCK_PRIVATE
  247. void SetVirtualMode(CXTPReportRecord* pVirtualRecord, int nCount);
  248. BOOL IsVirtualMode() const;
  249. virtual void _DoPropExchange(CXTPPropExchange* pPX);
  250. //}}AFX_CODEJOCK_PRIVATE
  251. protected:
  252. CArray<CXTPReportRecord*, CXTPReportRecord*> m_arrRecords;  // Internal storage array for Record items.
  253. CXTPReportRecord* m_pVirtualRecord;                // Virtual record.
  254. int m_nVirtualRecordsCount;                        // Virtual records count.
  255. //{{AFX_CODEJOCK_PRIVATE
  256. BOOL m_bArray;
  257. //}}AFX_CODEJOCK_PRIVATE
  258. BOOL m_bCaseSensitive; // Indicating whether string comparisons are case-sensitive.
  259. CXTPReportRecord* m_pOwnerRecord; // Store pointer to owner record object (or NULL);
  260. CXTPMarkupContext* m_pMarkupContext; // Markup Context;
  261. friend class CXTPReportControl;
  262. friend class CXTPReportRecord;
  263. };
  264. AFX_INLINE BOOL CXTPReportRecords::IsVirtualMode() const {
  265. return m_pVirtualRecord != NULL;
  266. }
  267. AFX_INLINE void CXTPReportRecords::SetCaseSensitive(BOOL bCaseSensitive) {
  268. m_bCaseSensitive = bCaseSensitive;
  269. }
  270. AFX_INLINE BOOL CXTPReportRecords::IsCaseSensitive() const {
  271. return m_bCaseSensitive;
  272. }
  273. AFX_INLINE CXTPReportRecord* CXTPReportRecords::GetOwnerRecord() const {
  274. return m_pOwnerRecord;
  275. }
  276. AFX_INLINE CXTPMarkupContext* CXTPReportRecords::GetMarkupContext() const {
  277. return m_pMarkupContext;
  278. }
  279. #endif //#if !defined(__XTPREPORTRECORDS_H__)