酒店点餐系统开发详解(六)

酒店点餐系统开发详解(六)

——疑难解决

在本系统的详细设计过程中遇到了很多的麻烦,经过分析、思考和网上搜索等方式将所有问题均给一一化解了,现与大家分享以共勉。

1CDataGrid的使用

之所以使用CDataGrid完全是为了偷懒,不过它却让我差点崩溃,因为它并没有想象中的那么方便,关键是网上或书上关于它的资料都少得可怜。幸运的是本系统对其要求不高,因而被我巧妙地化解了。

我看中CDataGrid在使用时可以根据所查询属性的不同而自动更换表中的列名,因为本系统涉及不同的查询条件返回的是不同的属性列(列名称不同)。

1)得到某单元格值

//获取所选项信息

VARIANT index;

    CColumns columns;

    CColumn column;

    index.vt = VT_INT;

    

    columns = grid.GetColumns();  //得到当前选中行的列集

    long nCount = columns.GetCount(); //列数

index.lVal = 0; //dishid所在位置

    column = columns.GetItem(index);//顺序得到单元格的值

    CString dishid = column.GetText();

    index.lVal = 2; //cookid所在位置

    column = columns.GetItem(index);

    CString cookid = column.GetText();

2)在使用中我发现当单击CDataGrid控件的某一行然后用CDataGrid table.GetRow()获取所选行时,并不能得到正确的行号,然而双击所选行时能够得到正确的行号,所以我采取单击变双击的方式解决了这个问题。

添加单击CDataGrid控件消息ON_EVENT(CClientTerminalDlg, IDC_MENU_DATAGRID, -600 /* Click */, OnClickMenuDatagrid, VTS_NONE)和双击CDataGrid控件消息ON_EVENT(CClientTerminalDlg, IDC_MENU_DATAGRID, -601 /* DblClick */, OnDblClickMenuDatagrid, VTS_NONE),函数实现如下:

//需双击才能获取到所选行号,显示图片

void CClientTerminalDlg::OnDblClickMenuDatagrid() 

{

DisplayDishPicture(m_MenuDataGrid); //显示图片

}

//在单击事件中模拟双击事件,以实现图片的正确更新

void CClientTerminalDlg::OnClickMenuDatagrid() 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值