📄 adminpage.cpp
字号:
// AdminPage.cpp : implementation file
//
#include "stdafx.h"
#include "TProd.h"
#include "AdminPage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern CTProdApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CAdminPage dialog
CAdminPage::CAdminPage(CWnd* pParent /*=NULL*/)
: CDialog(CAdminPage::IDD, pParent)
{
//{{AFX_DATA_INIT(CAdminPage)
m_adappname = _T("");
m_adtpno = _T("");
m_adkgs = _T("");
m_adoeno = _T("");
m_adprodname = _T("");
m_adqty = _T("");
m_adsize = _T("");
m_adoe = _T("");
m_adpicname = _T("");
//}}AFX_DATA_INIT
m_nCurrentSel=-1;
m_bSuccess = FALSE;
m_bAutoSave = TRUE;
picpath="1.jpg";
}
void CAdminPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAdminPage)
DDX_Control(pDX, IDC_COUNT, m_count);
DDX_Control(pDX, IDC_SELPIC, m_selpic);
DDX_Control(pDX, IDC_ADOE, m_99);
DDX_Control(pDX, IDOK, m_okbt);
DDX_Control(pDX, IDC_DELETE, m_deletebt);
DDX_Control(pDX, IDC_MODIFY, m_modifybt);
DDX_Control(pDX, IDC_ADDNEW, m_addbt);
DDX_Control(pDX, IDC_ADMINLIST, m_adminlist);
DDX_Control(pDX, IDC_ADTPNO, m_88);
DDX_Control(pDX, IDC_ADSIZE, m_77);
DDX_Control(pDX, IDC_ADQTY, m_66);
DDX_Control(pDX, IDC_ADPRODNAME, m_55);
DDX_Control(pDX, IDC_ADPICPATH, m_44);
DDX_Control(pDX, IDC_ADOENO, m_33);
DDX_Control(pDX, IDC_ADKGS, m_22);
DDX_Control(pDX, IDC_ADAPPNAME, m_11);
DDX_Text(pDX, IDC_ADAPPNAME, m_adappname);
DDX_Text(pDX, IDC_ADTPNO, m_adtpno);
DDX_Text(pDX, IDC_ADKGS, m_adkgs);
DDX_Text(pDX, IDC_ADOENO, m_adoeno);
DDX_Text(pDX, IDC_ADPRODNAME, m_adprodname);
DDX_Text(pDX, IDC_ADQTY, m_adqty);
DDX_Text(pDX, IDC_ADSIZE, m_adsize);
DDX_Control(pDX, IDC_ADMINPIC, m_adPicture);
DDX_Text(pDX, IDC_ADOE, m_adoe);
DDX_Text(pDX, IDC_ADPICPATH, m_adpicname);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAdminPage, CDialog)
//{{AFX_MSG_MAP(CAdminPage)
ON_BN_CLICKED(IDC_MODIFY, OnModify)
ON_BN_CLICKED(IDC_ADDNEW, OnAddnew)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_BN_CLICKED(IDC_SELPIC, OnSelpic)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_ADMINLIST, OnItemchangedUserlist)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAdminPage message handlers
void CAdminPage::ListInit()
{
//设置颜色
const COLORREF BGColor = RGB(250, 250,250);
const COLORREF BGTColor = RGB(255, 0, 0);
const COLORREF BGTBColor = RGB(250,250, 250);
m_adminlist.SetBkColor(BGColor);
m_adminlist.SetTextColor(BGTColor);
m_adminlist.SetTextBkColor(BGTBColor);
//设表格表题
m_adminlist.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_adminlist.InsertColumn(0,_T("TP NO."),LVCFMT_IMAGE|LVCFMT_LEFT);
m_adminlist.InsertColumn(1,_T("ARTICLE"));
m_adminlist.InsertColumn(2,_T("O.E.NO."));
m_adminlist.InsertColumn(3,_T("MAKER"));
m_adminlist.InsertColumn(4,_T("APPLICATION"));
m_adminlist.InsertColumn(5,_T("SIZE"));
m_adminlist.InsertColumn(6,_T("QTY"));
m_adminlist.InsertColumn(7,_T("KGS"));
//列的宽度
m_adminlist.SetColumnWidth(0 ,48);
m_adminlist.SetColumnWidth(1 ,150);
m_adminlist.SetColumnWidth(2 ,105);
m_adminlist.SetColumnWidth(3 ,80);
m_adminlist.SetColumnWidth(4 ,130);
m_adminlist.SetColumnWidth(5,50);
m_adminlist.SetColumnWidth(6,35);
m_adminlist.SetColumnWidth(7,50);
}
BOOL CAdminPage::OnInitDialog()
{
CDialog::OnInitDialog();
ListInit();
LoadData();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CAdminPage::OnModify()
{
if(m_nCurrentSel==-1)
MessageBox("You must select one item at first.\n Then you can modify information.");
else
{
UpdateData(); // 更新对话框数据
CheckVar();
// 修改当前记录的字段值
try
{
m_pRecordsetAdmin->PutCollect("tpno", _variant_t(m_adtpno));
m_pRecordsetAdmin->PutCollect("prodname", _variant_t(m_adprodname));
m_pRecordsetAdmin->PutCollect("oeno", _variant_t(m_adoeno));
m_pRecordsetAdmin->PutCollect("appname", _variant_t(m_adappname));
m_pRecordsetAdmin->PutCollect("size", _variant_t(m_adsize));
m_pRecordsetAdmin->PutCollect("kgs", _variant_t(m_adkgs));
m_pRecordsetAdmin->PutCollect("qty", _variant_t(m_adqty));
m_pRecordsetAdmin->PutCollect("oename", _variant_t(m_adoe));
m_pRecordsetAdmin->PutCollect("picname", _variant_t(m_adpicname));
m_pRecordsetAdmin->Update();
LoadData();//列表重新加载数据
m_pRecordsetAdmin->Move(m_nCurrentSel,_variant_t((long)adBookmarkFirst));//再次移动指针到修改位置
MessageBox(" Success!");
UpdateData(false);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
}
void CAdminPage::OnAddnew()
{
if(m_nCurrentSel==-1)
MessageBox(" You must select one item at first.\n Then you can input new information.");
else
{
if(UpdateData())
{
CheckVar();
m_pRecordsetAdmin->AddNew();
m_nCurrentSel = m_adminlist.InsertItem(0xffff,"");
SaveData();///保存数据
m_adminlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
m_adminlist.SetHotItem(m_nCurrentSel);
m_adminlist.SetFocus();
LoadData();//列表重新加载数据
m_pRecordsetAdmin->Move(m_nCurrentSel,_variant_t((long)adBookmarkFirst));//再次移动指针到修改位置
MessageBox(" Success!");
UpdateData(false);
}
}
}
void CAdminPage::OnDelete()
{
m_bAutoSave = FALSE;
if(m_nCurrentSel >= 0)
{
m_adminlist.DeleteItem(m_nCurrentSel);
int count = m_adminlist.GetItemCount();
if(count <= m_nCurrentSel)
m_nCurrentSel = count-1;
m_pRecordsetAdmin->Delete(adAffectCurrent);
m_pRecordsetAdmin->MoveNext();
LoadData();
m_adminlist.SetItemState(m_nCurrentSel,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);
m_adminlist.SetFocus();
MessageBox(" Success!");
}
m_bAutoSave = TRUE;
}
void CAdminPage::OnSelpic()
{
CString sourcepic,Fliename,image="image\\",picpathtemp,picpathsel;
char *path;
CFileDialog Dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"Picture(*.jpg)|*.jpg|",NULL);
if(Dlg.DoModal()!=IDOK)
return;
m_adpicname=Dlg.GetFileTitle();//取得图片主文件名赋值给编辑控件,以便输入数据库
sourcepic=Dlg.GetPathName();//取得图片文件整个路径
Fliename=Dlg.GetFileName();//取得图片文件全名
TCHAR exeFullPath[MAX_PATH];// MAX_PATH在API中定义了吧,好象是 128
//程序完全路径
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
//分离路径
path = exeFullPath;
while(strchr(path,'\\'))
{
path = strchr(path,'\\');
path++;
}
*path ='\0';
picpathtemp=exeFullPath+image;//图片文件夹
picpathsel=picpathtemp+Fliename;//图片全路径
CopyFile(sourcepic, picpathsel, FALSE); //复制文件
m_adPicture.SetImage(picpathsel);
m_adPicture.Display();//加载图片
UpdateData(false); //更新文件名编辑控件
}
//将数据库信息读到列表
void CAdminPage::LoadData()
{
m_adminlist.DeleteAllItems();
int nItem,i=0;//i为计数器
_variant_t var;
CString SQLstr,sLabel;
SQLstr="SELECT * FROM prodinfo order by oeno";
try
{
m_pRecordsetAdmin.CreateInstance("ADODB.Recordset");
m_pRecordsetAdmin->Open(_bstr_t(SQLstr),_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
m_bSuccess = TRUE;
while(!m_pRecordsetAdmin->adoEOF)
{
var = m_pRecordsetAdmin->GetCollect("tpno");
if(var.vt != VT_NULL)
vTpno = (LPCSTR)_bstr_t(var);
else vTpno=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("prodname");
if(var.vt != VT_NULL)
vProdname = (LPCSTR)_bstr_t(var);
else vProdname=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("oename");
if(var.vt != VT_NULL)
vOename = (LPCSTR)_bstr_t(var);
else vOename=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("oeno");
if(var.vt != VT_NULL)
vOeno = (LPCSTR)_bstr_t(var);
else vOeno=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("appname");
if(var.vt != VT_NULL)
vAppname = (LPCSTR)_bstr_t(var);
else vAppname=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("size");
if(var.vt != VT_NULL)
vSize = (LPCSTR)_bstr_t(var);
else vSize=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("qty");
if(var.vt != VT_NULL)
vQty = (LPCSTR)_bstr_t(var);
else vQty=(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("kgs");
if(var.vt != VT_NULL)
vKgs = (LPCSTR)_bstr_t(var);
else vKgs=(LPCSTR)_bstr_t("NULL");
nItem=m_adminlist.InsertItem(0xffff,(_bstr_t)vTpno);
m_adminlist.SetItem(nItem,1,1,(_bstr_t)vProdname,NULL,0,0,0);
m_adminlist.SetItem(nItem,2,1,(_bstr_t)vOeno,NULL,0,0,0);
m_adminlist.SetItem(nItem,3,1,(_bstr_t)vOename,NULL,0,0,0);
m_adminlist.SetItem(nItem,4,1,(_bstr_t)vAppname,NULL,0,0,0);
m_adminlist.SetItem(nItem,5,1,(_bstr_t)vSize,NULL,0,0,0);
m_adminlist.SetItem(nItem,6,1,(_bstr_t)vQty,NULL,0,0,0);
m_adminlist.SetItem(nItem,7,1,(_bstr_t)vKgs,NULL,0,0,0);
i++;
m_pRecordsetAdmin->MoveNext();
}
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox("Read Database Fail!");///显示错误信息
}
sLabel.Format( _T( "There are %d records in " )
_T( "database." ), i );
m_count.SetWindowText( sLabel );
}
//////////在选择列表框的时候调用///////////////////
void CAdminPage::OnItemchangedUserlist(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->uNewState&LVIS_SELECTED)
{
UpdateData();
// SaveData();///保存旧数据
m_nCurrentSel = pNMListView->iItem;
LoadProdInfo();///加载数据
LoadPic();//加载图片
// m_cDelItem.EnableWindow();
}
*pResult = 0;
}
//将产品信息加载到编辑控件
void CAdminPage::LoadProdInfo()
{
m_pRecordsetAdmin->Move(m_nCurrentSel,_variant_t((long)adBookmarkFirst));
_variant_t var;
try
{
var = m_pRecordsetAdmin->GetCollect("tpno");
if(var.vt != VT_NULL)
{
m_adtpno=(LPCSTR)_bstr_t(var);
}
else m_adtpno=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("prodname");
if(var.vt != VT_NULL)
{
m_adprodname=(LPCSTR)_bstr_t(var);
}
else m_adprodname=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("oeno");
if(var.vt != VT_NULL)
{
m_adoeno=(LPCSTR)_bstr_t(var);
}
else m_adoeno=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("appname");
if(var.vt != VT_NULL)
{
m_adappname=(LPCSTR)_bstr_t(var);
}
else m_adappname=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("size");
if(var.vt != VT_NULL)
{
m_adsize=(LPCSTR)_bstr_t(var);
}
else m_adsize=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("kgs");
if(var.vt != VT_NULL)
{
m_adkgs=(LPCSTR)_bstr_t(var);
}
else m_adkgs=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("qty");
if(var.vt != VT_NULL)
{
m_adqty=(LPCSTR)_bstr_t(var);
}
else m_adqty=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("picname");
if(var.vt != VT_NULL)
{
m_adpicname=(LPCSTR)_bstr_t(var);
}
else m_adpicname=(CString)(LPCSTR)_bstr_t("NULL");
var = m_pRecordsetAdmin->GetCollect("oename");
if(var.vt != VT_NULL)
{
m_adoe=(LPCSTR)_bstr_t(var);
}
else m_adoe=(CString)(LPCSTR)_bstr_t("NULL");
}
catch(_com_error e)///捕捉异常
{
AfxMessageBox("Read Database Fail!");///显示错误信息
}
UpdateData(FALSE);
}
//加载产品图片
void CAdminPage::LoadPic()
{
GetProgramPath();
picpath="image\\"+m_adpicname+".jpg";
picpathjd=exeFullPath+picpath;
m_adPicture.SetImage(picpathjd);
m_adPicture.Display();
}
//检查输入变量,防止空字串
void CAdminPage::CheckVar()
{
if(m_adtpno=="")
m_adtpno="NULL";
if(m_adprodname=="")
m_adprodname="NULL";
if(m_adoeno=="")
m_adoeno="NULL";
if(m_adappname=="")
m_adappname="NULL";
if(m_adsize=="")
m_adsize="NULL";
if(m_adqty=="")
m_adqty="NULL";
if(m_adkgs=="")
m_adkgs="NULL";
if(m_adoe=="")
m_adoe="NULL";
if(m_adpicname=="")
m_adpicname="NULL";
}
void CAdminPage::SaveData()
{
try
{
if(!m_pRecordsetAdmin->adoEOF && m_nCurrentSel >= 0 && m_bAutoSave)
{
m_pRecordsetAdmin->PutCollect("tpno", _variant_t(m_adtpno));
m_pRecordsetAdmin->PutCollect("prodname", _variant_t(m_adprodname));
m_pRecordsetAdmin->PutCollect("oeno", _variant_t(m_adoeno));
m_pRecordsetAdmin->PutCollect("appname", _variant_t(m_adappname));
m_pRecordsetAdmin->PutCollect("size", _variant_t(m_adsize));
m_pRecordsetAdmin->PutCollect("kgs", _variant_t(m_adkgs));
m_pRecordsetAdmin->PutCollect("qty", _variant_t(m_adqty));
m_pRecordsetAdmin->PutCollect("oename", _variant_t(m_adoe));
m_pRecordsetAdmin->PutCollect("picname", _variant_t(m_adpicname));
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void CAdminPage::GetProgramPath()
{
//程序完全路径
char *path;
GetModuleFileName(NULL,exeFullPath,MAX_PATH);
//分离路径
path = exeFullPath;
while(strchr(path,'\\'))
{
path = strchr(path,'\\');
path++;
}
*path ='\0';
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -