You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
796 lines
32 KiB
C
796 lines
32 KiB
C
2 years ago
|
// XTPReportRow.h: interface for the CXTPReportRow 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(__XTPREPORTROW_H__)
|
||
|
#define __XTPREPORTROW_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
|
||
|
class CXTPReportRecord;
|
||
|
class CXTPReportControl;
|
||
|
class CXTPReportTip;
|
||
|
class CXTPReportRecordItem;
|
||
|
class CXTPReportRows;
|
||
|
class CXTPReportColumn;
|
||
|
class CXTPReportRecordMergeItems;
|
||
|
class CXTPReportSection;
|
||
|
|
||
|
|
||
|
struct XTP_REPORTRECORDITEM_DRAWARGS;
|
||
|
struct XTP_REPORTRECORDITEM_METRICS;
|
||
|
struct XTP_REPORTRECORDITEM_CLICKARGS;
|
||
|
|
||
|
|
||
|
|
||
|
class _XTP_EXT_CLASS CXTPReportRowBase : public CCmdTarget, public CXTPAccessible
|
||
|
{
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// CXTPReportRow class represents an row of the report control
|
||
|
// window.
|
||
|
// Remarks:
|
||
|
// Each item has corresponding a CXTPReportRecord, and could have a list
|
||
|
// of sub-items associated with it. By clicking a Row item, the user
|
||
|
// can expand and collapse the associated list of sub-items.
|
||
|
//
|
||
|
// CXTPReportRow handles a behavior of report row. It processes
|
||
|
// user mouse and keyboard events, it also implements external control
|
||
|
// member functions. It is also handling drawing logic for the row.
|
||
|
//
|
||
|
// A collection of report row items is combined into CXTPReportRows
|
||
|
// and could be accessed via CXTPReportControl::GetRows() method.
|
||
|
// See Also:
|
||
|
// CXTPReportControl overview, CXTPReportRows, CXTPReportRecord,
|
||
|
// CXTPReportRecordItem, CXTPReportGroupRow
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPReportRow : public CXTPHeapObjectT<CXTPReportRowBase, CXTPReportRowAllocator>
|
||
|
{
|
||
|
DECLARE_INTERFACE_MAP()
|
||
|
DECLARE_DYNAMIC(CXTPReportRow)
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// A constructor of the CXTPReportRow object.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPReportRow();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys CXTPReportRow object, handles cleanup and deallocation.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPReportRow();
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called for initial initialization of the row.
|
||
|
// Parameters:
|
||
|
// pRow - Pointer to the row which settings will be copied.
|
||
|
// pControl - Pointer to the parent report control.
|
||
|
// pControl - Pointer to the parent section.
|
||
|
// pRecord - Pointer to the record associated with the row.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void InitRow(CXTPReportRow *pRow);
|
||
|
|
||
|
virtual void InitRow(
|
||
|
CXTPReportControl *pControl,
|
||
|
CXTPReportSection *pSection,
|
||
|
CXTPReportRecord *pRecord);// <COMBINE CXTPReportRow::InitRow@CXTPReportRow*>
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Get associated record.
|
||
|
// Returns:
|
||
|
// Associated list record with data.
|
||
|
// Example:
|
||
|
// <code>CXTPReportRecord* pRecord = pRow->GetRecord();</code>
|
||
|
// See Also: CXTPReportRecord overview
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPReportRecord* GetRecord() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Draws the row on the provided DC.
|
||
|
// Parameters:
|
||
|
// pDC - Pointer to control drawing context.
|
||
|
// rcRow - Coordinates of the rectangle for drawing this row.
|
||
|
// rcClip - Coordinates of the rectangle for drawing rows
|
||
|
// nLeftOffset - Start drawing left offset in pixels (Horizontal scroll position).
|
||
|
// Remarks:
|
||
|
// Call this member function to draw an item. This function
|
||
|
// only prepares data for drawing 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
|
||
|
// See Also: CXTPPaintManager
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Draw(CDC *pDC, CRect rcRow, CRect rcClip, int nLeftOffset,
|
||
|
CXTPReportRecordMergeItems &mergeItems, int nColumnFrom, int nColumnTo);
|
||
|
|
||
|
virtual void DrawItemGrid(CDC *pDC, CXTPReportColumn *pColumn, CRect rcGridItem);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Calculates height of the row depending on the provided DC.
|
||
|
// Parameters:
|
||
|
// pDC - Provided DC.
|
||
|
// nWidth - Row width.
|
||
|
// Remarks:
|
||
|
// Row height depends of many factors: provided device context,
|
||
|
// font to print text, visibility of rows items. GetHeight()
|
||
|
// takes into account all of them to get real height of Row.
|
||
|
// Returns:
|
||
|
// Returns height of the row in logical units.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetHeight(CDC* pDC, int nWidth);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns current row index in the view.
|
||
|
// Remarks:
|
||
|
// ReportControl draws row in some order. It depends of Index value
|
||
|
// You use GetIndex() to get current index value for particular row
|
||
|
// Returns:
|
||
|
// Current row index in the view.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetIndex() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns row focused state.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want to determine whether
|
||
|
// this row is focused in the report control or not.
|
||
|
// Returns:
|
||
|
// TRUE if row is focused, FALSE otherwise.
|
||
|
// See Also: IsSelected
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsFocused() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns row selected state.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want to determine whether
|
||
|
// this row is selected in the report control or not.
|
||
|
// Returns:
|
||
|
// TRUE if row is selected, FALSE otherwise.
|
||
|
// See Also: IsFocused
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsSelected() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns row expanded state.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want to determine whether
|
||
|
// this row is expanded in the report control or not.
|
||
|
// Returns:
|
||
|
// TRUE if row is expanded, FALSE otherwise.
|
||
|
// See Also: SetExpanded
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsExpanded() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets row expanded state.
|
||
|
// Parameters:
|
||
|
// bExpanded - New row expanded state.
|
||
|
// bRecursive - BOOL flag to expand till the end
|
||
|
// Remarks:
|
||
|
// Call this member function if you want to expand or collapse
|
||
|
// this row.
|
||
|
// See Also: IsExpanded
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetExpanded(BOOL bExpanded, BOOL bRecursive = FALSE);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets row expanded state (VB - oriented call) till the last child
|
||
|
// Parameters:
|
||
|
// bExpanded - New row expanded state.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want to expand or collapse this row.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SetFullExpanded(BOOL bExpanded);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns row visible state.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want to determine whether
|
||
|
// this row is visible in the report control or not.
|
||
|
// Returns:
|
||
|
// TRUE if row is visible, FALSE otherwise.
|
||
|
// See Also: SetVisible
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsVisible() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets row visibility state.
|
||
|
// Parameters:
|
||
|
// bVisible - New row visibility state.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want to show or hide
|
||
|
// this row.
|
||
|
// See Also: IsVisible
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetVisible(BOOL bVisible);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns whether collapsing/expanding rows is locked.
|
||
|
// Returns:
|
||
|
// TRUE if collapsing/expanding rows is locked.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsLockExpand() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets whether collapsing/expanding rows is locked.
|
||
|
// Parameter:
|
||
|
// bLockExpand - TRUE to lock collapsing/expanding rows.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void LockExpand(BOOL bLockExpand);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to select/set focus to the row. If multiple
|
||
|
// selection is enabled, then this row will be added to the selection.
|
||
|
// Parameters:
|
||
|
// bSelected - TRUE to select the row, FALSE to de-select the row.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetSelected(BOOL bSelected);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to select all child items of specified row.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SelectChilds();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines if this row is a group row.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want to determine whether
|
||
|
// this row is a group row or not.
|
||
|
// Returns:
|
||
|
// TRUE if it is a group row, FALSE otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsGroupRow() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines which report item, if any, is at a specified position.
|
||
|
// Parameters:
|
||
|
// ptPoint - Point to test.
|
||
|
// pRectItem - Returns item rect.
|
||
|
// ppColumn - Returns a pointer to the column at tested position.
|
||
|
// Remarks:
|
||
|
// Call this member function to test a row contents at the
|
||
|
// specified position.
|
||
|
// Returns:
|
||
|
// The record item at the specified position, if any,
|
||
|
// or NULL otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPReportRecordItem* HitTest(CPoint ptPoint, CRect* pRectItem = NULL, CXTPReportColumn** ppColumn = NULL) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Process mouse clicks. Called by the framework when the user
|
||
|
// has clicked the mouse button in the row area.
|
||
|
// Parameters:
|
||
|
// ptClicked - Position of the cursor, in screen coordinates,
|
||
|
// at the time of the mouse click.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want a row to process
|
||
|
// a mouse button click message.
|
||
|
// You should provide the method with the coordinates of the
|
||
|
// mouse message to proceed.
|
||
|
// See Also: OnDblClick, OnMouseMove, OnContextMenu
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void OnClick(CPoint ptClicked);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Processes mouse left button down clicks.
|
||
|
// Parameters:
|
||
|
// pClickArgs - structure which contains mouse click arguments
|
||
|
// Returns:
|
||
|
// TRUE if successfully handled the event, FALSE else.
|
||
|
// See Also: OnLButtonUp, OnClick
|
||
|
//-----------------------------------------------------------------------
|
||
|
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 successfully handled the event, FALSE else.
|
||
|
// See Also: OnLButtonDown, OnClick
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL OnLButtonUp(XTP_REPORTRECORDITEM_CLICKARGS* pClickArgs);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Process mouse double clicks. Called by the framework when
|
||
|
// the user has double-clicked the mouse button in the row area.
|
||
|
// Parameters:
|
||
|
// ptClicked - Position of the cursor, in screen coordinates,
|
||
|
// at the time of the mouse click.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want a row to process
|
||
|
// a mouse button double click message.
|
||
|
// You should provide the method with the coordinates of the
|
||
|
// mouse message to proceed.
|
||
|
// See Also: OnClick, OnMouseMove, OnContextMenu
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void OnDblClick(CPoint ptClicked);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Process mouse moving.
|
||
|
// Parameters:
|
||
|
// nFlags - Indicates whether various virtual keys are down.
|
||
|
// point - Point coordinates where the message was fired from.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want a row to process
|
||
|
// a mouse move message. You should provide the method with the
|
||
|
// coordinates of the mouse message to proceed and a flag
|
||
|
// showing which of virtual keys were down.
|
||
|
// See Also: OnClick, OnDblClick, OnContextMenu
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void OnMouseMove(UINT nFlags, CPoint point);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Process context menu. Called by the framework when the user
|
||
|
// has clicked the right mouse button (right clicked) in the window.
|
||
|
// Parameters:
|
||
|
// ptClick - Position of the cursor, in screen coordinates,
|
||
|
// at the time of the mouse click.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want a row to process
|
||
|
// a mouse right button down (context menu call) message.
|
||
|
// You should provide the method with the coordinates of the
|
||
|
// mouse message to proceed.
|
||
|
// See Also: OnClick, OnDblClick, OnMouseMove
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void OnContextMenu(CPoint ptClick);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Shows a specified tooltip window at the specified position.
|
||
|
// Parameters:
|
||
|
// ptTip - A screen position to show tooltip at.
|
||
|
// pTipWnd - Pointer to the specified tooltip window.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want to show a report
|
||
|
// tip window for this row.
|
||
|
// See Also: CXTPReportTip overview
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void ShowToolTip(CPoint ptTip, CXTPReportTip* pTipWnd);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a pointer to the parent report control.
|
||
|
// Remarks:
|
||
|
// Call this member function to retrieve a pointer to the
|
||
|
// CXTPReportControl which this item belongs to.
|
||
|
// Returns:
|
||
|
// A pointer to an associated report control object.
|
||
|
// See Also: CXTPReportControl overview
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPReportControl* GetControl() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns the parent row of the current row.
|
||
|
// Remarks:
|
||
|
// When report rows are arranged as a tree view, this member
|
||
|
// function returns a pointer to the parent CXTPReportRow item.
|
||
|
// Returns:
|
||
|
// Pointer to the parent row if any, or NULL otherwise.
|
||
|
// See Also: HasParent, GetTreeDepth, GetChilds, AddChild, HasChildren
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPReportRow* GetParentRow() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns the parent rows of the current row.
|
||
|
// Remarks:
|
||
|
// When report rows are arranged as a tree view, this member
|
||
|
// function returns a pointer to the parent CXTPReportRows item.
|
||
|
// Returns:
|
||
|
// Pointer to the parent rows if any, or NULL otherwise.
|
||
|
// See Also: HasParent, GetTreeDepth, GetChilds, AddChild, HasChildren
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPReportRows* GetParentRows() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a depth of this row in tree view.
|
||
|
// Remarks:
|
||
|
// When report rows are arranged as a tree view, this member
|
||
|
// function returns a depth level of the row, which means
|
||
|
// the number of parent elements for the row..
|
||
|
// Returns:
|
||
|
// A depth of this row in tree view in levels.
|
||
|
// See Also: GetParentRow, HasParent, GetChilds, AddChild, HasChildren
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetTreeDepth() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines if a row has a parent in tree view.
|
||
|
// Parameters:
|
||
|
// pRow - A row to check.
|
||
|
// Remarks:
|
||
|
// When report rows are arranged as a tree view, this member
|
||
|
// function calculates whether this row has a parent row or not.
|
||
|
// Returns:
|
||
|
// TRUE if specified row has a parent, FALSE otherwise.
|
||
|
// See Also:
|
||
|
// HasParent, GetParentRow, GetTreeDepth, GetChilds, AddChild, HasChildren
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL HasParent(CXTPReportRow* pRow);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a collection of this row children.
|
||
|
// Parameters:
|
||
|
// BOOL bCreate - flag to create child if not exist
|
||
|
// Remarks:
|
||
|
// Call this member function to retrieve access to the collection
|
||
|
// of row children.
|
||
|
// Returns:
|
||
|
// CXTPReportRows collection of row children.
|
||
|
// See Also:
|
||
|
// CXTPReportRows overview, GetParentRow, HasParent, GetTreeDepth, AddChild, HasChildren
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPReportRows* GetChilds(BOOL bCreate = TRUE);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Adds a child row to the current row.
|
||
|
// Parameters:
|
||
|
// pRow - Pointer to a child CXTPReportRow object.
|
||
|
// Remarks:
|
||
|
// Call this member function if you want to add a CXTPReportRow
|
||
|
// object as a child of current row in tree view mode.
|
||
|
// Returns:
|
||
|
// A pointer to the added CXTPReportRow object.
|
||
|
// See Also: GetParentRow, HasParent, GetTreeDepth, GetChilds
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPReportRow* AddChild(CXTPReportRow* pRow);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines if a row has children in tree view.
|
||
|
// Remarks:
|
||
|
// When report rows are arranged as a tree view, this member
|
||
|
// function calculates whether this row has children rows or not.
|
||
|
// Returns:
|
||
|
// TRUE if the specified row has children rows, FALSE otherwise.
|
||
|
// See Also:
|
||
|
// HasParent, GetParentRow, GetTreeDepth, GetChilds, AddChild, HasChildren
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL HasChildren() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns the next sibling row of the current row.
|
||
|
// Remarks:
|
||
|
// When report rows are arranged as a tree view, this member
|
||
|
// function returns a pointer to the next CXTPReportRow item.
|
||
|
// Returns:
|
||
|
// Pointer to the next sibling row if any, or NULL otherwise.
|
||
|
// See Also: HasParent, GetTreeDepth, GetChilds, AddChild, HasChildren
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPReportRow* GetNextSiblingRow() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets coordinates of the collapse/expand button for this row.
|
||
|
// Parameters:
|
||
|
// rcCollapse - The rectangle in report window client coordinates.
|
||
|
// Remarks:
|
||
|
// Call this member function to setup the coordinates of the
|
||
|
// collapse/expand button for the row. Note that it could be
|
||
|
// different depending on the row tree depth.
|
||
|
// See Also: GetTreeDepth, GetRect
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetCollapseRect(CRect rcCollapse);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines if preview item is visible.
|
||
|
// Remarks:
|
||
|
// Call this member function to determine whether preview item
|
||
|
// for this row is visible or not.
|
||
|
// Returns:
|
||
|
// TRUE if preview item is visible, FALSE otherwise.
|
||
|
// See Also: CXTPReportRecordItemPreview overview, CXTPReportRecord::GetItemPreview
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsPreviewVisible() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines if items are visible
|
||
|
// Returns:
|
||
|
// TRUE if items are visible
|
||
|
// See Also IsPreviewVisible
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsItemsVisible() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns coordinates of the row rectangle.
|
||
|
// Returns:
|
||
|
// Coordinates of the row rectangle in report window client coordinates.
|
||
|
// Remarks:
|
||
|
// Call this member function to determine the coordinates of
|
||
|
// the region where this row is drawn on the parent window.
|
||
|
// See Also: SetCollapseRect
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CRect GetRect() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns drawing metrics for the row.
|
||
|
// Parameters:
|
||
|
// pDrawArgs - Pointer to the provided draw arguments
|
||
|
// structure for calculating metrics.
|
||
|
// pItemMetrics - Pointer to the metrics structure to fill.
|
||
|
// Remarks:
|
||
|
// Call this member function when you want to retrieve drawing metrics.
|
||
|
// See Also: XTP_REPORTRECORDITEM_DRAWARGS, XTP_REPORTRECORDITEM_METRICS
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pItemMetrics);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to determine the row depth level when row is a group row.
|
||
|
// Returns:
|
||
|
// Row depth level when row is a group row.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetGroupLevel() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines rectangle of specified item
|
||
|
// Parameters:
|
||
|
// pItem - Record Item
|
||
|
// Returns:
|
||
|
// Rectangle of the item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CRect GetItemRect(CXTPReportRecordItem* pItem);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to determine if the row is the last tree row.
|
||
|
// Or is not part of a tree row.
|
||
|
// Returns:
|
||
|
// TRUE if the row is the last tree row. FALSE if the row is not
|
||
|
// part of a tree row or is not the last tree row.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsLastTreeRow() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to force this row to be visible. This will cause
|
||
|
// the report control to scroll to this row. This is also called by
|
||
|
// CXTPReportControl::SetFocusedRow to make visible the newly focused row.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void EnsureVisible();
|
||
|
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is call to update rectangle of item
|
||
|
// Parameters:
|
||
|
// rcItem - Bounding Rectangle of item cell
|
||
|
// pColumn - Column to test for tree column
|
||
|
// See Also: CXTPReportColumn::IsTreeColumn
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void ShiftTreeIndent(CRect& rcItem, CXTPReportColumn* pColumn) const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Fill XTP_REPORTRECORDITEM_METRICS structure with drawing metrics
|
||
|
// Parameters:
|
||
|
// pColumn - Column of the item
|
||
|
// pItem - Item to be draen
|
||
|
// pMetrics - Output drawing metrics for the item
|
||
|
// See Also: GetItemMetrics
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void FillMetrics(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem, XTP_REPORTRECORDITEM_METRICS* pMetrics);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// 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);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to determine the row type: body, header, or footer.
|
||
|
// Returns:
|
||
|
// A value of enum XTPReportRowType.
|
||
|
//-----------------------------------------------------------------------
|
||
|
XTPReportRowType GetType() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a pointer to the section this row belongs to.
|
||
|
// Returns:
|
||
|
// Pointer to the section this row belongs to.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPReportSection* GetSection() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this method to determine if this row has merged items.
|
||
|
// Returns:
|
||
|
// TRUE if the row has merged items, otherwise FALSE.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL HasMergedItems() const;
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets new row index in the view.
|
||
|
// Parameters:
|
||
|
// nNewIndex - New row numeric index.
|
||
|
// Remarks:
|
||
|
// Call this member function when you want to change the row
|
||
|
// position in the corresponding row collection.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetIndex(int nNewIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Get the latest row index from the group specified.
|
||
|
// Parameters:
|
||
|
// pChilds - Children collection.
|
||
|
// Returns:
|
||
|
// Last row index in group.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetLastChildRow(CXTPReportRows* pChilds) const;
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
// System accessibility support.
|
||
|
virtual HRESULT GetAccessibleParent(IDispatch** ppdispParent);
|
||
|
virtual HRESULT GetAccessibleChildCount(long* pcountChildren);
|
||
|
virtual HRESULT GetAccessibleChild(VARIANT varChild, IDispatch** ppdispChild);
|
||
|
virtual HRESULT GetAccessibleName(VARIANT varChild, BSTR* pszName);
|
||
|
virtual HRESULT GetAccessibleRole(VARIANT varChild, VARIANT* pvarRole);
|
||
|
virtual HRESULT AccessibleLocation(long *pxLeft, long *pyTop, long *pcxWidth, long* pcyHeight, VARIANT varChild);
|
||
|
virtual HRESULT AccessibleHitTest(long xLeft, long yTop, VARIANT* pvarChild);
|
||
|
virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
|
||
|
virtual CCmdTarget* GetAccessible();
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
|
||
|
protected:
|
||
|
CXTPReportControl *m_pControl; // Pointer to the parent report control.
|
||
|
CXTPReportRecord *m_pRecord; // Pointer to the associated CXTPReportRecord object.
|
||
|
CXTPReportRow *m_pParentRow; // Pointer to the parent row in the tree.
|
||
|
CXTPReportRows *m_pParentRows; // Pointer to the parent rows in the tree.
|
||
|
CXTPReportRows *m_pChilds; // Pointer to collection of children.
|
||
|
CXTPReportSection *m_pSection; // Pointer to section the row belongs to.
|
||
|
|
||
|
CRect m_rcRow; // A rectangle where a row is to be drawn.
|
||
|
CRect m_rcCollapse; // A rectangle with coordinates of collapse/expand bitmap.
|
||
|
|
||
|
int m_nIndex; // Item index.
|
||
|
int m_nGroupLevel; // Contains row depth level when row is a group row.
|
||
|
int m_nRowLevel; // Row depth level in a tree.
|
||
|
|
||
|
BOOL m_bVisible; // TRUE if this row should be visible, FALSE if row is hidden.
|
||
|
BOOL m_bExpanded; // TRUE if row is expanded in a tree view, FALSE if row is collapsed.
|
||
|
BOOL m_bLockExpand; // TRUE if row can not be expanded/collapsed by the user
|
||
|
BOOL m_bHasSelectedChilds; // TRUE if has selected childs (on any deep level)
|
||
|
|
||
|
int m_nPreviewHeight; // Height of the preview item of this row.
|
||
|
int m_nFreeHeight; // Height of row in FreeHeight RC mode.
|
||
|
int m_nChildIndex; // Index of row inside parent rows.
|
||
|
|
||
|
private:
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
friend class CXTPReportControl;
|
||
|
friend class CXTPReportSelectedRows;
|
||
|
friend class CXTPReportRows;
|
||
|
friend class CXTPReportRecordItem;
|
||
|
friend class CXTPReportSection;
|
||
|
friend class CXTPReportPaintManager;
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
};
|
||
|
|
||
|
AFX_INLINE void CXTPReportRow::SetIndex(int nNewIndex)
|
||
|
{
|
||
|
m_nIndex = nNewIndex;
|
||
|
}
|
||
|
|
||
|
AFX_INLINE CXTPReportRecord* CXTPReportRow::GetRecord() const
|
||
|
{
|
||
|
return m_pRecord;
|
||
|
}
|
||
|
|
||
|
AFX_INLINE CXTPReportRow* CXTPReportRow::GetParentRow() const
|
||
|
{
|
||
|
return m_pParentRow;
|
||
|
}
|
||
|
|
||
|
AFX_INLINE CXTPReportControl* CXTPReportRow::GetControl() const
|
||
|
{
|
||
|
return m_pControl;
|
||
|
}
|
||
|
|
||
|
AFX_INLINE void CXTPReportRow::SetCollapseRect(CRect rcCollapse)
|
||
|
{
|
||
|
m_rcCollapse = rcCollapse;
|
||
|
}
|
||
|
|
||
|
AFX_INLINE CRect CXTPReportRow::GetRect() const
|
||
|
{
|
||
|
return m_rcRow;
|
||
|
}
|
||
|
|
||
|
AFX_INLINE int CXTPReportRow::GetGroupLevel() const
|
||
|
{
|
||
|
return m_nGroupLevel;
|
||
|
}
|
||
|
|
||
|
AFX_INLINE CXTPReportRows* CXTPReportRow::GetParentRows() const
|
||
|
{
|
||
|
return m_pParentRows;
|
||
|
}
|
||
|
|
||
|
AFX_INLINE CXTPReportSection* CXTPReportRow::GetSection() const
|
||
|
{
|
||
|
return m_pSection;
|
||
|
}
|
||
|
|
||
|
#endif //#if !defined(__XTPREPORTROW_H__)
|