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

对话框与窗口

开发平台:

Visual C++

  1. // XTPReportSubListControl.h: interface for the CXTPReportSubListControl 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(__XTPREPORTSUBLISTCONTROL_H__)
  22. #define __XTPREPORTSUBLISTCONTROL_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. class CXTPReportHeaderDragWnd;
  28. class CXTPReportControl;
  29. class CXTPReportColumn;
  30. //===========================================================================
  31. // Summary:
  32. //     Field chooser list box control.
  33. //     This control allows the user to move column names from associated
  34. //     CXTPReportControl object from and to its header.
  35. // Remarks:
  36. //     To use a field chooser in an existing dialog box of your application,
  37. //     add a standard list box to your dialog template using the dialog
  38. //     editor and then initialize your CXTPReportSubListControl object
  39. //     inside dialog OnInitialUpdate handler. See example below:
  40. // Example:
  41. // <code>
  42. //  // CXTPReportSubListControl m_wndSubList;
  43. //  wndSubList.SubclassDlgItem(IDC_COLUMNLIST, &pFieldChooserDialog);
  44. //  // CXTPReportControl wndReport;
  45. //  wndReport.GetReportHeader()->SetSubListCtrl(&wndSubList);
  46. // </code>
  47. //
  48. // See Also:
  49. //     CDragListBox, CXTPReportControl, CXTPReportHeader,
  50. //     CXTPReportHeaderDragWnd, ReportControl sample application
  51. //===========================================================================
  52. class _XTP_EXT_CLASS CXTPReportSubListControl : public CListBox
  53. {
  54. DECLARE_DYNAMIC(CXTPReportSubListControl)
  55. public:
  56. //-----------------------------------------------------------------------
  57. // Summary:
  58. //     Constructs a CXTPReportSubListControl object.
  59. // Remarks:
  60. //     You construct a CXTPReportSubListControl object in two steps.
  61. //     First, call the constructor CXTPReportSubListControl and then call
  62. //     CListBox::Create, which initializes the Windows list box and
  63. //     attaches it to the CXTPReportSubListControl.
  64. // Example:
  65. // <code>
  66. // // Declare a local CXTPReportSubListControl object.
  67. // CXTPReportSubListControl mySubList;
  68. //
  69. // // Declare a dynamic CXTPReportSubListControl object.
  70. // CXTPReportSubListControl* pMySubList = new CXTPReportSubListControl;
  71. // </code>
  72. //
  73. // See Also:
  74. //     CListBox, CXTPReportSubListControl::SetReportCtrl,
  75. //     CXTPReportHeader::SetSubListCtrl
  76. //-----------------------------------------------------------------------
  77. CXTPReportSubListControl();
  78. //-----------------------------------------------------------------------
  79. // Summary:
  80. //     Destroys CXTPReportSubListControl object, handles its cleanup.
  81. //-----------------------------------------------------------------------
  82. ~CXTPReportSubListControl();
  83. public:
  84. //-----------------------------------------------------------------------
  85. // Summary:
  86. //     Sets associated report control.
  87. // Parameters:
  88. //     pReportCtrl - Pointer to the associated report control.
  89. // Remarks:
  90. //     Usually this method should not be called by user, instead
  91. //     you should call CXTPReportHeader::SetSubListCtrl.
  92. // Returns:
  93. //     TRUE if set successfully, FALSE otherwise.
  94. // See Also: CXTPReportHeader::SetSubListCtrl, GetReportCtrl
  95. //-----------------------------------------------------------------------
  96. BOOL SetReportCtrl(CXTPReportControl* pReportCtrl);
  97. //-----------------------------------------------------------------------
  98. // Summary:
  99. //     Returns a pointer to the associated report control.
  100. // Returns:
  101. //     An associated report control.
  102. // See Also: CXTPReportHeader::SetSubListCtrl, SetReportCtrl
  103. //-----------------------------------------------------------------------
  104. CXTPReportControl* GetReportCtrl();
  105. public:
  106. //-----------------------------------------------------------------------
  107. // Summary:
  108. //     Updates columns list data in field chooser.
  109. // Remarks:
  110. //     Reloads column list from the associated CXTPReportControl object,
  111. //     deletes all visible column items from the internal list,
  112. //     and adds the rest of invisible items.
  113. // Example:
  114. //     <code>wndSubList.UpdateList();</code>
  115. // Returns:
  116. //     TRUE when updated successfully, FALSE otherwise.
  117. //-----------------------------------------------------------------------
  118. BOOL UpdateList();
  119. //-----------------------------------------------------------------------
  120. // Summary:
  121. //     Not used for the moment.
  122. // Parameters:
  123. //     iSubItem - Sub-item number for including.
  124. // Returns:
  125. //     Non-zero when completed successfully, zero otherwise.
  126. //-----------------------------------------------------------------------
  127. virtual BOOL Include(int iSubItem);
  128. //-----------------------------------------------------------------------
  129. // Summary:
  130. //     Not used for the moment.
  131. // Parameters:
  132. //     iSubItem - Sub-item number for disabling.
  133. // Returns:
  134. //     Non-zero when completed successfully, zero otherwise.
  135. //-----------------------------------------------------------------------
  136. virtual BOOL Disable(int iSubItem);
  137. //-----------------------------------------------------------------------
  138. // Summary:
  139. //     Call this member to use sorted list.
  140. // Parameters:
  141. //     bSort - TRUE to sort columns in list.
  142. //-----------------------------------------------------------------------
  143. void SortAscending(BOOL bSort);
  144. //-----------------------------------------------------------------------
  145. // Summary:
  146. //     Retrieves caption text by its index.
  147. // Parameters:
  148. //     nIndex - Index of item to retrieve.
  149. // Returns:
  150. //     Caption of the item.
  151. //-----------------------------------------------------------------------
  152. CString GetItemCaption(int nIndex);
  153. //-----------------------------------------------------------------------
  154. // Summary:
  155. //     Retrieves column object by its index.
  156. // Parameters:
  157. //     nIndex - Index of item to retrieve.
  158. // Returns:
  159. //     CXTPReportColumn* object of the item.
  160. //-----------------------------------------------------------------------
  161. CXTPReportColumn* GetItemColumn(int nIndex);
  162. protected:
  163. //-----------------------------------------------------------------------
  164. // Summary:
  165. //     Finds item index by its data.
  166. // Parameters:
  167. //     nItemData - Item data for search.
  168. // Returns:
  169. //     Found item index, -1 if item was not found.
  170. //-----------------------------------------------------------------------
  171. int FindItemData(int nItemData);
  172. //-----------------------------------------------------------------------
  173. // Summary:
  174. //     Called by the framework when a drag operation starts.
  175. // Parameters:
  176. //     nItem - Item to begin drag
  177. // Remarks:
  178. //     Override this function if you want to control what happens when
  179. //     a drag operation begins. This implementation captures the mouse,
  180. //     creates CXTPReportHeaderDragWnd and stays in drag mode until the
  181. //     user clicks the left or right mouse button or presses ESC,
  182. //     at which time the drag operation is canceled.
  183. // Returns:
  184. //     Nonzero if dragging is allowed, otherwise 0.
  185. // See Also: CDragListBox::BeginDrag
  186. //-----------------------------------------------------------------------
  187. BOOL BeginDrag(int nItem);
  188. //-----------------------------------------------------------------------
  189. // Summary:
  190. //     Called by the framework when an item is being dragged within the
  191. //     CDragListBox object.
  192. // Parameters:
  193. //     pt - A CPoint object that contains the x and y screen coordinates of the cursor.
  194. // Remarks:
  195. //     This implementation allows dropping items only on the control itself
  196. //     and associated report control header.
  197. //     Override this function if you want to provide additional functionality.
  198. // Returns:
  199. //     The resource ID of the cursor to be displayed.
  200. //     The following values are possible:
  201. //     * <b>DL_COPYCURSOR</b>    Indicates that the item will be copied.
  202. //     * <b>DL_MOVECURSOR</b>    Indicates that the item will be moved.
  203. //     * <b>DL_STOPCURSOR</b>    Indicates that the current drop target is not acceptable.
  204. //
  205. // See Also: CDragListBox::Dragging
  206. //-----------------------------------------------------------------------
  207. UINT Dragging(CPoint pt);
  208. //-----------------------------------------------------------------------
  209. // Summary:
  210. //     Called by the framework when a drag operation has been canceled.
  211. // Remarks:
  212. //     Destroys dragging CXTPReportHeaderDragWnd window and resets
  213. //     associated report control mouse mode.
  214. // See Also: CDragListBox::CancelDrag
  215. //-----------------------------------------------------------------------
  216. void CancelDrag();
  217. //-----------------------------------------------------------------------
  218. // Summary:
  219. //     Called by the framework when an item is dropped within a
  220. //     CDragListBox object.
  221. // Parameters:
  222. //     pt        - A CPoint object that contains the coordinates of the drop site.
  223. // Remarks:
  224. //     Destroys dragging CXTPReportHeaderDragWnd window and returns the
  225. //     control to the caller.
  226. // See Also: CDragListBox::Dropped
  227. //-----------------------------------------------------------------------
  228. void Dropped(CPoint pt);
  229. protected:
  230. //{{AFX_CODEJOCK_PRIVATE
  231. DECLARE_MESSAGE_MAP()
  232. void ParentNotify_SelChangd();
  233. //{{AFX_VIRTUAL(CXTPReportSubListControl)
  234. public:
  235. virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
  236. protected:
  237. virtual void PreSubclassWindow();
  238. virtual void MeasureItem(LPMEASUREITEMSTRUCT){}
  239. //}}AFX_VIRTUAL
  240. //{{AFX_MSG(CXTPReportSubListControl)
  241. afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  242. afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
  243. afx_msg void OnPaint();
  244. afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM lParam);
  245. //}}AFX_MSG
  246. //}}AFX_CODEJOCK_PRIVATE
  247. protected:
  248. CXTPReportControl* m_pReportCtrl;       // Pointer to the parent report control.
  249. CXTPReportHeaderDragWnd* m_pDragWnd;    // Pointer to the associated dragging window.
  250. CRect m_rcDragWnd;                      // Coordinates of the associated dragging window.
  251. CRect m_rcDropTarget1;                  // Contains first drop target - the list window itself.
  252. CRect m_rcDropTarget2;                  // Contains second drop target - report header.
  253. int m_nDropIndex;                       // Drop item index.
  254. BOOL m_bSortAscending;                  // TRUE to sort items in list.
  255. };
  256. #endif //#if !defined(__XTPREPORTSUBLISTCONTROL_H__)