📄 usedlg.cpp
字号:
// UseDlg.cpp : implementation file
//
#include "stdafx.h"
#include "yhgl.h"
#include "UseDlg.h"
#include "Choose.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define Max 999
extern CYhglApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CUseDlg dialog
CUseDlg::CUseDlg(CWnd* pParent /*=NULL*/)
: CDialog(CUseDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CUseDlg)
//}}AFX_DATA_INIT
m_nCurrentSel = -1;
m_bAutoSave = TRUE;
j=0;
i=0;
}
void CUseDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUseDlg)
DDX_Control(pDX, IDC_BUTTONDEL, m_Del);
DDX_Control(pDX, IDC_BUTTONAPPLY, m_apply);
DDX_Control(pDX, IDC_BUTTONADD, m_create);
DDX_Control(pDX, IDCANCEL, m_cancel);
DDX_Control(pDX, IDOK, m_exit);
DDX_Control(pDX, IDC_LIST1, m_userlist);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CUseDlg, CDialog)
//{{AFX_MSG_MAP(CUseDlg)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST1, OnItemchangedList1)
ON_BN_CLICKED(IDC_BUTTONADD, OnButtonadd)
ON_BN_CLICKED(IDC_BUTTONAPPLY, OnButtonapply)
ON_BN_CLICKED(IDC_BUTTONDEL, OnButtondel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUseDlg message handlers
void CUseDlg::PostNcDestroy()
{
//CSizingDialog::OnDestroy();
CDialog::PostNcDestroy();
delete this;
}
BOOL CUseDlg::Create()
{
return CDialog::Create(CUseDlg::IDD);
}
void CUseDlg::OnOK()
{
m_pRecordset1->Close();
m_pRecordset2->Close();
m_userlist.flag=0;
DestroyWindow();
}
void CUseDlg::OnCancel()
{
//CDialog::OnCancel();
DestroyWindow();
}
BOOL CUseDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_exit.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_exit.SetBkColor(RGB(234,216,187));
m_exit.SetTooltipText(_T("退回到先前目录"));
m_exit.SetRounded(TRUE);
m_cancel.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_cancel.SetBkColor(RGB(234,216,187));
m_cancel.SetTooltipText(_T("退出"));
m_cancel.SetRounded(TRUE);
m_apply.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_apply.SetBkColor(RGB(234,216,187));
m_apply.SetTooltipText(_T("更新修改内容"));
m_apply.SetRounded(TRUE);
m_create.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_create.SetBkColor(RGB(234,216,187));
m_create.SetTooltipText(_T("创建新的用户:登陆名、密码与所属权限组不能为空"));
m_create.SetRounded(TRUE);
m_Del.OffsetColor(CButtonST::BTNST_COLOR_BK_IN, 30);
m_Del.SetBkColor(RGB(234,216,187));
m_Del.SetTooltipText(_T("删除制定用户"));
m_Del.SetRounded(TRUE);
m_Del.EnableWindow(FALSE);
ListView_SetExtendedListViewStyle(::GetDlgItem(m_hWnd,IDC_LIST1),LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
::SendMessage(m_userlist.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
//////////为列表控件添加列//////////
m_userlist.flag = 1;
m_userlist.InsertColumn(0,"用户ID",LVCFMT_LEFT,60);
m_userlist.InsertColumn(1,"用户全名",LVCFMT_LEFT,100);
m_userlist.InsertColumn(2,"登陆名",LVCFMT_LEFT,150);
m_userlist.InsertColumn(3,"密码",LVCFMT_LEFT,100);
m_userlist.InsertColumn(4,"权限组",LVCFMT_LEFT,80);
m_userlist.InsertColumn(5,"说明",LVCFMT_LEFT,200);
//////////读取数据库中的信息添加到列表控件///////////
int nItem;
_variant_t vUsername,vPname,vPID,vUID,vCode,vFullname,vDes;
try
{
m_sa.RemoveAll();
m_pRecordset1.CreateInstance("ADODB.Recordset");
m_pRecordset2.CreateInstance("ADODB.Recordset");
m_pRecordset1->Open("SELECT * FROM SDE.TB_DSUSER ORDER BY UserID",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
m_pRecordset2->Open("SELECT * FROM SDE.TB_RoleGroupInfo",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
long dsNum1,dsNum2;
m_pRecordset1->get_RecordCount(&dsNum1);
m_pRecordset2->get_RecordCount(&dsNum2);
if (dsNum2>0)
{
m_pRecordset2->MoveFirst();
while(!m_pRecordset2->adoEOF)
{
vPname = m_pRecordset2->GetCollect("RoleGroupName");
vPID=m_pRecordset2->GetCollect("RoleGroupID");
pre[i]=vPID.lVal;
Pname[i]=(LPCTSTR)(_bstr_t)vPname;
m_sa.Add(Pname[i]);
m_pRecordset2->MoveNext();
i++;
}
if (dsNum1>0)
{
m_pRecordset1->MoveFirst();
while(!m_pRecordset1->adoEOF)
{
vUID = m_pRecordset1->GetCollect("UserID");
vUsername = m_pRecordset1->GetCollect("LogName");///取得username字段的值
vCode = m_pRecordset1->GetCollect("LogPassWord");
vPID = m_pRecordset1->GetCollect("RoleGroupID");
vFullname=m_pRecordset1->GetCollect("UserFullName");
vDes=m_pRecordset1->GetCollect("Description");
Info[j].uid=vUID.lVal;
Info[j].code=(LPCTSTR)(_bstr_t)vCode;
Info[j].lname=(LPCTSTR)(_bstr_t)vUsername;
Info[j].qid=vPID.lVal;
Info[j].DeleteFlag=1;
Info[j].NewFlag=0;
int k=0;
while(k<i)
{
if(Info[j].qid==pre[k])
break;
k++;
}
Info[j].qname=Pname[k];
nItem=m_userlist.InsertItem(0xffff,"");
m_userlist.SetItemText(nItem,0,(_bstr_t)vUID);
m_userlist.SetItemText(nItem,2,(_bstr_t)vUsername);
m_userlist.SetItemText(nItem,3,(_bstr_t)_T("******"));
m_userlist.SetComboBox(nItem,4,1,&m_sa,i,k);
if(vFullname.vt != VT_NULL)
{
Info[j].fname=(LPCTSTR)(_bstr_t)vFullname;
m_userlist.SetItemText(nItem,1,(_bstr_t)vFullname);
}
else
{
Info[j].fname=_T("");
m_userlist.SetItemText(nItem,1,(_bstr_t)_T(""));
}
if(vDes.vt != VT_NULL)
{
Info[j].des=(LPCTSTR)(_bstr_t)vDes;
m_userlist.SetItemText(nItem,5,(_bstr_t)vDes);
}
else
{
Info[j].des=_T("");
m_userlist.SetItemText(nItem,5,(_bstr_t)_T(""));
}
m_pRecordset1->MoveNext();
j++;
}
}
}
else
{
MessageBox("没有用户组,请先选择权限组信息维护!");
CDialog::OnCancel();
}
}
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 CUseDlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->uNewState&LVIS_SELECTED)
{
UpdateData();
m_nCurrentSel = pNMListView->iItem;
m_Del.EnableWindow();
}
*pResult = 0;
}
void CUseDlg::OnButtonadd()
{
m_nCurrentSel=m_userlist.InsertItem(0xffff,"");
if(j==0)
vUSERID=long(1);
else
vUSERID = (long)(Info[j-1].uid+1);
m_userlist.SetItemText(m_nCurrentSel,0,(_bstr_t)vUSERID);
m_userlist.SetItemText(m_nCurrentSel,1,(_bstr_t)_T(""));
m_userlist.SetItemText(m_nCurrentSel,2,(_bstr_t)_T(""));
m_userlist.SetItemText(m_nCurrentSel,3,(_bstr_t)_T(""));
m_userlist.SetComboBox(m_nCurrentSel,4,1,&m_sa, i, 0);
m_userlist.SetItemText(m_nCurrentSel,5,(_bstr_t)_T(""));
m_userlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
m_userlist.SetHotItem(m_nCurrentSel);
m_userlist.SetFocus();
if(j==0)
Info[j].uid=1;
else
Info[j].uid=Info[j-1].uid+1;
Info[j].fname=_T("");
Info[j].des=_T("");
Info[j].lname=_T("");
Info[j].code=_T("");
Info[j].qid=pre[0];
Info[j].qname=Pname[0];
Info[j].NewFlag=1;
Info[j].DeleteFlag=0;
j++;
}
void CUseDlg::OnButtonapply()
{
int t=0;
CString str;
while(t<j)
{
str=m_userlist.GetComboText(t, 4);
if(strcmp(str,Info[t].qname)!=0)
{
m_userlist.UserInfo[t].sign[3]=1;
Info[t].qname=str;
}
int tag=0;
while(tag<i)
{
if(strcmp(Pname[tag],Info[t].qname)==0)
break;
tag++;
}
if(m_userlist.UserInfo[t].sign[0]==1||m_userlist.UserInfo[t].sign[1]==1||m_userlist.UserInfo[t].sign[2]==1||m_userlist.UserInfo[t].sign[3]==1||m_userlist.UserInfo[t].sign[4]==1)
{
if(m_userlist.UserInfo[t].sign[0]==1)
Info[t].fname=m_userlist.UserInfo[t].fname;
if(m_userlist.UserInfo[t].sign[1]==1)
Info[t].lname=m_userlist.UserInfo[t].lname;
if(m_userlist.UserInfo[t].sign[2]==1)
Info[t].code=m_userlist.UserInfo[t].code;
if(m_userlist.UserInfo[t].sign[4]==1)
Info[t].des=m_userlist.UserInfo[t].des;
if(Info[t].lname.IsEmpty()||Info[t].code.IsEmpty())
{
AfxMessageBox("有无效信息,请再次修改!");
}
else
{
vUSERID = (long)(Info[t].uid);
vUSERNAME=Info[t].lname;
vCODE=Info[t].code;
vPID=(long)pre[tag];
vDES=Info[t].des;
vFULLNAME=Info[t].fname;
if(Info[t].NewFlag==1)
{
m_pRecordset1->AddNew();
Info[t].NewFlag=0;
Info[t].DeleteFlag=1;
}
else
{
m_pRecordset1->MoveFirst();
m_pRecordset1->Move(t);
}
m_pRecordset1->PutCollect("LogName",vUSERNAME);
m_pRecordset1->PutCollect("LogPassWord",vCODE);
m_pRecordset1->PutCollect("UserID",vUSERID);
m_pRecordset1->PutCollect("RoleGroupID",vPID);
m_pRecordset1->PutCollect("UserFullName",vFULLNAME);
m_pRecordset1->PutCollect("Description",vDES);
m_pRecordset1->Update();
}
}
t++;
}
}
void CUseDlg::OnButtondel()
{
m_bAutoSave = FALSE;
if(m_nCurrentSel >= 0&&Info[m_nCurrentSel].DeleteFlag==1)
{
m_pRecordset1->MoveFirst();
m_pRecordset1->Move(m_nCurrentSel);
m_userlist.DeleteItem(m_nCurrentSel);
int count = m_userlist.GetItemCount();
if(count <= m_nCurrentSel)
m_nCurrentSel = count-1;
else
{
for(int i=0;i<=(j-m_nCurrentSel-2);i++)
{
Info[m_nCurrentSel+i].uid=Info[m_nCurrentSel+i+1].uid;
Info[m_nCurrentSel+i].fname=Info[m_nCurrentSel+i+1].fname;
Info[m_nCurrentSel+i].code=Info[m_nCurrentSel+i+1].code;
Info[m_nCurrentSel+i].lname=Info[m_nCurrentSel+i+1].lname;
Info[m_nCurrentSel+i].qid=Info[m_nCurrentSel+i+1].qid;
Info[m_nCurrentSel+i].qname=Info[m_nCurrentSel+i+1].qname;
Info[m_nCurrentSel+i].des=Info[m_nCurrentSel+i+1].des;
}
}
j--;
m_pRecordset1->Delete(adAffectCurrent);
if(m_nCurrentSel!=0)
m_pRecordset1->MoveNext();
m_userlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
m_userlist.SetFocus();
}
m_bAutoSave = TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -