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

对话框与窗口

开发平台:

Visual C++

  1. // XTPReportRecord.h: interface for the CXTPReportRecord 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(__XTPREPORTRECORD_H__)
  22. #define __XTPREPORTRECORD_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPReportDefines.h"
  28. class CXTPReportRecordItem;
  29. class CXTPReportRecordItemPreview;
  30. class CXTPReportColumn;
  31. class CXTPReportRecords;
  32. class CXTPPropExchange;
  33. struct XTP_REPORTRECORDITEM_DRAWARGS;
  34. struct XTP_REPORTRECORDITEM_METRICS;
  35. //===========================================================================
  36. // Summary:
  37. //     CXTPReportRecord represents a collection of objects of CXTPReportRecordItem
  38. //     or objects of classes that are children of CXTPReportRecordItem.
  39. //     A collection of such items is one record in ReportControl list.
  40. //     You create an object of CXTPReportRecord by simply calling constructor.
  41. //     After it you can add items to the record.
  42. // Example:
  43. // <code>
  44. // // add new record to the record list
  45. // CXTPReportRecords* pList = new CXTPReportRecords();
  46. // pList->Add(new CXTPReportRecord());
  47. // </code>
  48. //===========================================================================
  49. class _XTP_EXT_CLASS CXTPReportRecord : public CXTPHeapObjectT<CCmdTarget, CXTPReportDataAllocator>
  50. {
  51. friend class CXTPReportRecords;
  52. friend class CXTPReportRow;
  53. friend class CXTPReportControl;
  54. friend class CXTPReportRecordItem;
  55. DECLARE_SERIAL(CXTPReportRecord)
  56. public:
  57. //-----------------------------------------------------------------------
  58. // Summary:
  59. //     Constructs a CXTPReportRecord object
  60. //-----------------------------------------------------------------------
  61. CXTPReportRecord();
  62. //-----------------------------------------------------------------------
  63. // Summary:
  64. //     Destroys a CXTPReportRecord object, handles cleanup and deallocation
  65. //-----------------------------------------------------------------------
  66. virtual ~CXTPReportRecord();
  67. //-----------------------------------------------------------------------
  68. // Summary:
  69. //     Returns the number of items inside record.
  70. // Returns:
  71. //     The number of items inside the record.
  72. // See Also: GetItem
  73. //-----------------------------------------------------------------------
  74. int GetItemCount() const;
  75. //-----------------------------------------------------------------------
  76. // Summary:
  77. //     Returns an item by its index or column.
  78. // Parameters:
  79. //     nIndex - zero-based index of item in the collection.
  80. //     pColumn - A pointer to a column object to find an item by.
  81. // Remarks:
  82. //     You use this member function to get an item from collection by
  83. //     item index. If the given index is less than 0 or greater than
  84. //     the value returned by GetItemCount, GetItem returns NULL.
  85. // Returns:
  86. //     Pointer to the found record item, if any, or NULL otherwise.
  87. // See Also: GetItemCount
  88. //-----------------------------------------------------------------------
  89. CXTPReportRecordItem* GetItem(int nIndex) const;
  90. CXTPReportRecordItem* GetItem(CXTPReportColumn* pColumn) const; // <COMBINE CXTPReportRecord::GetItem@int@const>
  91. //-----------------------------------------------------------------------
  92. // Summary:
  93. //     Returns a preview item.
  94. // Remarks:
  95. //     Preview items stores separate from all others items. One
  96. //     Record can have only one Preview Item. If ReportRecord doesn't
  97. //     have a preview item, GetItemPreview() returns NULL
  98. // Returns:
  99. //     Associated Preview item.
  100. // See Also: SetPreviewItem
  101. //-----------------------------------------------------------------------
  102. CXTPReportRecordItemPreview* GetItemPreview() const;
  103. //-----------------------------------------------------------------------
  104. // Summary:
  105. //     Sets preview item for the record.
  106. // Parameters:
  107. //     pItemPreview - Pointer to the associated preview item.
  108. // Remarks:
  109. //     Preview items stores separate from all others items. One
  110. //     Record can have only one Preview Item.
  111. // See Also: GetItemPreview
  112. //-----------------------------------------------------------------------
  113. void SetPreviewItem(CXTPReportRecordItemPreview* pItemPreview);
  114. //-----------------------------------------------------------------------
  115. // Summary:
  116. //     Returns record visible state.
  117. // Remarks:
  118. //     This member function returns FALSE if the record should be
  119. //     invisible, TRUE if visible.
  120. // Returns:
  121. //     Boolean value that represents visible state.
  122. // See Also: SetVisible
  123. //-----------------------------------------------------------------------
  124. BOOL IsVisible() const;
  125. //-----------------------------------------------------------------------
  126. // Summary:
  127. //     Sets record visibility state.
  128. // Parameters:
  129. //     bVisible - TRUE if the record should be visible,
  130. //                FALSE if the record should be hidden.
  131. // Returns:
  132. //     Old record visibility state.
  133. // See Also: IsVisible
  134. //-----------------------------------------------------------------------
  135. BOOL SetVisible(BOOL bVisible);
  136. //-----------------------------------------------------------------------
  137. // Summary:
  138. //     Returns record locked state.
  139. // Returns:
  140. //     TRUE if the record is locked, FALSE otherwise.
  141. // See Also: SetLocked
  142. //-----------------------------------------------------------------------
  143. BOOL IsLocked() const;
  144. //-----------------------------------------------------------------------
  145. // Summary:
  146. //     Sets record locked state.
  147. // Parameters:
  148. //     bLocked - TRUE if record is locked, FALSE otherwise.
  149. // Remarks:
  150. //     You set the record locked when it shouldn't be sorted on hide.
  151. //     To set record locked or unlocked, you use SetLocked(BOOL)
  152. // Returns:
  153. //     Old record locked state.
  154. // See Also: IsLocked
  155. //-----------------------------------------------------------------------
  156. BOOL SetLocked(BOOL bLocked);
  157. //-----------------------------------------------------------------------
  158. // Summary:
  159. //     Returns record editable state.
  160. // Returns:
  161. //     TRUE if the record is editable, FALSE otherwise.
  162. // See Also: SetEditable
  163. //-----------------------------------------------------------------------
  164. BOOL IsEditable() const;
  165. //-----------------------------------------------------------------------
  166. // Summary:
  167. //     Sets record editable state.
  168. // Parameters:
  169. //     bEditable - TRUE if the record is editable, FALSE otherwise.
  170. //-----------------------------------------------------------------------
  171. void SetEditable(BOOL bEditable = TRUE);
  172. //-----------------------------------------------------------------------
  173. // Summary:
  174. //     Returns record children.
  175. // Remarks:
  176. //     ReportRecord can have a list of child items.
  177. //     To get the pointer to that list, use GetChilds()
  178. // Returns:
  179. //     A collection of record children.
  180. //-----------------------------------------------------------------------
  181. CXTPReportRecords* GetChilds();
  182. //-----------------------------------------------------------------------
  183. // Summary:
  184. //     Returns parent records.
  185. // Returns:
  186. //     A collection of parent records.
  187. //-----------------------------------------------------------------------
  188. CXTPReportRecords* GetRecords() const;
  189. //-----------------------------------------------------------------------
  190. // Summary:
  191. //     Determines if record has children records
  192. // Returns:
  193. //     TRUE if record has children records
  194. // See Also: GetChilds
  195. //-----------------------------------------------------------------------
  196. BOOL HasChildren() const;
  197. //-----------------------------------------------------------------------
  198. // Summary:
  199. //     Removes all items.
  200. //-----------------------------------------------------------------------
  201. void RemoveAll();
  202. //-----------------------------------------------------------------------
  203. // Summary:
  204. //     Returns an index of the provided record item object.
  205. // Parameters:
  206. //     pItem - record item which index need to retrieve.
  207. // Remarks:
  208. //     This member function is used to get the zero-based index
  209. //     of items in the record collection. If the item is not found, it returns
  210. //     -1
  211. // Returns:
  212. //     Zero-based index of provided record item
  213. //-----------------------------------------------------------------------
  214. int IndexOf(const CXTPReportRecordItem* pItem) const;
  215. //-----------------------------------------------------------------------
  216. // Summary:
  217. //     Calculates item metrics based on the provided draw arguments.
  218. //     Could be overridden by descendants.
  219. // Parameters:
  220. //     pDrawArgs - Draw arguments for calculating item metrics.
  221. //     pItemMetrics - Pointer to the metrics item to fill with values.
  222. //-----------------------------------------------------------------------
  223. virtual void GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pItemMetrics);
  224. //-----------------------------------------------------------------------
  225. // Summary:
  226. //     Returns the expanded state of the Record
  227. // Remarks:
  228. //     Returns expanded state of the Record. If expanded state is set to
  229. //     TRUE, the  control tries to draw the record with all its children
  230. // Returns:
  231. //     BOOLEAN value the represent expanded state of ReportRecord
  232. // See Also: SetExpanded
  233. //-----------------------------------------------------------------------
  234. BOOL IsExpanded() const;
  235. //-----------------------------------------------------------------------
  236. // Summary:
  237. //     This member function sets the expanded state of the Record
  238. // Parameters:
  239. //     bExpanded - TRUE to set record expanded.
  240. // Remarks:
  241. //     Returns the expanded state of the Record. If the expanded state is set to
  242. //     TRUE, the  control tries to draw the record with all its children
  243. // See Also: IsExpanded
  244. //-----------------------------------------------------------------------
  245. void SetExpanded(BOOL bExpanded);
  246. //-----------------------------------------------------------------------
  247. // Summary:
  248. //     Returns TRUE if record is filtered.
  249. // Returns:
  250. //     TRUE if the record is filtered, FALSE otherwise
  251. //-----------------------------------------------------------------------
  252. virtual BOOL IsFiltered() const;
  253. //-----------------------------------------------------------------------
  254. // Summary:
  255. //     Retrieves record index in the array.
  256. // Returns:
  257. //     The record index in the array.
  258. //-----------------------------------------------------------------------
  259. int GetIndex() const;
  260. //-----------------------------------------------------------------------
  261. // Summary:
  262. //     Adds a record item to the internal records item collection.
  263. // Parameters:
  264. //     pItem - Pointer to the new record item.
  265. // Returns:
  266. //     Pointer to the recently added record item.
  267. //-----------------------------------------------------------------------
  268. CXTPReportRecordItem* AddItem(CXTPReportRecordItem* pItem);
  269. //-----------------------------------------------------------------------
  270. // Summary:
  271. //     Call this member function to Store/Load a report record with record
  272. //     items using the specified data object.
  273. // Parameters:
  274. //     pPX - Source or destination CXTPPropExchange data object reference.
  275. //-----------------------------------------------------------------------
  276. virtual void DoPropExchange(CXTPPropExchange* pPX);
  277. //-------------------------------------------------------------------------
  278. // Summary:
  279. //     Call this method to remove record
  280. //-------------------------------------------------------------------------
  281. void Delete();
  282. //-------------------------------------------------------------------------
  283. // Summary:
  284. //     Call this method to increment reference counter of a record and all its children
  285. //-------------------------------------------------------------------------
  286. void TreeAddRef();
  287. //-------------------------------------------------------------------------
  288. // Summary:
  289. //     Call this method to decrement reference counter of a record and all its children
  290. //-------------------------------------------------------------------------
  291. void TreeRelease();
  292. protected:
  293. CArray<CXTPReportRecordItem*, CXTPReportRecordItem*> m_arrItems;    // An internal storage for record items.
  294. BOOL m_bVisible;    // Is this record visible or not
  295. BOOL m_bLocked;     // Stores locked state for the record.
  296. CXTPReportRecordItemPreview* m_pPreviewItem; // store Preview  Item for record
  297. CXTPReportRecords* m_pChildren; // A collection of children records.
  298. BOOL m_bExpanded;               // Contains record expanded state.
  299. BOOL m_bEditable;               // TRUE if the record is editable, FALSE otherwise.
  300. int m_nIndex;                   // Index of the record within the collection records.
  301. CXTPReportRecords* m_pRecords;  // Parent records collection.
  302. };
  303. AFX_INLINE int CXTPReportRecord::GetItemCount() const{
  304. return (int)m_arrItems.GetSize();
  305. }
  306. AFX_INLINE CXTPReportRecordItem* CXTPReportRecord::GetItem(int nIndex) const {
  307. return nIndex >= 0 && nIndex < GetItemCount() ? m_arrItems.GetAt(nIndex) : NULL;
  308. }
  309. AFX_INLINE BOOL CXTPReportRecord::IsVisible() const {
  310. return m_bVisible;
  311. }
  312. AFX_INLINE BOOL CXTPReportRecord::SetVisible(BOOL bVisible) {
  313. BOOL bOldVisible = m_bVisible; m_bVisible = bVisible; return bOldVisible;
  314. }
  315. AFX_INLINE BOOL CXTPReportRecord::IsEditable() const {
  316. return m_bEditable;
  317. }
  318. AFX_INLINE BOOL CXTPReportRecord::IsLocked() const {
  319. return m_bLocked;
  320. }
  321. AFX_INLINE BOOL CXTPReportRecord::SetLocked(BOOL bLocked) {
  322. BOOL bOldLocked = m_bLocked; m_bLocked = bLocked; return bOldLocked;
  323. }
  324. AFX_INLINE void CXTPReportRecord::GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* /*pDrawArgs*/, XTP_REPORTRECORDITEM_METRICS* /*pItemMetrics*/) {
  325. }
  326. AFX_INLINE BOOL CXTPReportRecord::IsExpanded() const {
  327. return m_bExpanded;
  328. }
  329. AFX_INLINE void CXTPReportRecord::SetExpanded(BOOL bExpanded) {
  330. m_bExpanded = bExpanded;
  331. }
  332. AFX_INLINE CXTPReportRecords* CXTPReportRecord::GetRecords() const {
  333. return m_pRecords;
  334. }
  335. #endif //#if !defined(__XTPREPORTRECORD_H__)