XTPReportColumn.h
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:45k
- // XTPReportColumn.h: interface for the CXTPReportColumn 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(__XTPREPORTCOLUMN_H__)
- #define __XTPREPORTCOLUMN_H__
- //}}AFX_CODEJOCK_PRIVATE
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #include "XTPReportDefines.h"
- class CXTPReportGroups;
- class CXTPReportRecordItemEditOptions;
- class CXTPPropExchange;
- //-----------------------------------------------------------------------
- // Summary:
- // This enum defines the best fit mode.
- //-----------------------------------------------------------------------
- enum XTPReportColumnBestFitMode
- {
- xtpColumnBestFitModeVisibleData = 0, // Fit by visible column data.
- xtpColumnBestFitModeAllData = 1, // Fit by all column data.
- };
- //===========================================================================
- // 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).
- // 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) const;
- //-----------------------------------------------------------------------
- // 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 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
- // imagelist
- // 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();
- //-----------------------------------------------------------------------
- // 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();
- //-----------------------------------------------------------------------
- // 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:
- // Returns the current column header filtrability mode.
- // Returns:
- // TRUE if the column header is filtrable, FALSE otherwise.
- // See Also: SetFiltrable
- //-----------------------------------------------------------------------
- BOOL IsFiltrable() const;
- //-----------------------------------------------------------------------
- // Summary:
- // Determines if group is highlighted
- // Returns:
- // TRUE if group is highlighted
- //-----------------------------------------------------------------------
- BOOL IsHotTracking() const;
- //-----------------------------------------------------------------------
- // Summary:
- // Sets column filtrable mode (TRUE - filtrable, FALSE - not filtrable).
- // Parameters:
- // bFiltrable - New column filtrable state.
- // Returns:
- // Previous column filtrable state.
- // See Also: IsFiltrable
- //-----------------------------------------------------------------------
- BOOL SetFiltrable(BOOL bFiltrable = TRUE);
- //-----------------------------------------------------------------------
- // 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:
- // 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:
- // 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 set the column auto sized.
- // Returns:
- // TRUE if the column is automatically sized.
- //-----------------------------------------------------------------------
- BOOL IsAutoSize() const;
- //-----------------------------------------------------------------------
- // 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:
- // 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:
- // 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.
- //-----------------------------------------------------------------------
- const CString& GetInternalName() const;
- //-----------------------------------------------------------------------
- // Summary:
- // Sets internal column name which used in serialization to unique
- // identify column rather than column index.
- // Returns:
- // pcszName - Internal column name string.
- //-----------------------------------------------------------------------
- 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
- 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; // If TRUE this column will be sortable when grouped by, otherwise it will grouped without sorting by it (sort by other columns wiil be applied).
- 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.
- BOOL m_bFiltrable; // Is filtering by this column allowed?.
- 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_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 a 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
- };
- 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 int CXTPReportColumn::SetMinWidth(int nMinWidth) {
- int OldMinWidth = m_nMinWidth;
- m_nMinWidth = nMinWidth;
- return OldMinWidth;
- }
- AFX_INLINE BOOL CXTPReportColumn::IsFiltrable() const {
- return m_bFiltrable;
- }
- AFX_INLINE BOOL CXTPReportColumn::SetFiltrable(BOOL bFiltrable) {
- BOOL bOldFiltrable = m_bFiltrable; m_bFiltrable = bFiltrable; return bOldFiltrable;
- }
- AFX_INLINE BOOL CXTPReportColumn::IsResizable() const{
- return m_bIsResizable;
- }
- AFX_INLINE void CXTPReportColumn::EnableResize(BOOL bIsResizable) {
- m_bIsResizable = bIsResizable;
- }
- AFX_INLINE BOOL CXTPReportColumn::IsSortable() const{
- return m_bSortable;
- }
- AFX_INLINE BOOL CXTPReportColumn::IsGroupable()const {
- return m_bGroupable;
- }
- AFX_INLINE BOOL CXTPReportColumn::IsAutoSortWhenGrouped() const {
- return m_bAutoSortWhenGrouped;
- }
- AFX_INLINE BOOL CXTPReportColumn::IsAllowDragging() const{
- return m_bAllowDrag;
- }
- AFX_INLINE int CXTPReportColumn::SetAlignment(int nAlignment) {
- int nOld = m_nAlignment; m_nAlignment = nAlignment; return nOld;
- }
- AFX_INLINE BOOL CXTPReportColumn::IsAutoSize() const{
- return m_bAutoSize;
- }
- AFX_INLINE void CXTPReportColumn::SetSortable(BOOL bSortable) {
- m_bSortable = bSortable;
- }
- AFX_INLINE void CXTPReportColumn::SetGroupable(BOOL bGroupable) {
- m_bGroupable = bGroupable;
- }
- AFX_INLINE void CXTPReportColumn::SetAutoSortWhenGrouped(BOOL bAutoSortWhenGrouped) {
- m_bAutoSortWhenGrouped = bAutoSortWhenGrouped;
- }
- AFX_INLINE void CXTPReportColumn::SetAllowDrag(BOOL bAllowDrag) {
- m_bAllowDrag = bAllowDrag;
- }
- AFX_INLINE CXTPReportColumns* CXTPReportColumn::GetColumns() const{
- return m_pColumns;
- }
- AFX_INLINE void CXTPReportColumn::SetSortIncreasing(BOOL bSortIncreasing) {
- m_bSortIncreasing = bSortIncreasing;
- }
- AFX_INLINE CXTPReportRecordItemEditOptions* CXTPReportColumn::GetEditOptions() const{
- return m_pEditOptions;
- }
- AFX_INLINE BOOL CXTPReportColumn::IsEditable() const{
- return m_bEditable;
- }
- AFX_INLINE void CXTPReportColumn::SetEditable(BOOL bEditable /*= TRUE*/) {
- 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() {
- return m_bDrawFooterDivider;
- }
- AFX_INLINE BOOL CXTPReportColumn::GetDrawHeaderDivider() {
- return m_bDrawHeaderDivider;
- }
- AFX_INLINE const 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;
- }
- #endif //#if !defined(__XTPREPORTCOLUMN_H__)