优化 MFC CGridCtrl 的表格布局与功能

时间:2024-11-21 07:32:24
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(); }