// XTPReportRecord.h: interface for the CXTPReportRecord 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(__XTPREPORTRECORD_H__) #define __XTPREPORTRECORD_H__ //}}AFX_CODEJOCK_PRIVATE #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class CXTPReportRecordItem; class CXTPReportRecordItemPreview; class CXTPReportColumn; class CXTPReportRecords; class CXTPPropExchange; class CXTPMarkupContext; struct XTP_REPORTRECORDITEM_DRAWARGS; struct XTP_REPORTRECORDITEM_METRICS; //=========================================================================== // Summary: // CXTPReportRecord represents a collection of objects of CXTPReportRecordItem // or objects of classes that are children of CXTPReportRecordItem. // A collection of such items is one record in ReportControl list. // You create an object of CXTPReportRecord by simply calling constructor. // After it you can add items to the record. // Example: // // // add new record to the record list // CXTPReportRecords* pList = new CXTPReportRecords(); // pList->Add(new CXTPReportRecord()); // //=========================================================================== class _XTP_EXT_CLASS CXTPReportRecord : public CXTPHeapObjectT { friend class CXTPReportRecords; friend class CXTPReportRow; friend class CXTPReportControl; friend class CXTPReportRecordItem; friend class CXTPReportPaintManager; DECLARE_SERIAL(CXTPReportRecord) public: //----------------------------------------------------------------------- // Summary: // Constructs a CXTPReportRecord object //----------------------------------------------------------------------- CXTPReportRecord(); //----------------------------------------------------------------------- // Summary: // Destroys a CXTPReportRecord object, handles cleanup and deallocation //----------------------------------------------------------------------- virtual ~CXTPReportRecord(); //----------------------------------------------------------------------- // Summary: // Returns the number of items inside record. // Returns: // The number of items inside the record. // See Also: GetItem //----------------------------------------------------------------------- int GetItemCount() const; //----------------------------------------------------------------------- // Summary: // Returns an item by its index or column. // Parameters: // nIndex - zero-based index of item in the collection. // pColumn - A pointer to a column object to find an item by. // Remarks: // You use this member function to get an item from collection by // item index. If the given index is less than 0 or greater than // the value returned by GetItemCount, GetItem returns NULL. // Returns: // Pointer to the found record item, if any, or NULL otherwise. // See Also: GetItemCount //----------------------------------------------------------------------- CXTPReportRecordItem* GetItem(int nIndex) const; CXTPReportRecordItem* GetItem(CXTPReportColumn* pColumn) const; // //----------------------------------------------------------------------- // Summary: // Returns a preview item. // Remarks: // Preview items stores separate from all others items. One // Record can have only one Preview Item. If ReportRecord doesn't // have a preview item, GetItemPreview() returns NULL // Returns: // Associated Preview item. // See Also: SetPreviewItem //----------------------------------------------------------------------- CXTPReportRecordItemPreview* GetItemPreview() const; //----------------------------------------------------------------------- // Summary: // Sets preview item for the record. // Parameters: // pItemPreview - Pointer to the associated preview item. // Remarks: // Preview items stores separate from all others items. One // Record can have only one Preview Item. // See Also: GetItemPreview //----------------------------------------------------------------------- void SetPreviewItem(CXTPReportRecordItemPreview* pItemPreview); //----------------------------------------------------------------------- // Summary: // Returns record visible state. // Remarks: // This member function returns FALSE if the record should be // invisible, TRUE if visible. // Returns: // Boolean value that represents visible state. // See Also: SetVisible //----------------------------------------------------------------------- BOOL IsVisible() const; //----------------------------------------------------------------------- // Summary: // Sets record visibility state. // Parameters: // bVisible - TRUE if the record should be visible, // FALSE if the record should be hidden. // See Also: IsVisible //----------------------------------------------------------------------- void SetVisible(BOOL bVisible); //----------------------------------------------------------------------- // Summary: // Returns record locked state. // Returns: // TRUE if the record is locked, FALSE otherwise. // See Also: SetLocked //----------------------------------------------------------------------- BOOL IsLocked() const; //----------------------------------------------------------------------- // Summary: // Sets record locked state. // Parameters: // bLocked - TRUE if record is locked, FALSE otherwise. // Remarks: // You set the record locked when it shouldn't be sorted on hide. // To set record locked or unlocked, you use SetLocked(BOOL) // See Also: IsLocked //----------------------------------------------------------------------- void SetLocked(BOOL bLocked); //----------------------------------------------------------------------- // Summary: // Returns record editable state. // Returns: // TRUE if the record is editable, FALSE otherwise. // See Also: SetEditable //----------------------------------------------------------------------- BOOL IsEditable() const; //----------------------------------------------------------------------- // Summary: // Sets record editable state. // Parameters: // bEditable - TRUE if the record is editable, FALSE otherwise. //----------------------------------------------------------------------- void SetEditable(BOOL bEditable = TRUE); //----------------------------------------------------------------------- // Summary: // Returns record children. // Remarks: // ReportRecord can have a list of child items. // To get the pointer to that list, use GetChilds() // Returns: // A collection of record children. //----------------------------------------------------------------------- CXTPReportRecords* GetChilds(); //----------------------------------------------------------------------- // Summary: // Returns parent records. // Returns: // A collection of parent records. //----------------------------------------------------------------------- CXTPReportRecords* GetRecords() const; //----------------------------------------------------------------------- // Summary: // Determines if record has children records // Returns: // TRUE if record has children records // See Also: GetChilds //----------------------------------------------------------------------- BOOL HasChildren() const; //----------------------------------------------------------------------- // Summary: // Removes all items. //----------------------------------------------------------------------- void RemoveAll(); //----------------------------------------------------------------------- // Summary: // Returns an index of the provided record item object. // Parameters: // pItem - record item which index need to retrieve. // Remarks: // This member function is used to get the zero-based index // of items in the record collection. If the item is not found, it returns // -1 // Returns: // Zero-based index of provided record item //----------------------------------------------------------------------- int IndexOf(const CXTPReportRecordItem* pItem) const; //----------------------------------------------------------------------- // Summary: // Calculates item metrics based on the provided draw arguments. // Could be overridden by descendants. // Parameters: // pDrawArgs - Draw arguments for calculating item metrics. // pItemMetrics - Pointer to the metrics item to fill with values. //----------------------------------------------------------------------- virtual void GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pItemMetrics); //----------------------------------------------------------------------- // Summary: // function to update DataSet in VirtualMode without _RecordsetPtr involved // Remarks: // Could be overridden by descendants. // Parameters: // row - Row // index - Index // sText - value as a string // Returns: // BOOLEAN value - TRUE if success virtual BOOL UpdateRecordField(int row, int index, CString sText); //----------------------------------------------------------------------- // Summary: // Returns the expanded state of the Record // Remarks: // Returns expanded state of the Record. If expanded state is set to // TRUE, the control tries to draw the record with all its children // Returns: // BOOLEAN value the represent expanded state of ReportRecord // See Also: SetExpanded //----------------------------------------------------------------------- BOOL IsExpanded() const; //----------------------------------------------------------------------- // Summary: // This member function sets the expanded state of the Record // Parameters: // bExpanded - TRUE to set record expanded. // Remarks: // Returns the expanded state of the Record. If the expanded state is set to // TRUE, the control tries to draw the record with all its children // See Also: IsExpanded //----------------------------------------------------------------------- virtual void SetExpanded(BOOL bExpanded); BOOL IsSelected() const; void SetSelected(BOOL bSelected); //----------------------------------------------------------------------- // Summary: // Returns TRUE if record is filtered. // Returns: // TRUE if the record is filtered, FALSE otherwise //----------------------------------------------------------------------- virtual BOOL IsFiltered() const; //----------------------------------------------------------------------- // Summary: // Retrieves record index in the array. // Returns: // The record index in the array. //----------------------------------------------------------------------- int GetIndex() const; //----------------------------------------------------------------------- // Summary: // Adds a record item to the internal records item collection. // Parameters: // pItem - Pointer to the new record item. // Returns: // Pointer to the recently added record item. //----------------------------------------------------------------------- CXTPReportRecordItem* AddItem(CXTPReportRecordItem* pItem); //----------------------------------------------------------------------- // Summary: // Call this member function to Store/Load a report record with record // items using the specified data object. // Parameters: // pPX - Source or destination CXTPPropExchange data object reference. //----------------------------------------------------------------------- virtual void DoPropExchange(CXTPPropExchange* pPX); //------------------------------------------------------------------------- // Summary: // Call this method to remove record //------------------------------------------------------------------------- void Delete(); //------------------------------------------------------------------------- // Summary: // Call this method to increment reference counter of a record and all its children //------------------------------------------------------------------------- void TreeAddRef(); //------------------------------------------------------------------------- // Summary: // Call this method to decrement reference counter of a record and all its children //------------------------------------------------------------------------- void TreeRelease(); //------------------------------------------------------------------------- // Summary: // Call this method to set a bookmark to data source record. // Parameters: // vtBookmark - VARIANT //------------------------------------------------------------------------- void SetBookmark(VARIANT vtBookmark); //------------------------------------------------------------------------- // Summary: // Call this method to get a bookmark to data source record. // Returns: // Bookmark to data source record. //------------------------------------------------------------------------- VARIANT GetBookmark() const; //------------------------------------------------------------------------- // Summary: // Call this method to get markup context object. // Returns: // A pointer to markup context object. //------------------------------------------------------------------------- CXTPMarkupContext* GetMarkupContext() const; //------------------------------------------------------------------------- // Summary: // Call this method to get the parent record. // Returns: // A pointer to report record object. //------------------------------------------------------------------------- CXTPReportRecord* GetParentRecord() const; protected: CArray m_arrItems; // An internal storage for record items. CXTPReportRecordItemPreview* m_pPreviewItem; // store Preview Item for record CXTPReportControl *m_pControl; // Pointer to the parent report control. CXTPReportRecords *m_pRecords; // Parent records collection. CXTPReportRecords *m_pChildren; // A collection of children records. BOOL m_bExpanded; // Contains record expanded state. BOOL m_bEditable; // TRUE if the record is editable, FALSE otherwise. BOOL m_bVisible; // Is this record visible or not BOOL m_bLocked; // Stores locked state for the record. BOOL m_bSelected; // Tell whether the record is selected as child or not. int m_nFreeHeight; // Height of visual row in FreeHeight RC mode. int m_nIndex; // Index of the record within the collection records. VARIANT m_vtBookmark; // Bookmark to data source record for data binding. }; AFX_INLINE int CXTPReportRecord::GetItemCount() const { return (int)m_arrItems.GetSize(); } AFX_INLINE CXTPReportRecordItem* CXTPReportRecord::GetItem(int nIndex) const { return nIndex >= 0 && nIndex < GetItemCount() ? m_arrItems.GetAt(nIndex) : NULL; } AFX_INLINE BOOL CXTPReportRecord::IsVisible() const { return m_bVisible; } AFX_INLINE void CXTPReportRecord::SetVisible(BOOL bVisible) { m_bVisible = bVisible; } AFX_INLINE BOOL CXTPReportRecord::IsEditable() const { return m_bEditable; } AFX_INLINE BOOL CXTPReportRecord::IsExpanded() const { return m_bExpanded; } AFX_INLINE BOOL CXTPReportRecord::IsLocked() const { return m_bLocked; } AFX_INLINE void CXTPReportRecord::SetLocked(BOOL bLocked) { m_bLocked = bLocked; } AFX_INLINE BOOL CXTPReportRecord::IsSelected() const { return m_bSelected; } AFX_INLINE void CXTPReportRecord::SetSelected(BOOL bSelected) { m_bSelected = bSelected; } AFX_INLINE void CXTPReportRecord::GetItemMetrics( XTP_REPORTRECORDITEM_DRAWARGS *pDrawArgs, XTP_REPORTRECORDITEM_METRICS *pItemMetrics) { UNREFERENCED_PARAMETER(pDrawArgs); UNREFERENCED_PARAMETER(pItemMetrics); } AFX_INLINE BOOL CXTPReportRecord::UpdateRecordField(int /*row*/, int /*index*/, CString /*sText*/) { return TRUE; } AFX_INLINE CXTPReportRecords* CXTPReportRecord::GetRecords() const { return m_pRecords; } AFX_INLINE void CXTPReportRecord::SetBookmark(VARIANT vtBookmark) { m_vtBookmark = vtBookmark; } AFX_INLINE VARIANT CXTPReportRecord::GetBookmark() const { return m_vtBookmark; } #endif //#if !defined(__XTPREPORTRECORD_H__)