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

📄 dianlandlg.cpp

📁 VC做的矢量画图程序!
💻 CPP
字号:
// DianlanDlg.cpp : implementation file
//

#include "stdafx.h"
#include "draw.h"
#include "DianlanDlg.h"
#include "ModifyDlg3.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

 
 extern void  GetTimeFromStr(CString strTm, CTime &tm);
/////////////////////////////////////////////////////////////////////////////
// CDianlanDlg dialog


CDianlanDlg::CDianlanDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDianlanDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDianlanDlg)
	m_Bianhao = CString(GetBianhao());
	m_Bianyaqi = _T("");
	m_Busheshijian = CTime::GetCurrentTime();
	m_Yongtu = _T("");
	m_Guige = _T("");
	m_ID=_T("");
	m_SelNo=_T("");
	//}}AFX_DATA_INIT
}

CDianlanDlg::CDianlanDlg(CString LINENO,CWnd* pParent /*=NULL*/)
	: CDialog(CDianlanDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDianlanDlg)
	m_ID.Format("%s",LINENO);
	m_Bianhao = GetBianhao();
	m_Bianyaqi = _T("");
	m_Busheshijian = CTime::GetCurrentTime();
	m_Yongtu = _T("");
	m_Guige = _T("");
	m_SelNo=_T("");
    //	AfxMessageBox(m_AutoBianhao);
	//}}AFX_DATA_INIT
}


void CDianlanDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDianlanDlg)
	DDX_Control(pDX, IDC_LIST, m_List);
	DDX_Control(pDX, IDC_CAILIAO, m_Cailiao);
	DDX_Control(pDX, IDC_LEIXING, m_Leixing);
	DDX_Text(pDX, IDC_BIANHAO, m_Bianhao);
	DDX_Text(pDX, IDC_BIANYAQI, m_Bianyaqi);
	DDX_DateTimeCtrl(pDX, IDC_DATETIME, m_Busheshijian);
	DDX_Text(pDX, IDC_YONGTU, m_Yongtu);
	DDX_Text(pDX, IDC_GUIGE, m_Guige);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDianlanDlg, CDialog)
	//{{AFX_MSG_MAP(CDianlanDlg)
		// NOTE: the ClassWizard will add message map macros here
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST, OnItemchangedList)
	ON_BN_CLICKED(IDC_MODIFY,OnModify)
	ON_BN_CLICKED(IDC_ADD,OnAdd)
	ON_BN_CLICKED(IDC_DELETE,OnDel)
	ON_BN_CLICKED(IDC_REFRESH,OnRefresh)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDianlanDlg message handlers
BOOL CDianlanDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//设置窗口标题
//	SetWindowText(m_ID+"号电力管线的电缆信息");
	
    //设置列表头
    m_List.InsertColumn(0, "电缆编号", LVCFMT_LEFT, 80);
	m_List.InsertColumn(1, "类型", LVCFMT_LEFT, 80);
	m_List.InsertColumn(2, "规格", LVCFMT_LEFT, 110);
	m_List.InsertColumn(3, "材料", LVCFMT_LEFT, 60);
	m_List.InsertColumn(4, "所属变压器", LVCFMT_LEFT, 90);
	m_List.InsertColumn(5, "布设时间", LVCFMT_LEFT, 100);
	m_List.InsertColumn(6, "用途", LVCFMT_LEFT, 380);
	
	
		
	// 设置列表控件扩展样式
	
	DWORD dwStyle;
	dwStyle=::GetWindowLong(m_List.m_hWnd,GWL_STYLE);
	dwStyle |=LVS_REPORT|LVS_SHOWSELALWAYS|LVS_EDITLABELS;
	::SetWindowLong(m_List.m_hWnd,GWL_STYLE,dwStyle);
    dwStyle=m_List.GetExtendedStyle();
	dwStyle |=LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT;
	m_List.SetExtendedStyle(dwStyle);
	m_List.SetBkColor(RGB(0XFF,0XFF,0XE0));
	m_List.SetTextBkColor(RGB(0XFF,0XFF,0XE0));

	//给下拉框输入初始字符串
	m_Leixing.AddString("高压");
	m_Leixing.AddString("低压");
	m_Leixing.AddString("低压联络");
    m_Leixing.AddString("");

    m_Cailiao.AddString("VV");
	m_Cailiao.AddString("VLV");
	m_Cailiao.AddString("");

    SetDlgItemText(IDC_BIANHAO,m_Bianhao);
    //显示列表数据
	ShowData();  
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
 
}

void CDianlanDlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	// TODO: Add your control notification handler code here
	if(pNMListView->uNewState&LVIS_SELECTED)
	{
		char pContent[800] ;
        CString str;
		int iCurrent = pNMListView->iItem;
		m_List.GetItemText(iCurrent,0,pContent,50);
		m_Bianhao.Format("%s", pContent);
		m_SelNo.Format("%s", pContent);
		//设置类型下拉框的选项
		m_List.GetItemText(iCurrent,1,pContent,50);
		str.Format("%s",pContent);
		if(str.Compare("高压")==0)
			m_Leixing.SetCurSel(0);
		else if(str.Compare("低压")==0)
			m_Leixing.SetCurSel(1);
		else if(str.Compare("低压联络")==0)
			m_Leixing.SetCurSel(2);
		else 
			m_Leixing.SetCurSel(3);
		
		m_List.GetItemText(iCurrent,2,pContent,50);
        m_Guige.Format("%s", pContent);
		//设置材料下拉框的选项
		m_List.GetItemText(iCurrent,3,pContent,50);
		str.Format("%s",pContent);
		if(str.Compare("VV")==0)
			m_Cailiao.SetCurSel(0);
		else if(str.Compare("VLV")==0)
			m_Cailiao.SetCurSel(1);
		else 
			m_Cailiao.SetCurSel(2);
		
		m_List.GetItemText(iCurrent,4,pContent,50);
		m_Bianyaqi = CString(pContent);
		
		m_List.GetItemText(iCurrent,5,pContent,50);
		GetTimeFromStr(pContent,m_Busheshijian);
	    
		m_List.GetItemText(iCurrent,6,pContent,200);
		m_Yongtu = CString(pContent);
		
		UpdateData(FALSE);
	}

	
	*pResult = 0;
}


void CDianlanDlg::OnModify()
{
	if(SelectValid()==false)
	    return;
	
	short Leixing;
	short Cailiao;
	
	UpdateData(TRUE);

	if(m_Leixing.GetCurSel()!=CB_ERR)
	{
		switch(m_Leixing.GetCurSel())
		{
	    	case 0: Leixing=1;break;
            case 1: Leixing=2;break;
			case 2: Leixing=3;break;
			case 3: Leixing=0;break;
			default:break;
		}
	}
	else
		Leixing=0;
	
	if(m_Cailiao.GetCurSel()!=CB_ERR)
	{
		switch(m_Cailiao.GetCurSel())
		{
	    	case 0: Cailiao=1;break;
            case 1: Cailiao=2;break;
			case 2: Leixing=0;break;
			default:break;
		}
	}
	else
		Cailiao=0;
		
	if(ModifyValid()==false)
	    return;
	CString sqlStr;
	sqlStr.Format("UPDATE DIANLAN SET BIANHAO='%s',LEIXING='%d',GUIGE='%s' ,CAILIAO='%d',BIANYAQI='%s',BUSHESHIJIAN='%s',YONGTU='%s' WHERE BIANHAO='%s'",m_Bianhao,Leixing,m_Guige,Cailiao,m_Bianyaqi,m_Busheshijian.Format("%y-%m-%d"),m_Yongtu,m_SelNo);
	AfxMessageBox(sqlStr);
	((CDrawApp*)AfxGetApp())->m_pdatabase.ExecuteSQL(sqlStr);
	ShowData();  //显示列表数据
	//ReSetSel();
	//置表单为添加状态
	m_Bianhao=GetBianhao();
	m_Guige="";
	m_Bianyaqi="";
    m_Busheshijian=CTime::GetCurrentTime();
	m_SelNo="";
	m_Yongtu="";
	m_Leixing.SetCurSel(3);
	m_Cailiao.SetCurSel(2);
	UpdateData(FALSE);
}

void CDianlanDlg::OnAdd()
{   

    UpdateData(TRUE);
	//字段验证
	short Leixing;
	short Cailiao;
	if(m_Leixing.GetCurSel()!=CB_ERR)
	{
		switch(m_Leixing.GetCurSel())
		{
	    	case 0: Leixing=1;break;
            case 1: Leixing=2;break;
			case 2: Leixing=3;break;
			case 3: Leixing=0;break;
			default:break;
		}
	}
	else
		Leixing=0;
	
	if(m_Cailiao.GetCurSel()!=CB_ERR)
	{
		switch(m_Cailiao.GetCurSel())
		{
	    	case 0: Cailiao=1;break;
            case 1: Cailiao=2;break;
			case 2: Cailiao=0;break;
			default:break;
		}
	}
	else
		Cailiao=0;
    
	if(AddValid()==false)
		return;      
	CString sqlStr;
	sqlStr.Format("INSERT INTO DIANLAN (BIANHAO,LINE_ID,LEIXING,GUIGE,CAILIAO,BIANYAQI,BUSHESHIJIAN,YONGTU) VALUES ('%s','%s','%d','%s','%d','%s','%s','%s')",m_Bianhao,m_ID,Leixing,m_Guige,Cailiao,m_Bianyaqi,m_Busheshijian.Format("%y-%m-%d"),m_Yongtu);
	((CDrawApp*)AfxGetApp())->m_pdatabase.ExecuteSQL(sqlStr);
	ShowData();//显示列表数据
//	ReSetSel();
	//置表单为添加状态
	m_Bianhao=GetBianhao();
	m_Guige="";
	m_Bianyaqi="";
    m_Busheshijian=CTime::GetCurrentTime();
	m_SelNo="";
	m_Yongtu="";
	m_Leixing.SetCurSel(3);
	m_Cailiao.SetCurSel(2);
	UpdateData(FALSE);
}
void CDianlanDlg::OnDel()
{   
	if(SelectValid()==false)
	    return;
	if(MessageBox("你真的要删除这条记录吗?",
			"民政校园管网管理系统",MB_YESNO)==IDNO)
	   return;
	CString sqlStr;
	sqlStr.Format("DELETE FROM DIANLAN WHERE BIANHAO='%s'",m_SelNo);
	((CDrawApp*)AfxGetApp())->m_pdatabase.ExecuteSQL(sqlStr);
	ShowData();//显示列表数据
    m_Bianhao=GetBianhao();
	m_Guige="";
	m_Bianyaqi="";
    m_Busheshijian=CTime::GetCurrentTime();
	m_SelNo="";
	m_Yongtu="";
	m_Leixing.SetCurSel(3);
	m_Cailiao.SetCurSel(2);
	UpdateData(FALSE);

}
void CDianlanDlg::OnRefresh()
{   
	m_Bianhao=GetBianhao();
	m_Guige="";
	m_Bianyaqi="";
    m_SelNo="";
	m_Yongtu="";
	m_Leixing.SetCurSel(3);
	m_Cailiao.SetCurSel(2);
	m_Busheshijian=CTime::GetCurrentTime();
	UpdateData(FALSE);
	ShowData();
}

bool CDianlanDlg::AddValid()//字段验证
{
	//验证维修编号
    m_Bianhao.TrimLeft();
	m_Bianhao.TrimRight();
	if(m_Bianhao=="")
	{
		AfxMessageBox("维修编号不能为空!");
		GetDlgItem(IDC_BIANHAO)->SetFocus();
		return false;
	}
	bool bTag=true;
	for(int i=0;i<m_Bianhao.GetLength();i++)
	{
		char ch=m_Bianhao.GetAt(i);
		if(i==0)
		{ 
			if(ch<'1' || ch>'9')
			{
				bTag=false;
				break;
			}
		}
		else
		{
		   if(ch<'0' || ch>'9')
		   { 
			bTag=false;
			break;
		   }
		}
	}
	if(m_Bianhao.GetLength()!=8 || !bTag)
	{
		AfxMessageBox("请输入8位数字组成的编号 !");	
		GetDlgItem(IDC_BIANHAO)->SetFocus();
        return false;
	}
	CRecordset * pSet=new CRecordset(&((CDrawApp*) AfxGetApp())->m_pdatabase);
    pSet->Open(CRecordset::dynaset,_T("select BIANHAO from DIANLAN"));
      
	if(!pSet->IsBOF())
	{
		pSet->MoveFirst();
		CString f;
		CString & f1=f;
		while(!pSet->IsEOF())
		{
		
           pSet->GetFieldValue("BIANHAO",f1);
	       if(f.Compare(m_Bianhao)==0)
		   {
			  AfxMessageBox("维护编号不能重复!");
			  m_Bianhao="";
			  UpdateData(FALSE);
			  GetDlgItem(IDC_BIANHAO)->SetFocus();
			  return false;
		   }
		 
		pSet->MoveNext();
	
		}
	}
    
	m_Guige.TrimLeft();
	m_Guige.TrimRight();
	
	m_Bianyaqi.TrimLeft();
	m_Bianyaqi.TrimRight();

	m_Yongtu.TrimLeft();
	m_Yongtu.TrimRight();

	return true;
}
bool CDianlanDlg::ModifyValid()//字段验证
{
    
	//验证维修编号
    m_Bianhao.TrimLeft();
	m_Bianhao.TrimRight();
	if(m_Bianhao=="")
	{
		AfxMessageBox("维修编号不能为空!");
		GetDlgItem(IDC_BIANHAO)->SetFocus();
		return false;
	}
		bool bTag=true;
	for(int i=0;i<m_Bianhao.GetLength();i++)
	{
		char ch=m_Bianhao.GetAt(i);
		if(ch<'0' || ch>'9')
		{ 
			bTag=false;
			break;
		}
	}
	if(m_Bianhao.GetLength()!=8 || !bTag)
	{
		AfxMessageBox("请输入8位数字组成的编号 !");	
		GetDlgItem(IDC_BIANHAO)->SetFocus();
        return false;
	}
	m_Guige.TrimLeft();
	m_Guige.TrimRight();
	
	m_Bianyaqi.TrimLeft();
	m_Bianyaqi.TrimRight();

	m_Yongtu.TrimLeft();
	m_Yongtu.TrimRight();

	return true;
}





void CDianlanDlg::ShowData()
{
    m_List.DeleteAllItems();//删除以前列表数据
	
    CRecordset * pSet=new CRecordset(&((CDrawApp*) AfxGetApp())->m_pdatabase);
    CString sqlstr="select * from DIANLAN  where LINE_ID='"+m_ID+"' ORDER BY BIANHAO";	
    pSet->Open(CRecordset::dynaset,_T(sqlstr));
    //充填列表  
	
	if(!pSet->IsBOF())
	{
		pSet->MoveFirst();
		int i=0;
		int nItem=0;
		int nTemp=0;
		CString f;
		CString & f1=f;
		while(!pSet->IsEOF())
		{
		
          pSet->GetFieldValue("BIANHAO",f1);
		  nItem = m_List.InsertItem(i,f);
	
		  pSet->GetFieldValue("LEIXING",f1);
		  nTemp=atoi(f);
		  switch(nTemp)
		  {
		    case 0: m_List.SetItemText(nItem,1,"");    break;
			case 1: m_List.SetItemText(nItem,1,"高压");break;
			case 2: m_List.SetItemText(nItem,1,"低压");break;
			case 3: m_List.SetItemText(nItem,1,"低压联络");break;
			default: m_List.SetItemText(nItem,1,"");
		  }

          pSet->GetFieldValue("GUIGE",f1);
          m_List.SetItemText(nItem,2,f);

		  pSet->GetFieldValue("CAILIAO",f1);
		  nTemp=atoi(f);
		  switch(nTemp)
		  {
		    case 0: m_List.SetItemText(nItem,3,"");break;
			case 1: m_List.SetItemText(nItem,3,"VV");break;
			case 2: m_List.SetItemText(nItem,3,"VLV");break;
			default: m_List.SetItemText(nItem,3,"");break;
		  }

		  pSet->GetFieldValue("BIANYAQI",f1);
          m_List.SetItemText(nItem,4,f);

          pSet->GetFieldValue("BUSHESHIJIAN",f1);
		  f=f.Left(10);//截取年月日
		  m_List.SetItemText(nItem, 5,f); 

		  pSet->GetFieldValue("YONGTU",f1);
          m_List.SetItemText(nItem,6,f);
				 
		  pSet->MoveNext();
		  i++;
		}
	 pSet->Close();
	 delete  pSet;
	 m_SelNo="";
	 //重新设置选中项
	}

}

bool CDianlanDlg::SelectValid()
{
 POSITION pos=m_List.GetFirstSelectedItemPosition();
 if(pos==NULL)
 {
	 AfxMessageBox("请先选中一条记录");
	 return false;
 }
 return true;
}

void CDianlanDlg::ReSetSel()//重新显示选项
{

 /*for(int i=0;i<m_MaintainInfo.GetItemCount();i++)
 
	 if (m_MaintainInfo.GetItemText(i,0).Compare(m_No)==0)
	 {   
		 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)m_MaintainInfo.m_hWnd;
	     pNMListView->iItem=i;
		 
		 break;
	 }*/
 
}

CString  CDianlanDlg::GetBianhao()
{
	   CString sqlstr;   
	   CString str ;
	   CString & str1=str ;
	   CRecordset * pSet=new CRecordset(&((CDrawApp*) AfxGetApp())->m_pdatabase);
       sqlstr.Format("select BIANHAO from DIANLAN order by BIANHAO");	
       pSet->Open(CRecordset::dynaset,_T(sqlstr));
	   if(!pSet->IsBOF())
	   {   
          pSet->MoveFirst();
		  int temp=-1;
		  while(!pSet->IsEOF())
		  {
              pSet->GetFieldValue("BIANHAO",str1);
		      if(atoi(str)>temp)
				  temp=atoi(str);
	          pSet->MoveNext();
		  }
		  temp++;
		  str.Format("%d",temp);
	   }
	   else
		   str="10000001";//如果表为空,ID值为100000O1
   
	   pSet->Close();
	   delete pSet;
	   return str;

}

⌨️ 快捷键说明

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