区分管理员和收银员登录:
和之前的验证账号密码是一样的,就是在数据库中查询,这个登陆的用户名对应的职位
如果职位是master,就跳出管理员界面,如果是cashier就跳出收银员页面
vector<vector<string>> vRet = mysql.Select(que);
if (vRet[0][0]=="master")
{
MainWd mainWd;
mainWd.Create(NULL, _T("MainWind"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
mainWd.CenterWindow();
mainWd.ShowModal();
}
else
{
CashierWnd cashierWnd;
cashierWnd.Create(NULL, _T("CashierWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
cashierWnd.CenterWindow();
cashierWnd.ShowModal();
}
combo控件使用:
一路兜兜转转,终于是知道为什么添加了listlableElement之后打开报错line:319
用vs code添加和ultraEdit添加之后,用DuiLib自带的UI设计器打开都是白板,说明xml文件有些被清空
最终,摸索出来,使用记事本大佬编辑器,修改之后点保存,完美无缺
注意:
- 添加text之后,如果在使用UI设计器打开,listlableElement中的text会被清空
- 运行报错319很大可能是xml中语法不对

List控件使用:
- 创建list控件,建议在xml文件中使用语句创建,使用设计器可能会319报错
- 调整headerItem中的text和宽度

完善查询按钮的响应,暂时还没加上查询的combo控件
- 构建基本的sql查询语句
- 连接数据库进行mysql_query查询,结果保存在二维数组中
- 拿到list控件,将数据分item插入到list控件中
CListUI* pListUI = (CListUI*)m_PaintManager.FindControl(_T("ListEmployeeInfo"));
pListUI->RemoveAll();
for (size_t i = 0; i < vRet.size(); ++i)
{
vector<string>& strItem = vRet[i];
CListTextElementUI* pData = new CListTextElementUI;
pData->SetAttribute(_T("align"), _T("center"));
pListUI->Add(pData);
//需要的是PLCSTR类型的
pData->SetText(0, strItem[1].c_str());
pData->SetText(1, strItem[2].c_str());
pData->SetText(2, strItem[3].c_str());
pData->SetText(3, strItem[5].c_str());
pData->SetText(4, strItem[6].c_str());
pData->SetText(5, strItem[7].c_str());
}
}

插入按钮也完成了响应,但是暂时没有解决list中字体不居中
- 从编辑框中获取要插入的员工信息
- 构建sql语句,进行插入
- 将结果显示在list控件中
- 方法和上面查询的类似
//从界面中获取员工的信息
CDuiString strName=((CEditUI*)m_PaintManager.FindControl(_T("username")))->GetText();
CDuiString strGender = ((CComboBoxUI*)m_PaintManager.FindControl(_T("comboGender")))->GetText();
CDuiString strBirthday = ((CEditUI*)m_PaintManager.FindControl(_T("userbirthday")))->GetText();
CDuiString strPosition = ((CComboBoxUI*)m_PaintManager.FindControl(_T("comboPosition")))->GetText();
CDuiString strTel = ((CEditUI*)m_PaintManager.FindControl(_T("usertel")))->GetText();
CDuiString strSal = ((CEditUI*)m_PaintManager.FindControl(_T("usersal")))->GetText();
插入的ID,从list控件的行号获取,转为10进制的整数
char sz_count[32] = { 0 };
_itoa(pListUI->GetCount(), sz_count, 10);
pListUI->GetCount();
string strSQL = "insert into employee values(";
strSQL += sz_count;
strSQL += ",'";
strSQL += StringFromLPCTSTR(strName);
strSQL += "','";
strSQL += StringFromLPCTSTR(strGender);
strSQL += "','";
strSQL += StringFromLPCTSTR(strBirthday);
//初始密码123
strSQL += "','123";
strSQL += "','";
strSQL += StringFromLPCTSTR(strPosition);
strSQL += "','";
strSQL += StringFromLPCTSTR(strTel);
strSQL += "','";
strSQL += StringFromLPCTSTR(strSal);
strSQL += "');";
//将员工信息插入到list中
CListUI* pListUI = (CListUI*)m_PaintManager.FindControl(_T("ListEmployeeInfo"));
CListTextElementUI* pItem = new CListTextElementUI;
pListUI->Add(pItem);
pItem->SetText(0, strName);
pItem->SetText(1, strGender);
pItem->SetText(2, strBirthday);
pItem->SetText(3, strPosition);
pItem->SetText(4, strTel);
pItem->SetText(5, strSal);
获取编辑框和comno控件的员工信息

8.20更新,字体居中已解决
- 插入前的数据库
- 插入后的list控件
- 插入后的数据库



本文详细介绍了如何在系统中区分管理员与收银员登录,实现不同角色的界面跳转。同时,深入探讨了combo控件和List控件的使用技巧,包括XML文件编辑、错误排查、字体居中解决方案及数据绑定等。
755

被折叠的 条评论
为什么被折叠?



