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

📄 propadd3.cpp

📁 用Visual C++ 开发的项目管理系统
💻 CPP
字号:
// propAdd3.cpp : implementation file
//

#include "stdafx.h"
#include "FileMaSys.h"
#include "propAdd3.h"
#include "AddSheet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CFileMaSysApp theApp;
int  FCurrentItem;
/////////////////////////////////////////////////////////////////////////////
// CpropAdd3 property page

IMPLEMENT_DYNCREATE(CpropAdd3, CPropertyPage)

CpropAdd3::CpropAdd3() : CPropertyPage(CpropAdd3::IDD)
{
	//{{AFX_DATA_INIT(CpropAdd3)
	m_FileID = _T("");
	m_FileName = _T("");
	m_FileRemark = _T("");
	m_FileCount = 0;
	//}}AFX_DATA_INIT
	m_IDtrue=FALSE;
	m_font.CreatePointFont(100,"新宋体");
}

CpropAdd3::~CpropAdd3()
{
}

void CpropAdd3::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CpropAdd3)
	DDX_Control(pDX, IDC_BTN_MODIFY, m_BtnModifyControl);
	DDX_Control(pDX, IDC_BTN_DELETE, m_BtnDeleteControl);
	DDX_Control(pDX, IDC_BTN_ADD, m_BtnAddControl);
	DDX_Control(pDX, IDC_LIST_FILEINFO, m_FileInfoControl);
	DDX_Text(pDX, IDC_EDIT_FILEID, m_FileID);
	DDX_Text(pDX, IDC_EDIT_FILENAME, m_FileName);
	DDX_Text(pDX, IDC_EDIT_FILEREMARK, m_FileRemark);
	DDX_Text(pDX, IDC_EDIT_FILECOUNT, m_FileCount);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CpropAdd3, CPropertyPage)
	//{{AFX_MSG_MAP(CpropAdd3)
	ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
	ON_BN_CLICKED(IDC_BTN_MODIFY, OnBtnModify)
	ON_BN_CLICKED(IDC_BTN_DELETE, OnBtnDelete)
	ON_EN_KILLFOCUS(IDC_EDIT_FILEID, OnKillfocusEditFileid)
	ON_EN_KILLFOCUS(IDC_EDIT_FILENAME, OnKillfocusEditFilename)
	ON_NOTIFY(NM_DBLCLK, IDC_LIST_FILEINFO, OnDblclkListFileinfo)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CpropAdd3 message handlers

BOOL CpropAdd3::OnSetActive() 
{
	// TODO: Add your specialized code here and/or call the base class
	((CAddSheet *)GetParent())->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT );
	//添加列表控件的列头
	DWORD dwStyle;
	dwStyle=m_FileInfoControl.GetStyle();
	dwStyle |=LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT|LVS_SHOWSELALWAYS ;
	m_FileInfoControl.SetExtendedStyle(dwStyle);
	m_FileInfoControl.SetBkColor(RGB(0xec,0xf1,0xfd));
	m_FileInfoControl.SetTextBkColor(RGB(0xfe,0xFF,0xc6));
    //插入列表控件的列
    m_FileInfoControl.InsertColumn(0,"文件ID",LVCFMT_LEFT,120);
	m_FileInfoControl.InsertColumn(1,"文件名",LVCFMT_LEFT,120);
	m_FileInfoControl.InsertColumn(2,"数量",LVCFMT_LEFT,60);
	m_FileInfoControl.InsertColumn(3,"可借数量",LVCFMT_LEFT,60);
	m_FileInfoControl.InsertColumn(4,"说明",LVCFMT_LEFT,200);
	//禁止修改按钮
	m_BtnModifyControl.EnableWindow(FALSE);

	//设置添加按钮
	m_BtnAddControl.SetIcon(IDI_ICON_ADD);
	m_BtnAddControl.DrawTransparent(TRUE);
	m_BtnAddControl.SetColor(CButtonST::BTNST_COLOR_FG_IN,RGB(255,0,0));
	m_BtnAddControl.SetAlign(CButtonST::ST_ALIGN_HORIZ);
	//设置修改按钮
	m_BtnModifyControl.SetIcon(IDI_ICON_MODIFY);
	m_BtnModifyControl.DrawTransparent(TRUE);
	m_BtnModifyControl.SetColor(CButtonST::BTNST_COLOR_FG_IN,RGB(255,0,0));
	m_BtnModifyControl.SetAlign(CButtonST::ST_ALIGN_HORIZ);
	//设置删除按钮
	m_BtnDeleteControl.SetIcon(IDI_ICON_DELETE);
	m_BtnDeleteControl.DrawTransparent(TRUE);
	m_BtnDeleteControl.SetColor(CButtonST::BTNST_COLOR_FG_IN,RGB(255,0,0));
	m_BtnDeleteControl.SetAlign(CButtonST::ST_ALIGN_HORIZ);
	return CPropertyPage::OnSetActive();
}
//添加文件档案到列表框中
void CpropAdd3::OnBtnAdd() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	if (m_IDtrue && m_Nametrue)
	{
		int count=m_FileArray.GetSize();
		for (int i=0;i<count;i++)
		{
			if (((FILEHEADER *)m_FileArray[i])->FileID==m_FileID)
			{
				MessageBox("ID重复");
				return ;
			}
			else if (((FILEHEADER *)m_FileArray[i])->FileName==m_FileName)
			{
				MessageBox("名字重复");
				return ;
			}
		}
		FILEHEADER *FileHeader=new FILEHEADER;
		FileHeader->FileID=m_FileID;
		FileHeader->FileName=m_FileName;
		FileHeader->FileCount=m_FileCount;
		FileHeader->LendCount=m_FileCount;
		FileHeader->FileRemark=m_FileRemark;
		m_FileArray.Add(FileHeader);
		//添加电子文件信息到列表控件中
		m_FileInfoControl.InsertItem(count," ");
		m_FileInfoControl.SetItemText(count,0,m_FileID);
		m_FileInfoControl.SetItemText(count,1,m_FileName);
		CString str;
		str.Format("%d",m_FileCount);
		m_FileInfoControl.SetItemText(count,2,str);
		m_FileInfoControl.SetItemText(count,3,str);
		m_FileInfoControl.SetItemText(count,4,m_FileRemark);
		MessageBox("添加成功");
/*		CString str,str1;
		str+=m_FileID;
		str+=" ";
		str+=m_FileName;
		str+=" ";
		str1.Format("%d",m_FileCount);
		str+=str1;
		str+=" ";
		str+=m_FileRemark;
	    m_FileInfo.AddString(str);*/
	}
	else
	{
		MessageBox("文件ID或者名字已经存在");
	}
	
}
//修改列表框中已经添加的项目
void CpropAdd3::OnBtnModify() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	int count=m_FileArray.GetSize();
    for (int j=0;j<count;j++)
    {
		//修改的ID在阵列中没有重复的
		if ((((FILEHEADER *)m_FileArray[j])->FileID==m_FileID)&&(j!=FCurrentItem))
		{
			MessageBox("ID重复");
			return ;
		}
		else if ((((FILEHEADER *)m_FileArray[j])->FileName==m_FileName)&&(j!=FCurrentItem))
		{
			MessageBox("名字重复");
			return ;
		}
    }
	//修改数组中的值
	FILEHEADER * FileHeader=(FILEHEADER*)m_FileArray[FCurrentItem];
	FileHeader->FileID=m_FileID;
	FileHeader->FileName=m_FileName;
	FileHeader->FileCount=m_FileCount;
	FileHeader->FileRemark=m_FileRemark;
	//修改列表控件中的值
	m_FileInfoControl.SetItemText(count,0,m_FileID);
	m_FileInfoControl.SetItemText(count,1,m_FileName);
	CString str;
	str.Format("%d",m_FileCount);
	m_FileInfoControl.SetItemText(count,2,str);
	m_FileInfoControl.SetItemText(count,3,str);
	m_FileInfoControl.SetItemText(count,4,m_FileRemark);
	MessageBox("修改成功");
	m_BtnModifyControl.EnableWindow(FALSE);
/*	int i=m_FileInfo.GetCurSel();
	m_FileInfo.DeleteString(i);
	m_FileArray.RemoveAt(i);
	int count=m_FileArray.GetSize();
    for (int j=0;j<count;j++)
    {
		if (((FILEHEADER *)m_FileArray[j])->FileID==m_FileID)
		{
			MessageBox("ID重复");
			return ;
		}
		else if (((FILEHEADER *)m_FileArray[i])->FileName==m_FileName)
		{
			MessageBox("名字重复");
			return ;
		}
    }
	FILEHEADER * FileHeader=new FILEHEADER;
	FileHeader->FileID=m_FileID;
	FileHeader->FileName=m_FileName;
	FileHeader->FileCount=m_FileCount;
	FileHeader->FileRemark=m_FileRemark;
	m_FileArray.InsertAt(i,FileHeader);*/
/*	CString str,str1;
	str+=m_FileID;
	str+="  ";
	str+=m_FileName;
	str+="  ";
	str1.Format("%d",m_FileCount);
	str+=str1;
	str+="  ";
	str+=m_FileRemark;
	m_FileInfo.InsertString(i,str);*/
}

void CpropAdd3::OnBtnDelete() 
{
	// TODO: Add your control notification handler code here
/*	int i=m_FileInfo.GetCurSel();
	m_FileInfo.DeleteString(i);
	m_FileArray.RemoveAt(i);*/
	POSITION pos=m_FileInfoControl.GetFirstSelectedItemPosition();
	if (pos!=NULL)
	{
		FCurrentItem=m_FileInfoControl.GetNextSelectedItem(pos);
		m_FileInfoControl.DeleteItem(FCurrentItem);
	    m_FileArray.RemoveAt(FCurrentItem);
		MessageBox("删除成功");
	}
	
}
//判断档案文件ID是否在数据库中存在
void CpropAdd3::OnKillfocusEditFileid() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CString str1("文件ID已经存在");
	CString str2("文件ID不能为空");
	CString str3("文件ID可以使用");
	HICON iconError=(HICON)LoadImage(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON_ERROR),
		IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
	HICON iconRight=(HICON)LoadImage(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON_RIGHT),
			                IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
	if (!m_FileID.IsEmpty())
	{
		
        CString sql="select FileID From FileTable Where FileID='"+m_FileID+"' ";
		m_RecordInfo.CreateInstance("ADODB.Recordset");
		m_RecordInfo->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),
			adOpenDynamic,adLockOptimistic,adCmdText);
		if (m_RecordInfo->GetRecordCount()!=0)
		{
			m_IDtrue=FALSE;
			CreateStaticIconText(GetDlgItem(IDC_EDIT_FILEID),str1,iconError,m_IconStatic,m_TextStatic);
		}
		else
		{
			m_IDtrue=TRUE;
			CreateStaticIconText(GetDlgItem(IDC_EDIT_FILEID),str3,iconRight,m_IconStatic,m_TextStatic);
		}
	    m_RecordInfo->Close();
	}
	else
	{
		m_IDtrue=FALSE;
		CreateStaticIconText(GetDlgItem(IDC_EDIT_FILEID),str2,iconError,m_IconStatic,m_TextStatic);
	}
}
//判断档案文件名称是否在数据库中存在
void CpropAdd3::OnKillfocusEditFilename() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CString str1("文件名称已经存在");
	CString str2("文件名称不能为空");
	CString str3("文件名称可以使用");
	HICON iconError=(HICON)LoadImage(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON_ERROR),
		IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
	HICON iconRight=(HICON)LoadImage(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON_RIGHT),
		IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
	if (!m_FileName.IsEmpty())
	{
        CString sql="select FileName From FileTable Where FileName='"+m_FileName+"' ";
		m_RecordInfo.CreateInstance("ADODB.Recordset");
		m_RecordInfo->Open((_variant_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),
			adOpenDynamic,adLockOptimistic,adCmdText);
		if (m_RecordInfo->GetRecordCount()!=0)
		{
			m_Nametrue=FALSE;
			CreateStaticIconText(GetDlgItem(IDC_EDIT_FILENAME),str1,iconError,m_NameIcon,m_NameText);
		}
		else
		{
			m_Nametrue=TRUE;
			CreateStaticIconText(GetDlgItem(IDC_EDIT_FILENAME),str3,iconRight,m_NameIcon,m_NameText);
		}
		m_RecordInfo->Close();
	}
	else
	{
		m_Nametrue=FALSE;
		CreateStaticIconText(GetDlgItem(IDC_EDIT_FILENAME),str2,iconError,m_NameIcon,m_NameText);
	}
}

void CpropAdd3::OnDblclkListFileinfo(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	POSITION pos=m_FileInfoControl.GetFirstSelectedItemPosition();
	FCurrentItem=m_FileInfoControl.GetNextSelectedItem(pos);
	FILEHEADER * pFileHeader=(FILEHEADER *)m_FileArray[FCurrentItem];
	m_FileID=pFileHeader->FileID;
	m_FileName=pFileHeader->FileName;
	m_FileCount=pFileHeader->FileCount;
	m_FileRemark=pFileHeader->FileRemark;
	UpdateData(FALSE);
	m_BtnModifyControl.EnableWindow(TRUE);
	*pResult = 0;
}

void CpropAdd3::CreateStaticIconText(CWnd *Control, CString str, HICON &Icon, CStatic &StaticIcon, CStatic &StaticText)
{
    CRect rectControl,rectIcon,rectText;
	Control->GetWindowRect(&rectControl);
	rectIcon.top=rectControl.top;
	rectIcon.bottom=rectControl.bottom;
	rectIcon.left=rectControl.right;
	rectIcon.right=rectIcon.left+20;
	
	rectText.top=rectIcon.top;
	rectText.bottom=rectIcon.bottom;
	rectText.left=rectIcon.right;
	rectText.right=rectText.left+120;
	ScreenToClient(&rectIcon);
	ScreenToClient(&rectText);
	//设置静态控件为图标格式
	if (StaticIcon.m_hWnd!=NULL)
	{
		StaticIcon.DestroyWindow();
		StaticIcon.Create(" ",WS_VISIBLE | WS_CHILD |SS_ICON |SS_CENTERIMAGE ,rectIcon,this);
		StaticIcon.SetIcon(Icon);
	}
	else
	{
		StaticIcon.Create(" ",WS_VISIBLE | WS_CHILD |SS_ICON |SS_CENTERIMAGE ,rectIcon,this);
		StaticIcon.SetIcon(Icon);
	}
	//动态生成文本静态控件
	
	if (StaticText.m_hWnd!=NULL)
	{
		StaticText.DestroyWindow();
		StaticText.Create(str,WS_VISIBLE | WS_CHILD | SS_CENTERIMAGE ,rectText,this);
		StaticText.SetFont(&m_font,TRUE);
	}
	else
	{
		StaticText.Create(str,WS_VISIBLE | WS_CHILD | SS_CENTERIMAGE ,rectText,this);
		StaticText.SetFont(&m_font,TRUE);
	}
}

LRESULT CpropAdd3::OnWizardNext() 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CPropertyPage::OnWizardNext();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -