// XTPReportRecordItem.h: interface for the CXTPReportRecordItem class.
//
// This file is a part of the XTREME REPORTCONTROL MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPREPORTRECORDITEM_H__)
#define __XTPREPORTRECORDITEM_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPMarkupUIElement;
class CXTPMarkupContext;
class CXTPReportControl;
class CXTPReportRow;
class CXTPReportRecordItem;
class CXTPReportHyperlink;
class CXTPReportHyperlinks;
class CXTPReportColumn;
class CXTPReportPaintManager;
class CXTPReportRecord;
class CXTPReportInplaceButton;
class CXTPPropExchange;
class CXTPReportRecordItemConstraint;
class CXTPReportRecordItemConstraints;
class CXTPReportRecordItemControlHookWnd;
class CXTPReportRecordItemControl;
class CXTPReportRecordItemControls;
class CXTPReportBorder;
//===========================================================================
// Summary:
// Basic set of parameters transferred to item handlers.
// This structure groups together essential parameters used in
// items processing activities. It is parent for all other structures:
// XTP_REPORTRECORDITEM_DRAWARGS, XTP_REPORTRECORDITEM_CLICKARGS
// Example:
//
// XTP_REPORTRECORDITEM_ARGS itemArgs(pControl, pRow, pColumn);
// pItem->OnBeginEdit(&itemArgs);
//
// See Also: CXTPReportRecordItem::OnBeginEdit
//===========================================================================
struct _XTP_EXT_CLASS XTP_REPORTRECORDITEM_ARGS
{
//{{AFX_CODEJOCK_PRIVATE
//-----------------------------------------------------------------------
// Summary:
// Constructs a XTP_REPORTRECORDITEM_ARGS object
// Parameters:
// pControl - Parent report control pointer
// pRow - Item's row pointer
// pColumn - Item's column pointer
//-----------------------------------------------------------------------
XTP_REPORTRECORDITEM_ARGS();
XTP_REPORTRECORDITEM_ARGS(CXTPReportControl* pControl, CXTPReportRow* pRow, CXTPReportColumn* pColumn);
//
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPPropertyGrid object, handles cleanup and deallocation
//-----------------------------------------------------------------------
virtual ~XTP_REPORTRECORDITEM_ARGS();
void AddRef();
void Release();
const XTP_REPORTRECORDITEM_ARGS& operator=(const XTP_REPORTRECORDITEM_ARGS& src);
//}}AFX_CODEJOCK_PRIVATE
CXTPReportControl* pControl; // Pointer to the main Report control.
CXTPReportRow* pRow; // Pointer to the associated row.
CXTPReportColumn* pColumn; // Report column at click position, if any, NULL otherwise.
CXTPReportRecordItem* pItem; // Pointer to the associated item.
CRect rcItem; // Item position in control client coordinates.
};
//===========================================================================
// Summary:
// A set of parameters transferred to Draw item handler.
// It inherits essential parameters from XTP_REPORTRECORDITEM_ARGS.
// Remarks:
// This structure is used in almost all functions concerning drawing
// activities
// Example:
//
// // fill structure
// XTP_REPORTRECORDITEM_DRAWARGS drawArgs;
// drawArgs.pDC = pDC;
// drawArgs.pControl = m_pControl;
// drawArgs.pRow = pRow;
// // call function
// pItem->Draw(&drawArgs);
//
// See Also: CXTPReportPaintManager
//===========================================================================
struct _XTP_EXT_CLASS XTP_REPORTRECORDITEM_DRAWARGS : public XTP_REPORTRECORDITEM_ARGS
{
//{{AFX_CODEJOCK_PRIVATE
XTP_REPORTRECORDITEM_DRAWARGS()
{
nTextAlign = DT_LEFT;
pDC = NULL;
}
//}}AFX_CODEJOCK_PRIVATE
CDC* pDC; // Pointer to control drawing context.
int nTextAlign; // Text alignment mode DT_LEFT || DT_RIGHT || DT_CENTER
};
//===========================================================================
// Summary:
// A set of parameters transferred to mouse click item handlers.
// It inherits essential parameters from XTP_REPORTRECORDITEM_ARGS.
// Remarks:
// XTP_REPORTRECORDITEM_CLICKARGS is used in most functions involved
// in mouse events processing
// See Also: CXTPReportControl, CXTPReportRecordItem::OnClick
//===========================================================================
struct _XTP_EXT_CLASS XTP_REPORTRECORDITEM_CLICKARGS : public XTP_REPORTRECORDITEM_ARGS
{
CPoint ptClient; // Coordinates of the mouse click point.
};
//===========================================================================
// Summary:
// This structure is sent to Main window in a WM_NOTIFY message from Item
// and provides all parameters that are needed in processing control specific
// notifications by the main window
// Example:
//
// BEGIN_MESSAGE_MAP(CPropertiesView, CView)
// ON_NOTIFY(XTP_NM_REPORT_VALUECHANGED, ID_REPORT_CONTROL, OnPropertyChanged)
// END_MESSAGE_MAP()
//
// void CPropertiesView::OnPropertyChanged(NMHDR* pNotifyStruct, LRESULT* /*result*/)
// {
// XTP_NM_REPORTRECORDITEM* pItemNotify = (XTP_NM_REPORTRECORDITEM*) pNotifyStruct;
//
// switch (pItemNotify->pItem->GetItemData())
// {
// // Some code.
// }
// }
//
// See Also: XTP_NM_REPORTINPLACEBUTTON
//===========================================================================
struct XTP_NM_REPORTRECORDITEM
{
NMHDR hdr; // Standard structure, containing information about a notification message.
CXTPReportRow* pRow; // Pointer to the row associated with the notification.
CXTPReportRecordItem* pItem; // Pointer to the record item associated with the notification.
CXTPReportColumn* 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 has happened.
};
//===========================================================================
// Summary:
// A set of parameters transferred with XTP_NM_REPORT_REQUESTEDIT message
// Remarks:
// XTP_NM_REPORTREQUESTEDIT is used to cancel edit operations
// See Also: XTP_NM_REPORT_REQUESTEDIT
//===========================================================================
struct XTP_NM_REPORTREQUESTEDIT : public XTP_NM_REPORTRECORDITEM
{
BOOL bCancel; //TRUE to cancel operation.
};
//-----------------------------------------------------------------------
// Summary:
// This structure is sent to Main window in a WM_NOTIFY message from Item
// and provides all parameters that are needed in processing control specific
// notifications by the main window
// Remarks:
// Use this structure to get in-place button which produce XTP_NM_REPORT_INPLACEBUTTONDOWN message.
// See Also: XTP_NM_REPORT_INPLACEBUTTONDOWN
//-----------------------------------------------------------------------
struct XTP_NM_REPORTINPLACEBUTTON : public XTP_NM_REPORTRECORDITEM
{
CXTPReportInplaceButton* pButton; // Pointer to in-place button
};
//-----------------------------------------------------------------------
// Summary:
// This structure is sent to Main window in a WM_NOTIFY message from Item
// and provides all parameters that are needed in processing control specific
// notifications by the main window.
// Remarks:
// It is sent before clipboard Copy/Paste operations.
// See Also:
// XTP_NM_REPORT_BEFORE_COPY_TOTEXT, XTP_NM_REPORT_BEFORE_PASTE_FROMTEXT,
// XTP_NM_REPORT_BEFORE_PASTE, CXTPReportControl::OnBeforeCopyToText(),
// CXTPReportControl::OnBeforePasteFromText(),
// CXTPReportControl::OnBeforePaste().
//-----------------------------------------------------------------------
struct XTP_NM_REPORT_BEFORE_COPYPASTE
{
NMHDR hdr; // Standard structure, containing information about a notification message.
CXTPReportRecord** ppRecord; // [in/out] A pointer to record pointer;
CStringArray* parStrings; // [in/out] A pointer to strings array with record items values.
};
//-----------------------------------------------------------------------
// Summary:
// This structure is sent to Main window in a WM_NOTIFY message from Item
// and provides all parameters that are needed in processing control specific
// notifications by the main window
// Remarks:
// Use this structure to notify about constraint changing.
// See Also: XTP_NM_REPORTCONSTRAINTSELECTING
//-----------------------------------------------------------------------
struct XTP_NM_REPORTCONSTRAINTSELECTING : public XTP_NM_REPORTRECORDITEM
{
CXTPReportRecordItemConstraint* pConstraint; // Pointer to the constraint associated with the notification.
};
//-----------------------------------------------------------------------
// Summary:
// This structure is sent to Main window in a WM_NOTIFY message from Item
// and provides all parameters that are needed in processing control specific
// notifications by the main window
// Remarks:
// Use this structure to notify about tooltip showing.
// See Also: XTP_NM_REPORTTOOLTIPTEXT
//-----------------------------------------------------------------------
struct XTP_NM_REPORTTOOLTIPINFO : public XTP_NM_REPORTRECORDITEM
{
CString* pstrText; // Pointer to a CString object with Tooltip text.
// int nImageIndex;
};
//-----------------------------------------------------------------------
// Summary:
// This enum defines alignment style for the column icon and text.
//-----------------------------------------------------------------------
enum XTPReportColumnIconAlignment
{
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.
};
//-----------------------------------------------------------------------
// Summary:
// This enum defines alignment style for the group row custom icon.
// See Also:
// XTP_REPORTRECORDITEM_METRICS::nGroupRowIconAlignment
//-----------------------------------------------------------------------
enum XTPReportGroupRowIconAlignment
{
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.
};
//-----------------------------------------------------------------------
// Summary:
// This enum defines flags for virtual row metrics.
// See Also:
// XTP_REPORTRECORDITEM_METRICS::nVirtRowFlags
//-----------------------------------------------------------------------
enum XTPReportVirtualRowFlags
{
xtpVirtRowUnknown = 0, // Unknown (empty) value.
xtpVirtRowHasChildren = 0x001, // A row has children.
xtpVirtRowLastChild = 0x002 // A row is the last child of its parent.
};
//-----------------------------------------------------------------------
// Summary:
// Record item drawing metrics.
// Its helper structures group together parameters to store general
// drawing metrics
//-----------------------------------------------------------------------
struct XTP_REPORTRECORDITEM_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 CXTPReportControl::GetImageManager()
int nGroupRowIconAlignment; // Group row icon alignment. See XTPEnumGroupRowIconAlignment
int nColumnAlignment; // Column alignment. See XTPReportColumnIconAlignment
int nItemIcon; // Item icon ID. See CXTPReportControl::GetImageManager()
int nVirtRowLevel; // Virtual row level.
int nVirtRowFlags; // Virtual row flags.
//{{AFX_CODEJOCK_PRIVATE
//-------------------------------------------------------------------------
// Summary:
// Constructs a XTP_REPORTRECORDITEM_METRICS struct
//-------------------------------------------------------------------------
XTP_REPORTRECORDITEM_METRICS()
{
Reset();
}
void Reset()
{
pFont = NULL;
clrForeground = XTP_REPORT_COLOR_DEFAULT;
clrBackground= XTP_REPORT_COLOR_DEFAULT;
nGroupRowIcon = XTP_REPORT_NOICON;
nGroupRowIconAlignment = xtpGroupRowIconRight | xtpGroupRowIconVCenter;
nColumnAlignment = xtpColumnTextLeft;
nItemIcon = XTP_REPORT_NOICON;
nVirtRowLevel = 0;
nVirtRowFlags = 0;
}
//}}AFX_CODEJOCK_PRIVATE
};
//===========================================================================
// Summary:
// This class represents collection of the in-place buttons
// of the single item of the report control.
//===========================================================================
class _XTP_EXT_CLASS CXTPReportInplaceButtons : public CArray
{
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPReportInplaceButtons object
//-----------------------------------------------------------------------
CXTPReportInplaceButtons();
};
//===========================================================================
// Summary:
// This class represents edit options of the single item or column
//===========================================================================
class _XTP_EXT_CLASS CXTPReportRecordItemEditOptions : public CXTPCmdTarget
{
public:
//-------------------------------------------------------------------------
// Summary:
// Constructs a CXTPReportRecordItemEditOptions object.
//-------------------------------------------------------------------------
CXTPReportRecordItemEditOptions();
//-------------------------------------------------------------------------
// Summary:
// Destroys a CXTPReportRecordItemEditOptions object, handles
// cleanup and deallocation
//-------------------------------------------------------------------------
~CXTPReportRecordItemEditOptions();
public:
//-----------------------------------------------------------------------
// Summary:
// Adds new constraint to constraint list.
// Parameters:
// lpszConstraint - Caption of the constraint to be added.
// dwData - The 32-bit value associated with the constraint.
// Returns:
// A pointer to report record item constraint object.
//-----------------------------------------------------------------------
CXTPReportRecordItemConstraint* AddConstraint(LPCTSTR lpszConstraint, DWORD_PTR dwData = 0);
//-----------------------------------------------------------------------
// Summary:
// Finds constraint by its value or caption
// Parameters:
// dwData - The 32-bit value associated with the constraint.
// Returns:
// Constraint pointer if found or NULL if the constraint
// is not found.
//-----------------------------------------------------------------------
CXTPReportRecordItemConstraint* FindConstraint(DWORD_PTR dwData);
//-----------------------------------------------------------------------
// Summary:
// Finds constraint by its value or caption
// Parameters:
// lpszConstraint - caption of the constraint
// Returns:
// Constraint pointer if found or NULL if the constraint
// is not found.
//-----------------------------------------------------------------------
CXTPReportRecordItemConstraint* FindConstraint(LPCTSTR lpszConstraint);
//-------------------------------------------------------------------------
// Summary:
// Retrieves constraints pointer.
// Returns:
// Constraint pointer of the edit options.
//-------------------------------------------------------------------------
CXTPReportRecordItemConstraints* GetConstraints()
{
return m_pConstraints;
}
//-------------------------------------------------------------------------
// Summary:
// Call this member to add a combo button to the CXTPReportRecordItem.
// Parameters:
// bInside - BOOL falg to keep inside parent control rectangle
// Returns:
// pointer to CXTPReportInplaceButton
// Remarks:
// This adds a drop-down combo button to the ReportRecordItem. When
// the button is pressed, it will display all of the data items that
// were added as CXTPReportRecordItemConstraints.
//-------------------------------------------------------------------------
CXTPReportInplaceButton* AddComboButton(BOOL bInside = FALSE);
//-------------------------------------------------------------------------
// Summary:
// Call this member to add a expand button to the CXTPReportRecordItem.
// Parameters:
// bInside - BOOL falg to keep inside parent control rectangle
// Returns:
// pointer to CXTPReportInplaceButton
// Remarks:
// A small button with three ellipses is displayed and you can use this
// button to display your own custom dialog.
//-------------------------------------------------------------------------
CXTPReportInplaceButton* AddExpandButton(BOOL bInside = FALSE);
//-------------------------------------------------------------------------
// Summary:
// Call this member to add a spin button to the CXTPReportRecordItem.
// Parameters:
// bInside - BOOL flag to keep inside parent control rectangle
// Returns:
// pointer to CXTPReportInplaceButton
// Remarks:
// A spin control with two buttons is displayed and you can use this
// button to change the cell numeric value.
//-------------------------------------------------------------------------
CXTPReportInplaceButton* AddSpinButton(BOOL bInside = FALSE);
//-------------------------------------------------------------------------
// Summary:
// Call this member to get a buttons with the specified index.
// Parameters:
// nIndex - the index of a button to get.
// Returns:
// pointer to CXTPReportInplaceButton
//-------------------------------------------------------------------------
CXTPReportInplaceButton* GetButton(int nIndex);
//-------------------------------------------------------------------------
// Summary:
// Call this member to remove all buttons of the CXTPReportRecordItem.
//-------------------------------------------------------------------------
void RemoveButtons();
public:
BOOL m_bAllowEdit;// TRUE to add an edit box to this item.
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.
CXTPReportRecordItemConstraints* m_pConstraints; // Constraint list.
CXTPReportInplaceButtons arrInplaceButtons; // Array of in-place buttons.
BOOL m_bSelectTextOnEdit; // Select all text 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).
};
//===========================================================================
// Summary:
// 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 CXTPReportRecordItem. Most member functions in this class
// are virtual.
// See Also:
// CXTPReportRecordItemDateTime, CXTPReportRecordItemNumber,
// CXTPReportRecordItemPreview, CXTPReportRecordItemText,
// CXTPReportRecordItemVariant
//===========================================================================
class _XTP_EXT_CLASS CXTPReportRecordItem : public CXTPHeapObjectT
{
DECLARE_SERIAL(CXTPReportRecordItem)
public:
//-----------------------------------------------------------------------
// Summary:
// CXTPReportRecordItem default constructor
//-----------------------------------------------------------------------
CXTPReportRecordItem();
//-----------------------------------------------------------------------
// Summary:
// CXTPReportRecordItem default destructor
//-----------------------------------------------------------------------
virtual ~CXTPReportRecordItem();
//-----------------------------------------------------------------------
// Summary:
// Should be overridden by descendants for drawing itself.
// Parameters:
// pDrawArgs - structure which contains drawing arguments:
// Returns:
// An integer specifying the item text width.
// Remarks:
// Call this member function to draw an item. Actually this function
// only prepares and calls needed drawing functions from PaintManager.
// Thus if you wish to change the look of your report item, you must just provide
// your own implementation of PaintManager
// Example:
//
// // fill structure
// XTP_REPORTRECORDITEM_DRAWARGS drawArgs;
// drawArgs.pDC = pDC;
// drawArgs.pControl = m_pControl;
// drawArgs.pRow = this;
// // call function
// Draw(&drawArgs);
//
//
// See Also: XTP_REPORTRECORDITEM_DRAWARGS
//-----------------------------------------------------------------------
virtual int Draw(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs);
//-----------------------------------------------------------------------
// Summary:
// Should be overridden by descendants for drawing itself.
// Parameters:
// pDrawArgs - structure which contain drawing arguments.
// pMetrics - structure which contain metrics of the item.
//-----------------------------------------------------------------------
virtual void OnDrawCaption(
XTP_REPORTRECORDITEM_DRAWARGS *pDrawArgs,
XTP_REPORTRECORDITEM_METRICS *pMetrics);
//-----------------------------------------------------------------------
// Summary:
// Should be overridden by descendants for drawing itself.
// Parameters:
// pDrawArgs - structure which contain drawing arguments.
// rcItem - item rectangle.
//-----------------------------------------------------------------------
virtual void OnDrawControls(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, CRect& rcItem);
//-----------------------------------------------------------------------
// Summary:
// Determines which report item control, if any, is at a specified position.
// Parameters:
// ptPoint - Point to test.
// Remarks:
// Call this member function to test an item contents at the
// specified position.
// Returns:
// The item control at the specified position, if any,
// or NULL otherwise.
//-----------------------------------------------------------------------
CXTPReportRecordItemControl* HitTest(CPoint ptPoint);
//-----------------------------------------------------------------------
// Summary:
// Determine if the click occurred on the hyperlink
// Parameters:
// ptClick - point of the mouse click
// Returns:
// Zero-based index of clicked link, -1 otherwise
//-----------------------------------------------------------------------
virtual int HitTestHyperlink(CPoint ptClick);
//-----------------------------------------------------------------------
// Summary:
// Processes mouse left button down clicks.
// Parameters:
// pClickArgs - structure which contains mouse click arguments
// Returns:
// TRUE if handled, FALSE else.
// Remarks:
// Usually this function is called by ReportRow's OnLButtonDown function
// See Also: XTP_REPORTRECORDITEM_CLICKARGS
//-----------------------------------------------------------------------
virtual BOOL OnLButtonDown(XTP_REPORTRECORDITEM_CLICKARGS* pClickArgs);
//-----------------------------------------------------------------------
// Summary:
// Processes mouse left button up clicks.
// Parameters:
// pClickArgs - structure which contains mouse click arguments
// Returns:
// TRUE if handled, FALSE else.
// Remarks:
// Usually this function is called by ReportRow's OnLButtonUp function
// See Also: XTP_REPORTRECORDITEM_CLICKARGS
//-----------------------------------------------------------------------
virtual BOOL OnLButtonUp(XTP_REPORTRECORDITEM_CLICKARGS* pClickArgs);
//-----------------------------------------------------------------------
// Summary:
// Processes single mouse clicks.
// Parameters:
// pClickArgs - structure which contains mouse click arguments
// Remarks:
// Usually this function is called by ReportRow's OnClick function
// See Also: XTP_REPORTRECORDITEM_CLICKARGS
//-----------------------------------------------------------------------
virtual void OnClick(XTP_REPORTRECORDITEM_CLICKARGS* pClickArgs);
//-----------------------------------------------------------------------
// Summary:
// Processes single mouse clicks.
// Parameters:
// pClickArgs - structure which contains mouse click arguments:
// Remarks:
// Usually this function is called by ReportRow's OnDblClick function
// See Also: XTP_REPORTRECORDITEM_CLICKARGS
//-----------------------------------------------------------------------
virtual void OnDblClick(XTP_REPORTRECORDITEM_CLICKARGS* pClickArgs);
//-----------------------------------------------------------------------
// Summary:
// Processes the move mouse event.
// Parameters:
// point - mouse point
// nFlags - additional flags.
// pControl - pointer to report control.
// Remarks:
// Usually this function is called by ReportRow's OnMouseMove function
//-----------------------------------------------------------------------
virtual void OnMouseMove(UINT nFlags, CPoint point, CXTPReportControl* pControl = NULL);
//-----------------------------------------------------------------------
// Summary:
// Returns item text caption.
// Remarks:
// Can be overridden by descendants.
// Returns:
// Item text caption (empty string for base record item class).
//-----------------------------------------------------------------------
virtual CString GetCaption()
{
return GetCaption(GetColumn());
};
//-----------------------------------------------------------------------
// Summary:
// Returns item text caption.
// Parameters:
// pColumn - Corresponded column of the item.
// Remarks:
// Can be overridden by descendants.
// Returns:
// Item text caption (empty string for base record item class).
//-----------------------------------------------------------------------
virtual CString GetCaption(CXTPReportColumn* pColumn)
{
UNREFERENCED_PARAMETER(pColumn); return m_strCaption;
};
//-----------------------------------------------------------------------
// Summary:
// Retrieves caption text bounding rectangle
// Parameters:
// pDrawArgs - structure which contain drawing arguments.
// rcItem - Bounding rectangle of the item
//-----------------------------------------------------------------------
virtual void GetCaptionRect(XTP_REPORTRECORDITEM_ARGS* pDrawArgs, CRect& rcItem);
//-----------------------------------------------------------------------
// Summary:
// Returns group caption.
// Parameters:
// pColumn - point to the column
// Returns:
// Text of Group Caption.
//-----------------------------------------------------------------------
virtual CString GetGroupCaption(CXTPReportColumn* pColumn);
//-----------------------------------------------------------------------
// Summary:
// Returns resource id of string containing text
// Parameters:
// pColumn - Point to the column
// Returns:
// Integer value of resource id
//-----------------------------------------------------------------------
virtual int GetGroupCaptionID(CXTPReportColumn* pColumn);
//-----------------------------------------------------------------------
// Summary:
// Compares group captions.
// Parameters:
// pColumn - Point to the column
// pItem - Point to the item
// Returns:
// Zero if the items' values are identical,
// < 0 if this item value is less than provided,
// or > 0 if this item value is greater than provided.
//-----------------------------------------------------------------------
virtual int CompareGroupCaption(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
//-----------------------------------------------------------------------
// Summary:
// Compares this item with the provided one.
// Provides default behavior for descendants.
// Parameters:
// pColumn - Corresponded column of the items.
// pItem - points to the compared Item
// Returns:
// Zero if the items' values are identical,
// < 0 if this item value is less than provided,
// or > 0 if this item value is greater than provided.
//-----------------------------------------------------------------------
virtual int Compare(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
//-----------------------------------------------------------------------
// Summary:
// Sets item text font.
// Parameters:
// pFont - New font for caption.
//-----------------------------------------------------------------------
virtual void SetFont(CFont* pFont);
//-----------------------------------------------------------------------
// Summary:
// Call this member function to get item text font.
// Returns:
// Pointer to the current text font.
//-----------------------------------------------------------------------
virtual CFont* GetFont();
//-----------------------------------------------------------------------
// Summary:
// Returns the text tool tip for the item
// Returns:
// The text tool tip for the item.
//-----------------------------------------------------------------------
virtual CString GetTooltip() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to set/change the item tool tip.
// Parameters:
// lpszTooltip - Tool tip of the item
//-----------------------------------------------------------------------
virtual void SetTooltip(LPCTSTR lpszTooltip);
//-----------------------------------------------------------------------
// Summary:
// Sets item text color.
// Parameters:
// clrText - New color.
//-----------------------------------------------------------------------
virtual void SetTextColor(COLORREF clrText);
//-----------------------------------------------------------------------
// Summary:
// Returns item text color.
// Returns:
// COLORREF
//-----------------------------------------------------------------------
virtual COLORREF GetTextColor();
//-----------------------------------------------------------------------
// Summary:
// Sets/clears bold flag for the item font.
// Parameters:
// bBold - If TRUE set font to bold.
// Remarks:
// By using this function you can easily change font to bold or to normal.
//-----------------------------------------------------------------------
virtual void SetBold(BOOL bBold = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Returns the Bold state for the item
// Returns:
// TRUE if item is bold.
//-----------------------------------------------------------------------
virtual BOOL IsBold() const;
//-----------------------------------------------------------------------
// Summary:
// Sets item text background color.
// Parameters:
// clrBackground - New background color.
//-----------------------------------------------------------------------
virtual void SetBackgroundColor(COLORREF clrBackground);
//-----------------------------------------------------------------------
// Summary:
// Returns item text background color.
// Returns:
// COLORREF
//-----------------------------------------------------------------------
virtual COLORREF GetBackgroundColor();
//-----------------------------------------------------------------------
// Summary:
// Gets item Formula
// Returns:
// String object, containing current Formula
//-----------------------------------------------------------------------
virtual CString GetFormula() const;
//-----------------------------------------------------------------------
// Summary:
// Sets item Formula.
// Parameters:
// sFormula - New Formula.
virtual void SetFormula(LPCTSTR sFormula);
//-----------------------------------------------------------------------
// Summary:
// Gets item caption format string.
// Returns:
// String object, containing current format string
//-----------------------------------------------------------------------
virtual CString GetFormatString() const;
//-----------------------------------------------------------------------
// Summary:
// Sets item caption format string.
// Parameters:
// strFormat - New format string.
// Remarks:
// If the format string is set, a caption text will be formatted
// accordingly to this format string before drawing it; convenient
// in many cases (drawing date for example). Format string is C - like
// style, see sprintf() C function or CString.Format() member function
//-----------------------------------------------------------------------
virtual void SetFormatString(LPCTSTR strFormat);
//-----------------------------------------------------------------------
// Summary:
// Call this member function to programmatically check if item is
// editable.
// Returns:
// BOOLEAN value represents current editable flag
//-----------------------------------------------------------------------
virtual BOOL IsEditable() const;
//-----------------------------------------------------------------------
// Summary:
// Sets editable flag.
// Parameters:
// bEditable - new editable flag (default is TRUE).
// Returns:
// Old item editable state.
//-----------------------------------------------------------------------
virtual BOOL SetEditable(BOOL bEditable = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Adds new Hyperlink.
// Parameters:
// pHyperlink - pointer to hyperlink.
// Remarks:
// Each record item can have a number of hyperlinks.
// To add new hyperlink to record item you firs create create
// the new instance of hyperlink class.
// Returns:
// zero-based id of new Hyperlink.
// Example:
// AddHyperlink(new CXTPReportHyperlink(27, 7);
//
// See Also: CXTPReportHyperlink.
//-----------------------------------------------------------------------
virtual int AddHyperlink(CXTPReportHyperlink* pHyperlink);
//-----------------------------------------------------------------------
// Summary:
// Returns a count of hyperlinks in record item
// Remarks:
// Each record item can have a number of hyperlinks. To process
// all of them, you get the count of hyperlinks that are processed by an item
// using GetHyperlinksCount() member function
// Returns:
// Count of hyperlinks in item text
//-----------------------------------------------------------------------
virtual int GetHyperlinksCount() const;
//-----------------------------------------------------------------------
// Summary:
// Return Hyperlink by it's index.
// Parameters:
// nHyperlink - zero-based index of hyperlink.
// Remarks:
// To process a hyperlink, you get a pointer to it by calling GetHyperlinkAt();
// Returns:
// Pointer to Hyperlink.
// Example:
//
// int nHyperlinks = GetHyperlinksCount();
// CXTPReportHyperlink* pHyperlink;
// for(int nHyperlink = 0; nHyperlink < nHyperlinks; nHyperlink++)
// {
// pHyperlink = GetHyperlinkAt(nHyperlink);
// // YOUR PROCESSING HERE
// // ...
// //
// }
//
// See Also: CXTPReportHyperlink.
//-----------------------------------------------------------------------
virtual CXTPReportHyperlink* GetHyperlinkAt(int nHyperlink) const;
//-----------------------------------------------------------------------
// Summary:
// Call this member function to remove hyperlink at the specified index.
// Parameters:
// nHyperlink - zero-based index of hyperlink.
//-----------------------------------------------------------------------
virtual void RemoveHyperlinkAt(int nHyperlink);
//-----------------------------------------------------------------------
// Summary:
// Fills XTP_REPORTRECORDITEM_METRICS structure
// Parameters:
// pDrawArgs - Draw arguments for calculating item metrics.
// pItemMetrics - Pointer to the metrics item to fill with values.
// Remarks:
// Calculates preview item metrics based on provided draw arguments.
// Could be overridden by descendants.
// See Also: XTP_REPORTRECORDITEM_DRAWARGS, XTP_REPORTRECORDITEM_METRICS
//-----------------------------------------------------------------------
virtual void GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pItemMetrics);
//-----------------------------------------------------------------------
// Summary:
// Determines if this item is a preview item.
// Returns:
// TRUE for the preview item, FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL IsPreviewItem() const;
//-----------------------------------------------------------------------
// Summary:
// Returns item index.
// Returns:
// Item numeric index.
//-----------------------------------------------------------------------
int GetIndex() const;
//-----------------------------------------------------------------------
// Summary:
// Returns an ID of the associated resource bitmap.
// Returns:
// An ID of the associated resource bitmap.
//-----------------------------------------------------------------------
virtual int GetIconIndex() const;
//-----------------------------------------------------------------------
// Summary:
// Sets new associated bitmap ID.
// Parameters:
// nIconIndex - ID of the bitmap from the application resources.
// Returns:
// Returns an ID of old resource bitmap.
//-----------------------------------------------------------------------
virtual int SetIconIndex(int nIconIndex);
//-----------------------------------------------------------------------
// Summary:
// Returns the current alignment value for the item.
// Returns:
// Current item alignment value.
// The result is a combination of alignment styles defined in XTPReportColumnIconAlignment.
//-----------------------------------------------------------------------
int GetAlignment() const;
//-----------------------------------------------------------------------
// Summary:
// Sets new alignment value for the item.
// Parameters:
// nAlignment - New alignment value. See XTPReportColumnIconAlignment
// for possible alignment styles.
// Returns:
// Previous alignment item value.
//-----------------------------------------------------------------------
int SetAlignment(int nAlignment);
//-----------------------------------------------------------------------
// Summary:
// Retrieves sort priority of the item.
// Returns:
// An integer specifying the sort priority.
// See Also: GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority
//-----------------------------------------------------------------------
virtual int GetSortPriority() const;
//-----------------------------------------------------------------------
// Summary:
// Sets the sort priority of the item.
// Parameters:
// nSortPriority - Priority will be used for sort routines.
// See Also:
// GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority
//-----------------------------------------------------------------------
virtual void SetSortPriority(int nSortPriority);
//-----------------------------------------------------------------------
// Summary:
// Retrieves sort priority of the item.
// Returns:
// An integer specifying the group priority.
// See Also: GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority
//-----------------------------------------------------------------------
virtual int GetGroupPriority() const;
//-----------------------------------------------------------------------
// Summary:
// Sets the group priority of the item.
// Parameters:
// nGroupPriority - Priority will be used for sort routines.
// See Also: GetSortPriority, SetSortPriority, SetGroupPriority, GetGroupPriority
//-----------------------------------------------------------------------
virtual void SetGroupPriority(int nGroupPriority);
//-----------------------------------------------------------------------
// Summary:
// Sets the group caption of the item.
// Parameters:
// strCaption - Caption of group to set.
//-----------------------------------------------------------------------
virtual void SetGroupCaption(LPCTSTR strCaption);
//-----------------------------------------------------------------------
// Summary:
// Sets caption of the item.
// Parameters:
// strCaption - Caption of item to set.
//-----------------------------------------------------------------------
virtual void SetCaption(LPCTSTR strCaption);
//-----------------------------------------------------------------------
// Summary:
// Call this method to check the item.
// Parameters:
// bChecked - TRUE if item is checked.
// See Also:
// IsChecked, HasCheckbox
//-----------------------------------------------------------------------
virtual void SetChecked(BOOL bChecked);
//-----------------------------------------------------------------------
// Summary:
// Determines if the item is checked
// Returns:
// TRUE if the item is checked, FALSE else.
// See Also: SetChecked, HasCheckbox
//-----------------------------------------------------------------------
virtual BOOL IsChecked() const;
//-----------------------------------------------------------------------
// Summary:
// Call this function set the item state checked.
// Parameter:
// iState - Specifyes the the check state, 1 for checked and 2 for grayed.
// See Also: SetChecked, HasCheckbox
//-----------------------------------------------------------------------
void SetCheckedState(int iState);
//-----------------------------------------------------------------------
// Summary:
// Call this function get the item's checked state.
// Returns:
// An integer denoting the the check state, 1 for checked and 2 for grayed.
// See Also: SetChecked, HasCheckbox
//-----------------------------------------------------------------------
int GetCheckedState() const;
//-----------------------------------------------------------------------
// Summary:
// Adds check box area for item.
// Parameters:
// bHasCheckbox - TRUE if item has check box area.
// bTristate - TRUE is tri-state checkbox, FALSE - if usual
// See Also: SetChecked, IsChecked
//-----------------------------------------------------------------------
virtual void HasCheckbox(BOOL bHasCheckbox, BOOL bTristate = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Determines if item has check box area
// Returns:
// TRUE if item has check box; otherwise FALSE
// See Also: SetChecked, IsChecked
//-----------------------------------------------------------------------
virtual BOOL GetHasCheckbox() const;
//-----------------------------------------------------------------------
// Summary:
// Returns whether items with a check box will go into edit mode on click.
// Returns:
// TRUE if items with a check box will go into edit mode on click.
//-----------------------------------------------------------------------
BOOL GetCanEditCheckboxItem() const;
//-----------------------------------------------------------------------
// Summary:
// Specifies whether items with a check box will go into edit mode on click.
// Parameters:
// bSet - TRUE for items with a check box will go into edit mode on click.
//-----------------------------------------------------------------------
void SetCanEditCheckboxItem(BOOL bSet);
//-----------------------------------------------------------------------
// Summary:
// Retrieved parent record object.
// Returns:
// Pointer to parent record object.
//-----------------------------------------------------------------------
CXTPReportRecord* GetRecord () const;
//-----------------------------------------------------------------------
// Summary:
// This method retrieves the application-supplied 32-bit value
// associated with the item.
// Returns:
// The 32-bit value associated with the item.
//-----------------------------------------------------------------------
virtual DWORD_PTR GetItemData() const;
//-----------------------------------------------------------------------
// Summary:
// Call this method to set the 32-bit value associated with the item.
// Parameters:
// dwData - Contains the new value to associate with the item.
//-----------------------------------------------------------------------
virtual void SetItemData(DWORD_PTR dwData);
//-----------------------------------------------------------------------
// Summary:
// Call this member to determine if a CXTPReportRecordItem can receive focus.
// Returns:
// TRUE is the CXTPReportRecordItem can receive focus, FALSE if
// it can not receive focus.
//-----------------------------------------------------------------------
virtual BOOL IsFocusable() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify whether the CXTPReportRecordItem can have focus.
// Parameters:
// bFocusable - TRUE to allow the item to have focus, FALSE to specify the
// item can not have focus.
// Remarks:
// This will override the CXTPReportControl::FocusSubItems setting which only
// allows individual items to receive focus. The SetFocusable member specifies
// whether the item can receive focus, if FALSE, the item can not be edited
// and the combo or expand buttons will not be displayed.
//-----------------------------------------------------------------------
virtual void SetFocusable(BOOL bFocusable);
//-----------------------------------------------------------------------
// Summary:
// Call this member function to Store/Load a report record item
// using the specified data object.
// Parameters:
// pPX - Source or destination CXTPPropExchange data object reference.
//-----------------------------------------------------------------------
virtual void DoPropExchange(CXTPPropExchange* pPX);
//-----------------------------------------------------------------------
// Summary:
// Call this method to get Markup element that renders the item
// Returns:
// Pointer to Markup element
//-----------------------------------------------------------------------
CXTPMarkupUIElement* GetMarkupUIElement() const;
//-----------------------------------------------------------------------
// Summary: The framework calls this member function to determine
// whether a point is in the bounding rectangle of the
// specified tool.
// Parameters: point - Specifies the x- and y coordinate of the cursor.
// These coordinates are always relative to the
// upper-left corner of the window
// pTI - A pointer to a TOOLINFO structure.
// Returns: 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(CXTPReportRecordItem *pMergeItem);
BOOL IsMerged() const;
CXTPReportRecordItem* GetMergeItem() const;
CXTPReportRecordItem* m_pMergeItem; //
//GRID
protected:
virtual void ParseBBCode(CString &strText);
//-----------------------------------------------------------------------
// Summary:
// Draws check box bitmap
// Parameters:
// pDrawArgs - Pointer to structure with drawing arguments
// rcItem - Item area rectangle coordinates.
//-----------------------------------------------------------------------
virtual void DrawCheckBox(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, CRect& rcItem);
//-----------------------------------------------------------------------
// Summary:
// Use this function to access hyperlinks collection.
// Returns:
// A pointer to CXTPReportHyperlinks object.
//-----------------------------------------------------------------------
CXTPReportHyperlinks* GetHyperlinks();
protected:
virtual BOOL IsAllowEdit(XTP_REPORTRECORDITEM_ARGS *pItemArgs);
//-----------------------------------------------------------------------
// Summary:
// This method is called when an editable item enters edit mode.
// Parameters:
// pItemArgs - Pointer to a XTP_REPORTRECORDITEM_ARGS struct.
// Remarks:
// An item can enter edit mode when the user clicks on it and starts typing,
// or when a check box item is checked\unchecked.
// Returns:
// Returns TRUE if the edit request was successful, FALSE if the edit
// request was canceled.
//-----------------------------------------------------------------------
virtual BOOL OnRequestEdit(XTP_REPORTRECORDITEM_ARGS *pItemArgs);
//-----------------------------------------------------------------------
// Summary:
// This method is called when user begin edit item.
// Parameters:
// pItemArgs - Pointer to structure with items arguments.
//-----------------------------------------------------------------------
virtual void OnBeginEdit(XTP_REPORTRECORDITEM_ARGS *pItemArgs);
//-----------------------------------------------------------------------
// Summary:
// This method is called when user press key.
// Parameters:
// pItemArgs - Pointer to structure with items arguments.
// nChar - Pressed character code
// Returns:
// TRUE if item proceeded key.
//-----------------------------------------------------------------------
virtual BOOL OnChar(XTP_REPORTRECORDITEM_ARGS *pItemArgs, UINT nChar);
public:
//-----------------------------------------------------------------------
// Summary:
// This method is called when user cancel edit item.
// Parameters:
// pControl - Parent report control.
// bApply - TRUE to save value of in-place edit.
//-----------------------------------------------------------------------
virtual void OnCancelEdit(CXTPReportControl *pControl, BOOL bApply);
//-----------------------------------------------------------------------
// Summary:
// This method is called to save value from in-place edit
// Parameters:
// pItemArgs - Pointer to structure with items arguments.
//-----------------------------------------------------------------------
virtual void OnValidateEdit(XTP_REPORTRECORDITEM_ARGS* pItemArgs);
//-----------------------------------------------------------------------
// Summary:
// This method is called when value of in-place edit control changed
// Parameters:
// pItemArgs - Pointer to structure with items arguments.
// szText - New in-place edit text.
//-----------------------------------------------------------------------
//virtual void OnEditChanged(XTP_REPORTRECORDITEM_ARGS* pItemArgs, LPCTSTR szText)
//{
// UNREFERENCED_PARAMETER(pItemArgs);
// UNREFERENCED_PARAMETER(szText);
//}
virtual void OnEditChanged(XTP_REPORTRECORDITEM_ARGS* pItemArgs, LPCTSTR szText);
//-----------------------------------------------------------------------
// Summary:
// This method is called when in-place editor value changed by user
// Parameters:
// pItemArgs - item arguments
// rstrNewText - new string to be set in the editor
// Returns:
// FALSE to cancel edit operation.
//-----------------------------------------------------------------------
//virtual BOOL OnEditChanging(XTP_REPORTRECORDITEM_ARGS* pItemArgs, CString& rstrNewText)
//{
// UNREFERENCED_PARAMETER(pItemArgs);
// UNREFERENCED_PARAMETER(rstrNewText);
// return TRUE;
//}
virtual BOOL OnEditChanging(XTP_REPORTRECORDITEM_ARGS* pItemArgs, CString& rstrNewText);
//-----------------------------------------------------------------------
// Summary:
// This method is called when in-place editing is canceled and value
// is not changed.
// Parameters:
// pItemArgs - Pointer to structure with items arguments.
//-----------------------------------------------------------------------
virtual void OnEditCanceled(XTP_REPORTRECORDITEM_ARGS* pItemArgs);
//-----------------------------------------------------------------------
// Summary:
// This method is called when user select specified constraint in in-place list
// Parameters:
// pItemArgs - Pointer to structure with items arguments
// pConstraint - Selected constraint
//-----------------------------------------------------------------------
virtual void OnConstraintChanged(XTP_REPORTRECORDITEM_ARGS* pItemArgs, CXTPReportRecordItemConstraint* pConstraint);
//-----------------------------------------------------------------------
// Summary:
// Retrieves associated value with selected constraint.
// Parameters:
// pItemArgs - Pointer to structure with items arguments
// Returns:
// DWORD value associated with selected constraint.
//-----------------------------------------------------------------------
virtual DWORD GetSelectedConstraintData(XTP_REPORTRECORDITEM_ARGS* pItemArgs);
//-----------------------------------------------------------------------
// Summary:
// This method is called when user press in-place button of the item.
// Parameters:
// pButton - In-place button of the item.
//-----------------------------------------------------------------------
virtual void OnInplaceButtonDown(CXTPReportInplaceButton* pButton);
//-----------------------------------------------------------------------
// Summary:
// Retrieves edit options of item.
// Parameters:
// pColumn - Column of the item.
// Returns:
// Pointer to CXTPReportRecordItemEditOptions class.
//-----------------------------------------------------------------------
CXTPReportRecordItemEditOptions* GetEditOptions(CXTPReportColumn* pColumn);
//-----------------------------------------------------------------------
// Summary:
// Retrieves item controls list.
// Returns:
// Pointer to CXTPReportRecordItemControls class.
//-----------------------------------------------------------------------
CXTPReportRecordItemControls* GetItemControls();
double StringToDouble(CString strText);
//-----------------------------------------------------------------------
// Summary:
// Creates a border for this item.
//-----------------------------------------------------------------------
BOOL CreateBorder();
//-----------------------------------------------------------------------
// Summary:
// Destroys the border of this item.
//-----------------------------------------------------------------------
BOOL DestroyBorder();
//-----------------------------------------------------------------------
// Summary:
// Returns the border of this item.
//-----------------------------------------------------------------------
CXTPReportBorder* GetBorder() const;
protected:
//{{AFX_CODEJOCK_PRIVATE
//-----------------------------------------------------------------------
// Summary:
// If possible, returns the column associated with this Record Item.
// Otherwise, returns NULL
//-----------------------------------------------------------------------
virtual CXTPReportColumn* GetColumn();
virtual void DoMouseButtonClick();
//}}AFX_CODEJOCK_PRIVATE
protected:
CXTPReportControl *m_pControl; // Parent Report control
CXTPReportRecord *m_pRecord; // Pointer to the associated record
CXTPReportBorder *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; // Is 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.
CXTPReportHyperlinks* 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 nox is tri state.
DWORD_PTR m_dwData; // The 32-bit value associated with the item.
CString m_strTooltip; // Tooltip of the item.
CXTPReportRecordItemEditOptions* m_pEditOptions; // Edit options of the item.
XTPReportColumnIconAlignment m_Alignment; // Alignment style for item.
CXTPReportRecordItemControls* m_pItemControls; // Record item control list.
CXTPReportRecordItemControl* m_pFocusedItemControl; // Focused record item control.
BOOL m_bItemControlUnderMouse; // TRUE if an item control is under the mouse pointer.
CXTPReportRecordItemControlHookWnd* m_pItemControlHookWnd; // Item control hook window.
CRect m_rcGlyph; // Coordinates of drawn glyph.
CXTPMarkupUIElement* m_pMarkupUIElement; // Markup element.
friend class CXTPReportRecord;
friend class CXTPReportControl;
friend class CXTPReportNavigator;
friend class CXTPReportIconNavigator;
friend class CXTPReportRecordItemControls;
};
AFX_INLINE CString CXTPReportRecordItem::GetFormula() const
{
return m_strFormula;
}
AFX_INLINE void CXTPReportRecordItem::SetFormula(LPCTSTR sFormula)
{
m_strFormula = sFormula;
}
AFX_INLINE CString CXTPReportRecordItem::GetFormatString() const
{
return m_strFormatString;
}
AFX_INLINE void CXTPReportRecordItem::SetFormatString(LPCTSTR strFormat)
{
m_strFormatString = strFormat;
}
AFX_INLINE BOOL CXTPReportRecordItem::SetEditable(BOOL bEditable)
{
BOOL bOldEditable = m_bEditable;
m_bEditable = bEditable;
return bOldEditable;
}
AFX_INLINE BOOL CXTPReportRecordItem::IsPreviewItem() const
{
return FALSE;
}
AFX_INLINE int CXTPReportRecordItem::GetIconIndex() const
{
return m_nIconIndex;
}
AFX_INLINE int CXTPReportRecordItem::SetIconIndex(int nIconIndex)
{
int nOldID = GetIconIndex();
m_nIconIndex = nIconIndex;
return nOldID;
}
AFX_INLINE int CXTPReportRecordItem::GetAlignment() const
{
return m_Alignment;
}
AFX_INLINE int CXTPReportRecordItem::SetAlignment(int nAlignment)
{
int nOld = m_Alignment;
m_Alignment = (XTPReportColumnIconAlignment)nAlignment;
return nOld;
}
AFX_INLINE int CXTPReportRecordItem::GetSortPriority() const
{
return m_nSortPriority;
}
AFX_INLINE void CXTPReportRecordItem::SetSortPriority(int nSortPriority)
{
m_nSortPriority = nSortPriority;
}
AFX_INLINE int CXTPReportRecordItem::GetGroupPriority() const
{
return m_nGroupPriority;
}
AFX_INLINE void CXTPReportRecordItem::SetGroupPriority(int nGroupPriority)
{
m_nGroupPriority = nGroupPriority;
}
AFX_INLINE void CXTPReportRecordItem::SetGroupCaption(LPCTSTR strCaption)
{
m_strGroupCaption = strCaption;
}
AFX_INLINE void CXTPReportRecordItem::SetChecked(BOOL bChecked)
{
if (bChecked)
{
m_checkState = xtpReportCheckStateChecked;
}
else
{
m_checkState = xtpReportCheckStateUnchecked;
}
}
AFX_INLINE BOOL CXTPReportRecordItem::IsChecked() const
{
return xtpReportCheckStateChecked == m_checkState;
}
AFX_INLINE void CXTPReportRecordItem::SetCheckedState(int iState)
{
if (m_bTristateCheckbox)
{
m_checkState = XTPReportCheckState(iState);
}
else
{
m_checkState = iState ? xtpReportCheckStateChecked : xtpReportCheckStateUnchecked;
}
}
AFX_INLINE int CXTPReportRecordItem::GetCheckedState() const
{
if (m_bTristateCheckbox)
{
return m_checkState;
}
else
{
return m_checkState ? xtpReportCheckStateChecked : xtpReportCheckStateUnchecked;
}
}
AFX_INLINE void CXTPReportRecordItem::HasCheckbox(BOOL bHasCheckbox, BOOL bTristate)
{
m_bHasCheckbox = bHasCheckbox;
m_bTristateCheckbox = bTristate;
}
AFX_INLINE BOOL CXTPReportRecordItem::GetHasCheckbox() const
{
return m_bHasCheckbox;
}
AFX_INLINE CXTPReportRecord* CXTPReportRecordItem::GetRecord () const
{
return m_pRecord;
}
AFX_INLINE void CXTPReportRecordItem::SetFocusable(BOOL bFocusable)
{
m_bFocusable = bFocusable;
}
AFX_INLINE DWORD_PTR CXTPReportRecordItem::GetItemData() const
{
return m_dwData;
}
AFX_INLINE void CXTPReportRecordItem::SetItemData(DWORD_PTR dwData)
{
m_dwData = dwData;
}
AFX_INLINE DWORD CXTPReportRecordItem::GetSelectedConstraintData(XTP_REPORTRECORDITEM_ARGS* /*pItemArgs*/)
{
return DWORD(-1);
}
AFX_INLINE CString CXTPReportRecordItem::GetTooltip() const
{
return m_strTooltip;
}
AFX_INLINE void CXTPReportRecordItem::SetTooltip(LPCTSTR lpszTooltip)
{
m_strTooltip = lpszTooltip;
}
AFX_INLINE BOOL CXTPReportRecordItem::IsBold() const
{
return m_bBoldText;
}
AFX_INLINE CXTPMarkupUIElement* CXTPReportRecordItem::GetMarkupUIElement() const
{
return m_pMarkupUIElement;
}
AFX_INLINE void CXTPReportRecordItem::OnEditCanceled(XTP_REPORTRECORDITEM_ARGS *pItemArgs)
{
UNREFERENCED_PARAMETER(pItemArgs);
}
#endif //#if !defined(__XTPREPORTRECORDITEM_H__)