如何让系统记住用户每次拖动表格后的列宽,下次表格初始化就可以直接用该列宽,来显示表格的每一个列。每个用户的使用习惯不一样,和使用的功能不一样,即使是同一套系统,只要用户不同,就有可能需要不同的列宽。比如,某些用户需要特别关注备注信息,就需要直接把备注列拉的宽一些。某些用户关注的品名,就需要把品名拉到合适的位置。
我们需要在拖动表格列宽的操作中,记住拖动后的当前列的宽,核心代码是这样的:
void MyCListCtrl::OnHdnItemchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
//获取表头控件
CHeaderCtrl* pHead = GetHeaderCtrl();
//获取表头列信息
HDITEM hdItem;
ZeroMemory(&hdItem,sizeof(hdItem));
hdItem.mask=HDI_FORMAT | HDI_WIDTH;
pHead->GetItem(phdr->iItem,&hdItem);
//获取列宽
CString dh_table_col,col_width;
dh_table_col.Format(_T("T%d_%d_%d_%s"),parent_id,list_id,phdr->iItem+1,((CMainApp *)::AfxGetApp())->m_uid);
col_width.Format(_T("%d"),hdItem.cxy);
//保存列宽
HxFile::WriteIni(_T("cfg.ini"),_T("TABLECOLS"),dh_table_col,col_width);
//刷新表格
CRect rc_all;
this->GetClientRect(&rc_all);
this->InvalidateRect(&rc_all);
*pResult = 0;
}
该功能,提升了用户的操作体验,帮用户节省了操作时间。当然当前大多数ERP软件,都有这个功能。
Demo下载:绿色迷你ERP系统.zip - 蓝奏云 (lanzouy.com)