⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 routeinfodlg.cpp

📁 VC++6.0基于CAN协议的车辆控制
💻 CPP
字号:
// RouteInfoDlg.cpp : implementation file
//

#include "stdafx.h"
#include "PROJECTPMU.h"
#include "RouteInfoDlg.h"
#include "EditRouteInfoDlg.h"
#include "ConfirmRouteInfoDelDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRouteInfoDlg dialog


CRouteInfoDlg::CRouteInfoDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CRouteInfoDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRouteInfoDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CRouteInfoDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRouteInfoDlg)
	DDX_Control(pDX, IDC_LIST2, m_RouteInfoList);
	DDX_Control(pDX, IDC_LIST1, m_TrainCodeList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRouteInfoDlg, CDialog)
	//{{AFX_MSG_MAP(CRouteInfoDlg)
	ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
	ON_BN_CLICKED(IDC_AddButton, OnAddButton)
	ON_BN_CLICKED(IDC_Delete_Button, OnDeleteButton)
	ON_BN_CLICKED(IDC_AlterButton, OnAlterButton)
	ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRouteInfoDlg message handlers

BOOL CRouteInfoDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
		::SendMessage(m_RouteInfoList.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,
	  LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);//点击一整行
		::SendMessage(m_TrainCodeList.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,
	  LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);//点击一整行
	// TODO: Add extra initialization here
	//得到应用程序所在文件夹路径
	CAdoRecordSet pRS;
    if(NULL != GetModuleFileName(NULL,mDir_Path,256))  
    {		
		int n=strlen(mDir_Path);
		for (int i=n; i>=0; i--)
		{
			if   (mDir_Path[i]   ==   '\\')   
			{   
				mDir_Path[i]   =   '\0';   
				break;   
			}   
		}
		strcpy(mMDB_Path,mDir_Path);
		strcat(mMDB_Path,"\\PIS.mdb"); // 数据库路径
	}

	//为列表加网格
	m_TrainCodeList.SetExtendedStyle(m_RouteInfoList.GetExtendedStyle()|LVS_EX_GRIDLINES);
	m_RouteInfoList.SetExtendedStyle(m_RouteInfoList.GetExtendedStyle()|LVS_EX_GRIDLINES); 
	
	//////////为列表控件添加列//////////
    m_TrainCodeList.InsertColumn(0,"TrainCode",LVCFMT_LEFT,80);
	
	//m_RouteInfoList.InsertColumn(0,"TrainCode",LVCFMT_LEFT,80);
    m_RouteInfoList.InsertColumn(1,"CurrentStationEn",LVCFMT_LEFT,150);
    m_RouteInfoList.InsertColumn(2,"CurrentStationCh",LVCFMT_LEFT,150);
    m_RouteInfoList.InsertColumn(3,"NextStationEn",LVCFMT_LEFT,150);
    m_RouteInfoList.InsertColumn(4,"NextStationCh",LVCFMT_LEFT,150);
    m_RouteInfoList.InsertColumn(5,"ArrivalTime",LVCFMT_LEFT,150);
	m_RouteInfoList.InsertColumn(6,"DepartTime",LVCFMT_LEFT,150);
    m_RouteInfoList.InsertColumn(7,"StayTime",LVCFMT_LEFT,120);
    m_RouteInfoList.InsertColumn(8,"DistanceNextStation",LVCFMT_LEFT,200);
	m_RouteInfoList.InsertColumn(9,"ETA",LVCFMT_LEFT,80);
    m_RouteInfoList.InsertColumn(10,"AnnouncementDistanceThreshold",LVCFMT_LEFT,250);
	//调用读取数据库中的信息函数
    ReadDataFromDB();

	m_sTrainCodeSel=m_TrainCodeList.GetItemText(0, 0);
	m_sTrainCodeSel.TrimLeft();
	m_sTrainCodeSel.TrimRight();
	m_list1PosSel = -1;
	m_list2PosSel = -1;

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

//读取车次表内容
void CRouteInfoDlg::ReadDataFromDB()
{//////////读取数据库中的信息添加到列表控件///////////
	if (m_pConnection.ConnectAccess(mMDB_Path,"sri"))
	{
		m_TrainCodeList.DeleteAllItems();  //清空
		int nItem;
		CAdoRecordSet pRS0,pRS1;
		pRS0.SetAdoConnection(&m_pConnection);
		pRS0.Open("SELECT TrainCode FROM RouteList order by id",adCmdText);//按自动编号读取数据
		while(!pRS0.IsEOF())
		{
			pRS0.GetCollect("TrainCode",m_sTrainCode);
            m_sTrainCode.TrimRight();
            nItem=m_TrainCodeList.InsertItem(0xffff,"");
            m_TrainCodeList.SetItem(nItem,0,1,m_sTrainCode,NULL,0,0,0);
			pRS0.MoveNext();
		}
        pRS0.Close();
	}
    m_pConnection.Close();
	ReadRouteInfoFromDB();
}

//读取RouteInfo表内容
void CRouteInfoDlg::ReadRouteInfoFromDB()
{
	m_RouteInfoList.DeleteAllItems();  //清空
	if (m_pConnection.ConnectAccess(mMDB_Path,"sri"))
	{
		CAdoRecordSet pRS0;
		pRS0.SetAdoConnection(&m_pConnection);
		if(pRS0.Open("SELECT CurrentStationEn,CurrentStationCh,NextStationEn,NextStationCh,\
	    	ArrivalTime,DepartTime,StayTime,DistanceNextStation,ETA,AnnouncementDistanceThreshold \
	    	from RouteInfo where (TrainCode='"+m_sTrainCodeSel+"') ") ) 
			//if(pRS0.Open("SELECT distinct CurrentStationEn from RouteInfo where TrainCode='"+m_sTrainCode+"'"))	
		{
			while(!pRS0.IsEOF())
			{
			/*	pRS0.GetCollect("CurrentStationEn",m_sCurrentStationEn);
			MessageBox(m_sCurrentStationEn);
			m_sCurrentStationEn.TrimRight();
			int	nItem=m_RouteInfoList.InsertItem(0xffff,"");
			m_RouteInfoList.SetItem(nItem,0,1,m_sCurrentStationEn,NULL,0,0,0);
				*/
				pRS0.GetCollect("CurrentStationEn",m_sCurrentStationEn);
				pRS0.GetCollect("CurrentStationCh",m_sCurrentStationCh);
				pRS0.GetCollect("NextStationEn",m_sNextStationEn);
				pRS0.GetCollect("NextStationCh",m_sNextStationCh);
				pRS0.GetCollect("ArrivalTime",m_sArrivalTime);
				pRS0.GetCollect("DepartTime",m_sDepartTime);
				pRS0.GetCollect("StayTime",m_sStayTime);
				pRS0.GetCollect("DistanceNextStation",m_sDistanceNextStation);
				pRS0.GetCollect("ETA",m_sETA);
				pRS0.GetCollect("AnnouncementDistanceThreshold",m_sAnnouncementDistanceThreshold);
				pRS0.MoveNext();
				m_sCurrentStationEn.TrimRight();
				m_sCurrentStationCh.TrimRight();
				m_sNextStationEn.TrimRight();
				m_sNextStationCh.TrimRight();
				m_sArrivalTime.TrimRight();
				m_sDepartTime.TrimRight();
				m_sStayTime.TrimRight();
				m_sDistanceNextStation.TrimRight();
				m_sETA.TrimRight();
				m_sAnnouncementDistanceThreshold.TrimRight();
				int nItem=m_RouteInfoList.InsertItem(0xffff,"");
				m_RouteInfoList.SetItem(nItem,0,1,m_sCurrentStationEn,NULL,0,0,0);
				m_RouteInfoList.SetItem(nItem,1,1, m_sCurrentStationCh,NULL,0,0,0);
				m_RouteInfoList.SetItem(nItem,2,1, m_sNextStationEn,NULL,0,0,0);
				m_RouteInfoList.SetItem(nItem,3,1, m_sNextStationCh,NULL,0,0,0);
				m_RouteInfoList.SetItem(nItem,4,1, m_sArrivalTime,NULL,0,0,0);
				m_RouteInfoList.SetItem(nItem,5,1, m_sDepartTime,NULL,0,0,0);
				m_RouteInfoList.SetItem(nItem,6,1, m_sStayTime,NULL,0,0,0);
				m_RouteInfoList.SetItem(nItem,7,1, m_sDistanceNextStation,NULL,0,0,0);
				m_RouteInfoList.SetItem(nItem,8,1, m_sETA,NULL,0,0,0);
				m_RouteInfoList.SetItem(nItem,9,1, m_sAnnouncementDistanceThreshold,NULL,0,0,0);
			}
		}
		pRS0.Close();
	}
	m_pConnection.Close();
	
}
void CRouteInfoDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	POSITION pos;
	pos = m_TrainCodeList.GetFirstSelectedItemPosition();
	// 得到项目索引
	IndexInFieldList = m_TrainCodeList.GetNextSelectedItem(pos);
	m_list1PosSel = IndexInFieldList;
    if(m_list1PosSel > -1)  //如果选中一个车次
	{
		//得到车次
		m_sTrainCodeSel=m_TrainCodeList.GetItemText(IndexInFieldList, 0);
		m_sTrainCodeSel.TrimLeft();
		m_sTrainCodeSel.TrimRight();
		// MessageBox(m_sTrainCode);
		ReadRouteInfoFromDB();
	}
	
	*pResult = 0;
}

void CRouteInfoDlg::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	POSITION pos;
	pos = m_RouteInfoList.GetFirstSelectedItemPosition();
	// 得到项目索引
	IndexInFieldList = m_RouteInfoList.GetNextSelectedItem(pos);
    m_list2PosSel = IndexInFieldList;

	if( m_list2PosSel > -1 )  //如果选中一行
	{		
		m_sCurrentStationEn=m_RouteInfoList.GetItemText(IndexInFieldList, 0);
		m_sCurrentStationCh=m_RouteInfoList.GetItemText(IndexInFieldList, 1);
		m_sNextStationEn=m_RouteInfoList.GetItemText(IndexInFieldList, 2);
		m_sNextStationCh=m_RouteInfoList.GetItemText(IndexInFieldList, 3);
		m_sArrivalTime=m_RouteInfoList.GetItemText(IndexInFieldList, 4);
		m_sDepartTime=m_RouteInfoList.GetItemText(IndexInFieldList, 5);
		m_sStayTime=m_RouteInfoList.GetItemText(IndexInFieldList, 6);
		m_sDistanceNextStation=m_RouteInfoList.GetItemText(IndexInFieldList, 7);
		m_sETA=m_RouteInfoList.GetItemText(IndexInFieldList, 8);
		m_sAnnouncementDistanceThreshold=m_RouteInfoList.GetItemText(IndexInFieldList, 9);
		
		m_sCurrentStationEn.TrimRight();
		m_sCurrentStationCh.TrimRight();
		m_sNextStationEn.TrimRight();
		m_sNextStationCh.TrimRight();
		m_sArrivalTime.TrimRight();
		m_sDepartTime.TrimRight();
		m_sStayTime.TrimRight();
		m_sDistanceNextStation.TrimRight();
		m_sETA.TrimRight();
		m_sAnnouncementDistanceThreshold.TrimRight();
	}
	// MessageBox(m_sTrainCode);

	*pResult = 0;
}

//添加一个站信息
void CRouteInfoDlg::OnAddButton() 
{
	// TODO: Add your control notification handler code here
	if (m_sTrainCodeSel == "")
	{
	    MessageBox("请先选择一个车次");
	}
	else
	{
		CEditRouteInfoDlg dlg;
		dlg.m_bADD = true;//判断添加还是修改数据的条件,true是添加,false是修改
		dlg.TrainCode=m_sTrainCodeSel;//添加数据后以车次条件为依据显示RouteInfo表中的内容
		if(dlg.DoModal() == IDOK)
		{
			// MessageBox("ok");
			m_RouteInfoList.DeleteAllItems();
			//m_sTrainCode=dlg.TrainCode;
			ReadDataFromDB();
			ReadRouteInfoFromDB();
		}
	}
}

//删除一个站的信息
void CRouteInfoDlg::OnDeleteButton() 
{
	// TODO: Add your control notification handler code here
if( m_list2PosSel > -1 )
	{
		CConfirmRouteInfoDelDlg dlg;
	    dlg.TrainCode=m_sTrainCodeSel;//修改数据后以车次条件为依据显示RouteInfo表中的内容
		dlg.CurrentStationCh=m_sCurrentStationCh;
		dlg.CurrentStationEn=m_sCurrentStationEn;
		dlg.NextStationEn=m_sNextStationEn;
		dlg.NextStationCh=m_sNextStationCh;
		dlg.ArrivalTime=m_sArrivalTime;
		dlg.DepartTime=m_sDepartTime;
		dlg.StayTime=m_sStayTime;
		dlg.DistanceNextStation=m_sDistanceNextStation;
		dlg.ETA=m_sETA;
		dlg.Announcement=m_sAnnouncementDistanceThreshold;
	//	 MessageBox(m_sCurrentStationEn);
	    if(dlg.DoModal() == IDOK)
		{
			// MessageBox("ok");
			m_RouteInfoList.DeleteAllItems();
		//	m_pConnection.Close();
			ReadDataFromDB();
		}
	}
	else
	{
        AfxMessageBox("请选择要修改的信息");
	}
	/*	CString str1,str2,sqldelete;
	str1=m_sCurrentStationEn;
	str2=m_sCurrentStationCh;
	//AfxMessageBox(m_sCurrentStationEn);
	str1.TrimLeft();
    str1.TrimRight();
    str2.TrimLeft();
    str2.TrimRight();
	
	if(m_pConnection.ConnectAccess(mMDB_Path,"sri"))
	{
		// 更新上一个站点的NextStationEn,NextStationCh内容
		CString SQLstr;
		SQLstr.Format("Update RouteInfo set NextStationEn='%s',NextStationCh='%s' \
			where TrainCode='%s' and NextStationEn='%s'and NextStationCh='%s' " \
			,m_sNextStationEn,m_sNextStationCh,m_sTrainCodeSel,m_sCurrentStationEn,m_sCurrentStationCh);
		m_pConnection.Execute(SQLstr);

		//删除
		sqldelete.Format("delete from RouteInfo where (CurrentStationEn='%s') and (CurrentStationCh='%s')",str1,str2);
		AfxMessageBox(sqldelete);
		m_pConnection.Execute(sqldelete);

		m_RouteInfoList.DeleteAllItems();
	}
	m_pConnection.Close();

    ReadDataFromDB();*/
}


//修改一个站信息
void CRouteInfoDlg::OnAlterButton() 
{
	// TODO: Add your control notification handler code here
	if (m_list2PosSel>-1)
	{
		CEditRouteInfoDlg dlg;
		dlg.m_bADD = false;//判断添加还是修改数据的条件,true是添加,false是修改
		dlg.TrainCode=m_sTrainCodeSel;//修改数据后以车次条件为依据显示RouteInfo表中的内容
		dlg.CurrentStationCh=m_sCurrentStationCh;
		dlg.CurrentStationEn=m_sCurrentStationEn;
		dlg.NextStationEn=m_sNextStationEn;
		dlg.NextStationCh=m_sNextStationCh;
		dlg.ArrivalTime=m_sArrivalTime;
		dlg.DepartTime=m_sDepartTime;
		dlg.StayTime=m_sStayTime;
		dlg.DistanceNextStation=m_sDistanceNextStation;
		dlg.ETA=m_sETA;
		dlg.Announcement=m_sAnnouncementDistanceThreshold;
		//重新读取数据库中的信息添加到列表控件
		if(dlg.DoModal() == IDOK)
		{
			// MessageBox("ok");
			m_RouteInfoList.DeleteAllItems();//清空
			ReadDataFromDB();
		}
	}
	else
	{
        AfxMessageBox("请选择要修改的信息");
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -