📄 gridctrl.cpp
字号:
///////////////////////////////////////////////////////////////////////
COLORREF CGridCtrl::GetBkColor() const
{
return m_crBkColour;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetFixedTextColor(COLORREF clr)
{
m_crFixedTextColour = clr;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
COLORREF CGridCtrl::GetFixedTextColor() const
{
return m_crFixedTextColour;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetFixedBkColor(COLORREF clr)
{
m_crFixedBkColour = clr;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
COLORREF CGridCtrl::GetFixedBkColor() const
{
return m_crFixedBkColour;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetGridColor(COLORREF clr)
{
m_crGridColour = clr;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
COLORREF CGridCtrl::GetGridColor() const
{
return m_crGridColour;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
int CGridCtrl::GetSelectedCount() const
{
return m_SelectedCellMap.GetCount();
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
CCellID CGridCtrl::GetFocusCell() const
{
return m_idCurrentCell;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetImageList(CImageList* pList)
{
m_pImageList = pList;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
CImageList* CGridCtrl::GetImageList() const
{
return m_pImageList;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetGridLines(int nWhichLines)
{
m_nGridLines = nWhichLines;
if (::IsWindow(GetSafeHwnd()))
Invalidate();
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
int CGridCtrl::GetGridLines() const
{
return m_nGridLines;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetEditable(BOOL bEditable)
{
m_bEditable = bEditable;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::IsEditable() const
{
return m_bEditable;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetModified(BOOL bModified)
{
m_bModified = bModified;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::GetModified() const
{
return m_bModified;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetListMode(BOOL bEnableListMode)
{
m_bListMode = bEnableListMode;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::GetListMode() const
{
return m_bListMode;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::EnableSelection(BOOL bEnable)
{
ResetSelectedRange();
m_bEnableSelection = bEnable;
ResetSelectedRange();
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::IsSelectable() const
{
return m_bEnableSelection;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::EnableDragAndDrop(BOOL bAllow)
{
m_bAllowDragAndDrop = bAllow;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::GetDragAndDrop() const
{
return m_bAllowDragAndDrop;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetRowResize(BOOL bResize)
{
m_bAllowRowResize = bResize;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::GetRowResize() const
{
return m_bAllowRowResize;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetColumnResize(BOOL bResize)
{
m_bAllowColumnResize = bResize;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::GetColumnResize() const
{
return m_bAllowColumnResize;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetHeaderSort(BOOL bSortOnClick)
{
m_bSortOnClick = bSortOnClick;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::GetHeaderSort() const
{
return m_bSortOnClick;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetHandleTabKey(BOOL bHandleTab)
{
m_bHandleTabKey = bHandleTab;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::GetHandleTabKey() const
{
return m_bHandleTabKey;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::SetDoubleBuffering(BOOL bBuffer)
{
m_bDoubleBuffer = bBuffer;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::GetDoubleBuffering() const
{
return m_bDoubleBuffer;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::EnableTitleTips(BOOL bEnable)
{
m_bTitleTips = bEnable;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
BOOL CGridCtrl::GetTitleTips()
{
return m_bTitleTips;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::EnsureVisible(CCellID &cell)
{
EnsureVisible(cell.row, cell.col);
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
int CGridCtrl::SetMouseMode(int nMode)
{
int nOldMode = m_MouseMode;
m_MouseMode = nMode;
return nOldMode;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
int CGridCtrl::GetMouseMode() const
{
return
m_MouseMode;
}
///////////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////////
void CGridCtrl::OnPaint()
{
CPaintDC dc(this);
if (m_bDoubleBuffer)
{
CMemDC MemDC(&dc);
OnDraw(&MemDC);
}
else
OnDraw(&dc);
}
/////////////////////////////////////////////
//
/////////////////////////////////////////////
BOOL CGridCtrl::OnEraseBkgnd(CDC* /*pDC*/)
{
return TRUE;
}
////////////////////////////////////////////////////////////////////////////////////
//
////////////////////////////////////////////////////////////////////////////////////
void CGridCtrl::EraseBkgnd(CDC* pDC)
{
CRect VisRect, ClipRect, rect;
CBrush FixedBack(GetFixedBkColor()),
TextBack(GetTextBkColor()),
//Back(GetBkColor());
Back(GetCurrentColor(COLOR_BEIGE));
if (pDC->GetClipBox(ClipRect) == ERROR)
return;
GetVisibleNonFixedCellRange(VisRect);
//画固定列背景
int nFixedColumnWidth = GetFixedColumnWidth();
if (ClipRect.left < nFixedColumnWidth && ClipRect.top < VisRect.bottom)
pDC->FillRect(CRect(ClipRect.left, ClipRect.top, nFixedColumnWidth, VisRect.bottom),
&FixedBack);
//画固定行背景
int nFixedRowHeight = GetFixedRowHeight();
if (ClipRect.top < nFixedRowHeight &&
ClipRect.right > nFixedColumnWidth && ClipRect.left < VisRect.right)
pDC->FillRect(CRect(nFixedColumnWidth-1, ClipRect.top, VisRect.right, nFixedRowHeight),
&FixedBack);
//画非固定单元背景
if (rect.IntersectRect(VisRect, ClipRect))
{
CRect CellRect(max(nFixedColumnWidth, rect.left), max(nFixedRowHeight, rect.top),
rect.right, rect.bottom);
pDC->FillRect(CellRect, &TextBack);
}
// Draw right hand side of window outside grid
if (VisRect.right < ClipRect.right)
pDC->FillRect(CRect(VisRect.right, ClipRect.top, ClipRect.right, ClipRect.bottom),
&Back);
// Draw bottom of window below grid
if (VisRect.bottom < ClipRect.bottom && ClipRect.left < VisRect.right)
pDC->FillRect(CRect(ClipRect.left, VisRect.bottom, VisRect.right, ClipRect.bottom),
&Back);
}
////////////////////////////////////////////////////
//
////////////////////////////////////////////////////
void CGridCtrl::OnSize(UINT nType, int cx, int cy)
{
SetFocus();
CWnd::OnSize(nType, cx, cy);
ResetScrollBars();
}
///////////////////////////////////////////////////
//
///////////////////////////////////////////////////
UINT CGridCtrl::OnGetDlgCode()
{
UINT nCode = DLGC_WANTARROWS | DLGC_WANTCHARS;
if (m_bHandleTabKey && !IsCTRLpressed())
nCode |= DLGC_WANTTAB;
return nCode;
}
/////////////////////////////////////////////////////
//
////////////////////////////////////////////////////
void CGridCtrl::OnSysColorChange()
{
CWnd::OnSysColorChange();
if (GetTextColor() == m_crWindowText)
SetTextColor(::GetSysColor(COLOR_WINDOWTEXT));
if (GetTextBkColor() == m_crWindowColour)
SetTextBkColor(::GetSysColor(COLOR_WINDOW));
if (GetBkColor() == m_crShadow)
SetBkColor(::GetSysColor(COLOR_3DSHADOW));
if (GetFixedTextColor() == m_crWindowText)
SetFixedTextColor(::GetSysColor(COLOR_WINDOWTEXT));
if (GetFixedBkColor() == m_cr3DFace)
SetFixedBkColor(::GetSysColor(COLOR_3DFACE));
m_crWindowText = ::GetSysColor(COLOR_WINDOWTEXT);
m_crWindowColour = ::GetSysColor(COLOR_WINDOW);
m_cr3DFace = ::GetSysColor(COLOR_3DFACE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -