/** * @file XTPGridRecordItem.h * * @copyright * (c) 1998-2025 Codejock Software, All Rights Reserved. * * This source file is the property of Codejock Software and must not be * redistributed by any means without the explicit written permission of * Codejock Software. * * The use of this source code is governed by the terms and conditions specified * in the Toolkit Pro license agreement. Codejock Software grants you, as a * single software developer, the limited right to use this software on one * computer only. * * Contact Information: * support@codejock.com * http://www.codejock.com * */ /** @cond */ #if !defined(__XTPGRIDRECORDITEM_H__) # define __XTPGRIDRECORDITEM_H__ /** @endcond */ # if _MSC_VER > 1000 # pragma once # endif // _MSC_VER > 1000 # include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h" class CXTPMarkupUIElement; class CXTPMarkupContext; class CXTPGridControl; class CXTPGridRow; class CXTPGridRecordItem; class CXTPGridHyperlink; class CXTPGridHyperlinks; class CXTPGridColumn; class CXTPGridPaintManager; class CXTPGridRecord; class CXTPGridInplaceButton; class CXTPPropExchange; class CXTPGridRecordItemConstraint; class CXTPGridRecordItemConstraints; class CXTPGridRecordItemControlHookWnd; class CXTPGridRecordItemControl; class CXTPGridRecordItemControls; class CXTPGridBorder; class CXTPGridGroupRow; /** * @brief * Basic set of parameters transferred to item handlers. This structure * groups together essential parameters used in item processing activities. * It is the parent for all other structures: * XTP_GRIDRECORDITEM_DRAWARGS, XTP_GRIDRECORDITEM_CLICKARGS, etc. * * Example: *
 * XTP_GRIDRECORDITEM_ARGS itemArgs(pControl, pRow, pColumn);
 * pItem->OnBeginEdit(&itemArgs);
 * 
* @see * CXTPGridRecordItem::OnBeginEdit */ struct _XTP_EXT_CLASS XTP_GRIDRECORDITEM_ARGS { /** @cond */ /** * @brief * Constructs a XTP_GRIDRECORDITEM_ARGS object */ XTP_GRIDRECORDITEM_ARGS(); /** * @brief * Constructs a XTP_GRIDRECORDITEM_ARGS object * @param pControl Parent Grid control pointer * @param pRow Item's row pointer * @param pColumn Item's column pointer */ XTP_GRIDRECORDITEM_ARGS(CXTPGridControl* pControl, CXTPGridRow* pRow, CXTPGridColumn* pColumn); /** * @brief * Destroys a CXTPPropertyGrid object, handles cleanup and deallocation */ virtual ~XTP_GRIDRECORDITEM_ARGS(); void AddRef(); void Release(); const XTP_GRIDRECORDITEM_ARGS& operator=(const XTP_GRIDRECORDITEM_ARGS& src); /** @endcond */ CXTPGridControl* pControl; /**< Pointer to the main Grid control. */ CXTPGridRow* pRow; /**< Pointer to the associated row. */ CXTPGridColumn* pColumn; /**< Grid column at click position, if any, NULL otherwise. */ CXTPGridRecordItem* pItem; /**< Pointer to the associated item. */ CRect rcItem; /**< Item position in control client coordinates. */ }; /** * @brief * A set of parameters transferred to the Draw item handler. * It inherits essential parameters from XTP_GRIDRECORDITEM_ARGS. * @details * This structure is used in almost all functions concerning drawing activities. * * Example: *
 * // fill structure
 * XTP_GRIDRECORDITEM_DRAWARGS drawArgs;
 * drawArgs.pDC = pDC;
 * drawArgs.pControl = m_pControl;
 * drawArgs.pRow = pRow;
 * // call function
 * pItem->Draw(&drawArgs);
 * 
* @see * CXTPGridPaintManager */ struct _XTP_EXT_CLASS XTP_GRIDRECORDITEM_DRAWARGS : public XTP_GRIDRECORDITEM_ARGS { /** @cond */ XTP_GRIDRECORDITEM_DRAWARGS() { nTextAlign = DT_LEFT; pDC = NULL; } /** @endcond */ CDC* pDC; /**< Pointer to control drawing context. */ int nTextAlign; /**< Text alignment mode (DT_LEFT || DT_RIGHT || DT_CENTER). */ }; /** * @brief * A set of parameters transferred to mouse click item handlers. * It inherits essential parameters from XTP_GRIDRECORDITEM_ARGS. * @details * XTP_GRIDRECORDITEM_CLICKARGS is used in most functions involved * in mouse event processing. * @see * CXTPGridControl, CXTPGridRecordItem::OnClick */ struct _XTP_EXT_CLASS XTP_GRIDRECORDITEM_CLICKARGS : public XTP_GRIDRECORDITEM_ARGS { CPoint ptClient; /**< Coordinates of the mouse click point. */ }; /** * @brief * This structure is sent to the Main window in a WM_NOTIFY message from * Item and provides all parameters required by the Main window to process * control specific notifications. * * Example: *
 * BEGIN_MESSAGE_MAP(CPropertiesView, CView)
 * ON_NOTIFY(XTP_NM_GRID_VALUECHANGED, ID_GRID_CONTROL, OnPropertyChanged)
 * END_MESSAGE_MAP()
 *
 * void CPropertiesView::OnPropertyChanged(NMHDR*  pNotifyStruct, LRESULT* result)
 * {
 *    XTP_NM_GRIDRECORDITEM* pItemNotify = (XTP_NM_GRIDRECORDITEM*) pNotifyStruct;
 *
 *    switch (pItemNotify->pItem->GetItemData())
 *    {
 *       // Some code.
 *    }
 * }
 * 
* @see * XTP_NM_GRIDINPLACEBUTTON */ struct XTP_NM_GRIDRECORDITEM { NMHDR hdr; /**< Standard structure; contains information about a notification message. */ CXTPGridRow* pRow; /**< Pointer to the row associated with the notification. */ CXTPGridRecordItem* pItem; /**< Pointer to the record item associated with the notification. */ CXTPGridColumn* pColumn; /**< Pointer to the column associated with the notification. */ int nHyperlink; /**< Index of clicked Hyperlink, if any, or -1 otherwise. */ POINT pt; /**< Point where the message ocurred. */ }; /** * @brief * A set of parameters transferred with an XTP_NM_GRID_REQUESTEDIT message. * @details * XTP_NM_GRIDREQUESTEDIT is used to cancel edit operations. * @see * XTP_NM_GRID_REQUESTEDIT */ struct XTP_NM_GRIDREQUESTEDIT : public XTP_NM_GRIDRECORDITEM { BOOL bCancel; /**< TRUE to cancel operation. */ }; # ifdef _XTP_ACTIVEX /** @cond */ struct XTP_NM_GRIDVALUECHANGING : public XTP_NM_GRIDRECORDITEM { BOOL bCancel; LPVARIANT lpNewValue; }; /** @endcond */ # endif /** * @brief * This structure is sent to the Main window in a WM_NOTIFY message from * Item and provides all parameters required by the Main window to process * control specific notifications. * @details * Use this structure to get the in-place button which produces the * XTP_NM_GRID_INPLACEBUTTONDOWN message. * @see * XTP_NM_GRID_INPLACEBUTTONDOWN */ struct XTP_NM_GRIDINPLACEBUTTON : public XTP_NM_GRIDRECORDITEM { CXTPGridInplaceButton* pButton; /**< Pointer to in-place button. */ }; /** * @brief * This structure is sent to the Main window in a WM_NOTIFY message from * Item and provides all parameters required by the Main window to process * control specific notifications. * @details * It is sent before clipboard Copy/Paste operations. * @see * XTP_NM_GRID_BEFORE_COPY_TOTEXT, XTP_NM_GRID_BEFORE_PASTE_FROMTEXT, * XTP_NM_GRID_BEFORE_PASTE, CXTPGridControl::OnBeforeCopyToText(), * CXTPGridControl::OnBeforePasteFromText(), * CXTPGridControl::OnBeforePaste(). */ struct XTP_NM_GRID_BEFORE_COPYPASTE { NMHDR hdr; /**< Standard structure; contains information about a notification message. */ CXTPGridRecord** ppRecord; /**< [in/out] A pointer to a record pointer. */ CStringArray* parStrings; /**< [in/out] A pointer to a strings array with record items values. */ }; /** * @brief * This structure is sent to the Main window in a WM_NOTIFY message from * Item and provides all parameters required by the Main window to process * control specific notifications. * @details * Use this structure to notify about constraint changing. * @see * XTP_NM_GRIDCONSTRAINTSELECTING */ struct XTP_NM_GRIDCONSTRAINTSELECTING : public XTP_NM_GRIDRECORDITEM { CXTPGridRecordItemConstraint* pConstraint; /**< Pointer to the constraint associated with the */ /** * notification. */ }; /** * @brief * This structure is sent to the Main window in a WM_NOTIFY message from * Item and provides all parameters required by the Main window to process * control specific notifications. * @details * Use this structure to notify about tooltip showing. * @see * XTP_NM_GRIDTOOLTIPTEXT */ struct XTP_NM_GRIDTOOLTIPINFO : public XTP_NM_GRIDRECORDITEM { CString* pstrText; /**< Pointer to a CString object with Tooltip text. */ }; /** * @brief * This enum defines the alignment style for the column icon and text. */ enum XTPGridColumnIconAlignment { xtpColumnTextLeft = DT_LEFT, /**< Aligns text to the left. */ xtpColumnTextCenter = DT_CENTER, /**< Centers text horizontally in the column. */ xtpColumnTextRight = DT_RIGHT, /**< Aligns text to the right. */ xtpColumnTextVCenter = DT_VCENTER, /**< Centers text vertically. */ 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. */ xtpColumnTextMask = 0xFF, /**< A mask for text alignment styles.*/ xtpColumnIconLeft = 0x00100000, /**< Aligns icon to the left.*/ xtpColumnIconCenter = 0x00200000, /**< Centers icon horizontally in the column.*/ xtpColumnIconRight = 0x00400000, /**< Aligns icon to the right.*/ xtpColumnIconTop = 0x01000000, /**< Aligns icon to the top.*/ xtpColumnIconVCenter = 0x02000000, /**< Aligns icon to the center.*/ xtpColumnIconBottom = 0x04000000, /**< Aligns icon to the bottom.*/ xtpColumnIconMask = 0x0FF00000 /**< A mask for icon alignment styles. */ }; /** * @brief * This enum defines alignment style for the group row custom icon. * @see * XTP_GRIDRECORDITEM_METRICS::nGroupRowIconAlignment */ enum XTPGridGroupRowIconAlignment { xtpGroupRowIconUnknown = 0, /**< Unknown (empty) value. */ xtpGroupRowIconLeft = 0x001, /**< Draw icon at the left side of group row rect. */ xtpGroupRowIconBeforeText = 0x002, /**< Draw icon before caption text (between Expand/Collapse icon and text). */ xtpGroupRowIconAfterText = 0x004, /**< Draw icon after caption text.*/ xtpGroupRowIconRight = 0x008, /**< Draw icon at the right side of group row rect.*/ xtpGroupRowIconHmask = 0x00F, /**< A mask for horizontal alignment flags.*/ xtpGroupRowIconVTop = 0x100, /**< Vertical alignment: top of group row rect.*/ xtpGroupRowIconVCenter = 0x200, /**< Vertical alignment: center of group row rect.*/ xtpGroupRowIconVCenterToText = 0x400, /**< Vertical alignment: center of caption text rect.*/ xtpGroupRowIconVBottom = 0x800, /**< Vertical alignment: bottom of group row rect.*/ xtpGroupRowIconVmask = 0xF00, /**< A mask for vertical alignment flags.*/ }; /** * @brief * This enum defines flags for virtual row metrics. * @see * XTP_GRIDRECORDITEM_METRICS::nVirtRowFlags */ enum XTPGridVirtualRowFlags { xtpVirtRowUnknown = 0, /**< Unknown (empty) value.*/ xtpVirtRowHasChildren = 0x001, /**< A row has children.*/ xtpVirtRowLastChild = 0x002 /**< A row is the last child of its parent.*/ }; /** * @brief * Record item drawing metrics. * Its helper structures group together parameters to store general * drawing metrics. */ struct XTP_GRIDRECORDITEM_METRICS : public CXTPCmdTarget { CFont* pFont; /**< Drawing font. */ COLORREF clrForeground; /**< Item foreground color. */ COLORREF clrBackground; /**< Item background color. */ CString strText; /**< Item text. */ int nGroupRowIcon; /**< Group row icon ID. See CXTPGridControl::GetImageManager(). */ int nGroupRowIconAlignment; /**< Group row icon alignment. See XTPEnumGroupRowIconAlignment. */ int nColumnAlignment; /**< Column alignment. See XTPGridColumnIconAlignment. */ int nItemIcon; /**< Item icon ID. See CXTPGridControl::GetImageManager(). */ int nVirtRowLevel; /**< Virtual row level. */ int nVirtRowFlags; /**< Virtual row flags. */ # ifdef _XTP_ACTIVEX /** @cond */ CXTPFont m_xtpFontMetrics; XTP_SUBSTITUTE_GDI_MEMBER_WITH_CACHED(CFont, m_fntMetrics, m_xtpFontMetrics, GetMetricsFontHandle); /** @endcond */ # endif /** @cond */ /** * @brief * Constructs a XTP_GRIDRECORDITEM_METRICS struct */ XTP_GRIDRECORDITEM_METRICS() { Reset(); # ifdef _XTP_ACTIVEX EnableAutomation(); # endif } void Reset() { pFont = NULL; clrForeground = XTP_GRID_COLOR_DEFAULT; clrBackground = XTP_GRID_COLOR_DEFAULT; nGroupRowIcon = XTP_GRID_NOICON; nGroupRowIconAlignment = xtpGroupRowIconRight | xtpGroupRowIconVCenter; nColumnAlignment = xtpColumnTextLeft; nItemIcon = XTP_GRID_NOICON; nVirtRowLevel = 0; nVirtRowFlags = 0; } /** @endcond */ # ifdef _XTP_ACTIVEX /** @cond */ ~XTP_GRIDRECORDITEM_METRICS() { } DECLARE_DISPATCH_MAP() DECLARE_INTERFACE_MAP() LPFONTDISP OleGetFont(); void OleSetFont(LPFONTDISP pFontDisp); /** @endcond */ # endif }; /** * @brief * This class represents a collection of in-place buttons * for a single item of the Grid control. */ class _XTP_EXT_CLASS CXTPGridInplaceButtons : public CArray { public: /** * @brief * Constructs a CXTPGridInplaceButtons object. */ CXTPGridInplaceButtons(); }; /** * @brief * This class represents edit options for a single item or column. */ class _XTP_EXT_CLASS CXTPGridRecordItemEditOptions : public CXTPCmdTarget { public: /** * @brief * Constructs a CXTPGridRecordItemEditOptions object. */ CXTPGridRecordItemEditOptions(); /** * @brief * Destroys a CXTPGridRecordItemEditOptions object, handles * cleanup and deallocation. */ ~CXTPGridRecordItemEditOptions(); public: /** * @brief * Adds a new constraint to the constraint list. * @param lpszConstraint Caption of the constraint to be added. * @param dwData The 32-bit value associated with the constraint. * @return * A pointer to the newly added CXTPGridRecordItemConstraint object. */ CXTPGridRecordItemConstraint* AddConstraint(LPCTSTR lpszConstraint, DWORD_PTR dwData = 0); /** * @brief * Finds a constraint by its value. * @param dwData The 32-bit value associated with the constraint. * @return * A pointer to the CXTPGridRecordItemConstraint object if found, otherwise NULL. */ CXTPGridRecordItemConstraint* FindConstraint(DWORD_PTR dwData); /** * @brief * Finds a constraint by its caption. * @param lpszConstraint Caption of the constraint. * @return * A pointer to the CXTPGridRecordItemConstraint object if found, otherwise NULL. */ CXTPGridRecordItemConstraint* FindConstraint(LPCTSTR lpszConstraint); /** * @brief * Gets the constraints list. * @return * A pointer to the CXTPGridRecordItemConstraints object. */ CXTPGridRecordItemConstraints* GetConstraints() { return m_pConstraints; } /** * @brief * Adds a drop-down combo button to the CXTPGridRecordItem. * @param bInside TRUE to keep the drop-down combo button inside * the parent control rectangle. * @return * A pointer to the newly added CXTPGridInplaceButton object. * @details * This method adds a drop-down combo button to the GridRecordItem. * When the button is pressed, it will display all of the data items * that were added as CXTPGridRecordItemConstraints. */ CXTPGridInplaceButton* AddComboButton(BOOL bInside = FALSE); /** * @brief * Adds an expand button to the CXTPGridRecordItem. * @param bInside TRUE to keep the expand button inside * the parent control rectangle. * @return * A pointer to the newly added CXTPGridInplaceButton object. * @details * A small button with three ellipses is displayed and you can use this * button to display your own custom dialog. */ CXTPGridInplaceButton* AddExpandButton(BOOL bInside = FALSE); /** * @brief * Adds a spin button to the CXTPGridRecordItem. * @param bInside TRUE to keep the spin button inside * the parent control rectangle. * @return * A pointer to the newly added CXTPGridInplaceButton object. * @details * A spin control with two buttons is displayed and you can use this * button to change the cell numeric value. */ CXTPGridInplaceButton* AddSpinButton(BOOL bInside = FALSE); /** * @brief * Retrieves a button by its index. * @param nIndex Index of the button to retrieve. * @return * A pointer to a CXTPGridInplaceButton object. */ CXTPGridInplaceButton* GetButton(int nIndex); /** * @brief * Removes all buttons of the CXTPGridRecordItem. */ void RemoveButtons(); public: BOOL m_bAllowEdit; /**< TRUE to enable changing the value of the field, FALSE to enable read-mode. If FALSE, then m_bConstraintEdit is ignored. */ BOOL m_bConstraintEdit; /**< TRUE to prevent possibility to type in a custom value in the edit box if applicable. */ CXTPGridRecordItemConstraints* m_pConstraints; /**< Constraint list. */ CXTPGridInplaceButtons arrInplaceButtons; /**< Array of in-place buttons. */ BOOL m_bSelectTextOnEdit; /**< Select all text on edit. */ BOOL m_bScrollTextOnEdit; /**< Scroll text on edit. */ BOOL m_bExpandOnSelect; /**< TRUE to expand expandable contents on edit. */ DWORD m_dwEditStyle; /**< Edit Style (ES_MULTILINE, ES_NUMBER...). */ int m_nMaxLength; /**< Maximum number of characters that can be entered into an editable item (Edit limit). */ # ifdef _XTP_ACTIVEX /** @cond */ DECLARE_DISPATCH_MAP() DECLARE_INTERFACE_MAP() DECLARE_OLETYPELIB_EX(CXTPGridRecordItemEditOptions); afx_msg LPDISPATCH OleGetConstraints(); afx_msg LPDISPATCH OleGetInplaceButton(long nIndex); afx_msg long OleInplaceButtonsCount(); afx_msg LPDISPATCH OleAddComboButton(const VARIANT& bInside); afx_msg LPDISPATCH OleAddExpandButton(const VARIANT& bInside); afx_msg LPDISPATCH OleAddSpinButton(const VARIANT& bInside); /** @endcond */ # endif }; /** * @brief * Class for working with single list cell. Base class for extended list cells. * It determines the behavior of all specific record items. * You don't use its class directly in the control. * If you wish to add your own Record Item to the control, you must inherit it * from CXTPGridRecordItem. Most member functions in this class are virtual. * @see * CXTPGridRecordItemDateTime, CXTPGridRecordItemNumber, * CXTPGridRecordItemPreview, CXTPGridRecordItemText, * CXTPGridRecordItemVariant */ class _XTP_EXT_CLASS CXTPGridRecordItem : public CXTPHeapObjectT { /** @cond */ DECLARE_SERIAL(CXTPGridRecordItem) /** @endcond */ public: /** * @brief * CXTPGridRecordItem default constructor. */ CXTPGridRecordItem(); /** * @brief * CXTPGridRecordItem default destructor. */ virtual ~CXTPGridRecordItem(); /** * @brief * Should be overridden by descendants for drawing itself. * @param pDrawArgs Pointer to an XTP_GRIDRECORDITEM_DRAWARGS * structure containing drawing arguments. * @return * The text width of the record item. * @details * This function simply prepares and calls the necessary drawing * functions from PaintManager to draw a grid item. As such, * you must provide your own implementation of PaintManager in * order to change the appearance of your grid item. * * Example: *
	 * // fill structure
	 * XTP_GRIDRECORDITEM_DRAWARGS drawArgs;
	 * drawArgs.pDC = pDC;
	 * drawArgs.pControl = m_pControl;
	 * drawArgs.pRow = this;
	 * // call function
	 * Draw(&drawArgs);
	 * 
* * @see * XTP_GRIDRECORDITEM_DRAWARGS */ virtual int Draw(XTP_GRIDRECORDITEM_DRAWARGS* pDrawArgs); /** * @brief * Should be overridden by descendants for drawing itself. * @param pDrawArgs Pointer to an XTP_GRIDRECORDITEM_DRAWARGS * structure containing drawing arguments. * @param pMetrics Pointer to an XTP_GRIDRECORDITEM_METRICS * structure containing item metrics. */ virtual void OnDrawCaption(XTP_GRIDRECORDITEM_DRAWARGS* pDrawArgs, XTP_GRIDRECORDITEM_METRICS* pMetrics); /** * @brief * Should be overridden by descendants for drawing itself. * @param pDrawArgs Pointer to an XTP_GRIDRECORDITEM_DRAWARGS * structure containing drawing arguments. * @param rcItem Reference to an item rectangle. */ virtual void OnDrawControls(XTP_GRIDRECORDITEM_DRAWARGS* pDrawArgs, CRect& rcItem); /** * @brief * Determines which grid record item control, if any, is at a specified point. * @param ptPoint Point to test. * @details * Call this member function to test the item contents at the * specified point. * @return * A pointer to the grid record item control at the specified point, if any, * otherwise NULL. */ CXTPGridRecordItemControl* HitTest(CPoint ptPoint); /** * @brief * Determines if a mouse click occurred on a hyperlink. * @param ptClick Point of the mouse click. * @return * Zero-based index of the clicked link, if any, otherwise a value of -1. */ virtual int HitTestHyperlink(CPoint ptClick); /** * @brief * Processes mouse left button down clicks. * @param pClickArgs Pointer to an XTP_GRIDRECORDITEM_CLICKARGS * structure containing click arguments. * @return * TRUE if the implementation handles the mouse click event and no * further handling is required, otherwise FALSE. * @details * Usually this function is called by GridRow's OnLButtonDown function. * @see * XTP_GRIDRECORDITEM_CLICKARGS */ virtual BOOL OnLButtonDown(XTP_GRIDRECORDITEM_CLICKARGS* pClickArgs); /** * @brief * Processes mouse left button up clicks. * @param pClickArgs Pointer to an XTP_GRIDRECORDITEM_CLICKARGS * structure containing click arguments. * @return * TRUE if the implementation handles the mouse click event and no * further handling is required, otherwise FALSE. * @details * Usually this function is called by GridRow's OnLButtonUp function. * @see * XTP_GRIDRECORDITEM_CLICKARGS */ virtual BOOL OnLButtonUp(XTP_GRIDRECORDITEM_CLICKARGS* pClickArgs); /** * @brief * Processes single mouse clicks. * @param pClickArgs Pointer to an XTP_GRIDRECORDITEM_CLICKARGS * structure containing click arguments. * @details * Usually this function is called by GridRow's OnClick function. * @see * XTP_GRIDRECORDITEM_CLICKARGS */ virtual void OnClick(XTP_GRIDRECORDITEM_CLICKARGS* pClickArgs); /** * @brief * Processes double mouse clicks. * @param pClickArgs Pointer to an XTP_GRIDRECORDITEM_CLICKARGS * structure containing click arguments. * @details * Usually this function is called by GridRow's OnDblClick function. * @see * XTP_GRIDRECORDITEM_CLICKARGS */ virtual void OnDblClick(XTP_GRIDRECORDITEM_CLICKARGS* pClickArgs); /** * @brief * Processes the move mouse event. * @param point Specifies the x- and y- coordinates of the cursor. * @param nFlags Additional flags. * @param pControl Pointer to the Grid control. * @details * Usually this function is called by GridRow's OnMouseMove function. */ virtual void OnMouseMove(UINT nFlags, CPoint point, CXTPGridControl* pControl = NULL); /** * @brief * Gets the text caption of the item. * @details * Can be overridden by descendants. * @return * The text caption of the item, or an empty string for a base record item class. */ virtual CString GetCaption(); /** * @brief * Gets the caption prefix of a specified column. * @param pColumn Pointer to a CXTPGridColumn object. * @return * The caption prefix of the specified column. */ CString GetColumnCaptionPrefix(CXTPGridColumn* pColumn) const; /** * @brief * Retrieves the text caption of the record item. * @param pColumn Pointer to the corresponding column of the record item. * @details * Can be overridden by descendants. * @return * The text caption of the record item, * or an empty string for a base record item class. */ virtual CString GetCaption(CXTPGridColumn* pColumn); /** * @brief * Retrieves the caption text bounding rectangle. * @param pDrawArgs Pointer to an XTP_GRIDRECORDITEM_DRAWARGS * structure containing drawing arguments. * @param rcItem Reference to a CRect object that receives * the caption text bounding rectangle. */ virtual void GetCaptionRect(XTP_GRIDRECORDITEM_ARGS* pDrawArgs, CRect& rcItem); /** * @brief * Gets the group caption text. * @param pColumn Pointer to a CXTPGridColumn object. * @return * The group caption text. */ virtual CString GetGroupCaption(CXTPGridColumn* pColumn); /** * @brief * Gets the group caption native value. * @param pColumn Pointer to a CXTPGridColumn object. * @return * The group caption native value. */ virtual COleVariant GetGroupCaptionValue(CXTPGridColumn* pColumn); /** * @brief * Gets the group caption ID. * @param pColumn Pointer to a CXTPGridColumn object. * @return * The group caption ID. */ virtual int GetGroupCaptionID(CXTPGridColumn* pColumn); /** * @brief * Compares the group caption of the current record item with * the group caption of a provided record item/group row. * @param pColumn Pointer to the corresponding column of the current record item. * @param pItem Pointer to the record item with the group caption to * compare with the group caption of the current record item. * @return * Zero if the group caption of the current record item is * identical to the group caption of pItem/pGroupRow; * Less than zero if the group caption of the current record item is * less than the group caption of pItem/pGroupRow; * Greater than zero if the group caption of the current record item is * greater than the group caption of pItem/pGroupRow. */ virtual int CompareGroupCaption(CXTPGridColumn* pColumn, CXTPGridRecordItem* pItem); /** * @brief * Compares the group caption of the current record item with * the group caption of a provided record item/group row. * @param pColumn Pointer to the corresponding column of the current record item. * @param pGroupRow Pointer to the group row with the group caption to * compare with the group caption of the current record item. * @return * Zero if the group caption of the current record item is * identical to the group caption of pItem/pGroupRow; * Less than zero if the group caption of the current record item is * less than the group caption of pItem/pGroupRow; * Greater than zero if the group caption of the current record item is * greater than the group caption of pItem/pGroupRow. */ virtual int CompareGroupCaption(CXTPGridColumn* pColumn, CXTPGridGroupRow* pGroupRow); /** * @brief * Compares the current record item with a provided record item. * Provides default behavior for descendants. * @param pColumn Pointer to the corresponding column of the current record item. * @param pItem Pointer to the record item to compare with the current record item. * @return * Zero if the current record item is equal to pItem; * Less than zero if the current record item is less than pItem; * Greater than zero if the current record item is greater than pItem. */ virtual int Compare(CXTPGridColumn* pColumn, CXTPGridRecordItem* pItem); /** * @brief * Sets the record item text font. * @param pFont New font to be set. */ virtual void SetFont(CFont* pFont); /** * @brief * Gets the record item text font. * @return * A pointer to the record item text font. */ virtual CFont* GetFont(); /** * @brief * Gets the tooltip text of the record item. * @return * The tooltip text of the record item */ virtual CString GetTooltip() const; /** * @brief * Sets the tooltip text for the record item. * @param lpszTooltip Tooltip text to be set. */ virtual void SetTooltip(LPCTSTR lpszTooltip); /** * @brief * Sets the record item text color. * @param clrText New color to be set. */ virtual void SetTextColor(COLORREF clrText); /** * @brief * Gets the record item text color. * @return * The record item text color. */ virtual COLORREF GetTextColor(); /** * @brief * Sets the bold state of the record item font. * @param bBold TRUE to set the record item font to bold, * FALSE to set the record item font to normal. */ virtual void SetBold(BOOL bBold = TRUE); /** * @brief * Determines the bold state of the record item font. * @return * TRUE if the record item font is bold, FALSE if the record item font is normal. */ virtual BOOL IsBold() const; /** * @brief * Sets the record item text background color. * @param clrBackground Record item text background color to be set. */ virtual void SetBackgroundColor(COLORREF clrBackground); /** * @brief * Gets the record item text background color. * @return * The record item text background color. */ virtual COLORREF GetBackgroundColor(); /** * @brief * Gets the record item formula. * @return * The record item formula. */ virtual CString GetFormula() const; /** * @brief * Sets the record item formula. * @param sFormula Record item formula to be set. */ virtual void SetFormula(LPCTSTR sFormula); /** * @brief * Gets the record item caption format string. * @return * The record item caption format string. */ virtual CString GetFormatString() const; /** * @brief * Sets the record item caption format string. * @param strFormat Record item caption format string to be set. * @details * If the record item caption format string is set, then the caption text will * be formatted according to this format string before it is drawn. This is * convenient in many cases (e.g. when drawing dates). The format string is C like * style; see the sprintf() C function or the CString.Format() member function. */ virtual void SetFormatString(LPCTSTR strFormat); /** * @brief * Determines the editable state of the record item. * @return * The editable state of the record item. */ virtual BOOL IsEditable() const; /** * @brief * Sets the editable state for the record item. * @param bEditable TRUE to set the record item to editable, FALSE otherwise. * @return * The previous editable state of the record item. */ virtual BOOL SetEditable(BOOL bEditable = TRUE); /** * @brief * Adds a new hyperlink to the record item. * @param pHyperlink Pointer to the hyperlink to add. * @details * Each record item can have a number of hyperlinks. * To add a new hyperlink to the record item, you must * first create the new instance of hyperlink class. * @return * The zero-based ID of the newly added hyperlink. * * Example: *
AddHyperlink(new CXTPGridHyperlink(27, 7);
* @see * CXTPGridHyperlink. */ virtual int AddHyperlink(CXTPGridHyperlink* pHyperlink); /** * @brief * Gets the number of hyperlinks in the record item. * @details * Each record item can have a number of hyperlinks. To process all of * the hyperlinks of a record item, you must get the number of hyperlinks * in the record item by using the GetHyperlinksCount() member function. * @return * The number of hyperlinks in the record item. */ virtual int GetHyperlinksCount() const; /** * @brief * Retrieves the hyperlink at a specified index. * @param nHyperlink Zero-based index of the hyperlink to retrieve. * @details * To process a hyperlink, you get a pointer to it by calling GetHyperlinkAt(); * @return * A pointer to the hyperlink at the specified index. * * Example: *
	 * int nHyperlinks = GetHyperlinksCount();
	 * CXTPGridHyperlink* pHyperlink;
	 * for(int nHyperlink = 0; nHyperlink < nHyperlinks; nHyperlink++)
	 * {
	 *    pHyperlink = GetHyperlinkAt(nHyperlink);
	 *    // YOUR PROCESSING HERE
	 *    // ...
	 *    //
	 * }
	 * 
* @see * CXTPGridHyperlink. */ virtual CXTPGridHyperlink* GetHyperlinkAt(int nHyperlink) const; /** * @brief * Removes the hyperlink at a specified index. * @param nHyperlink Zero-based index of the hyperlink to remove. */ virtual void RemoveHyperlinkAt(int nHyperlink); /** * @brief * Calculates preview item metrics based on specified draw arguments. * Can be overridden by descendants. * @param pDrawArgs Pointer to an XTP_GRIDRECORDITEM_DRAWARGS * structure used to calculate item metrics. * @param pItemMetrics Pointer to an XTP_GRIDRECORDITEM_METRICS * structure to fill with values. * @see * XTP_GRIDRECORDITEM_DRAWARGS, XTP_GRIDRECORDITEM_METRICS */ virtual void GetItemMetrics(XTP_GRIDRECORDITEM_DRAWARGS* pDrawArgs, XTP_GRIDRECORDITEM_METRICS* pItemMetrics); /** * @brief * Determines if the record item is a preview item. * @return * TRUE if the record item is a preview item, otherwise FALSE. */ virtual BOOL IsPreviewItem() const; /** * @brief * Gets the index of the record item. * @return * The index of the record item. */ int GetIndex() const; /** * @brief * Gets the ID of the associated resource bitmap. * @return * The ID of the associated resource bitmap. */ virtual int GetIconIndex() const; /** * @brief * Sets the ID for the associated resource bitmap. * @param nIconIndex ID of the resource bitmap to set. * @return * The ID of the previous associated resource bitmap. */ virtual int SetIconIndex(int nIconIndex); /** * @brief * Gets the alignment value of the record item. * @return * The alignment value of the record item; one of the values * defined by the XTPGridColumnIconAlignment enumeration. */ int GetAlignment() const; /** * @brief * Sets the alignment value for the record item. * @param nAlignment Alignment value to be set; must be one of the values * defined by the XTPGridColumnIconAlignment enumeration. * @return * The previous alignment value of the record item; one of the values * defined by the XTPGridColumnIconAlignment enumeration. */ int SetAlignment(int nAlignment); /** * @brief * Gets the sort priority of the record item. * @return * The sort priority of the record item. * @see * GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority */ virtual int GetSortPriority() const; /** * @brief * Sets the sort priority for the record item. * @param nSortPriority Sort priority to be set. * @see * GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority */ virtual void SetSortPriority(int nSortPriority); /** * @brief * Gets the group priority of the record item. * @return * The group priority of the record item. * @see * GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority */ virtual int GetGroupPriority() const; /** * @brief * Sets the group priority for the record item. * @param nGroupPriority Group priority to be set. * @see * GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority */ virtual void SetGroupPriority(int nGroupPriority); /** * @brief * Sets the group caption for the record item. * @param strCaption Group caption to be set. */ virtual void SetGroupCaption(LPCTSTR strCaption); /** * @brief * Sets the caption for the record item. * @param strCaption Caption to be set. */ virtual void SetCaption(LPCTSTR strCaption); /** * @brief * Causes formula computed value to be updated. */ void UpdateValue(); /** * @brief * Sets if the record item is checked. * @param bChecked TRUE if the record item is checked. * @see * IsChecked, HasCheckbox */ virtual void SetChecked(BOOL bChecked); /** * @brief * Determines if the record item is checked. * @return * TRUE if the record item is checked, otherwise FALSE. * @see * SetChecked, HasCheckbox */ virtual BOOL IsChecked() const; /** * @brief * Sets the checked state for the record item. * * @param iState Integer value denoting the state of the check box; must be one * of the values defined by the XTPGridCheckState enumeration. * @see * SetChecked, HasCheckbox */ void SetCheckedState(int iState); /** * @brief * Gets the checked state of the record item. * @return * An integer value denoting the state of the check box; one * of the values defined by the XTPGridCheckState enumeration. * @see * SetChecked, HasCheckbox */ int GetCheckedState() const; /** * @brief * Adds check box area for item. * @param bHasCheckbox TRUE if item has check box area. * @param bTristate TRUE is tri-state checkbox, FALSE if usual * @see * SetChecked, IsChecked */ virtual void HasCheckbox(BOOL bHasCheckbox, BOOL bTristate = FALSE); /** * @brief * Determines if item has check box area * @return * TRUE if item has check box; otherwise FALSE * @see * SetChecked, IsChecked */ virtual BOOL GetHasCheckbox() const; /** * @brief * Returns whether items with a check box will go into edit mode on click. * @return * TRUE if items with a check box will go into edit mode on click. */ BOOL GetCanEditCheckboxItem() const; /** * @brief * Specifies whether items with a check box will go into edit mode on click. * @param bSet TRUE for items with a check box will go into edit mode on click. */ void SetCanEditCheckboxItem(BOOL bSet); /** * @brief * Sets the parent record object. * @param pGridRecord Pointer to a CXTPGridRecord object. */ void SetRecord(CXTPGridRecord* pGridRecord); /** * @brief * Gets the parent record object. * @return * A pointer to the parent record object. */ CXTPGridRecord* GetRecord() const; /** * @brief * Retrieves the application-supplied, 32-bit value associated * with the record item. * @return * The 32-bit value associated with the record item. */ virtual DWORD_PTR GetItemData() const; /** * @brief * Sets the 32-bit value associated with the record item. * @param dwData New value to be set. */ virtual void SetItemData(DWORD_PTR dwData); /** * @brief * Determines if the record item can receive focus. * @return * TRUE if the record item can receive focus, otherwise FALSE. */ virtual BOOL IsFocusable() const; /** * @brief * Specifies if the record item can receive focus. * @param bFocusable TRUE to allow the record item to receive focus, * FALSE to disallow the record item from receiving focus. * @details * This method specifies if the grid item can receive focus and overrides * the CXTPGridControl::FocusSubItems setting which only allows for * individual items to receive focus. If FALSE, then the record item cannot * be edited and combo/expand buttons will not be displayed. */ virtual void SetFocusable(BOOL bFocusable); /** * @brief * Call this member function to store/load a grid record item * using the specified data object. * @param pPX Source/destination CXTPPropExchange data object reference. */ virtual void DoPropExchange(CXTPPropExchange* pPX); /** * @brief * Gets the Markup element that renders the item. * @return * A pointer to the Markup element that renders the item. */ CXTPMarkupUIElement* GetMarkupUIElement() const; /** * @brief * Resets the Markup element. * @see * GetMarkupUIElement, CXTPGridControl::EnableMarkup */ virtual void ResetMarkupUIElement(); /** * @brief * The framework calls this member function to determine whether a * point is in the bounding rectangle of the specified tool. * @param point Specifies the x- and y-coordinate of the cursor. These * coordinates are always relative to the upper-left corner of the window * @param pTI Pointer to a TOOLINFO structure. * @return * If the tooltip control was found, the window control ID. If * the tooltip control was not found, -1. */ virtual INT_PTR OnToolHitTest(CPoint point, TOOLINFO* pTI); // GRID void Merge(CXTPGridRecordItem* pMergeItem); BOOL IsMerged() const; /** * @brief * Determines if the current item is in a merge group and, if so, * if it is not the left-top (main) item of the group. * @details * If the current item is in a merge group and is not the * left-top (main) item of the group, then the current item * receives properties from the main item of the merge group. * @return * TRUE if the current item is in a merge group and is not the * left-top (main) item of the group, otherwise FALSE. */ BOOL IsChildOfMerge() const; CXTPGridRecordItem* GetMergeItem() const; // Pointer to the top-left item in the merged group; may point to itself if it is the // top-left item in the merge group. NULL if the item does not belong to merged cells. CXTPGridRecordItem* m_pMergeItem; // GRID protected: virtual void ParseBBCode(CString& strText); /** * @brief * Draws the check box bitmap. * @param pDrawArgs Pointer to an XTP_GRIDRECORDITEM_DRAWARGS * structure containing drawing arguments. * @param rcItem Item area rectangle coordinates. */ virtual void DrawCheckBox(XTP_GRIDRECORDITEM_DRAWARGS* pDrawArgs, CRect& rcItem); /** * @brief * Gets the hyperlinks collection. * @return * A pointer to a CXTPGridHyperlinks object. */ CXTPGridHyperlinks* GetHyperlinks(); protected: virtual BOOL IsAllowEdit(XTP_GRIDRECORDITEM_ARGS* pItemArgs); /** * @brief * This method is called when an editable item enters edit mode. * @param pItemArgs Pointer to an XTP_GRIDRECORDITEM_ARGS structure. * @details * An item can enter edit mode when the user clicks on it and starts typing, * or when a check box item is checked/unchecked. * @return * TRUE if the edit request was successful, FALSE if the edit request was canceled. */ virtual BOOL OnRequestEdit(XTP_GRIDRECORDITEM_ARGS* pItemArgs); /** * @brief * This method is called when the user begins to edit an item. * @param pItemArgs Pointer to an XTP_GRIDRECORDITEM_ARGS * structure containing item arguments. */ virtual void OnBeginEdit(XTP_GRIDRECORDITEM_ARGS* pItemArgs); /** * @brief * This method is called when the user presses a key. * @param pItemArgs Pointer to an XTP_GRIDRECORDITEM_ARGS * structure containing item arguments. * @param nChar Pressed character code. * @return * TRUE if the item processed the key. */ virtual BOOL OnChar(XTP_GRIDRECORDITEM_ARGS* pItemArgs, UINT nChar); public: /** * @brief * This method is called when the user cancels editing an item. * @param pControl Pointer to the parent Grid control. * @param bApply TRUE to save the value of the in-place edit. */ virtual void OnCancelEdit(CXTPGridControl* pControl, BOOL bApply); /** * @brief * This method is called to save the value from an in-place edit. * @param pItemArgs Pointer to an XTP_GRIDRECORDITEM_ARGS * structure containing item arguments. */ virtual void OnValidateEdit(XTP_GRIDRECORDITEM_ARGS* pItemArgs); /** * @brief * This method is called when the value of the in-place edit control is changed. * @param pItemArgs Pointer to an XTP_GRIDRECORDITEM_ARGS * structure containing item arguments. * @param szText New in-place edit text. * virtual void OnEditChanged(XTP_GRIDRECORDITEM_ARGS* pItemArgs, LPCTSTR szText) * { * UNREFERENCED_PARAMETER(pItemArgs); * UNREFERENCED_PARAMETER(szText); * } */ virtual void OnEditChanged(XTP_GRIDRECORDITEM_ARGS* pItemArgs, LPCTSTR szText); /** * @brief * This method is called before the value of the in-place editor is * changed by the user. * @param pItemArgs Pointer to an XTP_GRIDRECORDITEM_ARGS * structure containing item arguments. * @param rstrNewText New string to be set in the editor. * @return * FALSE to cancel the edit operation. * virtual BOOL OnEditChanging(XTP_GRIDRECORDITEM_ARGS* pItemArgs, CString& rstrNewText) * { * UNREFERENCED_PARAMETER(pItemArgs); * UNREFERENCED_PARAMETER(rstrNewText); * return TRUE; * } */ virtual BOOL OnEditChanging(XTP_GRIDRECORDITEM_ARGS* pItemArgs, CString& rstrNewText); /** * @brief * This method is called when in-place editing has been canceled and the * value has not changed. * @param pItemArgs Pointer to an XTP_GRIDRECORDITEM_ARGS * structure containing item arguments. */ virtual void OnEditCanceled(XTP_GRIDRECORDITEM_ARGS* pItemArgs); /** * @brief * This method is called when the value of the selected contraint of the * in-place list is changed by the user. * @param pItemArgs Pointer to an XTP_GRIDRECORDITEM_ARGS * structure containing item arguments. * @param pConstraint Pointer to the selected constraint. */ virtual void OnConstraintChanged(XTP_GRIDRECORDITEM_ARGS* pItemArgs, CXTPGridRecordItemConstraint* pConstraint); /** * @brief * Gets the value associated with a selected constraint. * @param pItemArgs Pointer to an XTP_GRIDRECORDITEM_ARGS * structure containing item arguments. * @return * The value associated with the selected constraint. */ virtual DWORD GetSelectedConstraintData(XTP_GRIDRECORDITEM_ARGS* pItemArgs); /** * @brief * This method is called when the user presses the in-place button of the item. * @param pButton Pointer to the in-place button of the item. */ virtual void OnInplaceButtonDown(CXTPGridInplaceButton* pButton); /** * @brief * Gets the edit options of the item. * @param pColumn Pointer to the corresponding column of the item. * @return * A pointer to the CXTPGridRecordItemEditOptions object. */ CXTPGridRecordItemEditOptions* GetEditOptions(CXTPGridColumn* pColumn); /** * @brief * Gets the item controls list. * @return * A pointer to the CXTPGridRecordItemControls object. */ CXTPGridRecordItemControls* GetItemControls(); double StringToDouble(CString strText); /** * @brief * Creates a border for this item. * @return TRUE if successful; otherwise FALSE. */ BOOL CreateBorder(); /** * @brief * Destroys the border of this item. * @return TRUE if successful; otherwise FALSE. */ BOOL DestroyBorder(); /** * @brief * Gets the border of this item. * @return * A pointer to the border of this item. */ CXTPGridBorder* GetBorder() const; /** * @brief * Sets the parent grid object. * @param pControl Pointer to a CXTPGridControl object. */ void SetGridControl(CXTPGridControl* pControl); protected: /** @cond */ /** * @brief * If possible, returns the column associated with this Record Item. * Otherwise, returns NULL */ virtual CXTPGridColumn* GetColumn(); virtual void DoMouseButtonClick(); /** @endcond */ protected: CXTPGridControl* m_pControl; /**< Parent Grid control. */ CXTPGridRecord* m_pRecord; /**< Pointer to the associated record. */ CXTPGridBorder* m_pBorder; /**< Item border. */ CFont* m_pFontCaption; /**< Storage for item caption font. */ COLORREF m_clrText; /**< Storage for item text color. */ COLORREF m_clrBackground; /**< Storage for item background color. */ BOOL m_bBoldText; /**< TRUE if bold text. */ CString m_strFormatString; /**< Stores string for extra formatting of item caption. */ CString m_strFormula; /**< Stores Formula with simple algorithm to calculate. */ BOOL m_bEditable; /**< Stores editable flag. */ CXTPGridHyperlinks* m_pHyperlinks; /**< Array of the Item's hyperlinks. */ int m_nIconIndex; /**< ID of the bitmap from the application resources. */ int m_nSortPriority; /**< Sort priority. */ int m_nGroupPriority; /**< Group priority. */ CString m_strGroupCaption; /**< Caption of the group. */ CString m_strCaption; /**< Caption of the item. */ BOOL m_bFocusable; /**< TRUE if item accept focus. */ int m_checkState; /**< TRUE if item checked. */ BOOL m_bHasCheckbox; /**< TRUE if item has check box. */ BOOL m_bCanEditCheckboxItem; /**< TRUE if an item with a check box will get an edit control (only useful if column is wide) */ BOOL m_bTristateCheckbox; /**< TRUE if the check box is tri-state. */ DWORD_PTR m_dwData; /**< The 32-bit value associated with the item. */ CString m_strTooltip; /**< Tooltip of the item. */ CXTPGridRecordItemEditOptions* m_pEditOptions; /**< Edit options of the item. */ XTPGridColumnIconAlignment m_Alignment; /**< Alignment style for item. */ CXTPGridRecordItemControls* m_pItemControls; /**< Record item control list. */ CXTPGridRecordItemControl* m_pFocusedItemControl; /**< Focused record item control. */ BOOL m_bItemControlUnderMouse; /**< TRUE if an item control is under the mouse pointer. */ CXTPGridRecordItemControlHookWnd* m_pItemControlHookWnd; /**< Item control hook window. */ CRect m_rcGlyph; /**< Coordinates of drawn glyph. */ CXTPMarkupUIElement* m_pMarkupUIElement; /**< Markup element. */ # ifdef _XTP_ACTIVEX /** @cond */ DECLARE_DISPATCH_MAP() DECLARE_INTERFACE_MAP() DECLARE_OLETYPELIB_EX(CXTPGridRecordItem); afx_msg LPDISPATCH OleGetRecord(); afx_msg LPDISPATCH OleGetEditOptions(); afx_msg void OleCreateEditOptions(); afx_msg LPDISPATCH OleGetHyperlinks(); afx_msg BSTR OleGetFormat(); afx_msg void OleSetFormat(LPCTSTR pcszFormat); afx_msg BSTR OleGetFormula(); afx_msg void OleSetFormula(LPCTSTR pcszFormula); afx_msg BSTR OleGetCaption(); afx_msg void OleSetCaption(LPCTSTR pcszCaption); afx_msg BSTR OleGetGroupCaption(); afx_msg void OleSetGroupCaption(LPCTSTR pcszGroupCaption); afx_msg BSTR OleGetTooltip(); afx_msg void OleSetTooltip(LPCTSTR pcszTooltip); afx_msg LPDISPATCH OleGetItemControls(); afx_msg LPDISPATCH OleGetMarkupUIElement(); COleVariant m_oleTag; /** @endcond */ # endif friend class CXTPGridRecord; friend class CXTPGridControl; friend class CXTPGridNavigator; friend class CXTPGridIconNavigator; friend class CXTPGridRecordItemControls; }; AFX_INLINE CString CXTPGridRecordItem::GetFormula() const { return m_strFormula; } AFX_INLINE void CXTPGridRecordItem::SetFormula(LPCTSTR sFormula) { m_strFormula = sFormula; } AFX_INLINE CString CXTPGridRecordItem::GetFormatString() const { return m_strFormatString; } AFX_INLINE void CXTPGridRecordItem::SetFormatString(LPCTSTR strFormat) { m_strFormatString = strFormat; } AFX_INLINE BOOL CXTPGridRecordItem::SetEditable(BOOL bEditable) { BOOL bOldEditable = m_bEditable; m_bEditable = bEditable; return bOldEditable; } AFX_INLINE BOOL CXTPGridRecordItem::IsPreviewItem() const { return FALSE; } AFX_INLINE int CXTPGridRecordItem::GetIconIndex() const { return m_nIconIndex; } AFX_INLINE int CXTPGridRecordItem::SetIconIndex(int nIconIndex) { int nOldID = GetIconIndex(); m_nIconIndex = nIconIndex; return nOldID; } AFX_INLINE int CXTPGridRecordItem::GetAlignment() const { return m_Alignment; } AFX_INLINE int CXTPGridRecordItem::SetAlignment(int nAlignment) { int nOld = m_Alignment; m_Alignment = (XTPGridColumnIconAlignment)nAlignment; return nOld; } AFX_INLINE int CXTPGridRecordItem::GetSortPriority() const { return m_nSortPriority; } AFX_INLINE void CXTPGridRecordItem::SetSortPriority(int nSortPriority) { m_nSortPriority = nSortPriority; } AFX_INLINE int CXTPGridRecordItem::GetGroupPriority() const { return m_nGroupPriority; } AFX_INLINE void CXTPGridRecordItem::SetGroupPriority(int nGroupPriority) { m_nGroupPriority = nGroupPriority; } AFX_INLINE void CXTPGridRecordItem::SetGroupCaption(LPCTSTR strCaption) { m_strGroupCaption = strCaption; } AFX_INLINE void CXTPGridRecordItem::SetChecked(BOOL bChecked) { if (bChecked) { m_checkState = xtpGridCheckStateChecked; } else { m_checkState = xtpGridCheckStateUnchecked; } } AFX_INLINE BOOL CXTPGridRecordItem::IsChecked() const { return xtpGridCheckStateChecked == m_checkState; } AFX_INLINE void CXTPGridRecordItem::SetCheckedState(int iState) { if (m_bTristateCheckbox) { m_checkState = XTPGridCheckState(iState); } else { m_checkState = iState ? xtpGridCheckStateChecked : xtpGridCheckStateUnchecked; } } AFX_INLINE int CXTPGridRecordItem::GetCheckedState() const { if (m_bTristateCheckbox) { return m_checkState; } else { return m_checkState ? xtpGridCheckStateChecked : xtpGridCheckStateUnchecked; } } AFX_INLINE void CXTPGridRecordItem::HasCheckbox(BOOL bHasCheckbox, BOOL bTristate) { m_bHasCheckbox = bHasCheckbox; m_bTristateCheckbox = bTristate; } AFX_INLINE BOOL CXTPGridRecordItem::GetHasCheckbox() const { return m_bHasCheckbox; } AFX_INLINE void CXTPGridRecordItem::SetRecord(CXTPGridRecord* pGridRecord) { m_pRecord = pGridRecord; ResetMarkupUIElement(); } AFX_INLINE CXTPGridRecord* CXTPGridRecordItem::GetRecord() const { return m_pRecord; } AFX_INLINE void CXTPGridRecordItem::SetFocusable(BOOL bFocusable) { m_bFocusable = bFocusable; } AFX_INLINE DWORD_PTR CXTPGridRecordItem::GetItemData() const { return m_dwData; } AFX_INLINE void CXTPGridRecordItem::SetItemData(DWORD_PTR dwData) { m_dwData = dwData; } AFX_INLINE DWORD CXTPGridRecordItem::GetSelectedConstraintData(XTP_GRIDRECORDITEM_ARGS* /*pItemArgs*/) { return DWORD(-1); } AFX_INLINE CString CXTPGridRecordItem::GetTooltip() const { if (IsChildOfMerge()) { return GetMergeItem()->m_strTooltip; } return m_strTooltip; } AFX_INLINE void CXTPGridRecordItem::SetTooltip(LPCTSTR lpszTooltip) { m_strTooltip = lpszTooltip; } AFX_INLINE BOOL CXTPGridRecordItem::IsBold() const { return m_bBoldText; } AFX_INLINE CXTPMarkupUIElement* CXTPGridRecordItem::GetMarkupUIElement() const { return m_pMarkupUIElement; } AFX_INLINE void CXTPGridRecordItem::OnEditCanceled(XTP_GRIDRECORDITEM_ARGS* pItemArgs) { UNREFERENCED_PARAMETER(pItemArgs); } AFX_INLINE void CXTPGridRecordItem::SetGridControl(CXTPGridControl* pControl) { m_pControl = pControl; } /** @cond */ # include "Common/Base/Diagnostic/XTPEnableNoisyWarnings.h" #endif //#if !defined(__XTPGRIDRECORDITEM_H__) /** @endcond */