📄 dossierdlg.cpp
字号:
// DossierDlg.cpp : implementation file
//
#include "stdafx.h"
#include "FixedAssets.h"
#include "DossierDlg.h"
#include "CRACK.h"
#include "PromptDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDossierDlg dialog
CDossierDlg::CDossierDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDossierDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDossierDlg)
m_strLabel = _T("");
m_strName = _T("");
m_strRemark = _T("");
//}}AFX_DATA_INIT
nSelectIndex=-1;
}
void CDossierDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDossierDlg)
DDX_Control(pDX, IDC_DOSS_NAME, m_CtrlEditName);
DDX_Control(pDX, IDC_DOSS_LIST, m_CtrlList);
DDX_Text(pDX, IDC_DOSS_LABEL, m_strLabel);
DDX_Text(pDX, IDC_DOSS_NAME, m_strName);
DDX_Text(pDX, IDC_DOSS_REMARK, m_strRemark);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDossierDlg, CDialog)
//{{AFX_MSG_MAP(CDossierDlg)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_DOSS_LIST, OnItemchangedDossList)
ON_BN_CLICKED(IDC_DOSS_ADD, OnDossAdd)
ON_BN_CLICKED(IDC_DOSS_MODIFY, OnDossModify)
ON_BN_CLICKED(IDC_DOSS_SAVE, OnDossSave)
ON_BN_CLICKED(IDC_DOSS_DEL, OnDossDel)
ON_EN_CHANGE(IDC_DOSS_NAME, OnChangeDossName)
ON_BN_CLICKED(IDC_DOSS_ABOLISH, OnDossAbolish)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDossierDlg message handlers
int CDossierDlg::DoModal()
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::DoModal();
}
BOOL CDossierDlg::DestroyWindow()
{
//*****************作者添加*******************************//
m_pDatabase->Close();
delete m_pDatabase;
m_pDatabase=NULL;
//*****************作者添加*******************************//
return CDialog::DestroyWindow();
}
BOOL CDossierDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//*****************作者添加*******************************//
//设置列表框控件属性为整行可选,以格子形式显示数据
m_CtrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
//对话框标题的动态设置
SetWindowText(m_strTableName);
//连接数据库
m_pDatabase=new CDaoDatabase;
try{
m_pDatabase->Open("FixedAssets");
m_pRecordset=new CDaoRecordset(m_pDatabase);
}
catch(CDaoException *e)
{
e->ReportError();
delete m_pDatabase;
m_pDatabase=NULL;
e->Delete();
}
//列表框控件的数据刷新和编辑框控件清空
Refresh();
//*****************作者添加*******************************//
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDossierDlg::Refresh()
{
//检测DAO数据库对象的有效性,并在记录集对象打开时关闭该记录集
if(!m_pDatabase->IsOpen()) return;
if(!m_pRecordset) return;
if(m_pRecordset->IsOpen()) m_pRecordset->Close();
//清空list控件
m_CtrlList.DeleteAllItems();
while(m_CtrlList.DeleteColumn(0));
//取表的结构信息
CDaoFieldInfo fieldInfo;
int nFields;
CDaoTableDef td(m_pDatabase);
try
{
td.Open(m_strTableName);
nFields = td.GetFieldCount();
int nWidth;
for (int j=0; j < nFields; j++)
{
td.GetFieldInfo(j,fieldInfo);
nWidth = m_CtrlList.GetStringWidth(fieldInfo.m_strName) + 20;
m_CtrlList.InsertColumn(j,fieldInfo.m_strName, LVCFMT_LEFT, nWidth);
}
m_CtrlList.SetColumnWidth(2,265);
}
catch (CDaoException* e)
{
e->ReportError();
e->Delete();
return;
}
td.Close();
//取表的数据
int nItem = 0,i;
try
{
CString select,strSelect(_T("Select * From ["));
strSelect += m_strTableName;
strSelect += _T("]");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(0);
m_CtrlList.InsertItem(nItem,CCrack::strVARIANT(var));
for (i=0; i < nFields; i++)
{
var = m_pRecordset->GetFieldValue(i);
m_CtrlList.SetItemText( nItem,i,CCrack::strVARIANT(var));
}
m_pRecordset->MoveNext();
nItem++;
}
}
catch (CDaoException* e)
{
e->ReportError();
e->Delete();
return;
}
//清空列表框控件
m_strID.Empty();
m_strName.Empty();
m_strRemark.Empty();
UpdateData(0);
}
void CDossierDlg::OnItemchangedDossList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
//*****************作者添加*******************************//
//列表框某一条目被选中
if(pNMListView->uNewState&LVIS_SELECTED)
{
(CButton*)GetDlgItem(IDC_DOSS_ADD)->EnableWindow(1); //添加按钮可用
(CButton*)GetDlgItem(IDC_DOSS_MODIFY)->EnableWindow(1); //修改按钮可用
(CButton*)GetDlgItem(IDC_DOSS_DEL)->EnableWindow(1); //删除按钮可用
(CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(0); //保存按钮不可用
(CButton*)GetDlgItem(IDC_DOSS_ABOLISH)->EnableWindow(0);//取消按钮不可用
(CEdit*)GetDlgItem(IDC_DOSS_NAME)->EnableWindow(0); //名称编辑框不可用
(CEdit*)GetDlgItem(IDC_DOSS_REMARK)->EnableWindow(0); //备注编辑框不可用
char pContent[50] ;
int iCurrent = pNMListView->iItem;
//保存所选中的是列表框中的哪一项
nSelectIndex=iCurrent;
//将列表框中的内容显示到编辑框中
m_CtrlList.GetItemText(iCurrent,0,pContent,50);
m_strID.Format("%s", pContent);
m_CtrlList.GetItemText(iCurrent,1,pContent,50);
m_strName.Format("%s", pContent);
m_CtrlList.GetItemText(iCurrent,2,pContent,50);
m_strRemark.Format("%s", pContent);
UpdateData(FALSE);
m_strFlag.Empty(); //清空标志变量中的内容
}
//列表框没有条目被选中
else
{
(CButton*)GetDlgItem(IDC_DOSS_ADD)->EnableWindow(1); //添加按钮可用
(CButton*)GetDlgItem(IDC_DOSS_SAVE)->EnableWindow(0); //保存按钮不可用
(CButton*)GetDlgItem(IDC_DOSS_MODIFY)->EnableWindow(0); //修改按钮不可用
(CButton*)GetDlgItem(IDC_DOSS_DEL)->EnableWindow(0); //删除按钮不可用
(CButton*)GetDlgItem(IDC_DOSS_ABOLISH)->EnableWindow(0);//取消按钮不可用
(CEdit*)GetDlgItem(IDC_DOSS_NAME)->EnableWindow(0); //名称编辑框不可用
(CEdit*)GetDlgItem(IDC_DOSS_REMARK)->EnableWindow(0); //备注编辑框不可用
//清空编辑框中的内容
m_strName.Empty();
m_strRemark.Empty();
m_strID.Empty();
m_strFlag.Empty(); //清空标志变量中的内容
UpdateData(0);
}
//*****************作者添加*******************************//
*pResult = 0;
}
void CDossierDlg::OnDossAdd()
{
m_strFlag="添加"; //将标志变量内容变为“添加”
(CEdit*)GetDlgItem(IDC_DOSS_NAME)->EnableWindow(1); //名称编辑框可用
(CEdit*)GetDlgItem(IDC_DOSS_REMARK)->EnableWindow(1); //备注编辑框可用
(CButton*)GetDlgItem(IDC_DOSS_ADD)->EnableWindow(0); //添加不可用
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -