📄 quanxian.cpp
字号:
// Quanxian.cpp : implementation file
//
#include "stdafx.h"
#include "yhgl.h"
#include "Quanxian.h"
#include "Quanshu.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define Max 999
extern CYhglApp theApp;
int v[Max];
int x=0;
int y=0;
int qidtemp=0;
CString qnametemp=_T("");
CString qdestemp=_T("");
/////////////////////////////////////////////////////////////////////////////
// CQuanxian dialog
CQuanxian::CQuanxian(CWnd* pParent /*=NULL*/)
: CDialog(CQuanxian::IDD, pParent)
{
//{{AFX_DATA_INIT(CQuanxian)
m_qid = 0;
m_qname = _T("");
m_qdes = _T("");
//}}AFX_DATA_INIT
m_nCurrentSel = -1;
Success = FALSE;
m_bAutoSave = TRUE;
}
void CQuanxian::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CQuanxian)
DDX_Control(pDX, IDC_DEL, m_jian);
DDX_Control(pDX, IDC_ADD, m_jia);
DDX_Control(pDX, IDC_LIST2, m_quanlist);
DDX_Text(pDX, IDC_EDIT1, m_qid);
DDX_Text(pDX, IDC_EDIT2, m_qname);
DDX_Text(pDX, IDC_EDIT3, m_qdes);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CQuanxian, CDialog)
//{{AFX_MSG_MAP(CQuanxian)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_BN_CLICKED(IDC_DEL, OnDel)
ON_BN_CLICKED(IDC_UPDS, OnUpds)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST2, OnItemchangedList2)
ON_BN_CLICKED(IDC_UPDP, OnUpdp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CQuanxian message handlers
BOOL CQuanxian::OnInitDialog()
{
CDialog::OnInitDialog();
m_jian.EnableWindow(FALSE);
::SendMessage(m_quanlist.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
//////////为列表控件添加列//////////
m_quanlist.InsertColumn(0,"权限组ID",LVCFMT_LEFT,60);
m_quanlist.InsertColumn(1,"名称",LVCFMT_LEFT,100);
m_quanlist.InsertColumn(2,"说明",LVCFMT_LEFT,80);
//////////读取数据库中的信息添加到列表控件///////////
int nItem;
_variant_t vQid,vQname,vQdes,vID;
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");
m_pRecordset->Open("SELECT * FROM GroupInfo",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
Success = TRUE;
while(!m_pRecordset->adoEOF)
{
vID=m_pRecordset->GetCollect("ID");
vQid = m_pRecordset->GetCollect("RoleGroupID");
vQname = m_pRecordset->GetCollect("RoleGroupName");///取得username字段的值
vQdes=m_pRecordset->GetCollect("Description");
v[x]=vQid.lVal;
nItem=m_quanlist.InsertItem(0xffff,(_bstr_t)vID);
m_quanlist.SetItem(nItem,0,1,(_bstr_t)vQid,NULL,0,0,0);
if(vQname.vt != VT_NULL)
m_quanlist.SetItem(nItem,1,1,(_bstr_t)vQname,NULL,0,0,0);
else
m_quanlist.SetItem(nItem,1,1,_T(""),NULL,0,0,0);
if(vQdes.vt != VT_NULL)
m_quanlist.SetItem(nItem,2,1,(_bstr_t)vQdes,NULL,0,0,0);
else
m_quanlist.SetItem(nItem,2,1,_T(""),NULL,0,0,0);
m_pRecordset->MoveNext();
x++;
}
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox("读取数据库失败!");///显示错误信息
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CQuanxian::OnOK()
{
if(Success)
{
m_pRecordset->Close();
}
CDialog::OnOK();
}
void CQuanxian::OnAdd()
{
UpdateData();
int k=0;
while(k<x)
{
if(v[k]==m_qid)
{
y=1;
break;
}
k++;
}
if(k==x)
{
y=2;
}
if(y==2)
{
m_pRecordset->AddNew();
m_nCurrentSel = m_quanlist.InsertItem(0xffff,"");
Save();///保存数据
m_quanlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
m_quanlist.SetHotItem(m_nCurrentSel);
m_quanlist.SetFocus();
AfxMessageBox("添加成功!");
y=0;
}
else
AfxMessageBox("权限组的ID唯一!请再次输入其他的ID");
}
void CQuanxian::OnDel()
{
m_bAutoSave = FALSE;
if(m_nCurrentSel >= 0)
{
m_quanlist.DeleteItem(m_nCurrentSel);
int count = m_quanlist.GetItemCount();
if(count <= m_nCurrentSel)
m_nCurrentSel = count-1;
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->MoveNext();
Load();
m_quanlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
m_quanlist.SetFocus();
}
m_bAutoSave = TRUE;
}
void CQuanxian::OnUpds()
{
UpdateData(); // 更新对话框数据
if(m_quanlist.GetItemCount() == 0 || m_qname == "" || m_qdes == ""||m_qid==0)
{
AfxMessageBox("有无效信息,请选取需要修改的用户!");
return;
}
else
{
Save();
m_pRecordset->Update();
if(m_qid==qidtemp&&strcmp(m_qname,qnametemp)==0&&strcmp(m_qdes,qdestemp)==0)
{
AfxMessageBox("您没有进行任何修改操作!");
}
else
AfxMessageBox("修改成功!");
}
}
void CQuanxian::OnItemchangedList2(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->uNewState&LVIS_SELECTED)
{
UpdateData();
Save();///保存旧数据
m_nCurrentSel = pNMListView->iItem;
Load();///加载新数据
m_jian.EnableWindow();
}
*pResult = 0;
}
/////将编辑框的数据保存到记录集与列表框
void CQuanxian::Save()
{
if(!m_pRecordset->adoEOF && m_nCurrentSel >= 0 && m_bAutoSave)
{
if (m_qname.IsEmpty())
{
MessageBox ("权限组的名称不能为空","");
return;
}
vQID = (long)m_qid;
if(strcmp(m_qname,_T(""))==0)
vQNAME.vt=VT_NULL;
else
vQNAME=m_qname;
if(strcmp(m_qdes,_T(""))==0)
vQDES.vt=VT_NULL;
else
vQDES=m_qdes;
v[x]=m_qid;
x++;
m_pRecordset->PutCollect("RoleGroupID",vQID);
m_pRecordset->PutCollect("RoleGroupName",vQNAME);
m_pRecordset->PutCollect("RolePassword",vQNAME); //暂时定义为同SDE用户名称
m_pRecordset->PutCollect("Description",vQDES);
m_quanlist.SetItem(m_nCurrentSel,0,LVIF_TEXT,(_bstr_t)vQID,NULL,0,0,0);
if(vQNAME.vt != VT_NULL)
m_quanlist.SetItem(m_nCurrentSel,1,LVIF_TEXT,(_bstr_t)vQNAME,NULL,0,0,0);
else
m_quanlist.SetItem(m_nCurrentSel,1,LVIF_TEXT,_T(""),NULL,0,0,0);
if(vQDES.vt != VT_NULL)
m_quanlist.SetItem(m_nCurrentSel,2,LVIF_TEXT,(_bstr_t)vQDES,NULL,0,0,0);
else
m_quanlist.SetItem(m_nCurrentSel,2,LVIF_TEXT,_T(""),NULL,0,0,0);
}
}
//////将记录集中的数据加载到编辑框/////
void CQuanxian::Load()
{
m_pRecordset->Move(m_nCurrentSel,_variant_t((long)adBookmarkFirst));
vQID = m_pRecordset->GetCollect("RoleGroupID");
vQNAME = m_pRecordset->GetCollect("RoleGroupName");
vQDES=m_pRecordset->GetCollect("Description");
m_qid = vQID.lVal;
if(vQNAME.vt != VT_NULL)
m_qname = (LPCTSTR)(_bstr_t)vQNAME;
else
m_qname=_T("");
if(vQDES.vt != VT_NULL)
m_qdes=(LPCTSTR)(_bstr_t)vQDES;
else
m_qdes=_T("");
qidtemp=m_qid;
qdestemp=m_qdes;
qnametemp=m_qname;
UpdateData(FALSE);
}
void CQuanxian::OnUpdp()
{
CQuanshu dlg;
dlg.m_qid=m_qid;
dlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -