DragonNest/Third/XTToolkitPro/Source/ReportControl/XTPReportNavigator.h
2024-12-19 09:48:26 +08:00

325 lines
14 KiB
C++

// XTPReportNavigator.h: interface for the CXTPReportNavigator class.
//
// This file is a part of the XTREME REPORTCONTROL MFC class library.
// (c)1998-2008 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(__XTPREPORTNAVIGATOR_H__)
#define __XTPREPORTNAVIGATOR_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "XTPReportDefines.h"
#include "XTPReportRow.h"
class CXTPReportControl;
class CXTPReportRow;
class CXTPReportHeader;
class CXTPReportColumn;
//===========================================================================
// Summary:
// Utility class, handling Report Control items' navigation activities.
// Remarks:
//
// See Also: CXTPReportControl overview
//===========================================================================
class _XTP_EXT_CLASS CXTPReportNavigator : public CXTPCmdTarget
{
friend class CXTPReportControl;
public:
//-----------------------------------------------------------------------
// Summary:
// Default navigator constructor, handles properties initialization.
// See Also: RefreshMetrics
//-----------------------------------------------------------------------
CXTPReportNavigator(CXTPReportControl* pReportControl);
//-----------------------------------------------------------------------
// Summary:
// Default navigator destructor, handles member items deallocation.
//-----------------------------------------------------------------------
virtual ~CXTPReportNavigator();
public:
//-----------------------------------------------------------------------
// Summary:
// Call this method to start edit currently focused item.
// Remarks:
// Call this method to start edit currently focused item.
//-----------------------------------------------------------------------
void BeginEdit();
//-----------------------------------------------------------------------
// Summary:
// Moves the focused row down.
// Parameters:
// bSelectBlock - TRUE when selecting a new focused row, FALSE otherwise.
// bIgnoreSelection - TRUE if ignore current rows selection.
// Remarks:
// Call this member function if you want to move the currently
// focused row down by 1.
// See Also: MoveUp, MovePageDown, MovePageUp, MoveFirst, MoveLast
//-----------------------------------------------------------------------
void MoveDown(BOOL bSelectBlock = FALSE, BOOL bIgnoreSelection = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused row up.
// Parameters:
// bSelectBlock - TRUE when selecting a new focused row, FALSE otherwise.
// bIgnoreSelection - TRUE if ignore current rows selection.
// Remarks:
// Call this member function if you want to move the currently
// focused row up by 1.
// See Also: MoveDown, MovePageDown, MovePageUp, MoveFirst, MoveLast
//-----------------------------------------------------------------------
void MoveUp(BOOL bSelectBlock = FALSE, BOOL bIgnoreSelection = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused row down at one page.
// Parameters:
// bSelectBlock - TRUE when selecting rows up to new focused row,
// FALSE otherwise.
// bIgnoreSelection - TRUE if ignore current rows selection.
// Remarks:
// Call this member function if you want to move currently
// focused row down by 1 page (an count of rows visible in a view).
// See Also: MoveDown, MoveUp, MovePageUp, MoveFirst, MoveLast
//-----------------------------------------------------------------------
void MovePageDown(BOOL bSelectBlock = FALSE, BOOL bIgnoreSelection = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused row up at one page.
// Parameters:
// bSelectBlock - TRUE when selecting rows up to new focused row,
// FALSE otherwise.
// bIgnoreSelection - TRUE to ignore the current rows selection.
// Remarks:
// Call this member function if you want to move currently
// row up by 1 page (and count of rows visible in a view).
// See Also: MoveDown, MoveUp, MovePageDown, MoveFirst, MoveLast
//-----------------------------------------------------------------------
void MovePageUp(BOOL bSelectBlock = FALSE, BOOL bIgnoreSelection = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused row to the beginning of the report view.
// Parameters:
// bSelectBlock - TRUE when selecting rows up to new focused row,
// FALSE otherwise.
// bIgnoreSelection - TRUE if ignore current rows selection.
// Remarks:
// Call this member function if you want to move the currently
// focused row to the top of the rows list.
// See Also: MoveDown, MoveUp, MovePageDown, MovePageUp, MoveLast
//-----------------------------------------------------------------------
void MoveFirstRow(BOOL bSelectBlock = FALSE, BOOL bIgnoreSelection = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused row to the end of the report view.
// Parameters:
// bSelectBlock - TRUE when selecting rows up to new focused row,
// FALSE otherwise.
// bIgnoreSelection - TRUE if ignore current rows selection.
// Remarks:
// Call this member function if you want to move the currently
// focused row to the bottom of the rows list.
// See Also: MoveDown, MoveUp, MovePageDown, MovePageUp, MoveFirst
//-----------------------------------------------------------------------
void MoveLastRow(BOOL bSelectBlock = FALSE, BOOL bIgnoreSelection = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused row to the specified row index.
// Parameters:
// nRowIndex - Index of the row to move focus.
// bSelectBlock - TRUE when selecting rows up to new focused row,
// FALSE otherwise.
// bIgnoreSelection - TRUE if ignore current rows selection.
// Remarks:
// Call this member function if you want to move the currently
// focused row to the the specified row index.
// See Also: MoveDown, MoveUp, MovePageDown, MovePageUp, MoveFirst
//-----------------------------------------------------------------------
void MoveToRow(int nRowIndex, BOOL bSelectBlock = FALSE, BOOL bIgnoreSelection = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused column to the beginning of the row.
// Remarks:
// Call this member function if you want to move the currently
// focused column to the beginning of the currently selected row.
// See Also: MoveLastColumn
//-----------------------------------------------------------------------
void MoveFirstColumn();
//-----------------------------------------------------------------------
// Summary:
// Moves the focused column to the end of the row.
// Remarks:
// Call this member function if you want to move the currently
// focused column to the end of the currently selected row.
// See Also: MoveFirstColumn
//-----------------------------------------------------------------------
void MoveLastColumn();
//-----------------------------------------------------------------------
// Summary:
// Moves the focused column left.
// Parameters:
// bSelectBlock - TRUE when selecting a new focused row, FALSE otherwise.
// bIgnoreSelection - TRUE if ignore current rows selection.
// Remarks:
// Call this member function if you want to move the currently
// focused column left by 1.
// See Also: MoveUp, MovePageDown, MovePageUp, MoveFirst, MoveLast
//-----------------------------------------------------------------------
void MoveLeft(BOOL bSelectBlock = FALSE, BOOL bIgnoreSelection = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused column left.
// Parameters:
// bSelectBlock - TRUE when selecting a new focused row, FALSE otherwise.
// bIgnoreSelection - TRUE if ignore current rows selection.
// Remarks:
// Call this member function if you want to move the currently
// focused column right by 1.
// See Also: MoveDown, MovePageDown, MovePageUp, MoveFirst, MoveLast
//-----------------------------------------------------------------------
void MoveRight(BOOL bSelectBlock = FALSE, BOOL bIgnoreSelection = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused column to the specified index.
// Parameters:
// nColumnIndex - Index of the column to focus.
// bClearIfNonFocusable - Used when column the focused row specified
// by nColumnIndex is not focusable:
// if TRUE column focus will be cleared (no
// column focused), otherwise focused column will
// not be changed.
// Remarks:
// Call this member function if you want to move the currently
// focused column to the specified index.
// See Also: MoveDown, MovePageDown, MovePageUp, MoveFirst, MoveLast
//-----------------------------------------------------------------------
void MoveToColumn(int nColumnIndex, BOOL bClearIfNonFocusable = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Setting this property to TRUE moves focus (selected row) to header rows.
//
// See Also: GetCurrentFocusInHeadersRows
//-----------------------------------------------------------------------
void SetCurrentFocusInHeadersRows(BOOL bCurrentFocusInHeadersRows);
//-----------------------------------------------------------------------
// Summary:
// Setting this property to TRUE moves focus (selected row) to footer rows.
//
// See Also: GetCurrentFocusInFootersRows
//-----------------------------------------------------------------------
void SetCurrentFocusInFootersRows(BOOL bCurrentFocusInFootersRows);
//-----------------------------------------------------------------------
// Summary:
// Returns TRUE, if a focused row belongs to header rows, FALSE otherwise.
//
// See Also: SetCurrentFocusInHeadersRows
//-----------------------------------------------------------------------
BOOL GetCurrentFocusInHeadersRows();
//-----------------------------------------------------------------------
// Summary:
// Returns TRUE, if a focused row belongs to footer rows, FALSE otherwise.
//
// See Also: SetCurrentFocusInFootersRows
//-----------------------------------------------------------------------
BOOL GetCurrentFocusInFootersRows();
protected:
//-----------------------------------------------------------------------
// Summary:
// Moves the focused column left or right.
// Parameters:
// bSelectBlock - TRUE when selecting a new focused row, FALSE otherwise.
// bIgnoreSelection - TRUE if ignore current rows selection.
// bBack - TRUE to move left/ FALSE to move right
// Remarks:
// Call this member function if you want to move the currently
// focused column
// See Also: MoveDown, MovePageDown, MovePageUp, MoveFirst, MoveLast
//-----------------------------------------------------------------------
void MoveLeftRight(BOOL bBack, BOOL bSelectBlock = FALSE, BOOL bIgnoreSelection = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Determines the place for the focused row: body, header, or footer.
// Parameters:
// RowType - type of the focused row.
// Remarks:
// Call this member function if you want to move (or reflect) the currently focused row.
// See Also:
// SetCurrentFocusInHeadersRows, SetCurrentFocusInFootersRows
//-----------------------------------------------------------------------
void SetMovePosition(XTPReportRowType RowType);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused row to the first visible body row of a target place: body, header, or footer.
// Parameters:
// RowType - target type of the focused row.
// Remarks:
// Call this member function if you want to move the focused row to the first visible target row.
// See Also:
// SetCurrentFocusInHeadersRows, SetCurrentFocusInFootersRows
//-----------------------------------------------------------------------
void MoveFirstVisibleRow(XTPReportRowType TargetType);
//-----------------------------------------------------------------------
// Summary:
// Moves the focused row to the last visible row of a target place: body, header, or footer.
// Parameters:
// RowType - target type of the focused row.
// Remarks:
// Call this member function if you want to move the focused row to the last visible target row.
// See Also:
// SetCurrentFocusInHeadersRows, SetCurrentFocusInFootersRows
//-----------------------------------------------------------------------
void MoveLastVisibleRow(XTPReportRowType TargetType);
protected:
CXTPReportControl* m_pReportControl; // Associated report control.
BOOL m_bCurrentFocusInHeadersRows; // TRUE if a focused row belongs to header rows.
BOOL m_bCurrentFocusInFootersRows; // TRUE if a focused row belongs to footer rows.
// If both above properties are FALSE - focused row belongs to body rows.
};
#endif //#if !defined(__XTPREPORTNAVIGATOR_H__)