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

对话框与窗口

开发平台:

Visual C++

  1. // XTPReportControl.h: interface for the CXTPReportControl 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(__XTPREPORTCONTROL_H__)
  22. #define __XTPREPORTCONTROL_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPReportDefines.h"
  28. #include "XTPReportRow.h"
  29. #include "XTPReportRows.h"
  30. #include "XTPReportPaintManager.h"
  31. #include "XTPReportTip.h"
  32. #include "XTPReportNavigator.h"
  33. #include "Common/XTPSmartPtrInternalT.h"
  34. struct XTP_REPORTRECORDITEM_DRAWARGS;
  35. struct XTP_REPORTRECORDITEM_METRICS;
  36. class CXTPReportRecords;
  37. class CXTPReportRecordItem;
  38. class CXTPReportColumns;
  39. class CXTPReportGroups;
  40. class CXTPReportColumn;
  41. class CXTPReportRecord;
  42. class CXTPReportRows;
  43. class CXTPReportPaintManager;
  44. class CXTPReportColumnOrder;
  45. class CXTPImageManager;
  46. class CXTPReportInplaceEdit;
  47. class CXTPReportInplaceButtons;
  48. class CXTPReportInplaceList;
  49. class CXTPPropExchange;
  50. class CXTPToolTipContext;
  51. class CXTPReportNavigator;
  52. class CXTPReportRecordItemConstraint;
  53. class CXTPMarkupContext;
  54. struct XTP_REPORTRECORDITEM_ARGS;
  55. struct XTP_NM_REPORTTOOLTIPINFO;
  56. //===========================================================================
  57. // Summary:
  58. //     This structure is sent to Main window in a WM_NOTIFY message from Item
  59. //     and provides all parameters that are needed in processing control specific
  60. //     notifications by the main window
  61. // Example:
  62. // <code>
  63. // BEGIN_MESSAGE_MAP(CReportSampleView, CXTPReportView)
  64. //     ON_NOTIFY(XTP_NM_REPORT_GETITEMMETRICS, XTP_ID_REPORT_CONTROL, OnReportGetItemMetrics)
  65. // END_MESSAGE_MAP()
  66. //
  67. // void CReportSampleView::OnReportGetItemMetrics(NMHDR*  pNotifyStruct, LRESULT* /*result*/)
  68. // {
  69. //     XTP_NM_REPORTITEMMETRICS* pItemNotify = (XTP_NM_REPORTITEMMETRICS*)pNotifyStruct;
  70. //
  71. //     ASSERT(pItemNotify->pDrawArgs);
  72. //     ASSERT(pItemNotify->pDrawArgs->pControl);
  73. //     ASSERT(pItemNotify->pDrawArgs->pRow);
  74. //
  75. //     //     pItemNotify->pDrawArgs->pColumn   - may be NULL (for a group row)
  76. //     //     pItemNotify->pDrawArgs->pItem     - may be NULL (for a group row)
  77. //
  78. //     ASSERT(pItemNotify->pItemMetrics);
  79. //
  80. //     // TODO: customize members of pItemNotify->pItemMetrics.
  81. // }
  82. // </code>
  83. // See Also:
  84. //     CXTPReportControl, CXTPReportControl::GetItemMetrics(),
  85. //     XTP_NM_REPORT_GETITEMMETRICS
  86. //===========================================================================
  87. struct XTP_NM_REPORTITEMMETRICS
  88. {
  89. NMHDR hdr;                                      // Standard structure, containing information about a notification message.
  90. XTP_REPORTRECORDITEM_DRAWARGS*  pDrawArgs;      // Pointer to XTP_REPORTRECORDITEM_DRAWARGS structure.
  91. XTP_REPORTRECORDITEM_METRICS*   pItemMetrics;   // Pointer to XTP_REPORTRECORDITEM_METRICS structure to be filled.
  92. };
  93. //===========================================================================
  94. // Summary:
  95. //     This structure is sent to main window in a WM_NOTIFY message from from report control
  96. //     to determine Records was dragged or dropped
  97. // Example:
  98. // <code>
  99. // BEGIN_MESSAGE_MAP(CReportSampleView, CXTPReportView)
  100. //     ON_NOTIFY(XTP_NM_REPORT_BEGINDRAG, XTP_ID_REPORT_CONTROL, OnReportBeginDrag)
  101. // END_MESSAGE_MAP()
  102. //
  103. // void CReportSampleView::OnReportBeginDrag(NMHDR*  pNotifyStruct, LRESULT* /*result*/)
  104. // {
  105. //     XTP_NM_REPORTDRAGDROP* pItemNotify = (XTP_NM_REPORTDRAGDROP*)pNotifyStruct;
  106. //
  107. //     ASSERT(pItemNotify->pRecords);
  108. // }
  109. // </code>
  110. // See Also:
  111. //     XTP_NM_REPORT_DROP, XTP_NM_REPORT_BEGINDRAG, CXTPReportControl::EnableDragDrop
  112. //===========================================================================
  113. struct XTP_NM_REPORTDRAGDROP
  114. {
  115. NMHDR hdr;                              // Standard structure, containing information about a notification message.
  116. CXTPReportRecords* pRecords;            // Records will be dragged/dropped
  117. CXTPReportRecord*  pTargetRecord;       // Target record (if any)
  118. BOOL               bAbove;              // Where to insert (relative to the target record)
  119. DROPEFFECT         dropEffect;          // The DropEffect flags.
  120. CPoint             pt;                  // The current location of the cursor in client coordinates.
  121. int                nState;              // The transition state (0 - enter, 1 - leave, 2 - over).
  122. };
  123. //===========================================================================
  124. // Summary:
  125. //     This structure is sent to Main window in a WM_NOTIFY message before
  126. //     processing OnKeyDown event.
  127. // See Also:
  128. //     CXTPReportControl::OnPreviewKeyDown, XTP_NM_REPORT_PREVIEWKEYDOWN,
  129. //     CXTPReportControl::OnKeyDown, CWnd::OnKeyDown.
  130. //===========================================================================
  131. struct XTP_NM_REPORTPREVIEWKEYDOWN
  132. {
  133. NMHDR hdr;      // Standard structure, containing information about a notification message.
  134. // OnKeyDown parameters
  135. UINT nChar;     // [in/out] Specifies the virtual key code of the given key.
  136. UINT nRepCnt;   // [in] Repeat count.
  137. UINT nFlags;    // [in] Specifies the scan code, key-transition code, previous key state, and context code.
  138. BOOL bCancel;   // [out] TRUE to cancel processing key, FALSE to continue.
  139. };
  140. //===========================================================================
  141. // Summary:
  142. //     Enumeration of operational mouse modes.
  143. // Remarks:
  144. //     ReportControl has several
  145. //     Mouse states that handled by control. This enumeration helps to
  146. //     clearly identify each of these
  147. //         - Sends Notifications:
  148. //         - Sends Messages:
  149. // See Also: CXTPReportControl::SetMouseMode, CXTPReportControl::GetMouseMode
  150. //
  151. // <KEYWORDS xtpReportMouseNothing, xtpReportMouseOverColumnDivide, xtpReportMousePrepareDragColumn, xtpReportMouseDraggingColumn>
  152. //===========================================================================
  153. enum XTPReportMouseMode
  154. {
  155. xtpReportMouseNothing,            // User is just watching to the list.
  156. xtpReportMouseOverColumnDivide,   // User watching, but mouse is under column divider.
  157. xtpReportMousePrepareDragColumn,  // User holds mouse button pressed on the column header.
  158. xtpReportMouseDraggingColumn      // User is dragging column header.
  159. };
  160. //-----------------------------------------------------------------------
  161. // Summary:
  162. //     Enumeration of drag and drop flags
  163. // Remarks:
  164. //     Call CXTPReportControl::EnableDragDrop to allow drag/drop operations
  165. // Example:
  166. //     <code>m_wndReport.EnableDragDrop("MyApplication", xtpReportAllowDrop | xtpReportAllowDrag);</code>
  167. // See Also: CXTPReportControl::EnableDragDrop
  168. //-----------------------------------------------------------------------
  169. enum  XTPReportDragDrop
  170. {
  171. xtpReportAllowDrop     = 1,         // Allow Drop records to report
  172. xtpReportAllowDragCopy = 2,         // Allow copy records from report
  173. xtpReportAllowDragMove = 4,         // Allow move records from report
  174. xtpReportAllowDrag     = 6          // Allow copy and move records from report
  175. };
  176. //-----------------------------------------------------------------------
  177. // Summary:
  178. //     Enumeration of watermark alignment flags
  179. // Remarks:
  180. //     Call CXTPReportControl::SetWatermarkAlignment to modify watermark alignment
  181. // Example:
  182. //     <code>m_wndReport.SetWatermarkAlignment(xtpWatermarkCenter | xtpWatermarkBottom);</code>
  183. // See Also: CXTPReportControl::SetWatermarkAlignment, GetWatermarkAlignment
  184. //-----------------------------------------------------------------------
  185. enum  XTPReportWatermarkAlignment
  186. {
  187. xtpReportWatermarkUnknown      = 0,    // Unknown (empty) value.
  188. xtpReportWatermarkLeft         = 0x0001, // Horizontal alignment: left side of report control client rect.
  189. xtpReportWatermarkCenter       = 0x0002, // Horizontal alignment: center of report control client rect.
  190. xtpReportWatermarkRight        = 0x0004, // Horizontal alignment: right side of report control client rect.
  191. xtpReportWatermarkHmask        = 0x000F, // A mask for horizontal alignment flags.
  192. xtpReportWatermarkTop          = 0x0010, // Vertical alignment: top side of report control client rect.
  193. xtpReportWatermarkVCenter      = 0x0020, // Vertical alignment: center of report control client rect.
  194. xtpReportWatermarkBottom       = 0x0040, // Vertical alignment: bottom side of report control client rect.
  195. xtpReportWatermarkVmask        = 0x00F0, // A mask for vertical alignment flags.
  196. xtpReportWatermarkStretch       = 0x0100, // Stretch watermark to entire report control client rect.
  197. xtpReportWatermarkEnlargeOnly   = 0x0200, // Watermark can be enlarged only, shrinking is disabled.
  198. xtpReportWatermarkShrinkOnly    = 0x0400, // Watermark can be shrinked only, enlarging is disabled.
  199. xtpReportWatermarkPreserveRatio = 0x0800, // Watermark aspect ratio is preserved.
  200. };
  201. //-----------------------------------------------------------------------
  202. // Summary:
  203. //     Enumeration of GetElementRect flags
  204. // Remarks:
  205. //     Call CXTPReportControl::GetElementRect to get report element rectangle
  206. // Example:
  207. //     <code>m_wndReport.GetElementRect(xtpReportRectGroupByArea, rc);</code>
  208. // See Also: CXTPReportControl::GetElementRect
  209. //-----------------------------------------------------------------------
  210. enum  XTPReportElementRect
  211. {
  212. xtpReportElementRectReportArea = 0,           // report area rectangle
  213. xtpReportElementRectGroupByArea,              // report area rectangle
  214. xtpReportElementRectHeaderArea,               // report area rectangle
  215. xtpReportElementRectFooterArea,               // report area rectangle
  216. xtpReportElementRectHeaderRecordsArea,        // report area rectangle
  217. xtpReportElementRectFooterRecordsArea,        // report area rectangle
  218. xtpReportElementRectHeaderRecordsDividerArea, // report area rectangle
  219. xtpReportElementRectFooterRecordsDividerArea, // report area rectangle
  220. };
  221. //===========================================================================
  222. // Summary:
  223. //     The CXTPReportControl class provides an implementation of
  224. //     the Report control.
  225. //
  226. // Remarks:
  227. //     A "report control" is a window that displays a hierarchical list
  228. //     of items, such as emails in the inbox. Each item is called a CXTPReportRow
  229. //     and consists of its properties and corresponding CXTPReportRecord,
  230. //     which contains all the corresponding data (mostly text).
  231. //     Each Row item (as well as Record) can have a list of sub-items
  232. //     associated with it. By clicking a Row item, the user can expand and
  233. //     collapse the associated list of sub-items.
  234. //
  235. //     The CXTPReportRecords collection holds all the CXTPReportRecord objects
  236. //     that are assigned to the Report control. It could be accessible via
  237. //     GetRecords() method. The records in this collection
  238. //     are referred to as the root records. Any record that is subsequently
  239. //     added to a root record is referred to as a child record. Because each
  240. //     CXTPReportRecord can contain a collection of other CXTPReportRecord
  241. //     objects, you might find it difficult to determine your location in the
  242. //     tree structure when you iterate through the collection.
  243. //
  244. //     Record nodes can be expanded to display the next level of child records.
  245. //     The user can expand the CXTPReportRecord by clicking the plus-sign (+)
  246. //     button, if one is displayed, or you can expand the CXTPReportRecord by
  247. //     calling the CXTPReportRecord::SetExpanded method.
  248. //     To expand all the child records, call the ExpandAll method.
  249. //     You can collapse the child CXTPReportRecord level by calling the
  250. //     CXTPReportRecord::SetExpanded(FALSE) method, or the user can press
  251. //     the minus-sign (-) button, if one is displayed. You can also call
  252. //     CollapseAll method to collapse all child records.
  253. //
  254. //     Each record contains an array of record items which are implemented
  255. //     with CXTPReportRecordItem and its descendants. You can create your own
  256. //     types of items simply by inheritance from the base record item class.
  257. //
  258. //     Each record item has an association with corresponding CXTPReportColumn
  259. //     item. The item will be shown below the corresponding column header
  260. //     depending on its position in report control columns array. If a column
  261. //     has not an associated item in the record, there will be an empty item
  262. //     shown in the corresponding cell.
  263. //
  264. //     Columns array is represented by CXTPReportColumns collection and could
  265. //     be accessed via GetColumns() method.
  266. //
  267. //     As a finalization of adding data to the report control, which means
  268. //     adding columns and records, Populate() method should be called. It
  269. //     performs population of control rows with data - creates a rows tree if
  270. //     necessary, rebuilds groups if grouping if enabled, and sorts rows
  271. //     on a specified manner. See Also an example below.
  272. //
  273. //     Handling notification messages sent by the control to the parent
  274. //     window is allowed with ON_NOTIFY handler. The control is using
  275. //     SendMessageToParent function to send notifications. See below for
  276. //     the example of how messages could be handled in a parent window:
  277. //
  278. // <code>
  279. // ON_NOTIFY(NM_CLICK, ID_REPORT_CONTROL, OnReportItemClick)
  280. // ON_NOTIFY(NM_RCLICK, ID_REPORT_CONTROL, OnReportItemRClick)
  281. // ON_NOTIFY(NM_DBLCLK, ID_REPORT_CONTROL, OnReportItemDblClick)
  282. // ON_NOTIFY(XTP_NM_SHOWFIELDCHOOSER, ID_REPORT_CONTROL, OnShowFieldChooser)
  283. // ON_NOTIFY(XTP_NM_HEADER_RCLICK, ID_REPORT_CONTROL, OnReportColumnRClick)
  284. // ON_NOTIFY(NM_KEYDOWN, ID_REPORT_CONTROL, OnReportKeyDown)
  285. // </code>
  286. //
  287. //     You can also change the appearance of the CXTPReportControl control
  288. //     by setting some of its display and style properties.
  289. //
  290. //     Also Report control has an ability to store and restore its
  291. //     settings, which includes all columns with their settings, and some
  292. //     required control's settings. It is implemented via standard MFC and XTP
  293. //     serialization and available with the member functions
  294. //     SerializeState(CArchive& ar), DoPropExchange(CXTPPropExchange* pPX);
  295. //
  296. //     Report control supports Copy/Paste clipboard operations.
  297. //     See methods: CanCut(), CanCopy(), CanPaste(), Cut(), Copy(), Paste().
  298. //     There are 2 clipboard formats are supported:
  299. //          Binary  - contains all record(s) data;
  300. //          Text    - contains visible columns texts.
  301. //
  302. //     To support binary format the XTP serialization is used -
  303. //     DoPropExchange() methods are implemented for CXTPReportRecord,
  304. //     CXTPReportRecordItem and derived CXTPReportRecordItemXXX classes.
  305. //     Also some part of standard MFC serialization is used
  306. //     (see DECLARE_SERIAL macro) to automatically create classes when
  307. //     loading from the data source.
  308. //
  309. //     If you are creating custom records and records items classes you have
  310. //     to use DECLARE_SERIAL macro and may need to override DoPropExchange()
  311. //     methods to serialize custom data as well as standard records data.
  312. //
  313. //     The storing records way is simple: CXTPReportRecord (or derived class)
  314. //     is stored first, then record items (CXTPReportRecordItemXXX classes)
  315. //     are stored one by one.
  316. //     The class information, which allow to create object instances when
  317. //     loading, is stored for all classes. See CArchive::WriteClass(),
  318. //     CArchive::ReadClass() and other CArchive members for more details
  319. //     about this idea.
  320. //
  321. //     When report control loads records from the data source:
  322. //     The record class is created automatically (using stored
  323. //     class information).
  324. //     Then items collection cleared and record items are created
  325. //     automatically and added to items collection.
  326. //     For example see ReportSample project: CMessageRecord class.
  327. //
  328. //     We support text format with 't' dividers for record items and
  329. //     "rn" dividers for records (simple tab-separated text).
  330. //     Such format is also supported by Excel and some other applications.
  331. //
  332. //     There are few methods and corresponding notifications which allow to
  333. //     customize copy/paste operations:
  334. //      OnBeforeCopyToText(); OnBeforePasteFromText(); OnBeforePaste();
  335. //
  336. // See Also:
  337. //     CXTPReportView, CXTPReportHeader, CXTPReportRow, CXTPReportRecord,
  338. //     CXTPReportColumn,
  339. //     CXTPReportRecords, CXTPReportRows, CXTPReportColumns,
  340. //     CXTPReportSubListControl, CXTPReportFilterEditControl
  341. //===========================================================================
  342. class _XTP_EXT_CLASS CXTPReportControl : public CWnd
  343. {
  344. //{{AFX_CODEJOCK_PRIVATE
  345. DECLARE_DYNCREATE(CXTPReportControl)
  346. friend class CXTPReportSubListControl;
  347. friend class CXTPReportRow;
  348. friend class CXTPReportGroupRow;
  349. friend class CXTPReportHeader;
  350. friend class CXTPReportNavigator;
  351. friend class CXTPReportInplaceEdit;
  352. friend class CXTPReportHeaderDragWnd;
  353. friend class CXTPReportInplaceList;
  354. friend class CXTPReportColumn;
  355. friend class CXTPReportView;
  356. class CReportDropTarget;
  357. //}}AFX_CODEJOCK_PRIVATE
  358. public:
  359. //===========================================================================
  360. // Summary:
  361. //     Internal report update helper.
  362. //===========================================================================
  363. class _XTP_EXT_CLASS CUpdateContext
  364. {
  365. public:
  366. //-----------------------------------------------------------------------
  367. // Summary:
  368. //     Constructs a CXTPReportControlUpdateContext object.
  369. // Parameters:
  370. //     pControl - Pointer to a Report Control object.
  371. //-----------------------------------------------------------------------
  372. CUpdateContext(CXTPReportControl* pControl)
  373. {
  374. m_pControl = pControl;
  375. pControl->BeginUpdate();
  376. }
  377. //-------------------------------------------------------------------------
  378. // Summary:
  379. //     Destroys a CXTPReportControlUpdateContext object, handles cleanup and deallocation.
  380. //-------------------------------------------------------------------------
  381. ~CUpdateContext()
  382. {
  383. m_pControl->EndUpdate();
  384. }
  385. protected:
  386. CXTPReportControl* m_pControl;          // Updated report control pointer
  387. };
  388. public:
  389. //-------------------------------------------------------------------------
  390. // Summary:
  391. //     Call this function to use custom heap feature.
  392. //
  393. // Remarks:
  394. //     If it is enabled, report data will be allocated in custom (separate)
  395. //     heap instead of standard application heap. This optimize memory
  396. //     using (fragmentation) for big amount of data.
  397. //     For custom heap used for classes derived from CXTPHeapObjectT template,
  398. //     like CXTPReportRecord, CXTPReportRecordItem, CXTPReportRow and so others.
  399. //     This template just overrides operators new and delete.
  400. //     <P>It must be called on initialization before any allocations of classes
  401. //     which use custom heap. OnInitInstance is a fine place for this.
  402. // Returns:
  403. //     TRUE if custom heap feature is enabled for all report allocators,
  404. //     FALSE otherwise.
  405. //-------------------------------------------------------------------------
  406. static BOOL AFX_CDECL UseReportCustomHeap();
  407. //-------------------------------------------------------------------------
  408. // Summary:
  409. //     Call this function to enable batch allocation feature for report rows.
  410. //
  411. // Remarks:
  412. //      Batch allocation means that memory allocated not for one object only,
  413. //      but for many objects at one time (for 1024 objects by default).
  414. //      Next allocations take memory from this big block. New blocks allocated
  415. //      when necessary. This increase performance and reduce heap fragmentation.
  416. //      Batch allocation mechanism responsible for allocation/deallocation
  417. //      blocks of memory from heap and internally organize free/busy lists of
  418. //      memory pieces. When object deleted, its memory stored in free list and
  419. //      used for new objects.
  420. //      When all memory pieces from block free, it may be deallocated from
  421. //      heap automatically (this depends on options in _TBatchAllocData)
  422. //      or by FreeExtraData call,
  423. //      <P>It must be called on initialization before any allocations of classes
  424. //      which use batch allocation. OnInitInstance is a fine place for this.
  425. // Returns:
  426. //     TRUE if batch allocation feature is enabled for report rows,
  427. //     FALSE otherwise.
  428. //-------------------------------------------------------------------------
  429. static BOOL AFX_CDECL UseRowBatchAllocation();
  430. //-----------------------------------------------------------------------
  431. // Summary:
  432. //      This member function when rows batch allocation enabled to check
  433. //      all allocated blocks and deallocate which are completely free.
  434. // See Also:
  435. //      UseRowBatchAllocation, CXTPBatchAllocObjT
  436. //-----------------------------------------------------------------------
  437. static void AFX_CDECL FreeRowBatchExtraData();
  438. public:
  439. //-----------------------------------------------------------------------
  440. // Summary:
  441. //     Constructs a CXTPReportControl object.
  442. // Remarks:
  443. //     You construct a CXTPReportControl object in two steps.
  444. //     First, call the constructor CXTPReportControl and then call
  445. //     Create method, which initializes the window.
  446. //
  447. // Example:
  448. // <code>
  449. // // Declare a local CXTPReportControl object.
  450. // CXTPReportControl myReport;
  451. //
  452. // // Declare a dynamic CXTPReportControl object.
  453. // CXTPReportControl* pMyReport = new CXTPReportControl();
  454. //
  455. // if (!myReport.Create(WS_CHILD | WS_TABSTOP | WS_VISIBLE | WM_VSCROLL, CRect(0, 0, 0, 0), this, ID_REPORT_CONTROL))
  456. // {
  457. //     TRACE(_T("Failed to create view windown"));
  458. // }
  459. // </code>
  460. // See Also: Create
  461. //-----------------------------------------------------------------------
  462. CXTPReportControl();
  463. //-----------------------------------------------------------------------
  464. // Summary:
  465. //     Destroys a CXTPReportControl object, handles cleanup and deallocation.
  466. //-----------------------------------------------------------------------
  467. virtual ~CXTPReportControl();
  468. //-----------------------------------------------------------------------
  469. // Summary:
  470. //     This method is called to create a report control.
  471. // Parameters:
  472. //     dwStyle     - Specifies the window style attributes.
  473. //                   It could be a combination of standard window styles.
  474. //     rect        - The size and position of the window, in client
  475. //                   coordinates of pParentWnd.
  476. //     pParentWnd  - Specifies the report control parent window.
  477. //     nID         - Specifies the report control identifier.
  478. //     pContext    - The create context of the window.
  479. // Remarks:
  480. //     You construct a CXTPReportControl object in two steps.
  481. //     First, call the constructor CXTPReportControl and then call
  482. //     Create method, which initializes the window.
  483. // Example:
  484. //     See the example for CXTPReportControl::CXTPReportControl
  485. // Returns:
  486. //     Nonzero if successful; otherwise 0.
  487. // See Also: CXTPReportControl::CXTPReportControl
  488. //-----------------------------------------------------------------------
  489. BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  490. //-----------------------------------------------------------------------
  491. // Summary:
  492. //     (Re)Stores control configuration to/from the provided archive stream.
  493. // Parameters:
  494. //     ar - Archive stream for serializing.
  495. //-----------------------------------------------------------------------
  496. virtual void SerializeState(CArchive& ar);
  497. //-----------------------------------------------------------------------
  498. // Summary:
  499. //     Reads or writes configuration to/from the provided data source.
  500. // Parameters:
  501. //     pPX - A CXTPPropExchange object to serialize to or from.
  502. //----------------------------------------------------------------------
  503. virtual void DoPropExchange(CXTPPropExchange* pPX);
  504. public:
  505. //-----------------------------------------------------------------------
  506. // Summary:
  507. //     Adds new column to the end of the columns array.
  508. // Parameters:
  509. //     pColumn - Pointer to the specified column class object.
  510. // Remarks:
  511. //     Call this member function if you want to add a new column
  512. //     to a report control. It will be added to the end of the columns array.
  513. // Example:
  514. // <code>
  515. // // this function adds a column with "Subject" caption and 250 pixels initial width
  516. // void AddSubjectColumn(CXTPReportControl* pReportCtrl)
  517. // {
  518. //     pReportCtrl->AddColumn(new CXTPReportColumn(1, _T("Subject"), 250));
  519. // }
  520. // </code>
  521. // See Also: CXTPReportColumn overview
  522. //-----------------------------------------------------------------------
  523. CXTPReportColumn* AddColumn(CXTPReportColumn* pColumn);
  524. //-----------------------------------------------------------------------
  525. // Summary:
  526. //     Adds record to records collection.
  527. // Parameters:
  528. //     pRecord - Record data with items.
  529. // Remarks:
  530. //     Call this member function if you want to add a data record to the
  531. //     report control's internal storage.
  532. // Example:
  533. // <code>
  534. // // this function adds 2 empty records to a report control
  535. // void Add2Empties(CXTPReportControl* pReportCtrl)
  536. // {
  537. //     pReportCtrl->AddRecord(new CXTPReportRecord());
  538. //     pReportCtrl->AddRecord(new CXTPReportRecord());
  539. // }
  540. // </code>
  541. // Returns:
  542. //     Pointer to the recently added record object.
  543. // See Also: CXTPReportRecord overview, GetRecords
  544. //-----------------------------------------------------------------------
  545. virtual CXTPReportRecord* AddRecord(CXTPReportRecord* pRecord);
  546. //-----------------------------------------------------------------------
  547. // Summary:
  548. //     Adds record to records collection and associates a row with it.
  549. // Parameters:
  550. //     pRecord - Record data with items.
  551. //     pParentRecord - Parent record.
  552. //     nChildIndex - child index a record to be inserted at.
  553. // Remarks:
  554. //     Call this member function if you want to add a data record to the
  555. //     report control's internal storage and associate a row with it.
  556. // Example:
  557. // <code>
  558. // // this function adds 2 empty records to a report control
  559. // void Add2Empties(CXTPReportControl* pReportCtrl)
  560. // {
  561. //     pReportCtrl->AddRecordEx(new CXTPReportRecord());
  562. //     pReportCtrl->AddRecordEx(new CXTPReportRecord());
  563. // }
  564. // </code>
  565. // See Also: CXTPReportRecord overview, GetRecords, RemoveRecordEx, RemoveRowEx
  566. //           UpdateRecord
  567. //-----------------------------------------------------------------------
  568. virtual void AddRecordEx(CXTPReportRecord* pRecord, CXTPReportRecord* pParentRecord = NULL, int nChildIndex = -1);
  569. //-----------------------------------------------------------------------
  570. // Summary:
  571. //     Removes record with data and associated row. It also remove all
  572. //     children records and their rows.
  573. // Parameters:
  574. //     pRecord       - Pointer to a record object.
  575. //     bAdjustLayout - If TRUE AdjustLayout will be called.
  576. //     bRemoveFromParent - If TRUE the record is to be removed from the parent.
  577. // Remarks:
  578. //     Call this member function if you want to remove record on the fly,
  579. //     without Populate call.
  580. // Returns:
  581. //     TRUE if operation succeeded, FALSE otherwise.
  582. // See Also: RemoveRowEx, AddRecordEx, CXTPReportRecords::RemoveRecord,
  583. //           UpdateRecord
  584. //-----------------------------------------------------------------------
  585. virtual BOOL RemoveRecordEx(CXTPReportRecord* pRecord, BOOL bAdjustLayout = TRUE, BOOL bRemoveFromParent = TRUE);
  586. //-----------------------------------------------------------------------
  587. // Summary:
  588. //     Removes row and associated record. It also remove all
  589. //     children records and rows.
  590. // Parameters:
  591. //     pRow          - Pointer to a row object.
  592. //     bAdjustLayout - If TRUE AdjustLayout will be called.
  593. // Remarks:
  594. //     Call this member function if you want to remove row and record on the fly,
  595. //     without Populate call.
  596. // Returns:
  597. //     TRUE if operation succeeded, FALSE otherwise.
  598. // See Also: RemoveRecordEx, AddRecordEx, CXTPReportRecords::RemoveRecord,
  599. //           UpdateRecord
  600. //-----------------------------------------------------------------------
  601. virtual BOOL RemoveRowEx(CXTPReportRow* pRow, BOOL bAdjustLayout = TRUE);
  602. //-----------------------------------------------------------------------
  603. // Summary:
  604. //     Updates record.
  605. // Parameters:
  606. //     pRecord - Record data with items.
  607. //     bUpdateChildren - If TRUE the children will be updated as well.
  608. // Remarks:
  609. //     Call this member function if you modified a record and want it
  610. //     to be updated accordingly to the current grouping and sorting.
  611. // See Also: CXTPReportRecord overview, GetRecords
  612. //-----------------------------------------------------------------------
  613. virtual void UpdateRecord(CXTPReportRecord* pRecord, BOOL bUpdateChildren);
  614. //-----------------------------------------------------------------------
  615. // Summary:
  616. //     Prevents the control from redrawing until the EndUpdate
  617. //     method is called.
  618. // Remarks:
  619. //     If you want to add items one at a time using the AddRecord method,
  620. //     or to make some another operations in a single sequence,
  621. //     you can use the BeginUpdate method to prevent the control
  622. //     from repainting the CXTPReportControl each time an item is added.
  623. //     Once you have completed the task of adding items to the control,
  624. //     call the EndUpdate method to enable the CXTPReportControl to repaint.
  625. //     This way of adding items can prevent flickered drawing of
  626. //     the CXTPReportControl when a large number of items are being
  627. //     added to the control.
  628. // Example:
  629. // <code>
  630. // // This function collapses all rows for the specified report control
  631. // void CollapseAll(CXTPReportControl* pReportCtrl)
  632. // {
  633. //     pReportCtrl->BeginUpdate();
  634. //     for (int i = pReportCtrl->GetRows()->GetCount() - 1; i >= 0; i --)
  635. //         pReportCtrl->GetRows()->GetAt(i)->SetExpanded(FALSE);
  636. //
  637. //     pReportCtrl->EndUpdate();
  638. // }
  639. // </code>
  640. // See Also: EndUpdate, RedrawControl, AddRecord
  641. //-----------------------------------------------------------------------
  642. void BeginUpdate();
  643. //-----------------------------------------------------------------------
  644. // Summary:
  645. //     This method deletes all rows and records from Report Control.
  646. // Parameters:
  647. //     bUpdateControl - Set TRUE to redraw control, otherwise FALSE.
  648. //-----------------------------------------------------------------------
  649. void ResetContent(BOOL bUpdateControl = TRUE);
  650. //-----------------------------------------------------------------------
  651. // Summary:
  652. //     Resumes drawing of the report control after drawing is
  653. //     suspended by the BeginUpdate method.
  654. // Remarks:
  655. //     If you want to add items one at a time using the AddRecord method,
  656. //     or to make some other operations in a single sequence,
  657. //     you can use the BeginUpdate method to prevent the control
  658. //     from repainting the CXTPReportControl each time an item is added.
  659. //     Once you have completed the task of adding items to the control,
  660. //     call the EndUpdate method to enable the CXTPReportControl to repaint.
  661. //     This way of adding items can prevent flickered drawing of
  662. //     the CXTPReportControl when a large number of items are being
  663. //     added to the control.
  664. // Example:  See example for CXTPReportControl::BeginUpdate method.
  665. // See Also: BeginUpdate, RedrawControl
  666. //-----------------------------------------------------------------------
  667. void EndUpdate();
  668. //-----------------------------------------------------------------------
  669. // Summary:
  670. //     Returns TRUE if control in Update state.
  671. //-----------------------------------------------------------------------
  672. int GetLockUpdateCount() const;
  673. //-----------------------------------------------------------------------
  674. // Summary:
  675. //     Initiates report control redrawing.
  676. // Remarks:
  677. //     Call this member function if you want to initialize the
  678. //     report control redrawing. The control will be redrawn taking
  679. //     into account its latest state.
  680. // See Also: BeginUpdate, EndUpdate
  681. //-----------------------------------------------------------------------
  682. void RedrawControl();
  683. //-----------------------------------------------------------------------
  684. // Summary:
  685. //     Call this method to get tooltip context pointer.
  686. //-----------------------------------------------------------------------
  687. CXTPToolTipContext* GetToolTipContext() const;
  688. //-----------------------------------------------------------------------
  689. // Summary:
  690. //     Call this method to enable built in drag and drop operations
  691. // Parameters:
  692. //     lpszClipboardFormat - Name of clipboard format to be used for Report Control
  693. //     dwFlags - Combination of XTPReportDragDrop flags, can be one or more of following:
  694. //        <b>xtpReportAllowDrop</b> - Allow Drop records to report
  695. //        <b>xtpReportAllowDragCopy</b> - Allow copy records from report
  696. //        <b>xtpReportAllowDragMove</b> - Allow move records from report
  697. //        <b>xtpReportAllowDrag</b> - Allow copy and move records from report
  698. // Returns:
  699. //     Clipboard format that will be used with Report Control
  700. // See Also: XTPReportDragDrop
  701. //-----------------------------------------------------------------------
  702. CLIPFORMAT EnableDragDrop(LPCTSTR lpszClipboardFormat, DWORD dwFlags);
  703. //-----------------------------------------------------------------------
  704. // Summary:
  705. //     Set or clear grid drawing style.
  706. // Parameters:
  707. //     bVertical - TRUE for changing vertical grid style,
  708. //                 FALSE for changing horizontal grid style.
  709. //     gridStyle - New grid style. Can be any of the values listed in the Remarks section.
  710. // Remarks:
  711. //     Call this member function if you want to change a style
  712. //     of report grid lines.
  713. //
  714. //     Possible grid line styles are the following:
  715. //     * <b>xtpReportGridNoLines</b>  Empty line
  716. //     * <b>xtpReportGridSmallDots</b> Line is drawn with small dots
  717. //     * <b>xtpReportGridLargeDots</b> Line is drawn with large dots
  718. //     * <b>xtpReportGridDashes</b> Line is drawn with dashes
  719. //     * <b>xtpReportGridSolid</b> Draws solid line
  720. //
  721. // See Also: XTPReportGridStyle overview, GetGridStyle, SetGridColor
  722. //-----------------------------------------------------------------------
  723. void SetGridStyle(BOOL bVertical, XTPReportGridStyle gridStyle);
  724. //-----------------------------------------------------------------------
  725. // Summary:
  726. //     Returns current grid drawing mode.
  727. // Parameters:
  728. //     bVertical - TRUE for vertical grid style,
  729. //                 FALSE for horizontal grid style.
  730. // Remarks:
  731. //     Call this member function if you want to retrieve current
  732. //     grid lines drawing style for the report control.
  733. // Returns:
  734. //     Current grid drawing style.
  735. // See Also: XTPReportGridStyle overview, SetGridStyle, SetGridColor
  736. //-----------------------------------------------------------------------
  737. XTPReportGridStyle GetGridStyle(BOOL bVertical) const;
  738. //-----------------------------------------------------------------------
  739. // Summary:
  740. //     Change color of GridLines.
  741. // Parameters:
  742. //     clrGridLine - New Grid Lines color.
  743. // Remarks:
  744. //     Call this member function if you want to change a color of
  745. //     report control grid lines.
  746. // Returns:
  747. //     Old Grid Lines color.
  748. // See Also: SetGridStyle, GetGridStyle
  749. //-----------------------------------------------------------------------
  750. COLORREF SetGridColor(COLORREF clrGridLine);
  751. //-----------------------------------------------------------------------
  752. // Summary:
  753. //     Returns the collection of the data records.
  754. // Returns:
  755. //     The data records collection.
  756. // Remarks:
  757. //     Call this member function if you want to retrieve an access
  758. //     to the collection of report records. You may then perform
  759. //     standard operations on the collection like adding, removing, etc.
  760. // See Also: CXTPReportRecords overview, AddRecord
  761. //-----------------------------------------------------------------------
  762. CXTPReportRecords* GetRecords() const;
  763. //-----------------------------------------------------------------------
  764. // Summary:
  765. //     Returns the collection of the report rows
  766. // Remarks:
  767. //     Use this member function to retrieve an access to the collection
  768. //     of report rows, representing current control view.
  769. //
  770. //     Note that rows collection could be rebuilt automatically
  771. //     on executing Populate method.
  772. // Returns:
  773. //     The report rows collection.
  774. // Example:
  775. //     See example for CXTPReportControl::BeginUpdate method.
  776. // See Also: CXTPReportRows overview, Populate
  777. //-----------------------------------------------------------------------
  778. CXTPReportRows* GetRows() const;
  779. //-----------------------------------------------------------------------
  780. // Summary:
  781. //     Interface for accessing list columns.
  782. // Remarks:
  783. //     Use this member function to retrieve an access to the collection
  784. //     of report columns.
  785. // Returns:
  786. //     The report Columns collection.
  787. // Example:
  788. // <code>
  789. // // this function adds a column with "Subject" caption and 250 pixels initial width
  790. // void AddSubjectColumn(CXTPReportControl* pReportCtrl)
  791. // {
  792. //     pReportCtrl->GetColumns()->Add(new CXTPReportColumn(1, _T("Subject"), 250));
  793. // }
  794. // </code>
  795. // See Also: CXTPReportColumns overview
  796. //-----------------------------------------------------------------------
  797. CXTPReportColumns* GetColumns() const;
  798. //-----------------------------------------------------------------------
  799. // Summary:
  800. //     Returns the currently used control's Paint Manager.
  801. // Remarks:
  802. //     Call this member function to get the paint manager object used
  803. //     for drawing a report control window.
  804. // Returns:
  805. //     Pointer to the paint manager object.
  806. // See Also: CXTPReportPaintManager overview
  807. //-----------------------------------------------------------------------
  808. CXTPReportPaintManager* GetPaintManager() const;
  809. //-----------------------------------------------------------------------
  810. // Summary:
  811. //     Call this method to set custom paint manager.
  812. // Parameters:
  813. //     pPaintManager - A pointer to the custom paint manager.
  814. //-----------------------------------------------------------------------
  815. void SetPaintManager(CXTPReportPaintManager* pPaintManager);
  816. //-----------------------------------------------------------------------
  817. // Summary:
  818. //     Returns the control's Navigator.
  819. // Remarks:
  820. //     Call this member function to get the navigator object used
  821. //     for cell navigation.
  822. // Returns:
  823. //     Pointer to the navigator object.
  824. // See Also: CXTPReportNavigator overview
  825. //-----------------------------------------------------------------------
  826. CXTPReportNavigator* GetNavigator() const;
  827. //-----------------------------------------------------------------------
  828. // Summary:
  829. //     Performs control population, creating view from the data.
  830. // Remarks:
  831. //     Call this member function to populate control's Rows collection
  832. //     with the data containing in Records collection.
  833. //     It automatically creates Tree View references if necessary
  834. //     (for example, in Grouping mode).
  835. //     , it is the main function which should be called for
  836. //     (re)populating all data changes that you have made into the
  837. //     Records collection.
  838. // See Also: CXTPReportPaintManager overview
  839. //-----------------------------------------------------------------------
  840. virtual void Populate();
  841. //-----------------------------------------------------------------------
  842. // Summary:
  843. //     Performs control's header rows population, creating view from the data.
  844. // Remarks:
  845. //     Call this member function to populate control's header rows collection
  846. //     with the data containing in HeaderRecords collection. Useful when main
  847. //     rows are controlled through AddRecordEx/RemoveRecordEx/UpdateRecord
  848. //     methods.
  849. // See Also: Populate, PopulateFooterRows, AddRecordEx, RemoveRecordEx, UpdateRecord
  850. //-----------------------------------------------------------------------
  851. virtual void PopulateHeaderRows();
  852. //-----------------------------------------------------------------------
  853. // Summary:
  854. //     Performs control's footer rows population, creating view from the data.
  855. // Remarks:
  856. //     Call this member function to populate control's footer rows collection
  857. //     with the data containing in FooterRecords collection. Useful when main
  858. //     rows are controlled through AddRecordEx/RemoveRecordEx/UpdateRecord
  859. //     methods.
  860. // See Also: Populate, PopulateHeaderRows, AddRecordEx, RemoveRecordEx, UpdateRecord
  861. //-----------------------------------------------------------------------
  862. virtual void PopulateFooterRows();
  863. //-----------------------------------------------------------------------
  864. // Summary:
  865. //     Ensures that a report control row is at least partially visible.
  866. // Parameters:
  867. //     pCheckRow - A pointer to the row that is to be visible.
  868. // Remarks:
  869. //     Ensures that a report row item is at least partially visible.
  870. //     The list view control is scrolled if necessary.
  871. // See Also: MoveDown, MoveUp, MovePageDown, MovePageUp, MoveFirst, MoveLast
  872. //-----------------------------------------------------------------------
  873. void EnsureVisible(CXTPReportRow* pCheckRow);
  874. //-----------------------------------------------------------------------
  875. // Summary:
  876. //     Ensures that a report control column is at least partially visible.
  877. // Parameters:
  878. //     pCheckColumn - A pointer to the column that is to be visible.
  879. // Remarks:
  880. //     Ensures that a report column item is at least partially visible.
  881. //     The list view control is scrolled if necessary.
  882. // See Also: MoveRight, MoveLeft, MoveToColumn, MoveFirstColumn, MoveLastColumn
  883. //-----------------------------------------------------------------------
  884. void EnsureVisible(CXTPReportColumn* pCheckColumn);
  885. //-----------------------------------------------------------------------
  886. // Summary:
  887. //     Determines which report row item, if any, is at a specified position.
  888. // Parameters:
  889. //     pt - A point to test.
  890. // Returns:
  891. //     The row item at the position specified by pt, if any,
  892. //     or NULL otherwise.
  893. //-----------------------------------------------------------------------
  894. CXTPReportRow* HitTest(CPoint pt) const;
  895. //-----------------------------------------------------------------------
  896. // Summary:
  897. //     Returns the collection of the selected rows.
  898. // Remarks:
  899. //     Use this member function to retrieve an access to the collection
  900. //     of currently selected report rows.
  901. // Returns:
  902. //     The selected rows collection.
  903. // See Also: CXTPReportSelectedRows overview.
  904. //-----------------------------------------------------------------------
  905. CXTPReportSelectedRows* GetSelectedRows() const;
  906. //-----------------------------------------------------------------------
  907. // Summary:
  908. //     Retrieves the index of the row that currently has focus
  909. //     in the report control's view.
  910. // Returns:
  911. //     Returns pointer to the focused row, or NULL otherwise.
  912. // See Also: SetFocusedRow
  913. //-----------------------------------------------------------------------
  914. CXTPReportRow* GetFocusedRow() const;
  915. //-----------------------------------------------------------------------
  916. // Summary:
  917. //     Makes the provided row as currently focused.
  918. // Parameters:
  919. //     pRow             - The row to set as focused to.
  920. //     bIgnoreSelection - TRUE if select new focused row.
  921. //     bSelectBlock     - TRUE when selecting rows up to new focused row,
  922. //                        FALSE otherwise.
  923. // Returns:
  924. //     TRUE if specified row has been focused, FALSE otherwise.
  925. // See Also: GetFocusedRow
  926. //-----------------------------------------------------------------------
  927. BOOL SetFocusedRow(CXTPReportRow* pRow, BOOL bIgnoreSelection = FALSE);
  928. BOOL SetFocusedRow(CXTPReportRow* pRow, BOOL bSelectBlock, BOOL bIgnoreSelection);// <COMBINE CXTPReportControl::SetFocusedRow@CXTPReportRow*@BOOL>
  929. //-----------------------------------------------------------------------
  930. // Summary:
  931. //     Returns rows from the visible report area.
  932. // Parameters:
  933. //     nStartRow - Row index to start calculating from.
  934. //     bMoveDown - Rows moving direction.
  935. // Remarks:
  936. //     Call this member function if you want to calculate the amount
  937. //     of currently visible rows between nStartRow and the top/bottom
  938. //     of the current view.
  939. // Returns:
  940. //     Visible row index starting from.
  941. // See Also: MovePageDown, MovePageUp
  942. //-----------------------------------------------------------------------
  943. int GetReportAreaRows(int nStartRow, BOOL bMoveDown);
  944. //-----------------------------------------------------------------------
  945. // Summary:
  946. //     Force provided row to the top.
  947. // Parameters:
  948. //     nIndex - An index of the row to force.
  949. // Remarks:
  950. //     The system scrolls the report control view until either the
  951. //     item specified by nIndex appears at the top of the view
  952. //     the maximum scroll range has been reached.
  953. // See Also: GetReportAreaRows, EnsureVisible
  954. //-----------------------------------------------------------------------
  955. void SetTopRow(int nIndex);
  956. //-----------------------------------------------------------------------
  957. // Summary:
  958. //     Call this method to retrieve top row index.
  959. // Returns:
  960. //     Top row index.
  961. // See Also: SetTopRow
  962. //-----------------------------------------------------------------------
  963. long GetTopRowIndex() const;
  964. //-----------------------------------------------------------------------
  965. // Summary:
  966. //     Call this method to set horizontal scroll position.
  967. // Parameters:
  968. //     nOffset - Horizontal scroll position.
  969. // Remarks:
  970. //     This method takes effect only if auto column sizing is disable
  971. // See Also: CXTPReportHeader::SetAutoColumnSizing
  972. //-----------------------------------------------------------------------
  973. void SetLeftOffset(int nOffset);
  974. //-----------------------------------------------------------------------
  975. // Summary:
  976. //     Call this member to set right-to-left mode.
  977. // Parameters:
  978. //     bRightToLeft - TRUE to set right-to-left reading-order properties.
  979. //-----------------------------------------------------------------------
  980. void SetLayoutRTL(BOOL bRightToLeft);
  981. //-----------------------------------------------------------------------
  982. // Summary:
  983. //     Call this member to get right-to-left mode.
  984. // Returns:
  985. //     TRUE if layout is RTL, FALSE - otherwise.
  986. //-----------------------------------------------------------------------
  987. BOOL IsLayoutRTL();
  988. //-----------------------------------------------------------------------
  989. // Summary:
  990. //     Enable/disable preview mode for the control.
  991. // Parameters:
  992. //     bIsPreviewMode - TRUE for enabling preview mode,
  993. //                      FALSE for disabling.
  994. // Remarks:
  995. //     Call this member function if you want to hide or show the
  996. //     row preview item.
  997. // See Also: IsPreviewMode
  998. //-----------------------------------------------------------------------
  999. void EnablePreviewMode(BOOL bIsPreviewMode);
  1000. //-----------------------------------------------------------------------
  1001. // Summary:
  1002. //     Returns current preview mode.
  1003. // Remarks:
  1004. //     Call this member function if you want to determine whether the
  1005. //     row preview item is shown or not.
  1006. // Returns:
  1007. //     TRUE when preview mode is enabled,
  1008. //     FALSE when preview mode is disabled.
  1009. // See Also: EnablePreviewMode
  1010. //-----------------------------------------------------------------------
  1011. BOOL IsPreviewMode() const;
  1012. //-----------------------------------------------------------------------
  1013. // Summary:
  1014. //     Shows/hides Group By control area.
  1015. // Parameters:
  1016. //     bEnable - TRUE for showing GroupBy area,
  1017. //               FALSE for hiding GroupBy area.
  1018. // Remarks:
  1019. //     Call this member function if you want to hide or show
  1020. //     Group By area in the report header.
  1021. // See Also: IsGroupByVisible
  1022. //-----------------------------------------------------------------------
  1023. void ShowGroupBy(BOOL bEnable = TRUE);
  1024. //-----------------------------------------------------------------------
  1025. // Summary:
  1026. //     Returns current Group By area mode.
  1027. // Remarks:
  1028. //     Call this member function if you want to determine whether
  1029. //     Group By area in the report header is visible or not.
  1030. // Returns:
  1031. //     TRUE when Group By area is shown on the control,
  1032. //     when Group By area is hidden.
  1033. // See Also: ShowGroupBy
  1034. //-----------------------------------------------------------------------
  1035. BOOL IsGroupByVisible() const;
  1036. //-----------------------------------------------------------------------
  1037. // Summary:
  1038. //     Call this member to hide/show column headers.
  1039. // Parameters:
  1040. //     bShow - TRUE is column headers will be displayed, FALSE to hide column headers.
  1041. // See Also: IsHeaderVisible, ShowFooter
  1042. //-----------------------------------------------------------------------
  1043. void ShowHeader(BOOL bShow = TRUE);
  1044. //-----------------------------------------------------------------------
  1045. // Summary:
  1046. //     Call this member to determine is column headers are currently visible.
  1047. // Returns:
  1048. //     TRUE is column headers are visible, FALSE is column headers are hidden.
  1049. // See Also: ShowHeader
  1050. //-----------------------------------------------------------------------
  1051. BOOL IsHeaderVisible() const;
  1052. //-----------------------------------------------------------------------
  1053. // Summary:
  1054. //     Call this member to hide/show report footers.
  1055. // Parameters:
  1056. //     bShow - TRUE is column footers will be displayed, FALSE to hide column footers.
  1057. // See Also: IsFooterVisible, ShowHeader
  1058. //-----------------------------------------------------------------------
  1059. void ShowFooter(BOOL bShow = TRUE);
  1060. //-----------------------------------------------------------------------
  1061. // Summary:
  1062. //     Call this member to determine is column footers are currently visible.
  1063. // Returns:
  1064. //     TRUE is column footers are visible, FALSE is column footers are hidden.
  1065. // See Also: ShowHeader
  1066. //-----------------------------------------------------------------------
  1067. BOOL IsFooterVisible() const;
  1068. //-----------------------------------------------------------------------
  1069. // Summary:
  1070. //     Enable/disable group shade.
  1071. // Parameters:
  1072. //     bEnable - TRUE for enabling group items shade,
  1073. //               FALSE for disabling.
  1074. // Remarks:
  1075. //     Call this member function if you want to hide or show
  1076. //     group rows' headings.
  1077. // See Also:
  1078. //     IsShadeGroupHeadingsEnabled, IsGroupRowsBold, SetGroupRowsBold,
  1079. //     GetItemMetrics
  1080. //-----------------------------------------------------------------------
  1081. void ShadeGroupHeadings(BOOL bEnable = TRUE);
  1082. //-----------------------------------------------------------------------
  1083. // Summary:
  1084. //     Returns current group shade mode.
  1085. // Remarks:
  1086. //     Call this member function if you want to determine whether
  1087. //     group rows' headings are enabled or not.
  1088. // Returns:
  1089. //     TRUE when group items shading is enabled,
  1090. //     FALSE when it is disabled.
  1091. // See Also:
  1092. //     ShadeGroupHeadings, IsGroupRowsBold, SetGroupRowsBold,
  1093. //     GetItemMetrics
  1094. //-----------------------------------------------------------------------
  1095. BOOL IsShadeGroupHeadingsEnabled() const;
  1096. //-----------------------------------------------------------------------
  1097. // Summary:
  1098. //     Set group rows text style: bold or normal.
  1099. // Parameters:
  1100. //     bBold - TRUE for bold text style, FALSE for normal.
  1101. // Remarks:
  1102. //     Call this member function if you want to change group rows
  1103. //     bold text style.
  1104. // See Also:
  1105. //     IsGroupRowsBold, ShadeGroupHeadings, IsShadeGroupHeadingsEnabled,
  1106. //     GetItemMetrics
  1107. //-----------------------------------------------------------------------
  1108. void SetGroupRowsBold(BOOL bBold = TRUE);
  1109. //-----------------------------------------------------------------------
  1110. // Summary:
  1111. //     Returns current group rows text bold style.
  1112. // Remarks:
  1113. //     Call this member function if you want to determine whether
  1114. //     group rows' text are bold or normal.
  1115. // Returns:
  1116. //     TRUE when group text are bold,
  1117. //     FALSE when it is normal.
  1118. // See Also:
  1119. //     SetGroupRowsBold, ShadeGroupHeadings, IsShadeGroupHeadingsEnabled,
  1120. //     GetItemMetrics
  1121. //-----------------------------------------------------------------------
  1122. BOOL IsGroupRowsBold() const;
  1123. //-----------------------------------------------------------------------
  1124. // Summary:
  1125. //     Call this method to retrieve count of none-scrolled columns
  1126. //     at the left side.
  1127. // Returns:
  1128. //     Count of none-scrolled columns
  1129. //     at the left side.
  1130. //-----------------------------------------------------------------------
  1131. int GetFreezeColumnsCount() const;
  1132. //-----------------------------------------------------------------------
  1133. // Summary:
  1134. //     Call this method to retrieve count of the columns at the left side
  1135. // where reordering is disabled.
  1136. // Returns:
  1137. //     Count of drop-disable columns
  1138. //     at the left side.
  1139. //-----------------------------------------------------------------------
  1140. int GetDisableReorderColumnsCount() const;
  1141. //-----------------------------------------------------------------------
  1142. // Summary:
  1143. //     Call this method to set count of none-scrolled columns
  1144. //     at the left side.
  1145. // Parameters:
  1146. //     nCount - Count of none-scrolled columns at the left side.
  1147. //-----------------------------------------------------------------------
  1148. void SetFreezeColumnsCount(int nCount);
  1149. //-----------------------------------------------------------------------
  1150. // Summary:
  1151. //     Call this method to set count of the columns at the left side
  1152. // where reordering is disabled.
  1153. // Parameters:
  1154. //     nCount - Count of reorder-disabled columns at the left side.
  1155. //-----------------------------------------------------------------------
  1156. void SetDisableReorderColumnsCount(int nCount);
  1157. //-----------------------------------------------------------------------
  1158. // Summary:
  1159. //      Get horizontal scrolling mode.
  1160. // Returns:
  1161. //      Returns TRUE if horizontal scrolling is by full columns,
  1162. //      otherwise horizontal scrolling is by pixels.
  1163. // See Also: SetFullColumnScrolling
  1164. //-----------------------------------------------------------------------
  1165. BOOL IsFullColumnScrolling() const;
  1166. //-----------------------------------------------------------------------
  1167. // Summary:
  1168. //      Set horizontal scrolling mode.
  1169. // Parameters:
  1170. //      bSet - If TRUE full columns scrolling mode is set,
  1171. //             if FALSE horizontal scrolling by pixels mode is set.
  1172. // See Also: IsFullColumnScrolling
  1173. //-----------------------------------------------------------------------
  1174. void SetFullColumnScrolling(BOOL bSet);
  1175. //-----------------------------------------------------------------------
  1176. // Summary:
  1177. //     Call this method to remove all items and column in specified position.
  1178. // Parameters:
  1179. //     nIndex - Index of item to remove.
  1180. //-----------------------------------------------------------------------
  1181. void ReleaseItem(int nIndex);
  1182. //-----------------------------------------------------------------------
  1183. // Summary:
  1184. //     Returns the collection of the header records.
  1185. // Returns:
  1186. //     The header records collection.
  1187. // Remarks:
  1188. //     Call this member function if you want to retrieve an access
  1189. //     to the collection of report header records. You may then perform
  1190. //     standard operations on the collection like adding, removing, etc.
  1191. // See Also: CXTPReportRecords overview, AddRecord
  1192. //-----------------------------------------------------------------------
  1193. CXTPReportRecords* GetHeaderRecords() const;
  1194. //-----------------------------------------------------------------------
  1195. // Summary:
  1196. //     Returns the collection of the footer records.
  1197. // Returns:
  1198. //     The footer records collection.
  1199. // Remarks:
  1200. //     Call this member function if you want to retrieve an access
  1201. //     to the collection of report footer records. You may then perform
  1202. //     standard operations on the collection like adding, removing, etc.
  1203. // See Also: CXTPReportRecords overview, AddRecord
  1204. //-----------------------------------------------------------------------
  1205. CXTPReportRecords* GetFooterRecords() const;
  1206. //-----------------------------------------------------------------------
  1207. // Summary:
  1208. //     Returns the collection of the report header rows
  1209. // Remarks:
  1210. //     Use this member function to retrieve an access to the collection
  1211. //     of report header rows, representing current control view.
  1212. //
  1213. //     Note that rows collection could be rebuilt automatically
  1214. //     on executing Populate method.
  1215. // Returns:
  1216. //     The report header rows collection.
  1217. // Example:
  1218. //
  1219. // See Also: CXTPReportRows overview, Populate
  1220. //-----------------------------------------------------------------------
  1221. CXTPReportRows* GetHeaderRows() const;
  1222. //-----------------------------------------------------------------------
  1223. // Summary:
  1224. //     Returns the collection of the report footer rows
  1225. // Remarks:
  1226. //     Use this member function to retrieve an access to the collection
  1227. //     of report footer rows.
  1228. //
  1229. //     Note that rows collection could be rebuilt automatically
  1230. //     on executing Populate method.
  1231. // Returns:
  1232. //     The report footer rows collection.
  1233. // Example:
  1234. //
  1235. // See Also: CXTPReportRows overview, Populate
  1236. //-----------------------------------------------------------------------
  1237. CXTPReportRows* GetFooterRows() const;
  1238. //-----------------------------------------------------------------------
  1239. // Summary:
  1240. //     Call this member to hide/show header records.
  1241. // Parameters:
  1242. //     bShow - TRUE is header records will be displayed, FALSE to hide header records.
  1243. // See Also: IsHeaderRowsVisible, ShowFooterRows
  1244. //-----------------------------------------------------------------------
  1245. void ShowHeaderRows(BOOL bShow = TRUE);
  1246. //-----------------------------------------------------------------------
  1247. // Summary:
  1248. //     Call this member to hide/show footer records.
  1249. // Parameters:
  1250. //     bShow - TRUE is footer records will be displayed, FALSE to hide footer records.
  1251. // See Also: IsFooterRowsVisible, ShowHeaderRows
  1252. //-----------------------------------------------------------------------
  1253. void ShowFooterRows(BOOL bShow = TRUE);
  1254. //-----------------------------------------------------------------------
  1255. // Summary:
  1256. //     Call this member to determine if header records are currently visible.
  1257. // Returns:
  1258. //     TRUE if header records are visible, FALSE if header records are hidden.
  1259. // See Also: ShowHeaderRows
  1260. //-----------------------------------------------------------------------
  1261. BOOL IsHeaderRowsVisible() const;
  1262. //-----------------------------------------------------------------------
  1263. // Summary:
  1264. //     Call this member to determine if footer records are currently visible.
  1265. // Returns:
  1266. //     TRUE if footer records are visible, FALSE if footer records are hidden.
  1267. // See Also: ShowFooterRows
  1268. //-----------------------------------------------------------------------
  1269. BOOL IsFooterRowsVisible() const;
  1270. //-----------------------------------------------------------------------
  1271. // Summary:
  1272. //     Call this member to pin footer records to the last body row.
  1273. //     By default, footer records are docked to the footer.
  1274. // Parameters:
  1275. //     bPin - TRUE is footer records will be displayed immediately after the body rows.
  1276. // See Also: IsFooterRowsVisible, ShowFooterRows
  1277. //-----------------------------------------------------------------------
  1278. void PinFooterRows(BOOL bPin = FALSE);
  1279. //-----------------------------------------------------------------------
  1280. // Summary:
  1281. //     Call this member to determine if footer records are pinned to the body rows.
  1282. // Returns:
  1283. //     TRUE if footer records are pinned to the body rows. FALSE if footer records are docked to the footer.
  1284. // See Also: PinFooterRows
  1285. //-----------------------------------------------------------------------
  1286. BOOL IsFooterRowsPinned() const;
  1287. public:
  1288. //-------------------------------------------------------------------------
  1289. // Summary:
  1290. //     Call this method to enable markup for tab captions
  1291. // Parameters:
  1292. //     bEnable - TRUE to enable markup
  1293. //-------------------------------------------------------------------------
  1294. void EnableMarkup(BOOL bEnable = TRUE);
  1295. //-------------------------------------------------------------------------
  1296. // Summary:
  1297. //     Returns markup context
  1298. //-------------------------------------------------------------------------
  1299. CXTPMarkupContext* GetMarkupContext() const;
  1300. public:
  1301. //-----------------------------------------------------------------------
  1302. // Summary:
  1303. //     Call this method to get a pointer to the image manager of Report Control.
  1304. // Returns:
  1305. //     Pointer to the image manager of Report Control.
  1306. // See Also: SetImageManager
  1307. //-----------------------------------------------------------------------
  1308. CXTPImageManager* GetImageManager() const;
  1309. //-----------------------------------------------------------------------
  1310. // Summary:
  1311. //     Call this method to set new image manager.
  1312. // Parameters:
  1313. //     pImageManager - Image manager to be set
  1314. // Example:
  1315. // <code>
  1316. // CXTPImageManager* pImageManager = new CXTPImageManager();
  1317. // pImageManager->SetIcons(IDR_MAINFRAME);
  1318. // m_wndReport.SetImageManager(pImageManager);
  1319. // </code>
  1320. // See Also: GetImageManager
  1321. //-----------------------------------------------------------------------
  1322. void SetImageManager(CXTPImageManager* pImageManager);
  1323. //-----------------------------------------------------------------------
  1324. // Summary:
  1325. //     Initiates ImageList of Paint Manager.
  1326. // Parameters:
  1327. //     pImageList - Image list.
  1328. // Remarks:
  1329. //     You use this function to set up your own ImageList
  1330. //     with set bitmaps that represent various states of rows
  1331. //     and depict any other information.
  1332. // Note:
  1333. //     Recommended to use SetImageManager/GetImageManager methods instead.
  1334. // Example:
  1335. // <code>
  1336. // CImageList listIcons;
  1337. // listIcons.Create(16, 16, ILC_COLOR24 | ILC_MASK, 0, 1));
  1338. // CBitmap bmp;
  1339. // // load bitmap by id
  1340. // bmp.LoadBitmap(IDB_BMREPORT);
  1341. // ilIcons.Add(&bmp, RGB(255, 0, 255));
  1342. // m_wndReport.SetImageList(&lIcons);
  1343. // </code>
  1344. // See Also: GetImageManager
  1345. //-----------------------------------------------------------------------
  1346. void SetImageList(CImageList* pImageList);
  1347. public:
  1348. //-----------------------------------------------------------------------
  1349. // Summary:
  1350. //     Returns a pointer to the associated report header object.
  1351. // Remarks:
  1352. //     Call this member function if you want to retrieve access
  1353. //     to the report header object properties and methods.
  1354. // Returns:
  1355. //     A pointer to the associated report header.
  1356. // See Also: CXTPReportHeader overview
  1357. //-----------------------------------------------------------------------
  1358. CXTPReportHeader* GetReportHeader() const;
  1359. //-----------------------------------------------------------------------
  1360. // Summary:
  1361. //     Call this member to change report header of Report Control
  1362. // Parameters:
  1363. //     pReportHeader - Report header to be set
  1364. // Example:
  1365. //     <code>m_wndReport.SetReportHeader(new CMyReportHeader());</code>
  1366. // See Also: CXTPReportHeader overview
  1367. //-----------------------------------------------------------------------
  1368. void SetReportHeader(CXTPReportHeader* pReportHeader);
  1369. //-----------------------------------------------------------------------
  1370. // Summary:
  1371. //     Returns indentation for the tree view row of the specified depth level.
  1372. // Parameters:
  1373. //     nLevel - Tree depth level.
  1374. // Remarks:
  1375. //     Calculates row indentation in pixels based on the provided
  1376. //     indentation level.
  1377. // Returns:
  1378. //     Row indentation in pixels.
  1379. // See Also: Populate
  1380. //-----------------------------------------------------------------------
  1381. int GetIndent(int nLevel) const;
  1382. //-----------------------------------------------------------------------
  1383. // Summary:
  1384. //     Notifies parent control of some event that has happened.
  1385. // Parameters:
  1386. //     pRow       - Specified row of event if used.
  1387. //     pItem      - Specified item of event if used.
  1388. //     pColumn    - Specified column of event if used.
  1389. //     nMessage   - A message to sent to parent window.
  1390. //     pPoint     - A point where the message was sent from in
  1391. //                        client coordinates.
  1392. //     nHyperlink - Hyperlink order number, where the message was sent
  1393. //                  from (-1 if message was not send from the hyperlink).
  1394. // Remarks:
  1395. //     Sends a message to the parent in the form of a WM_NOTIFY message
  1396. //     with a specific structure attached.
  1397. // Returns:
  1398. //     The result of the message processing;
  1399. //     its value depends on the message sent. (see CWnd::SendMessage)
  1400. // See Also: CXTPReportControl overview, SendNotifyMessage
  1401. //-----------------------------------------------------------------------
  1402. LRESULT SendMessageToParent(CXTPReportRow* pRow, CXTPReportRecordItem* pItem, CXTPReportColumn* pColumn, UINT nMessage, CPoint* pPoint, int nHyperlink = -1) const;
  1403. //-----------------------------------------------------------------------
  1404. // Summary:
  1405. //     Sends the specified message to the window.
  1406. // Parameters:
  1407. //     nMessage - The message to be sent.
  1408. //     pNMHDR - Notify header
  1409. // Returns:
  1410. //     Nonzero if successful; otherwise returns zero.
  1411. //-----------------------------------------------------------------------
  1412. LRESULT SendNotifyMessage(UINT nMessage, NMHDR* pNMHDR = NULL) const;
  1413. //-----------------------------------------------------------------------
  1414. // Summary:
  1415. //     Collapses all rows.
  1416. // Remarks:
  1417. //     The CollapseAll method collapses all the CXTPReportRow objects,
  1418. //     including all the child rows, that are in the report control.
  1419. // See Also: ExpandAll, CXTPReportRow::SetExpanded
  1420. //-----------------------------------------------------------------------
  1421. void CollapseAll();
  1422. //-----------------------------------------------------------------------
  1423. // Summary:
  1424. //     Expands all rows.
  1425. // Remarks:
  1426. //     The ExpandAll method expands all the CXTPReportRow objects,
  1427. //     including all the child rows, that are in the report control.
  1428. // See Also: CollapseAll, CXTPReportRow::SetExpanded
  1429. //-----------------------------------------------------------------------
  1430. void ExpandAll();
  1431. //-----------------------------------------------------------------------
  1432. // Summary:
  1433. //     Determines if the report allows multiple selections.
  1434. // Returns:
  1435. //     TRUE if the report allows multiple selections.
  1436. // See Also: SetMultipleSelection, GetSelectedRows
  1437. //-----------------------------------------------------------------------
  1438. BOOL IsMultipleSelection() const;
  1439. //-----------------------------------------------------------------------
  1440. // Summary:
  1441. //     Changes allowing multiple selections for the control.
  1442. // Parameters:
  1443. //     bMultipleSelection - TRUE for enabling, FALSE for disabling.
  1444. // Remarks:
  1445. //     Sets the flag that determines whether the report allows multiple selections.
  1446. // See Also: IsMultipleSelection, GetSelectedRows
  1447. //-----------------------------------------------------------------------
  1448. void SetMultipleSelection(BOOL bMultipleSelection);
  1449. //-----------------------------------------------------------------------
  1450. // Summary:
  1451. //     Determines if the multiple selection mode is enabled.
  1452. // Returns:
  1453. //     TRUE if the multiple selection mode is enabled.
  1454. // See Also: SetMultiSelectionMode
  1455. //-----------------------------------------------------------------------
  1456. BOOL IsMultiSelectionMode() const;
  1457. //-----------------------------------------------------------------------
  1458. // Summary:
  1459. //     Enables/disables the multiple selection mode for the control.
  1460. // Parameters:
  1461. //     bMultiSelectionMode - TRUE for enabling, FALSE for disabling.
  1462. // Remarks:
  1463. //     Sets the flag that determines whether the report is in multiple selection mode.
  1464. // See Also: IsMultiSelectionMode
  1465. //-----------------------------------------------------------------------
  1466. void SetMultiSelectionMode(BOOL bMultiSelectionMode);
  1467. //-----------------------------------------------------------------------
  1468. // Summary:
  1469. //     Enables/disables showing tooltips for the control.
  1470. // Parameters:
  1471. //     bEnable - TRUE for enabling, FALSE for disabling.
  1472. // Remarks:
  1473. //     Call this member function to enable or disable tooltips
  1474. //     show for the report control window.
  1475. //-----------------------------------------------------------------------
  1476. void EnableToolTips(BOOL bEnable);
  1477. //-----------------------------------------------------------------------
  1478. // Summary:
  1479. //     Call this member to specify whether groups are skipped when navigating
  1480. //     the ReportControl with the Up and Down keys.
  1481. // Parameters:
  1482. //     bSkipFocus - If TRUE, when navigating the rows with the Up and Down
  1483. //                  keys in the ReportControl the group headings will be skipped
  1484. //                  and the next non-group heading row will be selected.
  1485. //                  If FALSE, when navigating the rows with the Up and Down
  1486. //                  keys in the ReportControlall rows will be selected,
  1487. //                  even group headings.
  1488. //-----------------------------------------------------------------------
  1489. void SkipGroupsFocus(BOOL bSkipFocus);
  1490. //-----------------------------------------------------------------------
  1491. // Summary:
  1492. //     Call this member to determine is groups are skipped when navigating the
  1493. //     with the Up and Down arrow keys.
  1494. // Returns:
  1495. //     TRUE if groups are skipped, FALSE is groups receive focus when navigating
  1496. //     the report control with the Up and Down arrow keys.
  1497. //-----------------------------------------------------------------------
  1498. BOOL IsSkipGroupsFocusEnabled() const;
  1499. //-----------------------------------------------------------------------
  1500. // Summary:
  1501. //     Call this method to retrieve indentation of the header
  1502. // Returns:
  1503. //     Header indent.
  1504. //-----------------------------------------------------------------------
  1505. int GetHeaderIndent() const;
  1506. //-----------------------------------------------------------------------
  1507. // Summary:
  1508. //     Call this method to retrieve Report bounding rectangle.
  1509. // Returns:
  1510. //     Report bounding rectangle.
  1511. //-----------------------------------------------------------------------
  1512. CRect GetReportRectangle() const;
  1513. //-----------------------------------------------------------------------
  1514. // Summary:
  1515. //     Adjusts scroll bars depending on currently visible rows.
  1516. //-----------------------------------------------------------------------
  1517. virtual void AdjustScrollBars();
  1518. //-----------------------------------------------------------------------
  1519. // Summary:
  1520. //     Adjusts main control areas depending on current control size.
  1521. //-----------------------------------------------------------------------
  1522. void AdjustLayout();
  1523. public:
  1524. //-----------------------------------------------------------------------
  1525. // Summary:
  1526. //     Call this method to retrieve Header records bounding rectangle.
  1527. // Returns:
  1528. //     Header records bounding rectangle.
  1529. //-----------------------------------------------------------------------
  1530. CRect GetHeaderRowsRect() const;
  1531. //-----------------------------------------------------------------------
  1532. // Summary:
  1533. //     Call this method to retrieve footer rows bounding rectangle.
  1534. // Returns:
  1535. //     Footer rows bounding rectangle.
  1536. //-----------------------------------------------------------------------
  1537. CRect GetFooterRowsRect() const;
  1538. public:
  1539. //-----------------------------------------------------------------------
  1540. // Summary:
  1541. //     Call this member to retrieve a pointer to the currently selected column.
  1542. // Returns:
  1543. //     A pointer to the currently selected item.
  1544. //-----------------------------------------------------------------------
  1545. CXTPReportColumn* GetFocusedColumn() const;
  1546. //-----------------------------------------------------------------------
  1547. // Summary:
  1548. //     Call this member to set selected column.
  1549. // Parameters:
  1550. //     pColumn - column to be selected.
  1551. // Returns:
  1552. //     TRUE if specified column has been focused, FALSE otherwise.
  1553. //-----------------------------------------------------------------------
  1554. BOOL SetFocusedColumn(CXTPReportColumn* pColumn);
  1555. //-----------------------------------------------------------------------
  1556. // Summary:
  1557. //     Call this member to specify whether each individual CXTPReportRecordItem
  1558. //     will show focus when the item in a row is clicked.
  1559. // Parameters:
  1560. //     bFocusSubItems - If TRUE, when a ReportRecordItem is clicked, the
  1561. //                      entire row will become highlighted except the individual
  1562. //                      item that was clicked.
  1563. //                      If FALSE, the entire row will become highlighted when
  1564. //                      an item is clicked, including the item that was clicked.
  1565. // See Also: IsFocusSubItems
  1566. //-----------------------------------------------------------------------
  1567. void FocusSubItems(BOOL bFocusSubItems);
  1568. //-----------------------------------------------------------------------
  1569. // Summary:
  1570. //     Call this member to determine if individual CXTPReportRecordItem(s) will
  1571. //     receive focus when that item in the CXTPReportRow that they belong to is clicked.
  1572. // Returns:
  1573. //     TRUE if individual items can receive focus, FALSE if only the entire row can receive focus.
  1574. // See Also: FocusSubItems
  1575. //-----------------------------------------------------------------------
  1576. BOOL IsFocusSubItems() const;
  1577. //-----------------------------------------------------------------------
  1578. // Summary:
  1579. //     Call this member to determine if the CXTPReportRecordItem(s)are editable.
  1580. // Returns:
  1581. //     TRUE is the CXTPReportRecordItem(s) are editable, FALSE otherwise.
  1582. // See Also: AllowEdit, EditOnClick, IsEditOnClick
  1583. //-----------------------------------------------------------------------
  1584. BOOL IsAllowEdit() const;
  1585. //-----------------------------------------------------------------------
  1586. // Summary:
  1587. //     Call this member to allow the text in all CXTPReportRecordItem(s) to be edited.  This will
  1588. //     add an edit box to the item where the text can be edited.
  1589. // Parameters:
  1590. //     bAllowEdit - TRUE to add an edit box to the CXTPReportRecordItem(s) so they are editable.
  1591. //                  FALSE to remove the edit box and not allow them to be edited.
  1592. // See Also: IsAllowEdit, EditOnClick, IsEditOnClick