7.6.4 单个站点维护的实现(1)
单个站点的维护包括删除单个站点和修改单个站点的信息。下面先介绍单个站点删除的实现。添加一个对话框资源,将ID改为IDD_DELSINGLESTATION,添加如图7-23所示的控件。
|
| 图7-23 【删除单个站点】界面 |
在该对话框空白区域双击,进入添加类对话框。为对话框资源创建一个新类DelSingleStation,通过类向导为控件关联相关的变量,并给对话框添加WM_INITDIALOG初始化消息。该消息函数中的代码如下:
代码位置:见光盘中本章源代码的DelSingleStation类。
- 1 BOOL DelSingleStation::OnInitDialog()
- 2 {
- 3 CDialog::OnInitDialog();
- 4 int i=0; //定义整型变量
- 5 CString str; //定义字符串变量
- 6 CBusSet m_busset; //定义记录集对象
- 7 if(!m_busset.IsOpen())
- 8 m_busset.Open();
- 9 m_busset.MoveFirst(); //移动到首条记录
- 10 while(!m_busset.IsEOF()) //遍历记录集
- 11 {
- 12 m_roadway.InsertString(i++,m_busset.m_ID_BUS); //插入数据
- 13 m_busset.MoveNext();
- 14 }
- 15 m_roadway.SetCurSel(0); //设置选中项
- 16 m_roadway.GetLBText(0,str);
- 17 m_list.InsertColumn(0,"车次"); //插入数据到列表控件
- 18 m_list.InsertColumn(1,"站点");
- 19 RECT rect;
- 20 m_list.GetWindowRect(&rect); //获取控件的区域
- 21 int wid=rect.right-rect.left;
- 22 m_list.SetColumnWidth(0,wid/3);
- 23 m_list.SetColumnWidth(1,2*wid/3);
- 24 m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT); //设置列表控件的风格
- 25 i=0;
- 26 CStationSet m_StationSet; //定义记录集对象
- 27 if(!m_StationSet.IsOpen())
- 28 m_StationSet.Open();
- 29 m_StationSet.MoveFirst(); //移动到首条记录
- 30 while(!m_StationSet.IsEOF())
- 31 {
- 32 if(m_StationSet.m_ID==str) //查找匹配数据
- 33 {
- 34 m_list.InsertItem(i,str); //插入数据到列表中
- 35 m_list.SetItemText(i++,1,m_StationSet.m_STATION);
- 36
- 37 }
- 38 m_StationSet.MoveNext(); //移动到下一条记录
- 39 }
- 40 return TRUE;
- 41 }
第6~14行代码将车次的信息插入到下拉列表框中。
第17~24行代码设置列表控件的信息。
第26~39行代码在列表控件中输出一些初始信息。
上述代码完成初始化工作,首先将线路的信息插入到下拉列表框中,然后对列表控件进行设置,并根据列表框中的车次读取出该车次经过的所有站点,填充到列表控件中。给【删除】按钮添加消息响应函数,对应的代码如下:
代码位置:见光盘中本章源代码的DelSingleStation类。
- 1 void DelSingleStation::OnDel()
- 2 {
- 3 CStationSet m_StationSet; //定义记录集对象
- 4 CString str; //定义字符串变量
- 5 m_roadway.GetLBText(m_roadway.GetCurSel(),str); //获取文本
- 6 if(!m_StationSet.IsOpen()) //打开记录集
- 7 m_StationSet.Open();
- 8 m_StationSet.MoveFirst(); //移动到首条记录
- 9 while(!m_StationSet.IsEOF()) //遍历记录集
- 10 {
- 11 if(m_StationSet.m_ID==str&&m_StationSet.m_STATION==m_str)
- 12 {
- 13 m_StationSet.Delete(); //删除数据
- 14 AfxMessageBox("删除记录成功!");
- 15 CMapPublicApp *app=(CMapPublicApp *)AfxGetApp(); //获取应用类指针
- 16 CAction_Time_Set *m_ActionSet;
- 17 CDatabase *db;
- 18 db=new CDatabase;
- 19 m_ActionSet=new CAction_Time_Set(db);
- 20 CString strSql;
- 21 CTime time=CTime::GetCurrentTime(); //获取当前的时间
- 22 CString strtime=time.Format("%Y-%m-%d %H:%M:%S"); //将时间格式化
- 23 m_ActionSet->Open();
- 24 CString straction="删除一个站点";
- 25 strSql="insert into Action_Log(USER_ID,ACTION,COME_LEAVE_TIME)
- 26 values('" +app->m_User_ID+"','"+straction+"','"+strtime+"')";
- 27 db->ExecuteSQL(strSql); //执行SQL语句
- 28 m_ActionSet->Requery(); //刷新记录集
- 29 m_ActionSet->Close();
- 30 break;
- 31 }
- 32 m_StationSet.MoveNext();
- 33 }
- 34 Refresh();
- 35 }