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

对话框与窗口

开发平台:

Visual C++

  1. // XTPReportRecordItem.h: interface for the CXTPReportRecordItem 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(__XTPREPORTRECORDITEM_H__)
  22. #define __XTPREPORTRECORDITEM_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "XTPReportDefines.h"
  28. #include "XTPReportHyperlink.h"
  29. class CXTPReportControl;
  30. class CXTPReportRow;
  31. class CXTPReportRecordItem;
  32. class CXTPReportHyperlink;
  33. class CXTPReportHyperlinks;
  34. class CXTPReportColumn;
  35. class CXTPReportPaintManager;
  36. class CXTPReportRecord;
  37. class CXTPReportInplaceButton;
  38. class CXTPPropExchange;
  39. class CXTPReportRecordItemConstraint;
  40. class CXTPReportRecordItemControlHookWnd;
  41. class CXTPReportRecordItemControl;
  42. class CXTPReportRecordItemControls;
  43. class CXTPMarkupUIElement;
  44. //===========================================================================
  45. // Summary:
  46. //     Basic set of parameters transferred to item handlers.
  47. //     This structure groups together essential parameters used in
  48. //     items processing activities. It is parent for all other structures:
  49. //     XTP_REPORTRECORDITEM_DRAWARGS, XTP_REPORTRECORDITEM_CLICKARGS
  50. // Example:
  51. // <code>
  52. // XTP_REPORTRECORDITEM_ARGS itemArgs(pControl, pRow, pColumn);
  53. // pItem->OnBeginEdit(&itemArgs);
  54. // </code>
  55. // See Also: CXTPReportRecordItem::OnBeginEdit
  56. //===========================================================================
  57. struct _XTP_EXT_CLASS XTP_REPORTRECORDITEM_ARGS
  58. {
  59. //{{AFX_CODEJOCK_PRIVATE
  60. //-----------------------------------------------------------------------
  61. // Summary:
  62. //     Constructs a XTP_REPORTRECORDITEM_ARGS object
  63. // Parameters:
  64. //     pControl - Parent report control pointer
  65. //     pRow     - Item's row pointer
  66. //     pColumn  - Item's column pointer
  67. //-----------------------------------------------------------------------
  68. XTP_REPORTRECORDITEM_ARGS();
  69. XTP_REPORTRECORDITEM_ARGS(CXTPReportControl* pControl, CXTPReportRow* pRow, CXTPReportColumn* pColumn); // <COMBINE XTP_REPORTRECORDITEM_ARGS::XTP_REPORTRECORDITEM_ARGS>
  70. //-----------------------------------------------------------------------
  71. // Summary:
  72. //     Destroys a CXTPPropertyGrid object, handles cleanup and deallocation
  73. //-----------------------------------------------------------------------
  74. virtual ~XTP_REPORTRECORDITEM_ARGS();
  75. void AddRef();
  76. void Release();
  77. const XTP_REPORTRECORDITEM_ARGS& operator=(const XTP_REPORTRECORDITEM_ARGS& src);
  78. //}}AFX_CODEJOCK_PRIVATE
  79. CXTPReportControl* pControl;    // Pointer to the main Report control.
  80. CXTPReportRow* pRow;            // Pointer to the associated row.
  81. CXTPReportColumn* pColumn;      // Report column at click position, if any, NULL otherwise.
  82. CXTPReportRecordItem* pItem;    // Pointer to the associated item.
  83. CRect rcItem;                   // Item position in control client coordinates.
  84. };
  85. //===========================================================================
  86. // Summary:
  87. //     A set of parameters transferred to Draw item handler.
  88. //     It inherits essential parameters from XTP_REPORTRECORDITEM_ARGS.
  89. // Remarks:
  90. //     This structure is used in almost all functions concerning drawing
  91. //     activities
  92. // Example:
  93. // <code>
  94. // // fill structure
  95. // XTP_REPORTRECORDITEM_DRAWARGS drawArgs;
  96. // drawArgs.pDC = pDC;
  97. // drawArgs.pControl = m_pControl;
  98. // drawArgs.pRow = pRow;
  99. // // call function
  100. // pItem->Draw(&drawArgs);
  101. // </code>
  102. // See Also: CXTPReportPaintManager
  103. //===========================================================================
  104. struct _XTP_EXT_CLASS XTP_REPORTRECORDITEM_DRAWARGS : public XTP_REPORTRECORDITEM_ARGS
  105. {
  106. //{{AFX_CODEJOCK_PRIVATE
  107. XTP_REPORTRECORDITEM_DRAWARGS()
  108. {
  109. nTextAlign = DT_LEFT;
  110. pDC = NULL;
  111. }
  112. //}}AFX_CODEJOCK_PRIVATE
  113. CDC* pDC;                       // Pointer to control drawing context.
  114. int nTextAlign;                 // Text alignment mode DT_LEFT || DT_RIGHT || DT_CENTER
  115. };
  116. //===========================================================================
  117. // Summary:
  118. //     A set of parameters transferred to mouse click item handlers.
  119. //     It inherits essential parameters from XTP_REPORTRECORDITEM_ARGS.
  120. // Remarks:
  121. //     XTP_REPORTRECORDITEM_CLICKARGS is used in most functions involved
  122. //     in mouse events processing
  123. // See Also: CXTPReportControl, CXTPReportRecordItem::OnClick
  124. //===========================================================================
  125. struct _XTP_EXT_CLASS XTP_REPORTRECORDITEM_CLICKARGS : public XTP_REPORTRECORDITEM_ARGS
  126. {
  127. CPoint ptClient;                // Coordinates of the mouse click point.
  128. };
  129. //===========================================================================
  130. // Summary:
  131. //     This structure is sent to Main window in a WM_NOTIFY message from Item
  132. //     and provides all parameters that are needed in processing control specific
  133. //     notifications by the main window
  134. // Example:
  135. // <code>
  136. // BEGIN_MESSAGE_MAP(CPropertiesView, CView)
  137. //     ON_NOTIFY(XTP_NM_REPORT_VALUECHANGED, ID_REPORT_CONTROL, OnPropertyChanged)
  138. // END_MESSAGE_MAP()
  139. //
  140. // void CPropertiesView::OnPropertyChanged(NMHDR*  pNotifyStruct, LRESULT* /*result*/)
  141. // {
  142. //     XTP_NM_REPORTRECORDITEM* pItemNotify = (XTP_NM_REPORTRECORDITEM*) pNotifyStruct;
  143. //
  144. //     switch (pItemNotify->pItem->GetItemData())
  145. //     {
  146. //         // Some code.
  147. //     }
  148. // }
  149. // </code>
  150. // See Also: XTP_NM_REPORTINPLACEBUTTON
  151. //===========================================================================
  152. struct XTP_NM_REPORTRECORDITEM
  153. {
  154. NMHDR hdr;                          // Standard structure, containing information about a notification message.
  155. CXTPReportRow* pRow;                // Pointer to the row associated with the notification.
  156. CXTPReportRecordItem* pItem;        // Pointer to the record item associated with the notification.
  157. CXTPReportColumn* pColumn;          // Pointer to the column associated with the notification.
  158. int   nHyperlink;                   // Index of clicked Hyperlink, if any, or -1 otherwise.
  159. POINT pt;                           // Point where the message has happened.
  160. };
  161. //===========================================================================
  162. // Summary:
  163. //     A set of parameters transferred with XTP_NM_REPORT_REQUESTEDIT message
  164. // Remarks:
  165. //     XTP_NM_REPORTREQUESTEDIT is used to cancel edit operations
  166. // See Also: XTP_NM_REPORT_REQUESTEDIT
  167. //===========================================================================
  168. struct XTP_NM_REPORTREQUESTEDIT : public XTP_NM_REPORTRECORDITEM
  169. {
  170. BOOL bCancel;
  171. };
  172. //-----------------------------------------------------------------------
  173. // Summary:
  174. //     This structure is sent to Main window in a WM_NOTIFY message from Item
  175. //     and provides all parameters that are needed in processing control specific
  176. //     notifications by the main window
  177. // Remarks:
  178. //     Use this structure to get in-place button which produce XTP_NM_REPORT_INPLACEBUTTONDOWN message.
  179. // See Also: XTP_NM_REPORT_INPLACEBUTTONDOWN
  180. //-----------------------------------------------------------------------
  181. struct XTP_NM_REPORTINPLACEBUTTON : public XTP_NM_REPORTRECORDITEM
  182. {
  183. CXTPReportInplaceButton* pButton;           // Pointer to in-place button
  184. };
  185. //-----------------------------------------------------------------------
  186. // Summary:
  187. //     This structure is sent to Main window in a WM_NOTIFY message from Item
  188. //     and provides all parameters that are needed in processing control specific
  189. //     notifications by the main window.
  190. // Remarks:
  191. //     It is sent before clipboard Copy/Paste operations.
  192. // See Also:
  193. //      XTP_NM_REPORT_BEFORE_COPY_TOTEXT, XTP_NM_REPORT_BEFORE_PASTE_FROMTEXT,
  194. //      XTP_NM_REPORT_BEFORE_PASTE, CXTPReportControl::OnBeforeCopyToText(),
  195. //      CXTPReportControl::OnBeforePasteFromText(),
  196. //      CXTPReportControl::OnBeforePaste().
  197. //-----------------------------------------------------------------------
  198. struct XTP_NM_REPORT_BEFORE_COPYPASTE
  199. {
  200. NMHDR hdr;                          // Standard structure, containing information about a notification message.
  201. CXTPReportRecord**  ppRecord;       // [in/out] A pointer to record pointer;
  202. CStringArray*       parStrings;     // [in/out] A pointer to strings array with record items values.
  203. };
  204. //-----------------------------------------------------------------------
  205. // Summary:
  206. //     This structure is sent to Main window in a WM_NOTIFY message from Item
  207. //     and provides all parameters that are needed in processing control specific
  208. //     notifications by the main window
  209. // Remarks:
  210. //     Use this structure to notify about constraint changing.
  211. // See Also: XTP_NM_REPORTCONSTRAINTSELECTING
  212. //-----------------------------------------------------------------------
  213. struct XTP_NM_REPORTCONSTRAINTSELECTING : public XTP_NM_REPORTRECORDITEM
  214. {
  215. CXTPReportRecordItemConstraint* pConstraint; // Pointer to the constraint associated with the notification.
  216. };
  217. //-----------------------------------------------------------------------
  218. // Summary:
  219. //     This structure is sent to Main window in a WM_NOTIFY message from Item
  220. //     and provides all parameters that are needed in processing control specific
  221. //     notifications by the main window
  222. // Remarks:
  223. //     Use this structure to notify about tooltip showing.
  224. // See Also: XTP_NM_REPORTTOOLTIPTEXT
  225. //-----------------------------------------------------------------------
  226. struct XTP_NM_REPORTTOOLTIPINFO : public XTP_NM_REPORTRECORDITEM
  227. {
  228. CString* pstrText; // Pointer to a CString object with Tooltip text.
  229. // int nImageIndex;
  230. };
  231. //-----------------------------------------------------------------------
  232. // Summary:
  233. //      This enum defines alignment style for the column icon and text.
  234. //-----------------------------------------------------------------------
  235. enum XTPReportColumnIconAlignment
  236. {
  237. xtpColumnTextLeft         = DT_LEFT,   // Aligns text to the left.
  238. xtpColumnTextCenter       = DT_CENTER, // Centers text horizontally in the column.
  239. xtpColumnTextRight        = DT_RIGHT,  // Aligns text to the right.
  240. xtpColumnTextVCenter      = DT_VCENTER,// Centers text vertically.
  241. xtpColumnTextWordBreak    = DT_WORDBREAK, // Breaks words. Lines are automatically broken between words if a word would extend past the edge of the rectangle. A carriage return-line feed sequence also breaks the line.
  242. xtpColumnTextMask         = 0xFF,      // A mask for text alignment styles.
  243. xtpColumnIconLeft         = 0x00100000, // Aligns icon to the left.
  244. xtpColumnIconCenter       = 0x00200000, // Centers icon horizontally in the column.
  245. xtpColumnIconRight        = 0x00400000, // Aligns icon to the right.
  246. xtpColumnIconTop          = 0x01000000, // Aligns icon to the top.
  247. xtpColumnIconVCenter      = 0x02000000, // Aligns icon to the center.
  248. xtpColumnIconBottom       = 0x04000000, // Aligns icon to the bottom.
  249. xtpColumnIconMask         = 0x0FF00000  // A mask for icon alignment styles.
  250. };
  251. //-----------------------------------------------------------------------
  252. // Summary:
  253. //      This enum defines alignment style for the group row custom icon.
  254. // See Also:
  255. //      XTP_REPORTRECORDITEM_METRICS::nGroupRowIconAlignment
  256. //-----------------------------------------------------------------------
  257. enum XTPReportGroupRowIconAlignment
  258. {
  259. xtpGroupRowIconUnknown      = 0,    // Unknown (empty) value.
  260. xtpGroupRowIconLeft         = 0x001, // Draw icon at the left side of group row rect.
  261. xtpGroupRowIconBeforeText   = 0x002, // Draw icon before caption text (between Expand/Collapse icon and text).
  262. xtpGroupRowIconAfterText    = 0x004, // Draw icon after caption text.
  263. xtpGroupRowIconRight        = 0x008, // Draw icon at the right side of group row rect.
  264. xtpGroupRowIconHmask        = 0x00F, // A mask for horizontal alignment flags.
  265. xtpGroupRowIconVTop         = 0x100, // Vertical alignment: top of group row rect.
  266. xtpGroupRowIconVCenter      = 0x200, // Vertical alignment: center of group row rect.
  267. xtpGroupRowIconVCenterToText= 0x400, // Vertical alignment: center of caption text rect.
  268. xtpGroupRowIconVBottom      = 0x800, // Vertical alignment: bottom of group row rect.
  269. xtpGroupRowIconVmask        = 0xF00, // A mask for vertical alignment flags.
  270. };
  271. //-----------------------------------------------------------------------
  272. // Summary:
  273. //      This enum defines flags for virtual row metrics.
  274. // See Also:
  275. //      XTP_REPORTRECORDITEM_METRICS::nVirtRowFlags
  276. //-----------------------------------------------------------------------
  277. enum XTPReportVirtualRowFlags
  278. {
  279. xtpVirtRowUnknown           = 0,    // Unknown (empty) value.
  280. xtpVirtRowHasChildren       = 0x001, // A row has children.
  281. xtpVirtRowLastChild         = 0x002, // A row is the last child of its parent.
  282. };
  283. //-----------------------------------------------------------------------
  284. // Summary:
  285. //     Record item drawing metrics.
  286. //     Its helper structures group together parameters to store general
  287. //     drawing metrics
  288. //-----------------------------------------------------------------------
  289. struct XTP_REPORTRECORDITEM_METRICS : public CXTPCmdTarget
  290. {
  291. CFont* pFont;               // Drawing font.
  292. COLORREF clrForeground;     // Item foreground color.
  293. COLORREF clrBackground;     // Item background color.
  294. CString strText;            // Item text.
  295. int nGroupRowIcon;          // Group row icon ID. See CXTPReportControl::GetImageManager()
  296. int nGroupRowIconAlignment; // Group row icon alignment. See XTPEnumGroupRowIconAlignment
  297. int nColumnAlignment;           // Column alignment. See XTPReportColumnIconAlignment
  298. int nItemIcon;              // Item icon ID. See CXTPReportControl::GetImageManager()
  299. int nVirtRowLevel;          // Virtual row level.
  300. int nVirtRowFlags;          // Virtual row flags.
  301. //{{AFX_CODEJOCK_PRIVATE
  302. //-------------------------------------------------------------------------
  303. // Summary:
  304. //     Constructs a XTP_REPORTRECORDITEM_METRICS struct
  305. //-------------------------------------------------------------------------
  306. XTP_REPORTRECORDITEM_METRICS()
  307. {
  308. Reset();
  309. }
  310. void Reset()
  311. {
  312. pFont = NULL;
  313. clrForeground = XTP_REPORT_COLOR_DEFAULT;
  314. clrBackground= XTP_REPORT_COLOR_DEFAULT;
  315. nGroupRowIcon = XTP_REPORT_NOICON;
  316. nGroupRowIconAlignment = xtpGroupRowIconRight | xtpGroupRowIconVCenter;
  317. nColumnAlignment = xtpColumnTextLeft;
  318. nItemIcon = XTP_REPORT_NOICON;
  319. nVirtRowLevel = 0;
  320. nVirtRowFlags = 0;
  321. }
  322. //}}AFX_CODEJOCK_PRIVATE
  323. };
  324. //===========================================================================
  325. // Summary:
  326. //     CXTPReportRecordItemConstraint is a CCmdTarget derived class. It
  327. //     represents a single item constraints.
  328. //===========================================================================
  329. class _XTP_EXT_CLASS CXTPReportRecordItemConstraint : public CXTPCmdTarget
  330. {
  331. public:
  332. //-------------------------------------------------------------------------
  333. // Summary:
  334. //     Constructs a CXTPPropertyGridItemConstraint object.
  335. //-------------------------------------------------------------------------
  336. CXTPReportRecordItemConstraint();
  337. public:
  338. //-----------------------------------------------------------------------
  339. // Summary:
  340. //     Call this member to retrieve the index of this constraint
  341. //     within the collection of constraints.
  342. // Returns:
  343. //     Index of this constraint.
  344. //-----------------------------------------------------------------------
  345. int GetIndex() const;
  346. public:
  347. CString m_strConstraint;    // Caption text of constraint.  This is the
  348.                             // text displayed for this constraint.
  349. DWORD_PTR   m_dwData;       // The 32-bit value associated with the item.
  350. protected:
  351. int m_nIndex;               // Index of constraint.
  352. private:
  353. friend class CXTPReportRecordItemConstraints;
  354. friend class CXTPReportRecordItemEditOptions;
  355. };
  356. //===========================================================================
  357. // Summary:
  358. //     CXTPReportRecordItemConstraints is a CCmdTarget derived class. It represents the item
  359. //     constraints collection.
  360. //===========================================================================
  361. class _XTP_EXT_CLASS CXTPReportRecordItemConstraints : public CXTPCmdTarget
  362. {
  363. public:
  364. //-------------------------------------------------------------------------
  365. // Summary:
  366. //     Constructs a CXTPReportRecordItemConstraints object.
  367. //-------------------------------------------------------------------------
  368. CXTPReportRecordItemConstraints();
  369. //-------------------------------------------------------------------------
  370. // Summary:
  371. //     Destroys a CXTPPropertyGridItemConstraints object, handles cleanup and deallocation
  372. //-------------------------------------------------------------------------
  373. ~CXTPReportRecordItemConstraints();
  374. public:
  375. //-----------------------------------------------------------------------
  376. // Summary:
  377. //     Call this member to determine the total number of constraints in the list.
  378. // Returns:
  379. //     Returns the total number of constraints added to the ReportRecordItem andor ReportColumn.
  380. //-----------------------------------------------------------------------
  381. int GetCount() const;
  382. //-------------------------------------------------------------------------
  383. // Summary:
  384. //     Call this member to remove all constraints from the list of constraints.
  385. //-------------------------------------------------------------------------
  386. void RemoveAll();
  387. //-----------------------------------------------------------------------
  388. // Summary:
  389. //     Call this member to retrieve a constraint at nIndex.
  390. // Parameters:
  391. //     nIndex - Position in constraint collection.
  392. // Returns:
  393. //     Pointer to the constraint at nIndex in the collection of constraints.
  394. //-----------------------------------------------------------------------
  395. CXTPReportRecordItemConstraint* GetAt(int nIndex) const;
  396. protected:
  397. CArray<CXTPReportRecordItemConstraint*, CXTPReportRecordItemConstraint*> m_arrConstraints;  // Collection of constraints
  398. private:
  399. friend class CXTPReportRecordItemEditOptions;
  400. };
  401. //===========================================================================
  402. // Summary:
  403. //     This class represents collection of the in-place buttons
  404. //     of the single item of the report control.
  405. //===========================================================================
  406. class _XTP_EXT_CLASS CXTPReportInplaceButtons : public CArray<CXTPReportInplaceButton*, CXTPReportInplaceButton*>
  407. {
  408. public:
  409. //-----------------------------------------------------------------------
  410. // Summary:
  411. //     Constructs a CXTPReportInplaceButtons object
  412. //-----------------------------------------------------------------------
  413. CXTPReportInplaceButtons();
  414. };
  415. //===========================================================================
  416. // Summary:
  417. //     This class represents edit options of the single item or column
  418. //===========================================================================
  419. class _XTP_EXT_CLASS CXTPReportRecordItemEditOptions : public CXTPCmdTarget
  420. {
  421. public:
  422. //-------------------------------------------------------------------------
  423. // Summary:
  424. //     Constructs a CXTPReportRecordItemEditOptions object.
  425. //-------------------------------------------------------------------------
  426. CXTPReportRecordItemEditOptions();
  427. //-------------------------------------------------------------------------
  428. // Summary:
  429. //     Destroys a CXTPReportRecordItemEditOptions object, handles
  430. //     cleanup and deallocation
  431. //-------------------------------------------------------------------------
  432. ~CXTPReportRecordItemEditOptions();
  433. public:
  434. //-----------------------------------------------------------------------
  435. // Summary:
  436. //     Adds new constraint to constraint list.
  437. // Parameters:
  438. //     lpszConstraint - Caption of the constraint to be added.
  439. //     dwData         - The 32-bit value associated with the constraint.
  440. //-----------------------------------------------------------------------
  441. CXTPReportRecordItemConstraint* AddConstraint(LPCTSTR lpszConstraint, DWORD_PTR dwData = 0);
  442. //-----------------------------------------------------------------------
  443. // Summary:
  444. //     Finds constraint by its value or caption
  445. // Parameters:
  446. //     dwData - The 32-bit value associated with the constraint.
  447. //     lpszConstraint - caption of the constraint
  448. // Returns:
  449. //     Constraint pointer if found or NULL  if the constraint
  450. //     is not found.
  451. //-----------------------------------------------------------------------
  452. CXTPReportRecordItemConstraint* FindConstraint(DWORD_PTR dwData);
  453. CXTPReportRecordItemConstraint* FindConstraint(LPCTSTR lpszConstraint); // <COMBINE CXTPReportRecordItemEditOptions::FindConstraint@DWORD_PTR>
  454. //-------------------------------------------------------------------------
  455. // Summary:
  456. //     Retrieves constraints pointer.
  457. // Returns:
  458. //     Constraint pointer of the edit options.
  459. //-------------------------------------------------------------------------
  460. CXTPReportRecordItemConstraints* GetConstraints() {
  461. return m_pConstraints;
  462. }
  463. //-------------------------------------------------------------------------
  464. // Summary:
  465. //     Call this member to add a combo button to the CXTPReportRecordItem.
  466. // Remarks:
  467. //     This adds a drop-down combo button to the ReportRecordItem.  When
  468. //     the button is pressed, it will display all of the data items that
  469. //     were added as CXTPReportRecordItemConstraints.
  470. //-------------------------------------------------------------------------
  471. void AddComboButton();
  472. //-------------------------------------------------------------------------
  473. // Summary:
  474. //     Call this member to add a expand button to the CXTPReportRecordItem.
  475. // Remarks:
  476. //     A small button with three ellipses is displayed and you can use this
  477. //     button to display your own custom dialog.
  478. //-------------------------------------------------------------------------
  479. void AddExpandButton();
  480. //-------------------------------------------------------------------------
  481. // Summary:
  482. //     Call this member to add a spin button to the CXTPReportRecordItem.
  483. // Remarks:
  484. //     A spin control with two buttons is displayed and you can use this
  485. //     button to change the cell numeric value.
  486. //-------------------------------------------------------------------------
  487. void AddSpinButton();
  488. //-------------------------------------------------------------------------
  489. // Summary:
  490. //     Call this member to get a buttons with the specified index.
  491. // Parameters:
  492. //     nIndex - the index of a button to get.
  493. //-------------------------------------------------------------------------
  494. CXTPReportInplaceButton* GetButton(int nIndex);
  495. //-------------------------------------------------------------------------
  496. // Summary:
  497. //     Call this member to remove all buttons of the CXTPReportRecordItem.
  498. //-------------------------------------------------------------------------
  499. void RemoveButtons();
  500. public:
  501. BOOL m_bAllowEdit;          // TRUE to add an edit box to this item.
  502. BOOL m_bConstraintEdit;     // If TRUE, then you can only choose from the list of constraints added, If FALSE, then you can type a custom response not listed in the list of constraints.
  503. CXTPReportRecordItemConstraints* m_pConstraints;         // Constraint list.
  504. CXTPReportInplaceButtons         arrInplaceButtons;     // Array of in-place buttons.
  505. BOOL m_bSelectTextOnEdit;   // Select all text on edit
  506. DWORD m_dwEditStyle;         // Edit Style (ES_MULTILINE, ES_NUMBER....)
  507. int m_nMaxLength;           // Maximum number of characters that can be entered into an editable item (Edit limit).
  508. };
  509. //===========================================================================
  510. // Summary:
  511. //     Class for working with single list cell.
  512. //     Base class for extended list cells. It determines the behavior
  513. //     of all specific record items.
  514. //     You don't use its class directly in the control.
  515. //     If you wish to add your own Record Item to the control, you must inherit
  516. //     it from CXTPReportRecordItem. Most member functions in this class
  517. //     are virtual.
  518. // See Also:
  519. //     CXTPReportRecordItemDateTime, CXTPReportRecordItemNumber,
  520. //     CXTPReportRecordItemPreview, CXTPReportRecordItemText,
  521. //     CXTPReportRecordItemVariant
  522. //===========================================================================
  523. class _XTP_EXT_CLASS CXTPReportRecordItem : public CXTPHeapObjectT<CCmdTarget, CXTPReportDataAllocator>
  524. {
  525. DECLARE_SERIAL(CXTPReportRecordItem)
  526. public:
  527. //-----------------------------------------------------------------------
  528. // Summary:
  529. //     CXTPReportRecordItem default constructor
  530. //-----------------------------------------------------------------------
  531. CXTPReportRecordItem();
  532. //-----------------------------------------------------------------------
  533. // Summary:
  534. //     CXTPReportRecordItem default destructor
  535. //-----------------------------------------------------------------------
  536. virtual ~CXTPReportRecordItem();
  537. //-----------------------------------------------------------------------
  538. // Summary:
  539. //     Should be overridden by descendants for drawing itself.
  540. // Parameters:
  541. //     pDrawArgs - structure which contains drawing arguments:
  542. // Remarks:
  543. //     Call this member function to draw an item. Actually this function
  544. //     only prepares and calls needed drawing functions from PaintManager.
  545. //     Thus if you wish to change the look of your report item, you must just provide
  546. //     your own implementation of PaintManager
  547. // Example:
  548. // <code>
  549. // // fill structure
  550. // XTP_REPORTRECORDITEM_DRAWARGS drawArgs;
  551. // drawArgs.pDC = pDC;
  552. // drawArgs.pControl = m_pControl;
  553. // drawArgs.pRow = this;
  554. // // call function
  555. // Draw(&drawArgs);
  556. // </code>
  557. //
  558. // See Also: XTP_REPORTRECORDITEM_DRAWARGS
  559. //-----------------------------------------------------------------------
  560. virtual int Draw(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs);
  561. //-----------------------------------------------------------------------
  562. // Summary:
  563. //     Should be overridden by descendants for drawing itself.
  564. // Parameters:
  565. //     pDrawArgs - structure which contain drawing arguments.
  566. //     pMetrics - structure which contain metrics of the item.
  567. //-----------------------------------------------------------------------
  568. virtual void OnDrawCaption(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pMetrics);
  569. //-----------------------------------------------------------------------
  570. // Summary:
  571. //     Should be overridden by descendants for drawing itself.
  572. // Parameters:
  573. //     pDrawArgs - structure which contain drawing arguments.
  574. //     rcItem - item rectangle.
  575. //-----------------------------------------------------------------------
  576. virtual void OnDrawControls(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, CRect& rcItem);
  577. //-----------------------------------------------------------------------
  578. // Summary:
  579. //     Determines which report item control, if any, is at a specified position.
  580. // Parameters:
  581. //     ptPoint     - Point to test.
  582. // Remarks:
  583. //     Call this member function to test an item contents at the
  584. //     specified position.
  585. // Returns:
  586. //     The item control at the specified position, if any,
  587. //     or NULL otherwise.
  588. //-----------------------------------------------------------------------
  589. CXTPReportRecordItemControl* HitTest(CPoint ptPoint);
  590. //-----------------------------------------------------------------------
  591. // Summary:
  592. //     Processes mouse left button down clicks.
  593. // Parameters:
  594. //     pClickArgs - structure which contains mouse click arguments
  595. // Remarks:
  596. //     Usually this function is called by ReportRow's OnLButtonDown function
  597. // See Also: XTP_REPORTRECORDITEM_CLICKARGS
  598. //-----------------------------------------------------------------------
  599. virtual BOOL OnLButtonDown(XTP_REPORTRECORDITEM_CLICKARGS* pClickArgs);
  600. //-----------------------------------------------------------------------
  601. // Summary:
  602. //     Processes mouse left button up clicks.
  603. // Parameters:
  604. //     pClickArgs - structure which contains mouse click arguments
  605. // Remarks:
  606. //     Usually this function is called by ReportRow's OnLButtonUp function
  607. // See Also: XTP_REPORTRECORDITEM_CLICKARGS
  608. //-----------------------------------------------------------------------
  609. virtual BOOL OnLButtonUp(XTP_REPORTRECORDITEM_CLICKARGS* pClickArgs);
  610. //-----------------------------------------------------------------------
  611. // Summary:
  612. //     Processes single mouse clicks.
  613. // Parameters:
  614. //     pClickArgs - structure which contains mouse click arguments
  615. // Remarks:
  616. //     Usually this function is called by ReportRow's OnClick function
  617. // See Also: XTP_REPORTRECORDITEM_CLICKARGS
  618. //-----------------------------------------------------------------------
  619. virtual void OnClick(XTP_REPORTRECORDITEM_CLICKARGS* pClickArgs);
  620. //-----------------------------------------------------------------------
  621. // Summary:
  622. //     Processes single mouse clicks.
  623. // Parameters:
  624. //     pClickArgs - structure which contains mouse click arguments:
  625. // Remarks:
  626. //     Usually this function is called by ReportRow's OnDblClick function
  627. // See Also: XTP_REPORTRECORDITEM_CLICKARGS
  628. //-----------------------------------------------------------------------
  629. virtual void OnDblClick(XTP_REPORTRECORDITEM_CLICKARGS* pClickArgs);
  630. //-----------------------------------------------------------------------
  631. // Summary:
  632. //     Processes the move mouse event.
  633. // Parameters:
  634. //     point  - mouse point
  635. //     nFlags - additional flags.
  636. //     pControl - pointer to report control.
  637. // Remarks:
  638. //     Usually this function is called by ReportRow's OnMouseMove function
  639. //-----------------------------------------------------------------------
  640. virtual void OnMouseMove(UINT nFlags, CPoint point, CXTPReportControl* pControl = NULL);
  641. //-----------------------------------------------------------------------
  642. // Summary:
  643. //     Returns item text caption.
  644. // Parameters:
  645. //     pColumn - Corresponded column of the item.
  646. // Remarks:
  647. //     Can be overridden by descendants.
  648. // Returns:
  649. //     Item text caption (empty string for base record item class).
  650. //-----------------------------------------------------------------------
  651. virtual CString GetCaption(CXTPReportColumn* pColumn) {
  652. UNREFERENCED_PARAMETER(pColumn); return m_strCaption;
  653. };
  654. //-----------------------------------------------------------------------
  655. // Summary:
  656. //     Retrieves caption text bounding rectangle
  657. // Parameters:
  658. //     pDrawArgs - structure which contain drawing arguments.
  659. //     rcItem    - Bounding rectangle of the item
  660. //-----------------------------------------------------------------------
  661. virtual void GetCaptionRect(XTP_REPORTRECORDITEM_ARGS* pDrawArgs, CRect& rcItem);
  662. //-----------------------------------------------------------------------
  663. // Summary:
  664. //     Returns group caption.
  665. // Parameters:
  666. //     pColumn - point to the column
  667. // Returns:
  668. //     Text of Group Caption.
  669. //-----------------------------------------------------------------------
  670. virtual CString GetGroupCaption(CXTPReportColumn* pColumn);
  671. //-----------------------------------------------------------------------
  672. // Summary:
  673. //     Returns resource id of string containing text
  674. // Parameters:
  675. //     pColumn - Point to the column
  676. // Returns:
  677. //     Integer value of resource id
  678. //-----------------------------------------------------------------------
  679. virtual int GetGroupCaptionID(CXTPReportColumn* pColumn);
  680. //-----------------------------------------------------------------------
  681. // Summary:
  682. //     Compares group captions.
  683. // Parameters:
  684. //     pColumn - Point to the column
  685. //     pItem   - Point to the item
  686. // Returns:
  687. //     Zero if the items' values are identical,
  688. //     < 0 if this item value is less than provided,
  689. //     or > 0 if this item value is greater than provided.
  690. //-----------------------------------------------------------------------
  691. virtual int CompareGroupCaption(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  692. //-----------------------------------------------------------------------
  693. // Summary:
  694. //     Compares this item with the provided one.
  695. //     Provides default behavior for descendants.
  696. // Parameters:
  697. //     pColumn - Corresponded column of the items.
  698. //     pItem - points to the compared Item
  699. // Returns:
  700. //     Zero if the items' values are identical,
  701. //     < 0 if this item value is less than provided,
  702. //     or > 0 if this item value is greater than provided.
  703. //-----------------------------------------------------------------------
  704. virtual int Compare(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  705. //-----------------------------------------------------------------------
  706. // Summary:
  707. //     Sets item text font.
  708. // Parameters:
  709. //     pFont - New font for caption.
  710. //-----------------------------------------------------------------------
  711. virtual void SetFont(CFont* pFont);
  712. //-----------------------------------------------------------------------
  713. // Summary:
  714. //     Call this member function to get item text font.
  715. // Returns:
  716. //     Pointer to the current text font.
  717. //-----------------------------------------------------------------------
  718. virtual CFont* GetFont();
  719. //-----------------------------------------------------------------------
  720. // Summary:
  721. //     Returns the text tool tip for the item
  722. // Returns:
  723. //     The text tool tip for the item.
  724. //-----------------------------------------------------------------------
  725. virtual CString GetTooltip() const;
  726. //-----------------------------------------------------------------------
  727. // Summary:
  728. //     Call this member to set/change the item tool tip.
  729. // Parameters:
  730. //     lpszTooltip - Tool tip of the item
  731. //-----------------------------------------------------------------------
  732. virtual void SetTooltip(LPCTSTR lpszTooltip);
  733. //-----------------------------------------------------------------------
  734. // Summary:
  735. //     Sets item text color.
  736. // Parameters:
  737. //     clrText - New color.
  738. //-----------------------------------------------------------------------
  739. virtual void SetTextColor(COLORREF clrText);
  740. //-----------------------------------------------------------------------
  741. // Summary:
  742. //     Sets/clears bold flag for the item font.
  743. // Parameters:
  744. //     bBold - If TRUE set font to bold.
  745. // Remarks:
  746. //     By using this function you can easily change font to bold or to normal.
  747. //-----------------------------------------------------------------------
  748. virtual void SetBold(BOOL bBold = TRUE);
  749. //-----------------------------------------------------------------------
  750. // Summary:
  751. //     Returns the Bold state for the item
  752. // Returns:
  753. //     TRUE if item is bold.
  754. //-----------------------------------------------------------------------
  755. virtual BOOL IsBold() const;
  756. //-----------------------------------------------------------------------
  757. // Summary:
  758. //     Sets item text background color.
  759. // Parameters:
  760. //     clrBackground - New background color.
  761. //-----------------------------------------------------------------------
  762. virtual void SetBackgroundColor(COLORREF clrBackground);
  763. //-----------------------------------------------------------------------
  764. // Summary:
  765. //     Gets item caption format string.
  766. // Returns:
  767. //     String object, containing current format string
  768. //-----------------------------------------------------------------------
  769. virtual CString GetFormatString();
  770. //-----------------------------------------------------------------------
  771. // Summary:
  772. //     Sets item caption format string.
  773. // Parameters:
  774. //     strFormat - New format string.
  775. // Remarks:
  776. //     If the format string is set, a caption text will be formatted
  777. //     accordingly to this format string before drawing it; convenient
  778. //     in many cases (drawing date for example). Format string is C - like
  779. //     style, see sprintf() C function or CString.Format() member function
  780. //-----------------------------------------------------------------------
  781. virtual void SetFormatString(LPCTSTR strFormat);
  782. //-----------------------------------------------------------------------
  783. // Summary:
  784. //     Call this member function to programmatically check if item is
  785. //     editable.
  786. // Returns:
  787. //     BOOLEAN value represents current editable flag
  788. //-----------------------------------------------------------------------
  789. virtual BOOL IsEditable() const;
  790. //-----------------------------------------------------------------------
  791. // Summary:
  792. //     Sets editable flag.
  793. // Parameters:
  794. //     bEditable - new editable flag (default is TRUE).
  795. // Returns:
  796. //     Old item editable state.
  797. //-----------------------------------------------------------------------
  798. virtual BOOL SetEditable(BOOL bEditable = TRUE);
  799. //-----------------------------------------------------------------------
  800. // Summary:
  801. //     Adds new Hyperlink.
  802. // Parameters:
  803. //     pHyperlink - pointer to hyperlink.
  804. // Remarks:
  805. //     Each record item can have a number of hyperlinks.
  806. //     To add new hyperlink to record item you firs create create
  807. //     the new instance of hyperlink class.
  808. // Returns:
  809. //     zero-based id of new Hyperlink.
  810. // Example:
  811. //     <code>AddHyperlink(new CXTPReportHyperlink(27, 7);</code>
  812. //
  813. // See Also: CXTPReportHyperlink.
  814. //-----------------------------------------------------------------------
  815. virtual int AddHyperlink(CXTPReportHyperlink* pHyperlink);
  816. //-----------------------------------------------------------------------
  817. // Summary:
  818. //     Returns a count of hyperlinks in record item
  819. // Remarks:
  820. //     Each record item can have a number of hyperlinks. To process
  821. //     all of them, you get the count of hyperlinks that are processed by an item
  822. //     using GetHyperlinksCount() member function
  823. // Returns:
  824. //     Count of hyperlinks in item text
  825. //-----------------------------------------------------------------------
  826. virtual int GetHyperlinksCount() const;
  827. //-----------------------------------------------------------------------
  828. // Summary:
  829. //     Return Hyperlink by it's index.
  830. // Parameters:
  831. //     nHyperlink - zero-based index of hyperlink.
  832. // Remarks:
  833. //     To process a hyperlink, you get a pointer to it by calling GetHyperlinkAt();
  834. // Returns:
  835. //     Pointer to Hyperlink.
  836. // Example:
  837. // <code>
  838. // int nHyperlinks = GetHyperlinksCount();
  839. // CXTPReportHyperlink* pHyperlink;
  840. // for(int nHyperlink = 0; nHyperlink < nHyperlinks; nHyperlink++)
  841. // {
  842. //     pHyperlink = GetHyperlinkAt(nHyperlink);
  843. //     // YOUR PROCESSING HERE
  844. //     // ...
  845. //     //
  846. // }
  847. // </code>
  848. // See Also: CXTPReportHyperlink.
  849. //-----------------------------------------------------------------------
  850. virtual CXTPReportHyperlink* GetHyperlinkAt(int nHyperlink) const;
  851. //-----------------------------------------------------------------------
  852. // Summary:
  853. //     Call this member function to remove hyperlink at the specified index.
  854. // Parameters:
  855. //     nHyperlink - zero-based index of hyperlink.
  856. //-----------------------------------------------------------------------
  857. virtual void RemoveHyperlinkAt(int nHyperlink);
  858. //-----------------------------------------------------------------------
  859. // Summary:
  860. //     Fills XTP_REPORTRECORDITEM_METRICS structure
  861. // Parameters:
  862. //     pDrawArgs    - Draw arguments for calculating item metrics.
  863. //     pItemMetrics - Pointer to the metrics item to fill with values.
  864. // Remarks:
  865. //     Calculates preview item metrics based on provided draw arguments.
  866. //     Could be overridden by descendants.
  867. // See Also: XTP_REPORTRECORDITEM_DRAWARGS, XTP_REPORTRECORDITEM_METRICS
  868. //-----------------------------------------------------------------------
  869. virtual void GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pItemMetrics);
  870. //-----------------------------------------------------------------------
  871. // Summary:
  872. //     Determines if this item is a preview item.
  873. // Returns:
  874. //     TRUE for the preview item, FALSE otherwise.
  875. //-----------------------------------------------------------------------
  876. virtual BOOL IsPreviewItem() const;
  877. //-----------------------------------------------------------------------
  878. // Summary:
  879. //     Returns item index.
  880. // Returns:
  881. //     Item numeric index.
  882. //-----------------------------------------------------------------------
  883. int GetIndex() const;
  884. //-----------------------------------------------------------------------
  885. // Summary:
  886. //     Returns an ID of the associated resource bitmap.
  887. // Returns:
  888. //     An ID of the associated resource bitmap.
  889. //-----------------------------------------------------------------------
  890. virtual int GetIconIndex() const;
  891. //-----------------------------------------------------------------------
  892. // Summary:
  893. //     Sets new associated bitmap ID.
  894. // Parameters:
  895. //     nIconIndex - ID of the bitmap from the application resources.
  896. // Returns:
  897. //     Returns an ID of old resource bitmap.
  898. //-----------------------------------------------------------------------
  899. virtual int SetIconIndex(int nIconIndex);
  900. //-----------------------------------------------------------------------
  901. // Summary:
  902. //     Returns the current alignment value for the item.
  903. // Returns:
  904. //     Current item alignment value.
  905. //     The result is a combination of alignment styles defined in XTPReportColumnIconAlignment.
  906. //-----------------------------------------------------------------------
  907. int GetAlignment() const;
  908. //-----------------------------------------------------------------------
  909. // Summary:
  910. //     Sets new alignment value for the item.
  911. // Parameters:
  912. //     nAlignment - New alignment value. See XTPReportColumnIconAlignment
  913. //                  for possible alignment styles.
  914. // Returns:
  915. //     Previous alignment item value.
  916. //-----------------------------------------------------------------------
  917. int SetAlignment(int nAlignment);
  918. //-----------------------------------------------------------------------
  919. // Summary:
  920. //     Retrieves sort priority of the item.
  921. // See Also: GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority
  922. //-----------------------------------------------------------------------
  923. virtual int GetSortPriority() const;
  924. //-----------------------------------------------------------------------
  925. // Summary:
  926. //     Sets the sort priority of the item.
  927. // Parameters:
  928. //     nSortPriority - Priority will be used for sort routines.
  929. // See Also:
  930. //     GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority
  931. //-----------------------------------------------------------------------
  932. virtual void SetSortPriority(int nSortPriority);
  933. //-----------------------------------------------------------------------
  934. // Summary:
  935. //     Retrieves sort priority of the item.
  936. // See Also: GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority
  937. //-----------------------------------------------------------------------
  938. virtual int GetGroupPriority() const;
  939. //-----------------------------------------------------------------------
  940. // Summary:
  941. //     Sets the group priority of the item.
  942. // Parameters:
  943. //     nGroupPriority - Priority will be used for sort routines.
  944. // See Also: GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority
  945. //-----------------------------------------------------------------------
  946. virtual void SetGroupPriority(int nGroupPriority);
  947. //-----------------------------------------------------------------------
  948. // Summary:
  949. //     Sets the group caption of the item.
  950. // Parameters:
  951. //     strCaption - Caption of group to set.
  952. //-----------------------------------------------------------------------
  953. virtual void SetGroupCaption(LPCTSTR strCaption);
  954. //-----------------------------------------------------------------------
  955. // Summary:
  956. //     Sets caption of the item.
  957. // Parameters:
  958. //     strCaption - Caption of item to set.
  959. //-----------------------------------------------------------------------
  960. virtual void SetCaption(LPCTSTR strCaption);
  961. //-----------------------------------------------------------------------
  962. // Summary:
  963. //     Call this method to check the item.
  964. // Parameters:
  965. //     bChecked - TRUE if item is checked.
  966. // See Also:
  967. //     IsChecked, HasCheckbox
  968. //-----------------------------------------------------------------------
  969. virtual void SetChecked(BOOL bChecked);
  970. //-----------------------------------------------------------------------
  971. // Summary:
  972. //     Determines if the item is checked
  973. // See Also: SetChecked, HasCheckbox
  974. //-----------------------------------------------------------------------
  975. virtual BOOL IsChecked() const;
  976. //-----------------------------------------------------------------------
  977. // Summary:
  978. //     Adds check box area for item.
  979. // Parameters:
  980. //     bHasCheckbox - TRUE if item has check box area.
  981. // See Also: SetChecked, IsChecked
  982. //-----------------------------------------------------------------------
  983. virtual void HasCheckbox(BOOL bHasCheckbox);
  984. //-----------------------------------------------------------------------
  985. // Summary:
  986. //     Determines if item has check box area
  987. // Returns:
  988. //     TRUE if item has check box; otherwise FALSE
  989. // See Also: SetChecked, IsChecked
  990. //-----------------------------------------------------------------------
  991. virtual BOOL GetHasCheckbox() const;
  992. //-----------------------------------------------------------------------
  993. // Summary:
  994. //     Retrieved parent record object.
  995. // Returns:
  996. //     Pointer to parent record object.
  997. //-----------------------------------------------------------------------
  998. CXTPReportRecord* GetRecord () const;
  999. //-----------------------------------------------------------------------
  1000. // Summary:
  1001. //     This method retrieves the application-supplied 32-bit value
  1002. //     associated with the item.
  1003. // Returns:
  1004. //     The 32-bit value associated with the item.
  1005. //-----------------------------------------------------------------------
  1006. virtual DWORD_PTR GetItemData() const;
  1007. //-----------------------------------------------------------------------
  1008. // Summary:
  1009. //     Call this method to set the 32-bit value associated with the item.
  1010. // Parameters:
  1011. //     dwData - Contains the new value to associate with the item.
  1012. //-----------------------------------------------------------------------
  1013. virtual void SetItemData(DWORD_PTR dwData);
  1014. //-----------------------------------------------------------------------
  1015. // Summary:
  1016. //     Call this member to determine if a CXTPReportRecordItem can receive focus.
  1017. // Returns:
  1018. //     TRUE is the CXTPReportRecordItem can receive focus, FALSE if
  1019. //     it can not receive focus.
  1020. //-----------------------------------------------------------------------
  1021. virtual BOOL IsFocusable() const;
  1022. //-----------------------------------------------------------------------
  1023. // Summary:
  1024. //     Call this member to specify whether the CXTPReportRecordItem can have focus.
  1025. // Parameters:
  1026. //     bFocusable - TRUE to allow the item to have focus, FALSE to specify the
  1027. //                  item can not have focus.
  1028. // Remarks:
  1029. //     This will override the CXTPReportControl::FocusSubItems setting which only
  1030. //     allows individual items to receive focus.  The SetFocusable member specifies
  1031. //     whether the item can receive focus, if FALSE, the item can not be edited
  1032. //     and the combo or expand buttons will not be displayed.
  1033. //-----------------------------------------------------------------------
  1034. virtual void SetFocusable(BOOL bFocusable);
  1035. //-----------------------------------------------------------------------
  1036. // Summary:
  1037. //     Call this member function to Store/Load a report record item
  1038. //     using the specified data object.
  1039. // Parameters:
  1040. //     pPX - Source or destination CXTPPropExchange data object reference.
  1041. //-----------------------------------------------------------------------
  1042. virtual void DoPropExchange(CXTPPropExchange* pPX);
  1043. CXTPMarkupUIElement* GetMarkupUIElement() const;
  1044. protected:
  1045. //-----------------------------------------------------------------------
  1046. // Summary:
  1047. //     Draws check box bitmap
  1048. // Parameters:
  1049. //     pDrawArgs - Pointer to structure with drawing arguments
  1050. //     rcItem    - Item area rectangle coordinates.
  1051. //-----------------------------------------------------------------------
  1052. virtual void DrawCheckBox(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, CRect& rcItem);
  1053. //-----------------------------------------------------------------------
  1054. // Summary:
  1055. //     Determine if the click occurred on the hyperlink
  1056. // Parameters:
  1057. //     ptClick - point of the mouse click
  1058. // Returns:
  1059. //     Zero-based index of clicked link, -1 otherwise
  1060. //-----------------------------------------------------------------------
  1061. virtual int HitTestHyperlink(CPoint ptClick);
  1062. //-----------------------------------------------------------------------
  1063. // Summary:
  1064. //     Use this function to access hyperlinks collection.
  1065. // Returns:
  1066. //     A pointer to CXTPReportHyperlinks object.
  1067. //-----------------------------------------------------------------------
  1068. CXTPReportHyperlinks* GetHyperlinks();
  1069. protected:
  1070. //-----------------------------------------------------------------------
  1071. // Summary:
  1072. //     This method is called when user begin edit item.
  1073. // Parameters:
  1074. //     pItemArgs - Pointer to structure with items arguments.
  1075. //-----------------------------------------------------------------------
  1076. virtual void OnBeginEdit(XTP_REPORTRECORDITEM_ARGS* pItemArgs);
  1077. //-----------------------------------------------------------------------
  1078. // Summary:
  1079. //     This method is called when user cancel edit item.
  1080. // Parameters:
  1081. //     pControl - Parent report control.
  1082. //     bApply   - TRUE to save value of in-place edit.
  1083. //-----------------------------------------------------------------------
  1084. virtual void OnCancelEdit(CXTPReportControl* pControl, BOOL bApply);
  1085. //-----------------------------------------------------------------------
  1086. // Summary:
  1087. //     This method is called when user press key.
  1088. // Parameters:
  1089. //     pItemArgs - Pointer to structure with items arguments.
  1090. //     nChar     - Pressed character code
  1091. // Returns:
  1092. //     TRUE if item proceeded key.
  1093. //-----------------------------------------------------------------------
  1094. virtual BOOL OnChar(XTP_REPORTRECORDITEM_ARGS* pItemArgs, UINT nChar);
  1095. public:
  1096. //-----------------------------------------------------------------------
  1097. // Summary:
  1098. //     This method is called to save value from in-place edit
  1099. // Parameters:
  1100. //     pItemArgs - Pointer to structure with items arguments.
  1101. //-----------------------------------------------------------------------
  1102. virtual void OnValidateEdit(XTP_REPORTRECORDITEM_ARGS* pItemArgs);
  1103. //-----------------------------------------------------------------------
  1104. // Summary:
  1105. //     This method is called when value of in-place edit control changed
  1106. // Parameters:
  1107. //     pItemArgs - Pointer to structure with items arguments.
  1108. //     szText    - New in-place edit text.
  1109. //-----------------------------------------------------------------------
  1110. virtual void OnEditChanged(XTP_REPORTRECORDITEM_ARGS* pItemArgs, LPCTSTR szText) { UNREFERENCED_PARAMETER(pItemArgs); UNREFERENCED_PARAMETER(szText); }
  1111. //-----------------------------------------------------------------------
  1112. // Summary:
  1113. //     This method is called when in-place editor value changed by user
  1114. // Parameters:
  1115. //     pItemArgs   - item arguments
  1116. //     rstrNewText - new string to be set in the editor
  1117. // Returns:
  1118. //     FALSE to cancel edit operation.
  1119. //-----------------------------------------------------------------------
  1120. virtual BOOL OnEditChanging(XTP_REPORTRECORDITEM_ARGS* pItemArgs, CString& rstrNewText) { UNREFERENCED_PARAMETER(pItemArgs); UNREFERENCED_PARAMETER(rstrNewText); return TRUE;}
  1121. //-----------------------------------------------------------------------
  1122. // Summary:
  1123. //     This method is called when in-place editing is canceled and value
  1124. //     is not changed.
  1125. // Parameters:
  1126. //     pItemArgs - Pointer to structure with items arguments.
  1127. //-----------------------------------------------------------------------
  1128. virtual void OnEditCanceled(XTP_REPORTRECORDITEM_ARGS* pItemArgs) { UNREFERENCED_PARAMETER(pItemArgs);}
  1129. //-----------------------------------------------------------------------
  1130. // Summary:
  1131. //     This method is called when user select specified constraint in in-place list
  1132. // Parameters:
  1133. //     pItemArgs   - Pointer to structure with items arguments
  1134. //     pConstraint - Selected constraint
  1135. //-----------------------------------------------------------------------
  1136. virtual void OnConstraintChanged(XTP_REPORTRECORDITEM_ARGS* pItemArgs, CXTPReportRecordItemConstraint* pConstraint);
  1137. //-----------------------------------------------------------------------
  1138. // Summary:
  1139. //     Retrieves associated value with selected constraint.
  1140. // Parameters:
  1141. //     pItemArgs - Pointer to structure with items arguments
  1142. // Returns:
  1143. //     DWORD value associated with selected constraint.
  1144. //-----------------------------------------------------------------------
  1145. virtual DWORD GetSelectedConstraintData(XTP_REPORTRECORDITEM_ARGS* pItemArgs);
  1146. //-----------------------------------------------------------------------
  1147. // Summary:
  1148. //     This method is called when user press in-place button of the item.
  1149. // Parameters:
  1150. //     pButton - In-place button of the item.
  1151. //-----------------------------------------------------------------------
  1152. virtual void OnInplaceButtonDown(CXTPReportInplaceButton* pButton);
  1153. //-----------------------------------------------------------------------
  1154. // Summary:
  1155. //     Retrieves edit options of item.
  1156. // Parameters:
  1157. //     pColumn - Column of the item.
  1158. // Returns:
  1159. //     Pointer to CXTPReportRecordItemEditOptions class.
  1160. //-----------------------------------------------------------------------
  1161. CXTPReportRecordItemEditOptions* GetEditOptions(CXTPReportColumn* pColumn);
  1162. //-----------------------------------------------------------------------
  1163. // Summary:
  1164. //     Retrieves item controls list.
  1165. // Returns:
  1166. //     Pointer to CXTPReportRecordItemControls class.
  1167. //-----------------------------------------------------------------------
  1168. CXTPReportRecordItemControls* GetItemControls();
  1169. protected:
  1170. //-----------------------------------------------------------------------
  1171. // Summary:
  1172. //     This method is called when an editable item enters edit mode.
  1173. // Parameters:
  1174. //     pItemArgs - Pointer to a XTP_REPORTRECORDITEM_ARGS struct.
  1175. // Remarks:
  1176. //     An item can enter edit mode when the user clicks on it and starts typing,
  1177. //     or when a check box item is chekedunchecked.
  1178. // Returns:
  1179. //     Returns True if the edit request was successful, False if the edit
  1180. //     request was canceled.
  1181. //-----------------------------------------------------------------------
  1182. virtual BOOL OnRequestEdit(XTP_REPORTRECORDITEM_ARGS* pItemArgs);
  1183. //{{AFX_CODEJOCK_PRIVATE
  1184. //-----------------------------------------------------------------------
  1185. // Summary:
  1186. //     If possible, returns the column associated with this Record Item.
  1187. //     Otherwise, returns NULL
  1188. //-----------------------------------------------------------------------
  1189. virtual CXTPReportColumn* GetColumn();
  1190. CXTPReportControl* m_pControl; // Parent Report control (note that this member does not guarantee
  1191.                                // a correct parent, because it just stores a last accessed one)
  1192. virtual BOOL IsAllowEdit(XTP_REPORTRECORDITEM_ARGS* pItemArgs);
  1193. virtual void DoMouseButtonClick();
  1194. //}}AFX_CODEJOCK_PRIVATE
  1195. CRect m_rcGlyph; // Coordinates of drawn glyph.
  1196. protected:
  1197. CFont* m_pFontCaption;      // Storage for item caption font.
  1198. COLORREF m_clrText;         // Storage for item text color.
  1199. COLORREF m_clrBackground;   // Storage for item background color.
  1200. BOOL m_bBoldText;           // Is bold text.
  1201. CString m_strFormatString;  // Stores string for extra formatting of item caption.
  1202. BOOL m_bEditable;           // Stores editable flag.
  1203. CXTPReportHyperlinks* m_pHyperlinks; // Array of the Item's hyperlinks
  1204. CXTPReportRecord* m_pRecord;    // Pointer to the associated record item, if any, or NULL otherwise.
  1205. int m_nIconIndex;               // ID of the bitmap from the application resources.
  1206. int m_nSortPriority;            // Sort priority
  1207. int m_nGroupPriority;           // Group priority
  1208. CString m_strGroupCaption;      // Caption of the group
  1209. CString m_strCaption;           // Caption of the item
  1210. BOOL m_bFocusable;              // TRUE if item accept focus.
  1211. BOOL m_bChecked;                // TRUE if item checked.
  1212. BOOL m_bHasCheckbox;            // TRUE if item has check box.
  1213. DWORD_PTR m_dwData;             // The 32-bit value associated with the item.
  1214. CString m_strTooltip;           // Tooltip of the item.
  1215. CXTPReportRecordItemEditOptions* m_pEditOptions; // Edit options of the item.
  1216. XTPReportColumnIconAlignment m_Alignment;           // Alignment style for item.
  1217. CXTPReportRecordItemControls* m_pItemControls;      // Record item control list.
  1218. CXTPReportRecordItemControl* m_pFocusedItemControl; // Focused record item control.
  1219. BOOL m_bItemControlUnderMouse;                      // TRUE if an item control is under the mouse pointer.
  1220. CXTPReportRecordItemControlHookWnd* m_pItemControlHookWnd;         // Item control hook window.
  1221. CXTPMarkupUIElement* m_pMarkupUIElement;
  1222. friend class CXTPReportRecord;
  1223. friend class CXTPReportControl;
  1224. friend class CXTPReportNavigator;
  1225. };
  1226. AFX_INLINE CString CXTPReportRecordItem::GetFormatString() {
  1227. return m_strFormatString;
  1228. }
  1229. AFX_INLINE void CXTPReportRecordItem::SetFormatString(LPCTSTR strFormat) {
  1230. m_strFormatString = strFormat;
  1231. }
  1232. AFX_INLINE BOOL CXTPReportRecordItem::SetEditable(BOOL bEditable) {
  1233. BOOL bOldEditable = m_bEditable;
  1234. m_bEditable = bEditable;
  1235. return bOldEditable;
  1236. }
  1237. AFX_INLINE int CXTPReportRecordItem::AddHyperlink(CXTPReportHyperlink* pHyperlink){
  1238. return GetHyperlinks() ? (int)GetHyperlinks()->Add(pHyperlink) : -1;
  1239. }
  1240. AFX_INLINE int CXTPReportRecordItem::GetHyperlinksCount() const{
  1241. return m_pHyperlinks ? (int)m_pHyperlinks->GetSize() : 0;
  1242. }
  1243. AFX_INLINE CXTPReportHyperlink* CXTPReportRecordItem::GetHyperlinkAt(int nHyperlink) const{
  1244. return m_pHyperlinks ? m_pHyperlinks->GetAt(nHyperlink) : NULL;
  1245. }
  1246. AFX_INLINE void CXTPReportRecordItem::RemoveHyperlinkAt(int nHyperlink) {
  1247. if (m_pHyperlinks)
  1248. m_pHyperlinks->RemoveAt(nHyperlink);
  1249. }
  1250. AFX_INLINE BOOL CXTPReportRecordItem::IsPreviewItem() const {
  1251. return FALSE;
  1252. }
  1253. AFX_INLINE int CXTPReportRecordItem::GetIconIndex() const {
  1254. return m_nIconIndex;
  1255. }
  1256. AFX_INLINE int CXTPReportRecordItem::SetIconIndex(int nIconIndex){
  1257. int nOldID = GetIconIndex(); m_nIconIndex = nIconIndex; return nOldID;
  1258. }
  1259. AFX_INLINE int CXTPReportRecordItem::GetAlignment() const {
  1260. return m_Alignment;
  1261. }
  1262. AFX_INLINE int CXTPReportRecordItem::SetAlignment(int nAlignment) {
  1263. int nOld = m_Alignment; m_Alignment = (XTPReportColumnIconAlignment)nAlignment; return nOld;
  1264. }
  1265. AFX_INLINE int CXTPReportRecordItem::GetSortPriority() const {
  1266. return m_nSortPriority;
  1267. }
  1268. AFX_INLINE void CXTPReportRecordItem::SetSortPriority(int nSortPriority) {
  1269. m_nSortPriority = nSortPriority;
  1270. }
  1271. AFX_INLINE int CXTPReportRecordItem::GetGroupPriority() const {
  1272. return m_nGroupPriority;
  1273. }
  1274. AFX_INLINE void CXTPReportRecordItem::SetGroupPriority(int nGroupPriority) {
  1275. m_nGroupPriority = nGroupPriority;
  1276. }
  1277. AFX_INLINE void CXTPReportRecordItem::SetGroupCaption(LPCTSTR strCaption) {
  1278. m_strGroupCaption = strCaption;
  1279. }
  1280. AFX_INLINE void CXTPReportRecordItem::SetChecked(BOOL bChecked) {
  1281. m_bChecked = bChecked;
  1282. }
  1283. AFX_INLINE BOOL CXTPReportRecordItem::IsChecked() const {
  1284. return m_bChecked;
  1285. }
  1286. AFX_INLINE void CXTPReportRecordItem::HasCheckbox(BOOL bHasCheckbox) {
  1287. m_bHasCheckbox = bHasCheckbox;
  1288. }
  1289. AFX_INLINE BOOL CXTPReportRecordItem::GetHasCheckbox() const {
  1290. return m_bHasCheckbox;
  1291. }
  1292. AFX_INLINE CXTPReportRecord* CXTPReportRecordItem::GetRecord () const {
  1293. return m_pRecord;
  1294. }
  1295. AFX_INLINE void CXTPReportRecordItem::SetFocusable(BOOL bFocusable) {
  1296. m_bFocusable = bFocusable;
  1297. }
  1298. AFX_INLINE DWORD_PTR CXTPReportRecordItem::GetItemData() const {
  1299. return m_dwData;
  1300. }
  1301. AFX_INLINE void CXTPReportRecordItem::SetItemData(DWORD_PTR dwData) {
  1302. m_dwData = dwData;
  1303. }
  1304. AFX_INLINE DWORD CXTPReportRecordItem::GetSelectedConstraintData(XTP_REPORTRECORDITEM_ARGS* /*pItemArgs*/) {
  1305. return DWORD(-1);
  1306. }
  1307. AFX_INLINE CString CXTPReportRecordItem::GetTooltip() const {
  1308. return m_strTooltip;
  1309. }
  1310. AFX_INLINE void CXTPReportRecordItem::SetTooltip(LPCTSTR lpszTooltip) {
  1311. m_strTooltip = lpszTooltip;
  1312. }
  1313. AFX_INLINE BOOL CXTPReportRecordItem::IsBold() const {
  1314. return m_bBoldText;
  1315. }
  1316. AFX_INLINE CXTPMarkupUIElement* CXTPReportRecordItem::GetMarkupUIElement() const {
  1317. return m_pMarkupUIElement;
  1318. }
  1319. #endif //#if !defined(__XTPREPORTRECORDITEM_H__)