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.

1403 lines
53 KiB
C++

// XTPReportColumn.h: interface for the CXTPReportColumn 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(__XTPREPORTCOLUMN_H__)
#define __XTPREPORTCOLUMN_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPReportGroups;
class CXTPReportRecordItemEditOptions;
class CXTPPropExchange;
class CXTPMarkupContext;
class CXTPMarkupUIElement;
//-----------------------------------------------------------------------
// Summary:
// This enum defines the best fit mode.
//-----------------------------------------------------------------------
enum XTPReportColumnBestFitMode
{
xtpColumnBestFitModeVisibleData = 0, // Fit by visible column data.
xtpColumnBestFitModeAllData = 1, // Fit by all column data.
};
class _XTP_EXT_CLASS CXTPReportColumnDisplaySettings : public CXTPCmdTarget
{
public:
CXTPReportColumnDisplaySettings();
BOOL IsShowIcon() const;
void SetShowIcon(BOOL bShowIcon);
BOOL IsShowText() const;
void SetShowText(BOOL bShowText);
protected:
BOOL m_bShowIcon; // If TRUE the icon will be shown
BOOL m_bShowText; // If TRUE the text will be shown
};
class _XTP_EXT_CLASS CXTPReportColumnDisplayOptions : public CXTPCmdTarget
{
public:
CXTPReportColumnDisplayOptions();
virtual ~CXTPReportColumnDisplayOptions();
public:
CXTPReportColumnDisplaySettings* Column() const;
CXTPReportColumnDisplaySettings* FieldChooser() const;
CXTPReportColumnDisplaySettings* GroupBy() const;
protected:
CXTPReportColumnDisplaySettings *m_pColumn;
CXTPReportColumnDisplaySettings *m_pFieldChooser;
CXTPReportColumnDisplaySettings *m_pGroupBy;
};
//===========================================================================
// Summary:
// Represents report column item with its properties and operations.
// Remarks:
// You create object of CXTPReportColumn by calling a constructor and
// provide all necessary parameters. Many of the parameters have default
// values. Column has 3 properties that greatly influence its behavior:
//
// bAutoSize - TRUE allows auto resizing of the width of columns when
// ReportControl's client area is resized by the user. If
// bAutoSize is set to FALSE, the column keeps its initial
// size
//
// bSortable - Allows column to be sortable if it has value TRUE. If
// you set it to FALSE, you won't be able to sort records
// by their column
//
// bVisible - Determines if columns will draw by control or not. For
// example, if the column is dragged into FieldChooser,
// the column still exists in the columns list, but it
// becomes invisible.
// See Also: CXTPReportControl, CXTPReportColumns
//===========================================================================
class _XTP_EXT_CLASS CXTPReportColumn : public CXTPCmdTarget
{
//{{AFX_CODEJOCK_PRIVATE
friend class CXTPReportControl;
friend class CXTPReportColumns;
friend class CXTPReportHeader;
friend class CXTPReportRows;
friend class CXTPReportRow;
friend class CXTPReportColumnOrder;
//}}AFX_CODEJOCK_PRIVATE
public:
//-----------------------------------------------------------------------
// Summary:
// Constructs a CXTPReportColumn object.
// Parameters:
// strName - Column name.
// nItemIndex - An index of the corresponding record item.
// nWidth - An initial width of the created column.
// nMinWidth - Minimal width of the column.
// nIconID - Number of the corresponding icon in the image list.
// bAutoSize - Is column resizable flag.
// bSortable - Is column sortable flag.
// bVisible - Is column visible flag.
// strInternalName - Internal column name (to serialize colunm options).
// strDisplayName - The display name(caption)of the column.
// Remarks:
// There are 3 parameters that greatly influence a column's behavior:
// * <b>bAutoSize</b> TRUE allows auto resizing of width of columns when
// the ReportControl's client area is resized by the
// user. If bAutoSize is set to FALSE, the column
// keeps its initial size
// * <b>bSortable</b> Allows the column to be sortable if has value TRUE.
// If you set it to FALSE, you won't be able to sort
// records by their column
// * <b>bVisible</b> Determines if columns will draw by control or not.
// For example if the column is dragged into FieldChooser,
// the column still exists in the columns list,
// but it becomes invisible.
// Example:
// <code>
// #define COLUMN_ICON 1
// #define COLUMN_MAIL_ICON 1
//
// CXTPReportControl wndReport;
// wndReport.AddColumn(new CXTPReportColumn(COLUMN_ICON, _T("Message Class"), 18, FALSE, COLUMN_MAIL_ICON));
// </code>
//-----------------------------------------------------------------------
CXTPReportColumn(int nItemIndex, LPCTSTR strName, int nWidth, BOOL bAutoSize = TRUE, int nIconID = XTP_REPORT_NOICON , BOOL bSortable = TRUE, BOOL bVisible = TRUE);
CXTPReportColumn(int nItemIndex, LPCTSTR strDisplayName, LPCTSTR strInternalName, int nWidth, BOOL bAutoSize = TRUE, int nIconID = XTP_REPORT_NOICON , BOOL bSortable = TRUE, BOOL bVisible = TRUE);
// <COMBINE CXTPReportColumn::CXTPReportColumn@int@LPCTSTR@int@BOOL@int@BOOL@BOOL>
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPReportColumn object, handles cleanup and deallocation
//-----------------------------------------------------------------------
virtual ~CXTPReportColumn();
//-----------------------------------------------------------------------
// Summary:
// Returns current column header drag mode.
// Remarks:
// ReportColumn may be moved (change order of columns, delete columns from
// header, move column to FieldChooser) using drag and drop. When column
// is moved, it is in Dragged mode. You use IsDragging() to determine if
// columns are in Dragged mode
// Returns:
// TRUE if the column header is in dragging mode, FALSE otherwise.
// See Also: IsAllowDragging
//-----------------------------------------------------------------------
BOOL IsDragging() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the last drawn column rect.
// Remarks:
// Each time when the column is drawing, its rectangle is recalculated
// to fit in size after ReportControl resizing, Column resizing
// or moving, etc. You use GetRect() to get the latest rectangle sizes.
// Returns:
// The client rectangle where the column was drawn last time.
//-----------------------------------------------------------------------
CRect GetRect() const;
//-----------------------------------------------------------------------
// Summary:
// Returns column width.
// Remarks:
// Each time when the column is drawing, its rectangle is recalculated
// to fit in size after ReportControl resizing, Column resizing
// or moving, etc. You use GetWidth() to get the latest rectangle width.
// Returns:
// The current column width in logical units.
//-----------------------------------------------------------------------
int GetWidth() const;
//-----------------------------------------------------------------------
// Summary:
// Calculates caption length.
// Parameters:
// pDC - Device context to calculate width at.
// Remarks:
// This function calculates caption text length in logical units
// using the given device context, current caption font, and string
// of text.
// Returns:
// Caption length in pixels.
//-----------------------------------------------------------------------
int GetCaptionWidth(CDC* pDC);
//-----------------------------------------------------------------------
// Summary:
// Sets column width.
// Parameters:
// nNewWidth - New column width in pixels.
// Remarks:
// This member function gives you possibility to change column width
// manually. To set initial width or set width for columns which
// AutoSize = FALSE.
// Returns:
// Previous column width in pixels.
//-----------------------------------------------------------------------
int SetWidth(int nNewWidth);
//-----------------------------------------------------------------------
// Summary:
// Returns column indentation.
// Returns:
// Previous column indentation in pixels.
//-----------------------------------------------------------------------
int GetIndent() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the index of the associated record item.
// Returns:
// The index of the associated record item.
//-----------------------------------------------------------------------
int GetItemIndex() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the index of the column.
// Returns:
// The index of the column.
//-----------------------------------------------------------------------
int GetIndex() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the index of the column among visible ones.
// Returns:
// The visible index of the column.
//-----------------------------------------------------------------------
int GetVisibleIndex() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the old index of the column among visible ones.
// Returns:
// An integer value specifying the old visible index of the column.
//-----------------------------------------------------------------------
int GetOldVisibleIndex() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the ID of the associated column header icon.
// Remarks:
// Column can have an image that will be drawn on it. You use
// GetIconID() to get the current image id which passes to the
// column ID of the column. It must match to one of the ids in the
// imagelist
// Returns:
// The ID of the associated column header icon.
//-----------------------------------------------------------------------
int GetIconID() const;
//-----------------------------------------------------------------------
// Summary:
// Sets the ID of the associated column header icon.
// Remarks:
// Column can have an image that will be drawn on it. You use
// GetIconID() to get the current image id which passes to the
// column ID of the column. It must match to one of the ids in the
// image list
// Parameters:
// nIconId - The ID of the associated column header icon.
//-----------------------------------------------------------------------
void SetIconID(int nIconId);
//-----------------------------------------------------------------------
// Summary:
// Returns the text caption for the column header.
// Remarks:
// You use GetCaption() to get the current column caption.
// Returns:
// The text caption for the column header.
//-----------------------------------------------------------------------
CString GetCaption() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to set/change the column header caption.
// Parameters:
// strCaption - String caption of the column. Text displayed in the column header.
//-----------------------------------------------------------------------
void SetCaption(LPCTSTR strCaption);
//-----------------------------------------------------------------------
// Summary:
// Call this member to set/change the column footer text.
// Parameters:
// strFooter - String footer of the column. Text displayed in the column footer.
// Remarks
// Call CXTPReportControl::ShowFooter to show footer area.
// See Also: GetFooterText, CXTPReportControl::ShowFooter
//-----------------------------------------------------------------------
void SetFooterText(LPCTSTR strFooter);
//-----------------------------------------------------------------------
// Summary:
// Returns the footer text for the column.
// Remarks:
// Use SetFooterText() to set the current footer text.
// Returns:
// The text caption for the column footer.
//-----------------------------------------------------------------------
CString GetFooterText() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to set/change the column footer font.
// Parameters:
// pFont - Pointer to font object. May be NULL.
// Remarks:
// The CXTPReportPaintManager::m_fontCaption is used as default footer
// font. If pFont is NULL the default font will be used.
// See Also:
// GetFooterFont
//-----------------------------------------------------------------------
void SetFooterFont(CFont* pFont);
//-----------------------------------------------------------------------
// Summary:
// Returns the footer font for the column.
// Remarks:
// The CXTPReportPaintManager::m_fontCaption is used as default footer
// font.
// Returns:
// The footer font for the column.
// See Also:
// SetFooterFont
//-----------------------------------------------------------------------
CFont* GetFooterFont();
//-----------------------------------------------------------------------
// Summary:
// Call this member to set/change is the right column footer divider
// visible.
// Parameters:
// bSet - If TRUE divider is visible, FALSE - invisible.
// Remarks:
// By default divider is visible.
// See Also:
// GetDrawFooterDivider
//-----------------------------------------------------------------------
void SetDrawFooterDivider(BOOL bSet);
//-----------------------------------------------------------------------
// Summary:
// Returns is right column footer divider visible.
// Remarks:
// By default divider is visible.
// Returns:
// Is column footer divider visible.
// See Also:
// SetDrawFooterDivider
//-----------------------------------------------------------------------
BOOL GetDrawFooterDivider() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to set/change is the right column header divider
// visible.
// Parameters:
// bSet - If TRUE divider is visible, FALSE - invisible.
// Remarks:
// By default divider is visible.
// See Also:
// GetDrawHeaderDivider
//-----------------------------------------------------------------------
void SetDrawHeaderDivider(BOOL bSet);
//-----------------------------------------------------------------------
// Summary:
// Returns is right column header divider visible.
// Remarks:
// By default divider is visible.
// Returns:
// Is column footer divider visible.
// See Also:
// SetDrawHeaderDivider
//-----------------------------------------------------------------------
BOOL GetDrawHeaderDivider() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the text tool tip for the column header.
// Returns:
// The text tool tip for the column header.
//-----------------------------------------------------------------------
CString GetTooltip() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to set/change the column tool tip.
// Parameters:
// lpszTooltip - Tool tip of the column
//-----------------------------------------------------------------------
void SetTooltip(LPCTSTR lpszTooltip);
//-----------------------------------------------------------------------
// Summary:
// Returns the current column header visibility mode.
// Returns:
// TRUE if the column header is visible, FALSE otherwise.
// See Also: SetVisible
//-----------------------------------------------------------------------
BOOL IsVisible() const;
//-----------------------------------------------------------------------
// Summary:
// Sets column visible mode (TRUE - visible, FALSE - invisible).
// Parameters:
// bVisible - New column visible state.
// Remarks:
// When you move a column to FieldChooser, it becomes invisible.
// To change visibility of column you use SetVisible(BOOL)
// See Also: IsVisible
//-----------------------------------------------------------------------
void SetVisible(BOOL bVisible = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Determines if group is highlighted
// Returns:
// TRUE if group is highlighted
//-----------------------------------------------------------------------
BOOL IsHotTracking() const;
//-----------------------------------------------------------------------
// Summary:
// Sets column filterable mode (TRUE - filterable FALSE - not filterable
// Parameters:
// bFiltrable - New column filterable state.
// Returns:
// Previous column filterable state.
// See Also: IsFiltrable
//-----------------------------------------------------------------------
BOOL SetFilterable(BOOL bFilterable = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Returns if the column is filterable.
// Returns:
// TRUE if the column header is filterable FALSE otherwise.
// See Also: SetFilterable
//-----------------------------------------------------------------------
BOOL IsFilterable() const;
//-----------------------------------------------------------------------
// Summary:
// Returns column allow resizing state.
// Returns:
// TRUE if the column allows resizing, FALSE otherwise.
// See Also: EnableResize
//-----------------------------------------------------------------------
BOOL IsResizable() const;
//-----------------------------------------------------------------------
// Summary:
// Enable/Disables the column's allow resizing mode.
// Parameters:
// bIsResizable - TRUE if column will be resizable, FALSE otherwise.
// See Also: IsResizable
//-----------------------------------------------------------------------
void EnableResize(BOOL bIsResizable);
//-----------------------------------------------------------------------
// Summary:
// Sets minimal width value for column.
// Parameters:
// nMinWidth - New column minimal width value.
// Remarks:
// After you set the minimal width for the column, it cannot be
// resizable to less than minimal width.
// Returns:
// Previous column minimal width value.
// See Also: GetMinWidth
//-----------------------------------------------------------------------
int SetMinWidth(int nMinWidth);
//-----------------------------------------------------------------------
// Summary:
// Returns the current minimal column width.
// Returns:
// Column minimal width value in pixels.
// See Also: SetMinWidth
//-----------------------------------------------------------------------
int GetMinWidth() const;
//-----------------------------------------------------------------------
// Summary:
// Sets maximal width value for column.
// Parameters:
// nMaxWidth - New column maximal width value.
// Remarks:
// After you set the maximal width for the column, it cannot be
// resizable to more than maximal width.
// Returns:
// Previous column maximal width value.
// See Also: GetMaxWidth
//-----------------------------------------------------------------------
int SetMaxWidth(int nMaxWidth);
//-----------------------------------------------------------------------
// Summary:
// Returns the current maximal column width.
// Returns:
// Column maximal width value in pixels.
// See Also: SetMaxWidth
//-----------------------------------------------------------------------
int GetMaxWidth() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the column sortable flag.
// Returns:
// TRUE if column is sortable, FALSE otherwise.
// See Also: IsSorted, IsSortedIncreasing, IsSortedDecreasing
//-----------------------------------------------------------------------
BOOL IsSortable() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to determine if the column can be grouped.
// Remarks:
// Not all columns allow for grouping. You use IsGroupable
// to determine if the column can be grouped. I.e. Added
// to the "Group By" box.
// Returns:
// TRUE if the column can be grouped, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL IsGroupable() const;
//-----------------------------------------------------------------------
// Summary:
// Use this member to determine if the column has Expand / Collapse
// right icon (+/-).
// Returns:
// TRUE if the column has +- right icon, FLASE else.
// See also:
// m_bPlusMinus and SetPlusMinus(...)
//-----------------------------------------------------------------------
BOOL IsPlusMinus() const;
//-----------------------------------------------------------------------
// Summary:
// Use this member to see whether the column is expanded or not.
// Returns:
// TRUE if the column is expanded and FALSE else.
// See also:
// m_bExpanded and SetExpanded(...)
//-----------------------------------------------------------------------
BOOL IsExpanded() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to get the number next visual column.
// Returns:
// An integer specifying the zero based index of the column.
// See also:
// m_nNextVisualBlock and SetNextVisualBlock(...)
//-----------------------------------------------------------------------
int GetNextVisualBlock() const;
//-----------------------------------------------------------------------
// Summary:
// Determine is this column sortable when grouped by.
// Remarks:
// TRUE by default. If FALSE - records will be grouped without sorting
// by this column (sort by other columns will be applied).
// Returns:
// TRUE if the column is sortable when grouped by, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL IsAutoSortWhenGrouped() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the column dragging allowance flag.
// Returns:
// TRUE if the column can be dragged, FALSE otherwise.
// See Also: IsDragging
//-----------------------------------------------------------------------
BOOL IsAllowDragging() const;
//-----------------------------------------------------------------------
// Summary:
// Determines if the column is sorted in the increasing order.
// Returns:
// TRUE if the column is sorted in increasing order, FALSE otherwise.
// See Also: IsSorted, IsSortable, IsSortedDecreasing
//-----------------------------------------------------------------------
BOOL IsSortedIncreasing() const;
//-----------------------------------------------------------------------
// Summary:
// Determines if the column is sorted in the decreasing order.
// Returns:
// TRUE if the column is sorted in decreasing order, FALSE otherwise.
// See Also: IsSorted, IsSortable, IsSortedIncreasing
//-----------------------------------------------------------------------
BOOL IsSortedDecreasing() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify that the column is sorted in the increasing order.
// Parameters:
// bSortIncreasing - TRUE if the column should be sorted in increasing
// order, FALSE otherwise.
// See Also: IsSorted, IsSortable, IsSortedIncreasing, IsSortedDecreasing
//-----------------------------------------------------------------------
void SetSortIncreasing(BOOL bSortIncreasing);
//-----------------------------------------------------------------------
// Summary:
// Determines if the column is sorted.
// Returns:
// TRUE if the column is sorted, FALSE otherwise.
// Remarks:
// If the records list is sorted by given column IsSorted() returns
// TRUE, otherwise - FALSE
// See Also: IsSortable, IsSortedIncreasing, IsSortedDecreasing
//-----------------------------------------------------------------------
BOOL IsSorted() const;
//-----------------------------------------------------------------------
// Summary:
// Makes/unmakes the current column as containing a tree inside.
// Parameters:
// bIsTreeColumn - TRUE if this column contains tree items
// (collapse/expand buttons) drawn inside,
// FALSE otherwise.
// See Also: IsTreeColumn
//-----------------------------------------------------------------------
void SetTreeColumn(BOOL bIsTreeColumn);
//-----------------------------------------------------------------------
// Summary:
// Returns TRUE if the current column contains tree.
// Returns:
// TRUE if the current column contains tree items, FALSE otherwise.
// See Also: SetTreeColumn
//-----------------------------------------------------------------------
BOOL IsTreeColumn() const;
//-----------------------------------------------------------------------
// Summary:
// Reads or writes column data to/from the provided archive stream.
// Parameters:
// pPX - A CXTPPropExchange object to serialize to or from.
//----------------------------------------------------------------------
virtual void DoPropExchange(CXTPPropExchange* pPX);
//-----------------------------------------------------------------------
// Summary:
// Sets new Alignment value for column.
// Parameters:
// nAlignment - New alignment value.
// Possible alignment values: DT_LEFT, DT_CENTER, DT_RIGHT and DT_WORDBREAK.
// See also DrawText() Format Flags.
// Returns:
// Previous alignment column value.
//-----------------------------------------------------------------------
int SetAlignment(int nAlignment);
//-----------------------------------------------------------------------
// Summary:
// Returns the current alignment value for the column.
// Returns:
// Current column alignment value.
// The result is one of the following: DT_LEFT, DT_CENTER, DT_RIGHT.
//-----------------------------------------------------------------------
int GetAlignment() const;
//-----------------------------------------------------------------------
// Summary:
// Sets new Alignment for column text.
// Parameters:
// nAlignment - New alignment value.
// Possible alignment values: DT_LEFT, DT_CENTER, DT_RIGHT and DT_WORDBREAK.
// See also DrawText() Format Flags.
//-----------------------------------------------------------------------
void SetHeaderAlignment(int nAlignment);
//-----------------------------------------------------------------------
// Summary:
// Returns the current alignment for the column text.
// Returns:
// Current column alignment value.
// The result is one of the following: DT_LEFT, DT_CENTER, DT_RIGHT.
//-----------------------------------------------------------------------
int GetHeaderAlignment() const;
//-----------------------------------------------------------------------
// Summary:
// Sets new Alignment for column footer.
// Parameters:
// nAlignment - New alignment value.
// Possible alignment values: DT_LEFT, DT_CENTER, DT_RIGHT and DT_WORDBREAK.
// See also DrawText() Format Flags.
//-----------------------------------------------------------------------
void SetFooterAlignment(int nAlignment);
//-----------------------------------------------------------------------
// Summary:
// Returns the current alignment value for the column footer.
// Returns:
// Current column alignment value.
// The result is one of the following: DT_LEFT, DT_CENTER, DT_RIGHT.
//-----------------------------------------------------------------------
int GetFooterAlignment() const;
//-----------------------------------------------------------------------
// Summary:
// Checks if the column header should have the sort triangle drawn.
// Returns:
// TRUE if the sort triangle should be drawn for this column,
// FALSE otherwise.
//-----------------------------------------------------------------------
BOOL HasSortTriangle() const;
//-----------------------------------------------------------------------
// Summary:
// Call this method to get the column auto size flag .
// Returns:
// TRUE if the column is automatically sized.
//-----------------------------------------------------------------------
BOOL IsAutoSize() const;
// Summary:
// Call this method to set the column auto sized.
//Missing MFC function (presented in ActiveX version)
// Parameters:
// bSet - BOOL flag
//-----------------------------------------------------------------------
void SetAutoSize(BOOL bSet);
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify whether the column can be sorted when
// the user clicks on the column header.
// Parameters:
// bSortable - If TRUE, records can be sorted by this column by
// clicking on the column header. Each time the
// column header is clicked the sort order will
// toggle between ascending and descending. by
// default, bSortable is TRUE.
// If FALSE, records can not be sorted by this column
// by clicking on the column header. The column can
// still be sorted, but not by clicking on the column
// header. If you would like to sort the column when
// bSortable is FALSE, then you can add the column to
// the ReportControl's SortOrder, this will allow you
// to keep a column sorted at all times.
// See Also: SetGroupable
//-----------------------------------------------------------------------
void SetSortable(BOOL bSortable);
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify whether the column sortable when grouped by.
// Parameters:
// bAutoSortWhenGrouped - Used to enable or disable Auto sorting for
// grouped column.
// Remarks:
// TRUE by default. If FALSE - records will be grouped without sorting
// by this column (sort by other columns will be applied).
//-----------------------------------------------------------------------
void SetAutoSortWhenGrouped(BOOL bAutoSortWhenGrouped);
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify whether the column can be grouped.
// Parameters:
// bGroupable - If TRUE, the column can be added to the "Group By"
// box and the contents of the ReportControl will be
// grouped by the column.
// If FALSE, the column can't be added to the "Group By" box.
// See Also: SetSortable
//-----------------------------------------------------------------------
void SetGroupable(BOOL bGroupable);
//-----------------------------------------------------------------------
// Summary:
// Use this function to set the column Expand / Collapse right icon (+/-)
// enabled or disabled.
// Parameter:
// bPlusMinus - TRUE if the column should have +- right icon, FLASE else.
// See also:
// m_bPlusMinus and IsPlusMinus(...)
//-----------------------------------------------------------------------
void SetPlusMinus(BOOL bPlusMinus);
//-----------------------------------------------------------------------
// Summary:
// Use this member to set the column's (+/-) icon to expanded state
// or not.
// Parameter:
// bExpanded - TRUE if the column's (+/-) icon is to be expanded and
// FALSE else.
// See also:
// m_bExpanded and IsExpanded(...)
//-----------------------------------------------------------------------
void SetExpanded(BOOL bExpanded);
//-----------------------------------------------------------------------
// Summary:
// Call this member to set the number next visual column.
// Parameter:
// nNextVisualBlock - An integer specifying the zero based index of the column.
// See also:
// m_nNextVisualBlock and GetNextVisualBlock(...)
//-----------------------------------------------------------------------
void SetNextVisualBlock(int nNextVisualBlock);
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify whether the column can be dragged.
// Parameters:
// bAllowDrag - If TRUE, the column can be dragged with the mouse.
// If FALSE, the dragging for this column is prohibited.
// See Also: SetSortable, SetGroupable
//-----------------------------------------------------------------------
void SetAllowDrag(BOOL bAllowDrag);
//-----------------------------------------------------------------------
// Summary:
// Retrieves columns array
// Returns:
// CXTPReportColumns object
//-----------------------------------------------------------------------
CXTPReportColumns* GetColumns() const;
//-----------------------------------------------------------------------
// Summary:
// Retrieved parent report control
// Returns:
// Parent report control
// See Also: GetColumns
//-----------------------------------------------------------------------
CXTPReportControl* GetControl() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to determine if the column header will appear in
// the field chooser when hidden or in the GroupBy Box.
// Returns:
// TRUE is if the column header will be displayed in the field chooser when
// the column is hidden or in the GroupBy Box, FALSE if it will not.
// See Also: SetShowInFieldChooser
//-----------------------------------------------------------------------
BOOL IsShowInFieldChooser() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify whether the column will appear in
// the FieldChooser when the column is hidden or in the "Group By Box."
// Parameters:
// bShow - TRUE is the column should be displayed in the field chooser
// when hidden, FALSE otherwise.
// Remarks:
// When a column is hidden or added to the "Group By Box" it will be
// automatically added to the FieldChooser unless the ShowInFieldChooser
// property is set to FALSE.
// If you would like to have a hidden column that the user can not access
// and you enable the FieldChooser, then you will need to set the
// ShowInFieldChooser property to FALSE. By default this property is TRUE.
// See Also: IsShowInFieldChooser
//-----------------------------------------------------------------------
void SetShowInFieldChooser(BOOL bShow);
//-----------------------------------------------------------------------
// Summary:
// Retrieves CXTPReportRecordItemEditOptions.
// Returns:
// Edit Options of column
//-----------------------------------------------------------------------
CXTPReportRecordItemEditOptions* GetEditOptions() const;
//-----------------------------------------------------------------------
// Summary:
// Retrieves CXTPReportColumnDisplayOptions.
// Returns:
// Display options of column
//-----------------------------------------------------------------------
CXTPReportColumnDisplayOptions* GetDisplayOptions() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to determine if an edit box is added for the items
// in the column.
// Returns:
// TRUE is the items in the column are editable, FALSE if the items
// can not be edited.
// See Also: SetEditable
//-----------------------------------------------------------------------
BOOL IsEditable() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify whether the CXTPReportRecordItem(s)
// in the column can be edited. This will add an edit box to edit the item
// when the item is click/double-clicked. This can be overridden for individual
// items if the CXTPReportRecordItem::SetEditable member is called.
// Parameters:
// bEditable - TRUE is the items in the column are editable (an
// edit box is added to edit the contents of the item).
// See Also: IsEditable
//-----------------------------------------------------------------------
void SetEditable(BOOL bEditable = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Allows/disallows column removing.
// Parameters:
// bAllow - TRUE for allowing column removing, FALSE for disallowing.
// Remarks:
// Usually user is allowed to remove a column using mouse drag and drop.
// Using this member function, you can change the user's permissions
// force allowing or disallowing of column removing.
// See Also: CXTPReportHeader::AllowColumnRemove
//-----------------------------------------------------------------------
void AllowRemove(BOOL bAllow);
//-----------------------------------------------------------------------
// Summary:
// Call this member to determine if column removing allowed.
// Returns:
// TRUE is the items in the column removing allowed, FALSE otherwise.
// See Also: AllowRemove
//-----------------------------------------------------------------------
BOOL IsAllowRemove() const;
//-----------------------------------------------------------------------
// Summary:
// Returns column print width.
// Parameters:
// nTotalWidth - Total width in pixels.
// Returns:
// The current column width in logical units for print mode.
//-----------------------------------------------------------------------
int GetPrintWidth(int nTotalWidth) const;
//-----------------------------------------------------------------------
// Summary:
// Returns internal column name which used in serialization to unique
// identify column rather than column index.
// Returns:
// Internal column name string.
//-----------------------------------------------------------------------
CString GetInternalName() const;
//-----------------------------------------------------------------------
// Summary:
// Sets internal column name which used in serialization to unique
// identify column rather than column index.
// Parameters:
// pcszName - LPCTSTR unique name
//-----------------------------------------------------------------------
void SetInternalName(LPCTSTR pcszName);
//-----------------------------------------------------------------------
// Summary:
// Call this member to determine if vertical grid to be shown for header rows.
// Returns:
// TRUE is vertical grid will be shown, FALSE otherwise.
// See Also: SetDrawHeaderRowsVGrid
//-----------------------------------------------------------------------
BOOL GetDrawHeaderRowsVGrid() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to determine if vertical grid to be shown for footer rows.
// Returns:
// TRUE is vertical grid will be shown, FALSE otherwise.
// See Also: SetDrawFooterRowsVGrid
//-----------------------------------------------------------------------
BOOL GetDrawFooterRowsVGrid() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify whether to show vertical grid for header rows.
// Parameters:
// bDrawVGrid - TRUE to show vertical grid for header rows.
// See Also: GetDrawHeaderRowsVGrid
//-----------------------------------------------------------------------
void SetDrawHeaderRowsVGrid(BOOL bDrawVGrid = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify whether to show vertical grid for footer rows.
// Parameters:
// bDrawVGrid - TRUE to show vertical grid for footer rows.
// See Also: GetDrawFooterRowsVGrid
//-----------------------------------------------------------------------
void SetDrawFooterRowsVGrid(BOOL bDrawVGrid = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Call this member to force this column to be visible. This will cause
// the report control to scroll to this column.
//-----------------------------------------------------------------------
virtual void EnsureVisible();
//-----------------------------------------------------------------------
// Summary:
// Call this member to determine the column best fit mode.
// Returns:
// nBestFitMode - the column best fit mode.
// See Also: SetBestFitMode
//-----------------------------------------------------------------------
int GetBestFitMode() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to specify the column best fit mode.
// Parameters:
// nMode - the column best fit mode.
// See Also: GetBestFitMode
//-----------------------------------------------------------------------
void SetBestFitMode(int nMode);
//private:
//{{AFX_CODEJOCK_PRIVATE
int GetNormAlignment(int nAlignment) const;
int GetBestFitWidth();
//}}AFX_CODEJOCK_PRIVATE
//-----------------------------------------------------------------------
// Summary:
// Call this member to get markup UI element object.
// Returns:
// pointer to CXTPMarkupUIElement
//-----------------------------------------------------------------------
CXTPMarkupUIElement* GetMarkupUIElement() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to fix or unfix the column.
// Parameters:
// bFixed - TRUE to fix the column, FALSE to unfix it.
//-----------------------------------------------------------------------
void SetFixed(BOOL bFixed);
//-----------------------------------------------------------------------
// Summary:
// Returns whether the column is fixed.
// Returns:
// TRUE if the column is fixed, otherwise FALSE.
//-----------------------------------------------------------------------
BOOL IsFixed() const;
//-----------------------------------------------------------------------
// Summary:
// Call this member to freeze or unfreeze the column.
// Parameters:
// bFreeze - TRUE to freeze the column, FALSE to unfreeze it.
//-----------------------------------------------------------------------
void SetFrozen(BOOL bFrozen);
//-----------------------------------------------------------------------
// Summary:
// Returns whether the column is frozen.
// Returns:
// TRUE if the column is frozen, otherwise FALSE.
//-----------------------------------------------------------------------
BOOL IsFrozen() const;
private:
void _initData(int nItemIndex, LPCTSTR strDisplayName, LPCTSTR strInternalName, int nWidth, BOOL bAutoSize, int nIconID, BOOL bSortable, BOOL bVisible);
protected:
CString m_strInternalName; // Internal column name (to serialize colunm options).
CString m_strName; // Column name.
CString m_strTooltip; // Column tooltip.
int m_nItemIndex; // Column index.
CString m_strFooterText; // Column Footer Text.
CFont m_fontFooter; // Column Footer font. If Font handle is NULL - the default font is used.
BOOL m_bDrawFooterDivider; // If TRUE - draw footer column right divider.
BOOL m_bDrawHeaderDivider; // If TRUE - draw header column right divider.
BOOL m_bSortIncreasing; // Stores column sort direction (used when m_bSortable is TRUE).
BOOL m_bSortable; // Determines if the column could be sortable by.
BOOL m_bGroupable; // Determines if the column could be grouped by.
BOOL m_bAutoSortWhenGrouped; // Column will be sortable when grouped by, otherwise it will grouped without sorting by it (sort by other columns wiil be applied).
BOOL m_bFixed; // Determines if the column is fixed.
BOOL m_bFrozen; // Determines if the column is frozen, i.e. not scrollable.
BOOL m_bFilterable; // Is filtering by this column allowed?.
BOOL m_bPlusMinus;
// Determines if the column have Expand / Collapse right icon (+/-).
//See IsPlusMinus() and SetPlusMinus()
BOOL m_bExpanded;
// State of PlusMinus column
int m_nNextVisualBlock;
// Number of next visual columns to show or hide
//see SetNextVisualBlock(...) and GetNextVisualBlock()
BOOL m_bAllowDrag; // Allow/disallow dragging of the column
BOOL m_bAllowRemove; // TRUE to allow column remove
CXTPReportColumns* m_pColumns; // Stores a pointer to the parent columns collection.
int m_nIconID; // Associated icon ID.
BOOL m_bVisible; // Visible state.
int m_nOldVisibleIndex; // Visible index before Hide state.
// Release 13.1
BOOL m_bIsResizable; // Indicates if the column allows width resizing
CRect m_rcColumn; // Saves rectangle where column was drawn last time.
CRect m_rcGroupBy; // Saves rectangle where column was drawn in group box.
int m_nMinWidth; // Minimal column width. It is not allowed to do it less then minimal.
int m_nMaxWidth; // Maximal column width (if set as positive). It is not allowed to do it more then maximal.
int m_nMaxItemWidth; // Contains maximal width of the corresponding item drawn in the column.
int m_nAlignment; // Alignment mode for column: DT_LEFT || DT_RIGHT || DT_CENTER
int m_nHeaderAlignment; // Alignment mode for column text: DT_LEFT || DT_RIGHT || DT_CENTER
int m_nFooterAlignment; // Alignment mode for column footer text: DT_LEFT || DT_RIGHT || DT_CENTER
int m_nColumnAutoWidth; // The column automatic width
int m_nColumnStaticWidth; // The user defined with.
BOOL m_bAutoSize; // TRUE if column auto sized.
BOOL m_bShowInFieldChooser; // Indicates if column is shown in the field chooser when the column is hidden or in the GroupBy Box.
BOOL m_bEditable; // Indicates whether an edit box should be added to the items in the column.
BOOL m_bDrawHeaderRowsVGrid; // Indicates whether to draw vertical grid for headers rows.
BOOL m_bDrawFooterRowsVGrid; // Indicates whether to draw vertical grid for footers rows.
int m_nBestFitMode; // Best fit mode. See enum XTPReportColumnBestFitMode
CXTPReportRecordItemEditOptions *m_pEditOptions; // Edit options of the column
CXTPReportColumnDisplayOptions *m_pDisplayOptions; // Display options of the column
CXTPMarkupUIElement* m_pMarkupUIElement; // Store Markup Object
};
AFX_INLINE CString CXTPReportColumn::GetCaption() const
{
return m_strName;
}
AFX_INLINE int CXTPReportColumn::GetIconID() const
{
return m_nIconID;
}
AFX_INLINE void CXTPReportColumn::SetIconID(int nIconId)
{
m_nIconID = nIconId;
}
AFX_INLINE BOOL CXTPReportColumn::IsFilterable() const
{
return m_bFilterable;
}
AFX_INLINE BOOL CXTPReportColumn::IsResizable() const
{
return m_bIsResizable;
}
AFX_INLINE void CXTPReportColumn::EnableResize(BOOL bIsResizable)
{
m_bIsResizable = bIsResizable;
}
AFX_INLINE BOOL CXTPReportColumn::IsPlusMinus() const
{
return m_bPlusMinus;
}
AFX_INLINE BOOL CXTPReportColumn::IsExpanded() const
{
return m_bExpanded;
}
AFX_INLINE int CXTPReportColumn::GetNextVisualBlock() const
{
return m_nNextVisualBlock;
}
AFX_INLINE BOOL CXTPReportColumn::IsAutoSortWhenGrouped() const
{
return m_bAutoSortWhenGrouped;
}
AFX_INLINE BOOL CXTPReportColumn::IsAllowDragging() const
{
return m_bAllowDrag;
}
AFX_INLINE void CXTPReportColumn::SetAutoSortWhenGrouped(BOOL bAutoSortWhenGrouped)
{
m_bAutoSortWhenGrouped = bAutoSortWhenGrouped;
}
AFX_INLINE void CXTPReportColumn::SetSortIncreasing(BOOL bSortIncreasing)
{
m_bSortIncreasing = bSortIncreasing;
}
AFX_INLINE CXTPReportRecordItemEditOptions* CXTPReportColumn::GetEditOptions() const
{
return m_pEditOptions;
}
AFX_INLINE CXTPReportColumnDisplayOptions* CXTPReportColumn::GetDisplayOptions() const
{
return m_pDisplayOptions;
}
/////////////////////////////////////////////////////////////////////////////
AFX_INLINE void CXTPReportColumn::SetAutoSize(BOOL bSet)
{
m_bAutoSize = bSet;
}
AFX_INLINE BOOL CXTPReportColumn::IsAutoSize() const
{
return m_bAutoSize;
}
/////////////////////////////////////////////////////////////////////////////
AFX_INLINE void CXTPReportColumn::SetFixed(BOOL bFixed)
{
m_bFixed = bFixed;
}
AFX_INLINE BOOL CXTPReportColumn::IsFixed() const
{
return m_bFixed;
}
/////////////////////////////////////////////////////////////////////////////
AFX_INLINE void CXTPReportColumn::SetFrozen(BOOL bFrozen)
{
m_bFrozen = bFrozen;
}
AFX_INLINE BOOL CXTPReportColumn::IsFrozen() const
{
return m_bFrozen;
}
/////////////////////////////////////////////////////////////////////////////
AFX_INLINE void CXTPReportColumn::SetGroupable(BOOL bGroupable)
{
m_bGroupable = bGroupable;
}
AFX_INLINE BOOL CXTPReportColumn::IsGroupable() const
{
return m_bGroupable;
}
/////////////////////////////////////////////////////////////////////////////
AFX_INLINE void CXTPReportColumn::SetSortable(BOOL bSortable)
{
m_bSortable = bSortable;
}
AFX_INLINE BOOL CXTPReportColumn::IsSortable() const
{
return m_bSortable;
}
/////////////////////////////////////////////////////////////////////////////
AFX_INLINE BOOL CXTPReportColumn::IsEditable() const
{
return m_bEditable;
}
AFX_INLINE void CXTPReportColumn::SetEditable(BOOL bEditable)
{
m_bEditable = bEditable;
}
/////////////////////////////////////////////////////////////////////////////
AFX_INLINE void CXTPReportColumn::AllowRemove(BOOL bAllow)
{
m_bAllowRemove = bAllow;
}
AFX_INLINE BOOL CXTPReportColumn::IsAllowRemove() const
{
return m_bAllowRemove;
}
/////////////////////////////////////////////////////////////////////////////
AFX_INLINE CString CXTPReportColumn::GetTooltip() const
{
return m_strTooltip;
}
AFX_INLINE void CXTPReportColumn::SetTooltip(LPCTSTR lpszTooltip)
{
m_strTooltip = lpszTooltip;
}
AFX_INLINE CString CXTPReportColumn::GetFooterText() const
{
return m_strFooterText;
}
AFX_INLINE void CXTPReportColumn::SetHeaderAlignment(int nAlignment)
{
m_nHeaderAlignment = nAlignment;
}
AFX_INLINE BOOL CXTPReportColumn::GetDrawFooterDivider() const
{
return m_bDrawFooterDivider;
}
AFX_INLINE BOOL CXTPReportColumn::GetDrawHeaderDivider() const
{
return m_bDrawHeaderDivider;
}
AFX_INLINE CString CXTPReportColumn::GetInternalName() const
{
return m_strInternalName;
}
AFX_INLINE void CXTPReportColumn::SetInternalName(LPCTSTR pcszName)
{
m_strInternalName = pcszName;
}
AFX_INLINE BOOL CXTPReportColumn::GetDrawHeaderRowsVGrid() const
{
return m_bDrawHeaderRowsVGrid;
}
AFX_INLINE void CXTPReportColumn::SetDrawHeaderRowsVGrid(BOOL bDrawVGrid)
{
m_bDrawHeaderRowsVGrid = bDrawVGrid;
}
AFX_INLINE BOOL CXTPReportColumn::GetDrawFooterRowsVGrid() const
{
return m_bDrawFooterRowsVGrid;
}
AFX_INLINE void CXTPReportColumn::SetDrawFooterRowsVGrid(BOOL bDrawVGrid)
{
m_bDrawFooterRowsVGrid = bDrawVGrid;
}
AFX_INLINE int CXTPReportColumn::GetBestFitMode() const
{
return m_nBestFitMode;
}
AFX_INLINE void CXTPReportColumn::SetBestFitMode(int nMode)
{
m_nBestFitMode = nMode;
}
AFX_INLINE CXTPMarkupUIElement* CXTPReportColumn::GetMarkupUIElement() const
{
return m_pMarkupUIElement;
}
#endif //#if !defined(__XTPREPORTCOLUMN_H__)