www.pudn.com > EasyReport.rar > GridCell.h


///////////////////////////////////////////////////////////////////////////// 
// GridCell.h : header file 
// 
// MFC Grid Control - Grid cell class header file 
// 
// Written by Chris Maunder  
// Copyright (c) 1998-2002. All Rights Reserved. 
// 
// This code may be used in compiled form in any way you desire. This 
// file may be redistributed unmodified by any means PROVIDING it is  
// not sold for profit without the authors written consent, and  
// providing that this notice and the authors name and all copyright  
// notices remains intact.  
// 
// An email letting me know how you are using it would be nice as well.  
// 
// This file is provided "as is" with no expressed or implied warranty. 
// The author accepts no liability for any damage/loss of business that 
// this product may cause. 
// 
// For use with CGridCtrl v2.20+ 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_GRIDCELL_H__519FA702_722C_11D1_ABBA_00A0243D1382__INCLUDED_) 
#define AFX_GRIDCELL_H__519FA702_722C_11D1_ABBA_00A0243D1382__INCLUDED_ 
 
#if _MSC_VER >= 1000 
#pragma once 
#endif // _MSC_VER >= 1000 
 
class CGridCtrl; 
#include "GridCellBase.h" 
 
// Each cell contains one of these. Fields "row" and "column" are not stored since we 
// will usually have acces to them in other ways, and they are an extra 8 bytes per 
// cell that is probably unnecessary. 
 
class CGridCell : public CGridCellBase 
{ 
    friend class CGridCtrl; 
    DECLARE_DYNCREATE(CGridCell) 
 
// Construction/Destruction 
public: 
    CGridCell(); 
    virtual ~CGridCell(); 
 
// Attributes 
public: 
    void operator=( CGridCell& cell); 
 
    virtual void  SetText(LPCTSTR szText)        { m_strText = szText;  }                        
    virtual void  SetImage(int nImage)           { m_nImage = nImage;   }                         
    virtual void  SetData(LPARAM lParam)         { m_lParam = lParam;   }       
    virtual void  SetGrid(CGridCtrl* pGrid)      { m_pGrid = pGrid;     }                           
    // virtual void SetState(const DWORD nState);  -  use base class version    
    virtual void  SetFormat(DWORD nFormat)       { m_nFormat = nFormat; }                       
    virtual void  SetTextClr(COLORREF clr)       { m_crFgClr = clr;     }                           
    virtual void  SetBackClr(COLORREF clr)       { m_crBkClr = clr;     }                           
    virtual void  SetFont(const LOGFONT* plf); 
    virtual void  SetMargin(UINT nMargin)        { m_nMargin = nMargin; } 
    virtual CWnd* GetEditWnd() const             { return m_pEditWnd;   } 
    virtual void  SetCoords(int /*nRow*/, int /*nCol*/) {}  // don't need to know the row and 
                                                            // column for base implementation 
 
    virtual LPCTSTR     GetText() const             { return (m_strText.IsEmpty())? _T("") : LPCTSTR(m_strText); } 
    virtual int         GetImage() const            { return m_nImage;  } 
    virtual LPARAM      GetData() const             { return m_lParam;  } 
    virtual CGridCtrl*  GetGrid() const             { return m_pGrid;   } 
    // virtual DWORD    GetState() const - use base class 
    virtual DWORD       GetFormat() const; 
    virtual COLORREF    GetTextClr() const          { return m_crFgClr; } // TODO: change to use default cell 
    virtual COLORREF    GetBackClr() const          { return m_crBkClr; } 
    virtual LOGFONT*    GetFont() const; 
    virtual CFont*      GetFontObject() const; 
    virtual UINT        GetMargin() const; 
 
    virtual BOOL        IsEditing() const           { return m_bEditing; } 
    virtual BOOL        IsDefaultFont() const       { return (m_plfFont == NULL); } 
    virtual void        Reset(); 
 
// editing cells 
public: 
    virtual BOOL Edit(int nRow, int nCol, CRect rect, CPoint point, UINT nID, UINT nChar); 
    virtual void EndEdit(); 
protected: 
    virtual void OnEndEdit(); 
 
protected: 
    CString    m_strText;      // Cell text (or binary data if you wish...) 
    LPARAM     m_lParam;       // 32-bit value to associate with item 
    int        m_nImage;       // Index of the list view item’s icon 
    DWORD      m_nFormat; 
    COLORREF   m_crFgClr; 
    COLORREF   m_crBkClr; 
    LOGFONT*   m_plfFont; 
    UINT       m_nMargin; 
 
    BOOL       m_bEditing;     // Cell being edited? 
 
    CGridCtrl* m_pGrid;        // Parent grid control 
    CWnd*      m_pEditWnd; 
}; 
 
// This class is for storing grid default values. It's a little heavy weight, so 
// don't use it in bulk  
class CGridDefaultCell : public CGridCell 
{ 
    DECLARE_DYNCREATE(CGridDefaultCell) 
 
// Construction/Destruction 
public: 
    CGridDefaultCell(); 
    virtual ~CGridDefaultCell(); 
 
public: 
    virtual DWORD GetStyle() const                      { return m_dwStyle;      } 
    virtual void  SetStyle(DWORD dwStyle)               { m_dwStyle = dwStyle;   } 
    virtual int   GetWidth() const                      { return m_Size.cx;      } 
    virtual int   GetHeight() const                     { return m_Size.cy;      } 
    virtual void  SetWidth(int nWidth)                  { m_Size.cx = nWidth;    } 
    virtual void  SetHeight(int nHeight)                { m_Size.cy = nHeight;   } 
 
    // Disable these properties 
    virtual void     SetData(LPARAM /*lParam*/)             { ASSERT(FALSE);         }       
    virtual void     SetState(DWORD /*nState*/)             { ASSERT(FALSE);         } 
    virtual DWORD    GetState() const                       { return CGridCell::GetState()|GVIS_READONLY; } 
    virtual void     SetCoords( int /*row*/, int /*col*/)   { ASSERT(FALSE);         } 
    virtual void     SetFont(const LOGFONT* /*plf*/); 
    virtual LOGFONT* GetFont() const;    
    virtual CFont*   GetFontObject() const; 
 
protected: 
    CSize m_Size;       // Default Size 
    CFont m_Font;       // Cached font 
    DWORD m_dwStyle;    // Cell Style - unused 
}; 
 
//{{AFX_INSERT_LOCATION}} 
// Microsoft Developer Studio will insert additional declarations immediately before the previous line. 
 
#endif // !defined(AFX_GRIDCELL_H__519FA702_722C_11D1_ABBA_00A0243D1382__INCLUDED_)