优化 MFC CGridCtrl 的表格布局与功能
void CUserManagerDlg::InitUserManager()
{
if (m_gridUserManager.GetSafeHwnd() == NULL)
return;
// 清空表格数据
m_gridUserManager.DeleteAllItems();
m_gridUserManager.SetVirtualMode(FALSE); // 设置为非虚拟模式
// 配置默认单元格样式
m_gridUserManager.GetDefaultCell(TRUE, FALSE)->SetBackClr(g_nGridFixCellColor); // 固定行背景色
m_gridUserManager.GetDefaultCell(FALSE, TRUE)->SetBackClr(g_nGridFixCellColor); // 固定列背景色
m_gridUserManager.GetDefaultCell(FALSE, FALSE)->SetBackClr(g_nGridCellColor); // 普通单元格背景色
m_gridUserManager.SetFixedTextColor(g_nGridFixFontColor); // 固定行/列字体颜色
// 设置表格行列数
int nRows = 1; // 初始只有标题行
int nCols = 7; // 包含固定列的总列数
m_gridUserManager.SetRowCount(nRows);
m_gridUserManager.SetColumnCount(nCols);
m_gridUserManager.SetFixedRowCount(1);
m_gridUserManager.SetFixedColumnCount(0);
// 配置表头
int nColIdx = 0;
m_gridUserManager.SetColumnWidth(nColIdx, 30); // 列宽
m_gridUserManager.SetItemText(0, nColIdx++, _T("No."));
m_gridUserManager.SetColumnWidth(nColIdx, 70);
m_gridUserManager.SetItemText(0, nColIdx++, _T("用户名"));
m_gridUserManager.SetColumnWidth(nColIdx, 70);
m_gridUserManager.SetItemText(0, nColIdx++, _T("密码"));
m_gridUserManager.SetColumnWidth(nColIdx, 70);
m_gridUserManager.SetItemText(0, nColIdx++, _T("权限"));
m_gridUserManager.SetColumnWidth(nColIdx, 70);
m_gridUserManager.SetItemText(0, nColIdx++, _T("会话超时(分钟)"));
m_gridUserManager.SetColumnWidth(nColIdx, 70);
m_gridUserManager.SetItemText(0, nColIdx++, _T("会话过期(小时)"));
m_gridUserManager.SetColumnWidth(nColIdx, 100);
m_gridUserManager.SetItemText(0, nColIdx++, _T("最后一次登录时间"));
// 配置交互属性
m_gridUserManager.SetEditable(TRUE);
m_gridUserManager.SetRowResize(FALSE);
m_gridUserManager.SetColumnResize(TRUE);
m_gridUserManager.SetFixedRowSelection(FALSE);
m_gridUserManager.SetFixedColumnSelection(FALSE);
m_gridUserManager.SetListMode(TRUE);
m_gridUserManager.SetSingleRowSelection(TRUE);
// 自动调整列宽
m_gridUserManager.ExpandColumnsToFit(TRUE);
m_gridUserManager.ExpandLastColumn();
// 填充表格数据
FillUserManager();
}