📄 setpara3dlg.cpp
字号:
// SetPara3Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "Alert.h"
#include "SetPara3Dlg.h"
#include "SetPara2Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CSetPara3Dlg dialog
CSetPara3Dlg::CSetPara3Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CSetPara3Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CSetPara3Dlg)
//}}AFX_DATA_INIT
}
void CSetPara3Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CSetPara3Dlg)
DDX_Control(pDX, IDC_LIST3, m_cjList);
DDX_Control(pDX, IDC_LIST2, m_dcjList);
DDX_Control(pDX, IDC_LIST1, m_bfList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CSetPara3Dlg, CDialog)
//{{AFX_MSG_MAP(CSetPara3Dlg)
ON_BN_CLICKED(IDPREV, OnPrev)
ON_BN_CLICKED(IDFINISH, OnFinish)
ON_LBN_SELCHANGE(IDC_LIST1, OnSelchangeList1)
ON_BN_CLICKED(IDC_CHECKIN, OnCheckin)
ON_BN_CLICKED(IDC_CHECKOUT, OnCheckout)
ON_LBN_DBLCLK(IDC_LIST3, OnDblclkList3)
ON_LBN_DBLCLK(IDC_LIST2, OnDblclkList2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSetPara3Dlg message handlers
void CSetPara3Dlg::OnPrev()
{
// TODO: Add your control notification handler code here
CDialog::OnOK();
CSetPara2Dlg* pStep1= (CSetPara2Dlg*)GetParent();
pStep1->ShowWindow(SW_SHOW);
}
void CSetPara3Dlg::OnFinish()
{
// TODO: Add your control notification handler code here
CDialog::OnOK();
CSetPara2Dlg* pStep2= (CSetPara2Dlg*)GetParent();
::SendMessage(pStep2->m_hWnd,WM_CLOSE,0,0);
}
BOOL CSetPara3Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//显示和提取数据
_RecordsetPtr r;
r.CreateInstance(_uuidof(Recordset)); //显示布防名称
CString s="select bfname from bufangset";
_bstr_t bs=s.AllocSysString();
CAlertApp* pApp=(CAlertApp*)::AfxGetApp();
r->Open(bs,(IDispatch*)pApp->m_pConnection,adOpenStatic,adLockOptimistic,adCmdText);
if(r->adoEOF || r->BOF)
goto excep1;
r->MoveFirst();
while(!r->adoEOF)
{
m_bfList.AddString(LPTSTR(_bstr_t(r->GetCollect("bfname"))));
r->MoveNext();
}
excep1:
r->Close();
r=NULL;
r.CreateInstance(_uuidof(Recordset)); //显示处警名称
s="select cjname from chujingset";
bs=s.AllocSysString();
r->Open(bs,(IDispatch*)pApp->m_pConnection,adOpenStatic,adLockOptimistic,adCmdText);
if(r->adoEOF || r->BOF)
goto excep2;
r->MoveFirst();
while(!r->adoEOF)
{
m_cjList.AddString(LPTSTR(_bstr_t(r->GetCollect("cjname"))));
r->MoveNext();
}
excep2:
r->Close();
r=NULL;
//提取数据
m_dcjStrArray.SetSize(m_bfList.GetCount()+1);
for(int i=0;i<m_bfList.GetCount();i++)
{
r.CreateInstance(_uuidof(Recordset));
CString temp;
m_bfList.GetText(i,temp);
s="select cjname from bftocj where bfname='" + temp + "'";
bs=s.AllocSysString();
r->Open(bs,(IDispatch*)pApp->m_pConnection,adOpenStatic,adLockOptimistic,adCmdText);
if(!r->adoEOF && !r->BOF)
m_dcjStrArray[i]=LPTSTR(_bstr_t(r->GetCollect("cjname")));
r->Close();
r=NULL;
}
m_bfList.SetCurSel(0);
m_cjList.SetCurSel(0);
OnSelchangeList1();
m_dcjList.SetSel(0);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSetPara3Dlg::OnSelchangeList1()
{
// TODO: Add your control notification handler code here
int nSel=m_bfList.GetCurSel();
if(nSel==-1) return;
int count=analystRs(m_dcjStrArray[nSel]);
while(m_dcjList.GetCount()>0)
{
m_dcjList.DeleteString(0);
}
for(int i=0;i<count;i++)
m_dcjList.AddString(strcj[i]);
m_dcjList.SetSel(0);
}
int CSetPara3Dlg::analystRs(CString cjname)
{
int count=0; //count:纪录获取的字符串个数
strcj.RemoveAll();
strcj.Add("");
for(int i=0;i<cjname.GetLength();i++)
{
if(cjname[i]!='@')
strcj[count]+=cjname[i];
else
{
count+=1;
strcj.Add("");
}
}
if(strcj[count]=="")
{
strcj.RemoveAt(count);
count--;
}
return count+1;
}
void CSetPara3Dlg::OnCheckin()
{
// TODO: Add your control notification handler code here
if(m_bfList.GetCurSel()==-1)
return;
for(int i=0;i<m_cjList.GetCount();i++)
{
if(m_cjList.GetSel(i))
{
CString cjname;
m_cjList.GetText(i,cjname);
for(int j=0;j<m_dcjList.GetCount();j++)
{
CString dcjname;
m_dcjList.GetText(j,dcjname);
if(cjname==dcjname)
break;
}
if(j==m_dcjList.GetCount())
{
m_dcjList.AddString(cjname);
if(m_dcjStrArray[m_bfList.GetCurSel()].Right(1)=="@")
m_dcjStrArray[m_bfList.GetCurSel()]+=cjname;
else
m_dcjStrArray[m_bfList.GetCurSel()]+=("@"+cjname);
}
}
}
RefreshRelation(); //写入设置
}
void CSetPara3Dlg::OnCheckout()
{
// TODO: Add your control notification handler code here
if(m_bfList.GetCurSel()==-1)
return;
for(int i=m_dcjList.GetCount()-1;i>=0;i--)
{
if(m_dcjList.GetSel(i))
m_dcjList.DeleteString(i);
}
if(m_bfList.GetCurSel()==-1)
return;
CString dcjname;
m_dcjStrArray[m_bfList.GetCurSel()]="";
for(i=0; i<m_dcjList.GetCount();i++)
{
m_dcjList.GetText(i,dcjname);
if(i==0)
m_dcjStrArray[m_bfList.GetCurSel()]=dcjname;
else
m_dcjStrArray[m_bfList.GetCurSel()]+=("@"+dcjname);
}
RefreshRelation();
}
void CSetPara3Dlg::OnDblclkList3()
{
// TODO: Add your control notification handler code here
OnCheckin();
}
void CSetPara3Dlg::OnDblclkList2()
{
// TODO: Add your control notification handler code here
OnCheckout();
}
void CSetPara3Dlg::RefreshRelation()
{
if(m_bfList.GetCurSel()==-1)
return;
CString bfname;
m_bfList.GetText(m_bfList.GetCurSel(),bfname);
_RecordsetPtr r;
r.CreateInstance(_uuidof(Recordset));
CString s="select * from bftocj where bfname ='" + bfname + "'";
_bstr_t bs=s.AllocSysString();
CAlertApp* pApp=(CAlertApp*)::AfxGetApp();
r->Open(bs,(IDispatch*)pApp->m_pConnection,adOpenStatic,adLockOptimistic,adCmdText);
if(!r->adoEOF && !r->BOF)
{
if(m_dcjStrArray[m_bfList.GetCurSel()]=="")
r->Delete(adAffectCurrent);
else
r->PutCollect("cjname",m_dcjStrArray[m_bfList.GetCurSel()].AllocSysString());
r->Update();
}
else
{
r->AddNew();
r->PutCollect("bfname",bfname.AllocSysString());
r->PutCollect("cjname",m_dcjStrArray[m_bfList.GetCurSel()].AllocSysString());
r->Update();
}
r->Close();
r=NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -