GridCell.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #pragma once
  2. class CGridCtrl;
  3. #include "GridCellBase.h"
  4. #include <afx.h>
  5. // Each cell contains one of these. Fields "row" and "column" are not stored since we
  6. // will usually have acces to them in other ways, and they are an extra 8 bytes per
  7. // cell that is probably unnecessary.
  8. class CGridCell : public CGridCellBase
  9. {
  10. friend class CGridCtrl;
  11. DECLARE_DYNCREATE(CGridCell)
  12. // Construction/Destruction
  13. public:
  14. CGridCell();
  15. virtual ~CGridCell();
  16. // Attributes
  17. public:
  18. void operator=(CGridCell& cell);
  19. virtual void SetText(LPCTSTR szText) { m_strText = szText; }
  20. virtual void SetImage(int nImage) { m_nImage = nImage; }
  21. virtual void SetData(LPARAM lParam) { m_lParam = lParam; }
  22. virtual void SetGrid(CGridCtrl* pGrid) { m_pGrid = pGrid; }
  23. // virtual void SetState(const DWORD nState); - use base class version
  24. virtual void SetFormat(DWORD nFormat) { m_nFormat = nFormat; }
  25. virtual void SetTextClr(COLORREF clr) { m_crFgClr = clr; }
  26. virtual void SetBackClr(COLORREF clr) { m_crBkClr = clr; }
  27. virtual void SetFont(const LOGFONT* plf);
  28. virtual void SetFontBold(BOOL bBold) { m_plfFont->lfWeight = bBold ? FW_BOLD : FW_NORMAL; }
  29. virtual void SetFontSize(int nSize) { m_plfFont->lfHeight = nSize * -1; }
  30. virtual void SetMargin(UINT nMargin) { m_nMargin = nMargin; }
  31. virtual CWnd* GetEditWnd() const { return m_pEditWnd; }
  32. virtual void SetCoords(int /*nRow*/, int /*nCol*/) {} // don't need to know the row and
  33. // column for base implementation
  34. virtual LPCTSTR GetText() const { return (m_strText.IsEmpty()) ? _T("") : LPCTSTR(m_strText); }
  35. virtual int GetImage() const { return m_nImage; }
  36. virtual LPARAM GetData() const { return m_lParam; }
  37. virtual CGridCtrl* GetGrid() const { return m_pGrid; }
  38. // virtual DWORD GetState() const - use base class
  39. virtual DWORD GetFormat() const;
  40. virtual COLORREF GetTextClr() const { return m_crFgClr; } // TODO: change to use default cell
  41. virtual COLORREF GetBackClr() const { return m_crBkClr; }
  42. /******************************************************************/
  43. virtual void SetBorder(UINT bdr) { m_nBorder = bdr; };
  44. virtual void SetBorderClr(COLORREF clr) { m_crBorderClr = clr; }
  45. virtual COLORREF GetBorderClr() const { return m_crBorderClr; }
  46. virtual UINT GetBorder() const { return m_nBorder; } // Border
  47. /******************************************************************/
  48. virtual LOGFONT* GetFont() const;
  49. virtual CFont* GetFontObject() const;
  50. virtual UINT GetMargin() const;
  51. virtual BOOL IsFontBold() const { return m_plfFont->lfWeight == FW_BOLD; }
  52. virtual BOOL IsEditing() const { return m_bEditing; }
  53. virtual BOOL IsDefaultFont() const { return (m_plfFont == NULL); }
  54. virtual void Reset();
  55. // editing cells
  56. public:
  57. virtual BOOL Edit(int nRow, int nCol, CRect rect, CPoint point, UINT nID, UINT nChar);
  58. virtual void EndEdit();
  59. protected:
  60. virtual void OnEndEdit();
  61. protected:
  62. CString m_strText; // Cell text (or binary data if you wish...)
  63. LPARAM m_lParam; // 32-bit value to associate with item
  64. int m_nImage; // Index of the list view item’s icon
  65. DWORD m_nFormat;
  66. COLORREF m_crFgClr;
  67. COLORREF m_crBkClr;
  68. LOGFONT* m_plfFont;
  69. UINT m_nMargin;
  70. COLORREF m_crBorderClr;
  71. UINT m_nBorder;
  72. BOOL m_bEditing; // Cell being edited?
  73. CGridCtrl* m_pGrid; // Parent grid control
  74. CWnd* m_pEditWnd;
  75. };
  76. // This class is for storing grid default values. It's a little heavy weight, so
  77. // don't use it in bulk
  78. class CGridDefaultCell : public CGridCell
  79. {
  80. DECLARE_DYNCREATE(CGridDefaultCell)
  81. // Construction/Destruction
  82. public:
  83. CGridDefaultCell();
  84. virtual ~CGridDefaultCell();
  85. public:
  86. virtual DWORD GetStyle() const { return m_dwStyle; }
  87. virtual void SetStyle(DWORD dwStyle) { m_dwStyle = dwStyle; }
  88. virtual int GetWidth() const { return m_Size.cx; }
  89. virtual int GetHeight() const { return m_Size.cy; }
  90. virtual void SetWidth(int nWidth) { m_Size.cx = nWidth; }
  91. virtual void SetHeight(int nHeight) { m_Size.cy = nHeight; }
  92. // Disable these properties
  93. virtual void SetData(LPARAM /*lParam*/) { ASSERT(FALSE); }
  94. virtual void SetState(DWORD /*nState*/) { ASSERT(FALSE); }
  95. virtual DWORD GetState() const { return CGridCell::GetState() | GVIS_READONLY; }
  96. virtual void SetCoords(int /*row*/, int /*col*/) { ASSERT(FALSE); }
  97. virtual void SetFont(const LOGFONT* /*plf*/);
  98. virtual LOGFONT* GetFont() const;
  99. virtual CFont* GetFontObject() const;
  100. protected:
  101. CSize m_Size; // Default Size
  102. CFont m_Font; // Cached font
  103. DWORD m_dwStyle; // Cell Style - unused
  104. };