📄 switchdlg.cpp
字号:
/* 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 + -