⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dossierdlg.cpp

📁 关于固定资产管理系统的源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -