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.
285 lines
11 KiB
C
285 lines
11 KiB
C
2 years ago
|
// XTPReportSubListControl.h: interface for the CXTPReportSubListControl 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(__XTPREPORTSUBLISTCONTROL_H__)
|
||
|
#define __XTPREPORTSUBLISTCONTROL_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
class CXTPReportHeaderDragWnd;
|
||
|
class CXTPReportControl;
|
||
|
class CXTPReportColumn;
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// Field chooser list box control.
|
||
|
// This control allows the user to move column names from associated
|
||
|
// CXTPReportControl object from and to its header.
|
||
|
// Remarks:
|
||
|
// To use a field chooser in an existing dialog box of your application,
|
||
|
// add a standard list box to your dialog template using the dialog
|
||
|
// editor and then initialize your CXTPReportSubListControl object
|
||
|
// inside dialog OnInitialUpdate handler. See example below:
|
||
|
// Example:
|
||
|
// <code>
|
||
|
// // CXTPReportSubListControl m_wndSubList;
|
||
|
// wndSubList.SubclassDlgItem(IDC_COLUMNLIST, &pFieldChooserDialog);
|
||
|
// // CXTPReportControl wndReport;
|
||
|
// wndReport.GetReportHeader()->SetSubListCtrl(&wndSubList);
|
||
|
// </code>
|
||
|
//
|
||
|
// See Also:
|
||
|
// CDragListBox, CXTPReportControl, CXTPReportHeader,
|
||
|
// CXTPReportHeaderDragWnd, ReportControl sample application
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPReportSubListControl : public CListBox
|
||
|
{
|
||
|
DECLARE_DYNAMIC(CXTPReportSubListControl)
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Constructs a CXTPReportSubListControl object.
|
||
|
// Remarks:
|
||
|
// You construct a CXTPReportSubListControl object in two steps.
|
||
|
// First, call the constructor CXTPReportSubListControl and then call
|
||
|
// CListBox::Create, which initializes the Windows list box and
|
||
|
// attaches it to the CXTPReportSubListControl.
|
||
|
// Example:
|
||
|
// <code>
|
||
|
// // Declare a local CXTPReportSubListControl object.
|
||
|
// CXTPReportSubListControl mySubList;
|
||
|
//
|
||
|
// // Declare a dynamic CXTPReportSubListControl object.
|
||
|
// CXTPReportSubListControl* pMySubList = new CXTPReportSubListControl;
|
||
|
// </code>
|
||
|
//
|
||
|
// See Also:
|
||
|
// CListBox, CXTPReportSubListControl::SetReportCtrl,
|
||
|
// CXTPReportHeader::SetSubListCtrl
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPReportSubListControl();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Destroys CXTPReportSubListControl object, handles its cleanup.
|
||
|
//-----------------------------------------------------------------------
|
||
|
~CXTPReportSubListControl();
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets associated report control.
|
||
|
// Parameters:
|
||
|
// pReportCtrl - Pointer to the associated report control.
|
||
|
// Remarks:
|
||
|
// Usually this method should not be called by user, instead
|
||
|
// you should call CXTPReportHeader::SetSubListCtrl.
|
||
|
// Returns:
|
||
|
// TRUE if set successfully, FALSE otherwise.
|
||
|
// See Also: CXTPReportHeader::SetSubListCtrl, GetReportCtrl
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL SetReportCtrl(CXTPReportControl* pReportCtrl);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a pointer to the associated report control.
|
||
|
// Returns:
|
||
|
// An associated report control.
|
||
|
// See Also: CXTPReportHeader::SetSubListCtrl, SetReportCtrl
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPReportControl* GetReportCtrl();
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Updates columns list data in field chooser.
|
||
|
// Remarks:
|
||
|
// Reloads column list from the associated CXTPReportControl object,
|
||
|
// deletes all visible column items from the internal list,
|
||
|
// and adds the rest of invisible items.
|
||
|
// Example:
|
||
|
// <code>wndSubList.UpdateList();</code>
|
||
|
// Returns:
|
||
|
// TRUE when updated successfully, FALSE otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL UpdateList();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Not used for the moment.
|
||
|
// Parameters:
|
||
|
// iSubItem - Sub-item number for including.
|
||
|
// Returns:
|
||
|
// Non-zero when completed successfully, zero otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL Include(int iSubItem);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Not used for the moment.
|
||
|
// Parameters:
|
||
|
// iSubItem - Sub-item number for disabling.
|
||
|
// Returns:
|
||
|
// Non-zero when completed successfully, zero otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL Disable(int iSubItem);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member to use sorted list.
|
||
|
// Parameters:
|
||
|
// bSort - TRUE to sort columns in list.
|
||
|
//-----------------------------------------------------------------------
|
||
|
void SortAscending(BOOL bSort);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves caption text by its index.
|
||
|
// Parameters:
|
||
|
// nIndex - Index of item to retrieve.
|
||
|
// Returns:
|
||
|
// Caption of the item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CString GetItemCaption(int nIndex);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves column object by its index.
|
||
|
// Parameters:
|
||
|
// nIndex - Index of item to retrieve.
|
||
|
// Returns:
|
||
|
// CXTPReportColumn* object of the item.
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPReportColumn* GetItemColumn(int nIndex);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Finds item index by its data.
|
||
|
// Parameters:
|
||
|
// nItemData - Item data for search.
|
||
|
// Returns:
|
||
|
// Found item index, -1 if item was not found.
|
||
|
//-----------------------------------------------------------------------
|
||
|
int FindItemData(int nItemData);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the framework when a drag operation starts.
|
||
|
// Parameters:
|
||
|
// nItem - Item to begin drag
|
||
|
// Remarks:
|
||
|
// Override this function if you want to control what happens when
|
||
|
// a drag operation begins. This implementation captures the mouse,
|
||
|
// creates CXTPReportHeaderDragWnd and stays in drag mode until the
|
||
|
// user clicks the left or right mouse button or presses ESC,
|
||
|
// at which time the drag operation is canceled.
|
||
|
// Returns:
|
||
|
// Nonzero if dragging is allowed, otherwise 0.
|
||
|
// See Also: CDragListBox::BeginDrag
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL BeginDrag(int nItem);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the framework when an item is being dragged within the
|
||
|
// CDragListBox object.
|
||
|
// Parameters:
|
||
|
// pt - A CPoint object that contains the x and y screen coordinates of the cursor.
|
||
|
// Remarks:
|
||
|
// This implementation allows dropping items only on the control itself
|
||
|
// and associated report control header.
|
||
|
// Override this function if you want to provide additional functionality.
|
||
|
// Returns:
|
||
|
// The resource ID of the cursor to be displayed.
|
||
|
// The following values are possible:
|
||
|
// * <b>DL_COPYCURSOR</b> Indicates that the item will be copied.
|
||
|
// * <b>DL_MOVECURSOR</b> Indicates that the item will be moved.
|
||
|
// * <b>DL_STOPCURSOR</b> Indicates that the current drop target is not acceptable.
|
||
|
//
|
||
|
// See Also: CDragListBox::Dragging
|
||
|
//-----------------------------------------------------------------------
|
||
|
UINT Dragging(CPoint pt);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the framework when a drag operation has been canceled.
|
||
|
// Remarks:
|
||
|
// Destroys dragging CXTPReportHeaderDragWnd window and resets
|
||
|
// associated report control mouse mode.
|
||
|
// See Also: CDragListBox::CancelDrag
|
||
|
//-----------------------------------------------------------------------
|
||
|
void CancelDrag();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Called by the framework when an item is dropped within a
|
||
|
// CDragListBox object.
|
||
|
// Parameters:
|
||
|
// pt - A CPoint object that contains the coordinates of the drop site.
|
||
|
// Remarks:
|
||
|
// Destroys dragging CXTPReportHeaderDragWnd window and returns the
|
||
|
// control to the caller.
|
||
|
// See Also: CDragListBox::Dropped
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Dropped(CPoint pt);
|
||
|
|
||
|
|
||
|
protected:
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
DECLARE_MESSAGE_MAP()
|
||
|
|
||
|
void ParentNotify_SelChangd();
|
||
|
//{{AFX_VIRTUAL(CXTPReportSubListControl)
|
||
|
public:
|
||
|
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
|
||
|
protected:
|
||
|
virtual void PreSubclassWindow();
|
||
|
virtual void MeasureItem(LPMEASUREITEMSTRUCT){}
|
||
|
//}}AFX_VIRTUAL
|
||
|
|
||
|
//{{AFX_MSG(CXTPReportSubListControl)
|
||
|
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
||
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
||
|
afx_msg void OnPaint();
|
||
|
afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM lParam);
|
||
|
//}}AFX_MSG
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
protected:
|
||
|
CXTPReportControl* m_pReportCtrl; // Pointer to the parent report control.
|
||
|
|
||
|
CXTPReportHeaderDragWnd* m_pDragWnd; // Pointer to the associated dragging window.
|
||
|
CRect m_rcDragWnd; // Coordinates of the associated dragging window.
|
||
|
CRect m_rcDropTarget1; // Contains first drop target - the list window itself.
|
||
|
CRect m_rcDropTarget2; // Contains second drop target - report header.
|
||
|
|
||
|
int m_nDropIndex; // Drop item index.
|
||
|
BOOL m_bSortAscending; // TRUE to sort items in list.
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif //#if !defined(__XTPREPORTSUBLISTCONTROL_H__)
|