赞
踩
首先在资源视图的主界面添加一个editcontrol编辑框控件
再添加主界面ListControl表格控件
类似这样:
再设置listcontrol表格控件的属性和editcontrol编辑框属性
在.h的头文件里面定义CListCtrl m_list; CEdit m_edit;
- CListCtrl m_list;
- CEdit m_edit;
将表格控件listcontrol、编辑框editcontrol控件和控件ID关联起来
- DDX_Control(pDX, IDC_EDIT_LIST, m_edit);
- DDX_Control(pDX, IDC_LIST, m_list);
- //双击编辑表格
- void COptical_fiber_polishingDlg::OnDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
- {
- LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
- // TODO: 在此添加控件通知处理程序代码
-
- NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
- CRect rc;
-
- m_Row = pNMListView->iItem;//获得选中的行
- m_Col = pNMListView->iSubItem;//获得选中列
-
- if (pNMListView->iSubItem == 0 || pNMListView->iSubItem == 4) //如果选择的是子项;
- {
-
- }
- else
- {
- m_list.GetSubItemRect(m_Row, m_Col, LVIR_LABEL, rc);//获得子项的RECT;
- m_edit.SetParent(&m_list);//转换坐标为列表框中的坐标
- m_edit.MoveWindow(rc);//移动Edit到RECT坐在的位置;
- m_edit.SetWindowText(m_list.GetItemText(m_Row, m_Col));//将该子项中的值放在Edit控件中;
- m_edit.ShowWindow(SW_SHOW);//显示Edit控件;
- m_edit.SetFocus();//设置Edit焦点
- m_edit.ShowCaret();//显示光标
- m_edit.SetSel(-1);//将光标移动到最后
- }
- *pResult = 0;
- }
-
- void COptical_fiber_polishingDlg::OnKillfocusEditList()
- {
- // TODO: 在此添加控件通知处理程序代码
-
- CString str;
- m_edit.GetWindowText(str); //得到用户输入的新的内容
- m_list.SetItemText(m_Row, m_Col, str); //设置编辑框的新内容
- m_edit.ShowWindow(SW_HIDE); //应藏编辑框
- }
- //表添加行
- void COptical_fiber_polishingDlg::OnBnClickedAdd()
- {
- // TODO: 在此添加控件通知处理程序代码
-
-
- // TODO: 在此添加控件通知处理程序代码
- // 在列表视图控件中插入列表项,并设置列表子项文本
- int i = m_list.GetItemCount();
-
- if (i == 0) {
- m_list.InsertItem(0, L"1");
- m_list.SetItemText(0, 1, L"");
- m_list.SetItemText(0, 2, L"");
- m_list.SetItemText(0, 3, L"");
-
- }
- else
- {
- int i2 = i + 1;
- CString str;
- str.Format(L"%d", i2);
- m_list.InsertItem(i, (LPCTSTR)str);
- m_list.SetItemText(i, 1, L"");
- m_list.SetItemText(i, 2, L"");
- m_list.SetItemText(i, 3, L"");
-
- }
- }
-
- //表删除行
- void COptical_fiber_polishingDlg::OnBnClickedDelete()
- {
- // TODO: 在此添加控件通知处理程序代码
- int nItem = m_list.GetSelectionMark();
- if (nItem != -1)
- {
- int result = MessageBox(L"确认删除当前选中行的数据?", L"温馨提示",MB_YESNO | MB_ICONINFORMATION);//弹窗提示
- switch (result) {
- case IDYES:
- {//点击YES按钮的具体实现功能
- m_list.DeleteItem(nItem);
- break;
- }
- case IDNO:
- break;
- }
- }
- else {
- AfxMessageBox(L"请选择要删除的行!");
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。