MFC:ListControl数据修改

3 篇文章 0 订阅
本文介绍了如何在C++环境下,通过创建对话框和控件,设计ListControl表格格式,并实现双击单元格进行数值修改及编辑后的保存功能。详细步骤包括设置表格样式、插入列、调整单元格高度和字体,以及添加双击事件和失去焦点事件处理函数,确保数据修改的完整流程。
摘要由CSDN通过智能技术生成

1.创建对话框及必要的控件

创建对话框,
在对话框中拖入一个listControl控件,命名为m_ROIsearchresult,风格:report;
添加一个editControl控件,命名为m_edit_pos,默认是Control变量;

2.表格格式设计

DWORD dwStyle = m_ROIsearchresult.GetExtendedStyle();
	dwStyle |= LVS_EX_FULLROWSELECT;   //选中行高亮
	dwStyle |= LVS_EX_GRIDLINES;        //分割新
	// dwStyle |= LVS_SINGLESEL;  //  添加复选框
	m_ROIsearchresult.SetExtendedStyle(dwStyle);

	m_ROIsearchresult.InsertColumn(0, _T("ID"), LVCFMT_CENTER, 50);
	m_ROIsearchresult.InsertColumn(1, _T("AVG值"), LVCFMT_CENTER, 100);
	m_ROIsearchresult.InsertColumn(2, _T("检测上限"), LVCFMT_CENTER, 100);
	m_ROIsearchresult.InsertColumn(3, _T("检测下限"), LVCFMT_CENTER, 100);
	//cell height
	CImageList m_hight;
	m_hight.Create(1, 25, TRUE | ILC_COLOR32, 1, 0);   //设置表格的高度 
	m_ROIsearchresult.SetImageList(&m_hight, LVSIL_SMALL);
	//font style
	CFont m_font;
	m_font.CreatePointFont(60, _T("宋体"));
	m_ROIsearchresult.SetFont(&m_font);

3.表格数据修改

①双击表格选中cell实现数值修改

void ROIAdjust::OnNMDblclkListRoiSearch(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	// MessageBox(_T("double  click"));
	CRect rc;
	NM_LISTVIEW *pNMListView = (NM_LISTVIEW *)pNMHDR;
	m_Row = pNMListView->iItem;//每一行的item从零开始,双击选中行号
	m_Col = pNMListView->iSubItem;//每一行中的列就是SubItem也是从零开始,获得选中列号

	if (m_Col != -1)//选择子项
	{
		
		m_ROIsearchresult.GetSubItemRect(m_Row, m_Col, LVIR_LABEL, rc);
		m_edit_pos.SetParent(&m_ROIsearchresult);
		m_edit_pos.MoveWindow(rc);
		m_edit_pos.SetWindowText(m_ROIsearchresult.GetItemText(m_Row, m_Col));//设置选中框的数值(由用户输入 )
		str_ListValTemp = m_ROIsearchresult.GetItemText(m_Row, m_Col);//获取选中框中的数据
		m_edit_pos.ShowWindow(SW_SHOW);//显示在窗口中
		m_edit_pos.SetFocus();//设置edit焦点
		m_edit_pos.ShowCaret();//显示光标
		m_edit_pos.SetSel(-1);

	}
	
	
	*pResult = 0;
}

②cell实现数值修改后保存

此时只能实现edit中的数值修改 不能实现保存,所以在editcontrol控件中添加killfocus功能函数:
在这里插入图片描述

void ROIAdjust::OnEnKillfocusEdit1()  // 关闭编辑框内容
{
	// TODO: 在此添加控件通知处理程序代码
	m_edit_pos.GetWindowText(str_ListValTemp);
	m_ROIsearchresult.SetItemText(m_Row,m_Col,str_ListValTemp);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时间之里

好东西就应该拿出来大家共享

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值