|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
// GridCell.h : header file
|
|
|
//
|
|
|
// MFC Grid Control - Grid cell class header file
|
|
|
//
|
|
|
// Written by Chris Maunder <chris@codeproject.com>
|
|
|
// Copyright (c) 1998-2005. 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
|
|
|
|
|
|
#ifdef BUILD_GUIDLL
|
|
|
#define DLLCLASS __declspec(dllexport)
|
|
|
#else
|
|
|
#define DLLCLASS __declspec(dllimport)
|
|
|
#endif
|
|
|
|
|
|
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 DLLCLASS CGridCell : public CGridCellBase
|
|
|
{
|
|
|
friend class CGridCtrl;
|
|
|
DECLARE_DYNCREATE(CGridCell)
|
|
|
|
|
|
// Construction/Destruction
|
|
|
public:
|
|
|
CGridCell();
|
|
|
virtual ~CGridCell();
|
|
|
|
|
|
// Attributes
|
|
|
public:
|
|
|
CGridCell& operator=(const 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<65>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 DLLCLASS 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_)
|