7.5.4 车站查询的实现(1)
车站的查询同车次的查询是类似的,它也是作为Tab的一个属性页。添加一个对话框资源,将ID改为IDD_ROADWAY,修改对话框的属性。在对话框上添加如图7-18所示的控件。
|
| 图7-18 车站查询界面 |
在对话框界面上空白区域双击,进入添加类界面。为对话框创建一个新类CStaionWayView。通过类向导更改控件的ID和为控件添加相应的变量,添加WM_INITDIALOG消息响应函数OnInitDialog(),该函数中代码如下:
代码位置:见光盘中本章源代码的CStaionWayView类。
- 1 BOOL CStaionWayView::OnInitDialog()
- 2 {
- 3 CPropertyPage::OnInitDialog();
- 4 DWORD style=m_list.GetExtendedStyle(); //获取列表控件的风格
- 5 m_list.SetExtendedStyle(style|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
- 6 m_list.InsertColumn(0,"车次",LVCFMT_LEFT,50); //向列表控件中插入列
- 7 m_list.InsertColumn(1,"起始站",LVCFMT_LEFT,70);
- 8 m_list.InsertColumn(2,"终点站",LVCFMT_LEFT,70);
- 9 m_list.InsertColumn(3,"发车时间",LVCFMT_LEFT,70);
- 10 m_list.InsertColumn(4,"停止时间",LVCFMT_LEFT,70);
- 11 return TRUE;
- 12 }
第3~10行代码为列表控件初始化,设置列表控件的风格、列的宽度及标题。
上述代码用列表控件的初始化函数SetExtendedStyle()设置列表控件的风格,而函数InsertColumn()实现设置列表控件的列标题。给【查询】按钮添加消息响应函数,该消息函数中具体代码如下:
代码位置:见光盘中本章源代码的CStaionWayView类。
- 1 void CStaionWayView::OnButton1()
- 2 {
- 3 UpdateData(true); //保存数据
- 4 int i=0; //定义整型变量
- 5 bool flag=false; //定义布尔型变量
- 6 CFont m_font; //定义字体
- 7 m_list.SetBkColor(RGB(247,247,255)); //设置列表控件背景色
- 8 m_list.SetTextColor(RGB(0,0,255)); //设置列表控件文字色
- 9 CString str,str1; //定义字符串变量
- 10 m_list.DeleteAllItems(); //删除列表控件所有项
- 11 CBusSet m_pBusSet; //定义记录集变量
- 12 CStationSet m_pStationSet; //定义记录集变量
- 13 m_pBusSet.Open(); //打开记录集
- 14 m_pStationSet.Open(); //打开记录集
- 15 m_pStationSet.MoveFirst(); //移动到首条记录
- 16 while(!m_pStationSet.IsEOF()) //遍历记录集
- 17 {
- 18 if(m_station==m_pStationSet.m_STATION) //查找匹配数据
- 19 {
- 20 m_pBusSet.MoveFirst(); //移动到首条记录
- 21 while(!m_pBusSet.IsEOF()) //遍历记录集
- 22 {
- 23 if(m_pStationSet.m_ID==m_pBusSet.m_ID_BUS) //查找匹配数据
- 24 {
- 25 m_list.InsertItem(i,m_pBusSet.m_ID_BUS); //插入数据到列表中
- 26 m_list.SetItemText(i,1,m_pBusSet.m_BEGIN);
- 27 m_list.SetItemText(i,2,m_pBusSet.m_END);
- 28 m_list.SetItemText(i,3,m_pBusSet.m_AMTIME);
- 29 m_list.SetItemText(i,4,m_pBusSet.m_PMTIME);
- 30 flag=true; //改变标记
- 31 i++;
- 32 break;
- 33 }
- 34 else
- 35 m_pBusSet.MoveNext(); //移动到下一条记录
- 36 }
- 37 }
- 38 m_pStationSet.MoveNext(); //移动到下一条记录
- 39 }
- 40 m_pBusSet.Close();
- 41 m_pStationSet.Close(); //关闭记录集
- 42 CMainFrame *pFrame=(CMainFrame *)AfxGetMainWnd(); //获取主框架指针
- 43 CMapPublicView *pView=(CMapPublicView *)(pFrame->m_wndSplitter.GetPane
- (0,0));
- 44 pView->FindArea(m_station); //显示查询站点
- 45 if(!flag) //如果没有找到数据
- 46 MessageBox("输入站点不存在!");
- 47 }