MFC中ListBox实现商品的入库和出库
来源:互联网 发布:网络女主播是什么 编辑:程序博客网 时间:2024/04/30 08:48
在开发实例中,经常会用到商品的入库和出库功能
下面让我们来完成这简单功能的实现
首先,我们为listbox设置Selection属性为Extended 。该属性可以设置为用Shift+鼠标左键选择多个条目。
下面是界面图形。
然后并为各个空间关联变量。
“入库”按钮的BN_CLICKED消息响应函数如下:
void CMFCApplication7Dlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if (m_unit.IsEmpty()){
AfxMessageBox(_T("装备名称不能为空"));
return;
}
m_ctlLis1.AddString(m_unit);
m_unit = "";
UpdateData(FALSE);
}
借出,归还的响应函数如下:
void CMFCApplication7Dlg::OnBnClickedButton1()
{
// TODO: 借出
int nCount = m_ctlLis1.GetSelCount();
if (!nCount){
return;
}
int *SelItems = new int[nCount];
m_ctlLis1.GetSelItems(nCount, SelItems);
for (int i = 0; i < nCount; ++i){
CString strText;
int iIndex;
m_ctlLis1.GetText(SelItems[i], strText);
DWORD dwData = m_ctlList2.GetItemData(SelItems[i]);
iIndex = m_ctlList2.AddString(strText);
m_ctlList2.SetItemData(iIndex, dwData);
}
for (int i = nCount - 1; i >= 0; --i){
m_ctlLis1.DeleteString(SelItems[i]);
}
delete[]SelItems;
m_ctlLis1.SetSel(-1, false);
if (m_ctlLis1.GetSelCount()){
m_ctlOut.EnableWindow(TRUE);
}
else{
m_ctlOut.EnableWindow(FALSE);
}
}
void CMFCApplication7Dlg::OnBnClickedButton2()
{
// TODO: 归还
int nCount = m_ctlList2.GetSelCount();
if (!nCount)
return;
int *SelItems = new int[nCount];
m_ctlList2.GetSelItems(nCount, SelItems);
for (int i = 0; i < nCount; i++){
CString strText;
int iIndex;
m_ctlList2.GetText(SelItems[i], strText);
DWORD dwdata = m_ctlList2.GetItemData(SelItems[i]);
iIndex = m_ctlLis1.AddString(strText);
m_ctlLis1.SetItemData(iIndex, dwdata);
}
for (int i = nCount - 1; i >= 0; --i){
m_ctlList2.DeleteString(SelItems[i]);
delete[]SelItems;
m_ctlList2.SetSel(-1, false);
}
if (m_ctlLis1.GetSelCount()){
m_ctlIn.EnableWindow(TRUE);
}
else{
m_ctlIn.EnableWindow(FALSE);
}
if (m_ctlList2.GetSelCount()){
m_ctlOut.EnableWindow(TRUE);
}
else{
m_ctlOut.EnableWindow(FALSE);
}
}
下面代码是根据选中状态确定下呀按钮的有效状态。
只有在列表框中有条目被选中的时候,按钮才会生效。
使用classWizard为两个列表框添加LBN_SELCHANGE消息响应函数。
代码如下
void CMFCApplication7Dlg::OnLbnSelchangeList1()
{
// TODO: m_ctllist1的选中响应
if (m_ctlLis1.GetSelCount()){
m_ctlIn.EnableWindow(TRUE);
}
else{
m_ctlIn.EnableWindow(FALSE);
}
}
void CMFCApplication7Dlg::OnLbnSelchangeList2()
{
// TODO: m_ctllist2的选中响应
if (m_ctlList2.GetSelCount()){
m_ctlOut.EnableWindow(TRUE);
}
else{
m_ctlOut.EnableWindow(FALSE);
}
}
以及实现双击列表框中列表项实现转移功能
void CMFCApplication7Dlg::OnLbnDblclkList1()
{
// TODO: 在此添加控件通知处理程序代码
OnBnClickedButton1();
}
void CMFCApplication7Dlg::OnLbnDblclkList2()
{
// TODO: 在此添加控件通知处理程序代码
OnBnClickedButton2();
}
要点分析:
MFC中ListBox提供了列表操作相关的函数,常用的简单函数如下(ps:了解更多上MSDN去查看该类的具体接口)
1.添加,删除
Addstring(LPCTSTR lpsz);
DeleteString(UINT nIndex);
int InsertString(int nIndex , LPCTSTR lpsz);void ResetString();
2.获取,设定当前选中行
int Getsel();
intSetSel(int nIndex);
如果指明了选中多行,就需要先调用GetSelCount得到选中的个数,然后通过GetSelItems(int nMax , LPINT grInt);函数得到选中的所有行。
然后调用GetLBText(int nIndex ,LPTSTR lpsz)得到列表框中选中的字符串。
3.查找列表框中的行
int FindString(int nStartAfter , LPCTSTR lpsz);在当前所有行中查找字符串
int SelectString(int nStartAfter , LPATSTR lpsz);选中包含着指定字符串的行。
冰冻三尺非一日之寒,让我们每日进步一点点。
- MFC中ListBox实现商品的入库和出库
- Java:实现商品的查找、添加、出库、入库
- php入库和出库
- 请问 如果 我想实现出库和入库和下面四个在一行显示怎么改?
- 关于出库/入库
- JAVA控制Oracle中BLOB、CLOB入库、出库
- shopex sdb_goods和sdb_products的区别 商品和货品的区别 商品类型 商品规格 商品属性 商品入库 之间的关系和sql语句 上图
- MFC中ListBox控件的使用
- MFC中Listbox控件的简单使用
- MFC中Listbox控件的简单使用
- MFC中ListBox控件的使用
- MFC中Listbox控件的使用
- MFC中Listbox控件的简单使用
- MFC中ListBox控件的简单使用
- MFC Grid control 2.26打印出/入库单的实现
- 入库单出库单能否实现仓库只有审核权无反审核权
- MFC 静态变量的问题以及LISTBOX在别的类中写入LISTBOX的问题
- API实现批次序列号的销售出库
- 关闭程序
- 鼠标放上改变Button的大小
- Bootloader概述
- 【UML】四种关系
- 第十一周项目一(1)
- MFC中ListBox实现商品的入库和出库
- Uboot启动过程详解
- HDU 3126 Nova [2009 Asia Wuhan Regional Contest Online]
- C++动态分配数组
- U-BOOT的目录结构
- poj2082 stack
- Android 自定义菜单示例
- 第十一周项目一(2)
- linux下 WMB通过ODBC连接数据库