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

📄 switchdlg.cpp

📁 数据库查询程序,实时检索,界面模仿金山词霸
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/*	if(s_temperature == "" || resistance == "")
	{
		AfxMessageBox("信息不能为空!");
		return;
	}
*/
	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 因为它有时会经常出现一些想不到的错误。
	try
	{
		// 写入各字段值
		m_pRecordset->AddNew();
		m_pRecordset->PutCollect("Name", _variant_t(str_Name));
		m_pRecordset->PutCollect("Detail", _variant_t(str_Detail));
		m_pRecordset->PutCollect("Other", _variant_t(str_Other));
		m_pRecordset->Update();

	//	AfxMessageBox("插入成功!");

		// 更新显示其库内容
//		int nCurSel = m_AccessList.GetCurSel();
	//	OnReadAccess();
//		m_AccessList.SetCurSel(nCurSel);
		// 移动记录指针到新的位置
//		OnSelchangeListaccess();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

}
//////////////////////////////////////////////////////////////////////////////
//名称:OnDelete
//功能:删除当前记录
//作者:施炜雷(shiweilei@sina.com)
//组织:刀锋工作室()
//日期:2006.8.10
/////////////////////////////////////////////////////////////////////////////
void CSwitchDlg::OnDelete() 
{
	if(m_AccessList.GetCount() == 0)
		return;
	else if(m_AccessList.GetCurSel() < 0 || m_AccessList.GetCurSel() > m_AccessList.GetCount())
		m_AccessList.SetCurSel(0);

	try
	{
		// 删除当前行记录
		int curSel = m_AccessList.GetCurSel();	
		
		m_pRecordset->MoveFirst();
		m_pRecordset->Move(long(curSel));

		m_pRecordset->Delete(adAffectCurrent);
		m_pRecordset->Update();
	
   }
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

}

//////////////////////////////////////////////////////////////////////////////
//名称:OnModify
//功能:修改并更新当前记录值
//作者:施炜雷(shiweilei@sina.com)
//组织:刀锋工作室()
//日期:2006.8.20
/////////////////////////////////////////////////////////////////////////////

void CSwitchDlg::OnModify(CString Name,CString Detail) 
{
	UpdateData();        // 更新对话框数据
	if(m_AccessList.GetCount() == 0 || Detail == "" || Name == "")
	{
		AfxMessageBox(_T("表中记录数为空或信息没有设置!"));
		return;
	}
	else if(m_AccessList.GetCurSel() < 0 || m_AccessList.GetCurSel() > m_AccessList.GetCount())
		m_AccessList.SetCurSel(0);

	// 修改当前记录的字段值
	try
	{
		m_pRecordset->PutCollect("Name", _variant_t(Name));
		m_pRecordset->PutCollect("Detail", _variant_t(Detail));
		m_pRecordset->Update();

		// 重新读入库记录更新显示
//		int nCurSel = m_AccessList.GetCurSel();
//		OnReadAccess();
//		m_AccessList.SetCurSel(nCurSel);
		// 移动记录指针到新的位置
//		OnSelchangeListaccess();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

}

//////////////////////////////////////////////////////////////////////////////
//名称:OnReadAccess
//功能:用ADO从Access文件中读取相应数据并显示出来
//作者:施炜雷(shiweilei@sina.com)
//组织:刀锋工作室()
//日期:2006.8.20
/////////////////////////////////////////////////////////////////////////////
void CSwitchDlg::OnReadAccess() 
{
//	int I_Number=Id_Number;
	_variant_t var;
	CString sName,sDetail,sOther;
	
	// 清空列表框
//	m_AccessList.ResetContent();
//	strresistance=strtemperature="  ";

	// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
	// 因为它有时会经常出现一些想不到的错误。
	try
	{
		if(!m_pRecordset->BOF)
			m_pRecordset->MoveFirst();
		else
		{
			AfxMessageBox(_T("表内数据为空"));
			return;
		}

		// 读入库中各字段并加入列表框中

		while(!m_pRecordset->adoEOF)
		{
			var = m_pRecordset->GetCollect("Name");
			if(var.vt != VT_NULL)
				sName = (LPCSTR)_bstr_t(var);

			var = m_pRecordset->GetCollect("Detail");
			if(var.vt != VT_NULL)
				sDetail = (LPCSTR)_bstr_t(var);

			var = m_pRecordset->GetCollect("Other");
			if(var.vt != VT_NULL)
				sOther = (LPCSTR)_bstr_t(var);

			 Sea.insert ( Str_Pair ( sName, sDetail) );


			m_pRecordset->MoveNext();
		}

		// 默认列表指向第一项,同时移动记录指针并显示
	//	m_AccessList.SetCurSel(0);
	//	OnSelchangeListaccess();
	}
	catch(_com_error *e)
	{
		AfxMessageBox(e->ErrorMessage());
	}

}
void CSwitchDlg::OnEnChangeInput()
{
	// TODO:  如果该控件是 RICHEDIT 控件,则它将不会
	// 发送该通知,除非重写 CDialog::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
	CString in;
   	GetDlgItem(IDC_INPUT)->GetWindowText(in);
	m_Input=in;
	int len=in.GetLength();
	map <CString, CString> :: iterator Sea_Iter;
	for(Sea_Iter=Sea.begin();Sea_Iter!=Sea.end();Sea_Iter++){
		if((Sea_Iter->first).Left(len)==in) {
			in=Sea_Iter->first;
			m_Detailed=Sea_Iter->second;
			UpdateData(FALSE);
			break;
		}
	} 
	int temp=m_AccessList.FindString(0,in);
	m_AccessList.SetCurSel(temp);
	m_AccessList.SetTopIndex(temp);
//	m_AccessList.SetAnchorIndex 
	// TODO:  在此添加控件通知处理程序代码
}


void CSwitchDlg::OnLbnSelchangeListaccess()
{
	// TODO: 在此添加控件通知处理程序代码
	    CString People;
		m_AccessList.GetText(m_AccessList.GetAnchorIndex(),People);
		map <CString, CString> :: iterator Sea_Iter=Sea.find(People);
		m_Detailed=Sea_Iter->second;
		UpdateData(FALSE);
}




void CSwitchDlg::OnEnable(BOOL bEnable)
{
	CDialog::OnEnable(bEnable);
	if(Ifmodif!=NOP){
		CString People;
		if(Ifmodif==DELETEIT){
			m_AccessList.GetText(m_AccessList.GetAnchorIndex(),People);
			map <CString, CString> :: iterator Sea_Iter=Sea.find(People);
			Sea.erase(Sea_Iter);
			int anchor=m_AccessList.GetAnchorIndex()-1;
			m_AccessList.DeleteString(m_AccessList.GetAnchorIndex());
			m_AccessList.SetCurSel(anchor);
    		m_AccessList.SetTopIndex(anchor);
			m_AccessList.GetText(anchor,People);
			m_Detailed=Sea.find(People)->second;
			UpdateData(FALSE);
		}
		if(Ifmodif==MODIF){
			m_AccessList.GetText(m_AccessList.GetAnchorIndex(),People);
			map <CString, CString> :: iterator Sea_Iter=Sea.find(People);
			Sea.erase(Sea_Iter);
			m_AccessList.DeleteString(m_AccessList.GetAnchorIndex());
    		m_AccessList.AddString(mof_Name);
			Sea.insert ( Str_Pair ( mof_Name, mof_Detail) );
			int anchor=m_AccessList.FindString(0,mof_Name);
			m_Detailed=mof_Detail;
			m_AccessList.SetCurSel(anchor);
    		m_AccessList.SetTopIndex(anchor);
			UpdateData(FALSE);
		}
		if(Ifmodif==ADDNEW){
			m_AccessList.AddString(mof_Name);
			Sea.insert ( Str_Pair ( mof_Name, mof_Detail) );
			int anchor=m_AccessList.FindString(0,mof_Name);
			m_Detailed=mof_Detail;
			m_AccessList.SetCurSel(anchor);
    		m_AccessList.SetTopIndex(anchor);
			UpdateData(FALSE);
		}
		mof_Name=_T("");
		mof_Detail=_T("");
		Ifmodif=NOP;
	}
	// TODO: 在此处添加消息处理程序代码

}

void CSwitchDlg::OnBnClickedSaveall()
{
	// TODO: 在此添加控件通知处理程序代码
	m_pRecordset->MoveFirst();    //移到首条记录
	while(!m_pRecordset->adoEOF) 
	{
		  m_pRecordset->Delete(adAffectCurrent);    //删除当前记录
		  m_pRecordset->MoveNext();    //移到下一条记录
	}
	for(map <CString, CString> :: iterator Sea_Iter=Sea.begin()
									;Sea_Iter!=Sea.end();Sea_Iter++){  
	      OnWriteAccess(Sea_Iter->first,Sea_Iter->second,_T("0"));
	}
	MessageBox(_T("所有操作已保存"));

}

void CSwitchDlg::OnDestroy()
{
	CDialog::OnDestroy();
	m_pRecordset->MoveFirst();    //移到首条记录
	while(!m_pRecordset->adoEOF) 
	{
		  m_pRecordset->Delete(adAffectCurrent);    //删除当前记录
		  m_pRecordset->MoveNext();    //移到下一条记录
	}
	for(map <CString, CString> :: iterator Sea_Iter=Sea.begin()
									;Sea_Iter!=Sea.end();Sea_Iter++){  
	      OnWriteAccess(Sea_Iter->first,Sea_Iter->second,_T("0"));
	}
	// TODO: 在此处添加消息处理程序代码
}

void CSwitchDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CMenu  RMouseMenu;
	CMenu *menu;
	GetCursorPos(&point);
	RMouseMenu.LoadMenu(IDR_RMOUSEMEMU);
	menu=RMouseMenu.GetSubMenu(0);
	menu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,point.x,point.y,this);
	CDialog::OnRButtonUp(nFlags, point);
}


void CSwitchDlg::OnLbnDblclkListaccess()
{
	// TODO: 在此添加控件通知处理程序代码
	CMODIF dlg;
	CString People;
	m_AccessList.GetText(m_AccessList.GetAnchorIndex(),People);
	dlg.m_suName=People;
	dlg.m_suDetail=m_Detailed;
//	map <CString, CString> :: iterator Sea_Iter=Sea.find(People);
//	Sea.erase(Sea_Iter);
//	m_AccessList.DeleteString(m_AccessList.GetAnchorIndex());
	dlg.DoModal();
}

void CSwitchDlg::OnAddnew()
{
	// TODO: 在此添加命令处理程序代码
	if(Add_New->Display==false){
		Add_New->Create(CAddNew::IDD,this);//创建对话框
		Add_New->ShowWindow(SW_SHOW);//显示对话框
		Add_New->Display=true;
	}
	
}

LONG CSwitchDlg::OnAddNewItem(WPARAM wP,LPARAM lP){
		CString Name=*(CString*)wP;
		CString Detail=*(CString*)lP;
		if(Name==_T("SOS--Savetodata,Savetodata")){
				m_pRecordset->MoveFirst();    //移到首条记录
				while(!m_pRecordset->adoEOF) 
				{
					  m_pRecordset->Delete(adAffectCurrent);    //删除当前记录
					  m_pRecordset->MoveNext();    //移到下一条记录
				}
				for(map <CString, CString> :: iterator Sea_Iter=Sea.begin()
									;Sea_Iter!=Sea.end();Sea_Iter++){  
					OnWriteAccess(Sea_Iter->first,Sea_Iter->second,_T("0"));
		       }
		MessageBox(_T("所有操作已保存"));
		return 0;
		
		}
		if(m_AccessList.FindString(0,Name)<0 ){
			Sea.insert(Str_Pair(Name,Detail)); 
			m_AccessList.AddString(Name);
		}
		else{
			MessageBox(_T("库里已经有了"));
		}
	return 0;
}

⌨️ 快捷键说明

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