📄 mzgldlg.cpp
字号:
// MZGLDlg.cpp : implementation file
//
#include "stdafx.h"
#include "MZGL.h"
#include "MZGLDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
int m_sortc;
int m_Ac;
int CALLBACK ListCompare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
char stmp[256];
CListCtrl* cd = (CListCtrl*)lParamSort;
CString mm=cd->GetItemText((int)lParam1,m_sortc);
::WideCharToMultiByte(CP_ACP, 0,mm, -1, stmp,256, NULL, NULL);
double s1=atof(stmp);
mm=cd->GetItemText((int)lParam2,m_sortc);
::WideCharToMultiByte(CP_ACP, 0,mm, -1, stmp,256, NULL, NULL);
double s2=atof(stmp);
int iComp;
if(s1<s2)
iComp=1;
else
iComp=-1;
if(m_Ac)
return iComp;
else
return iComp*-1;
}
/////////////////////////////////////////////////////////////////////////////
// CMZGLDlg dialog
CMZGLDlg::CMZGLDlg(CWnd* pParent /*=NULL*/)
: CDialog(CMZGLDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMZGLDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMZGLDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMZGLDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMZGLDlg, CDialog)
//{{AFX_MSG_MAP(CMZGLDlg)
ON_BN_CLICKED(IDC_PD, OnPd)
ON_BN_CLICKED(IDC_JY, OnJy)
ON_BN_CLICKED(IDC_NEW_YD, OnNewYd)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMZGLDlg message handlers
BOOL CMZGLDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
CenterWindow(GetDesktopWindow()); // center to the hpc screen
return TRUE; // return TRUE unless you set the focus to a control
}
void CMZGLDlg::OnPd()
{
CPdDlg dlg;
dlg.DoModal();
}
/////////////////////////////////////////////////////////////////////////////
// CPdDlg dialog
CPdDlg::CPdDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPdDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CPdDlg)
m_sl = 0.0;
m_yname = _T("");
m_time = 0;
//}}AFX_DATA_INIT
}
void CPdDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPdDlg)
DDX_Control(pDX, IDC_SL, m_csl);
DDX_Control(pDX, IDC_IN_LIST, m_lc);
DDX_Text(pDX, IDC_SL, m_sl);
DDX_Text(pDX, IDC_YNAME, m_yname);
DDX_DateTimeCtrl(pDX, IDC_DATETIME, m_time);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPdDlg, CDialog)
//{{AFX_MSG_MAP(CPdDlg)
ON_BN_CLICKED(IDC_CYNAME, OnCyname)
ON_BN_CLICKED(IDC_ADD, OnAdd)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPdDlg message handlers
void CPdDlg::OnCyname()
{
yd->ShowWindow(SW_SHOW);
yd->m_cyname.SetFocus();
}
void CPdDlg::OnAdd()
{
UpdateData();
CFile ydf;
ydf.Open(_T("\\sd\\sf\\yd.dat"),CFile::modeRead,NULL);
YPINFO yi;
ydf.Seek(sizeof yi*m_ypid,CFile::begin);
ydf.Read(&yi,sizeof yi);
CString mm;
mm.Format(_T("%d"),m_ypid);
int nSub=1;
m_lc.InsertItem(0,mm);
mm=yi.ypname;
m_lc.SetItemText(0,nSub++,mm);
mm=yi.guige;
m_lc.SetItemText(0,nSub++,mm);
mm.Format(_T("%.2f"),yi.lsj);
m_lc.SetItemText(0,nSub++,mm);
mm.Format(_T("%.2f"),m_sl);
m_lc.SetItemText(0,nSub++,mm);
mm.Format(_T("%d"),m_time.GetYear());
mm.Format(mm+_T("%d"),m_time.GetMonth());
mm.Format(mm+_T("%d"),m_time.GetDay());
m_lc.SetItemText(0,nSub++,mm);
ydf.Close();
OnCyname();
}
BOOL CPdDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_time=CTime::GetCurrentTime();
UpdateData(FALSE);
m_lc.SetExtendedStyle(LVS_EX_FULLROWSELECT);
int nItem = 0;
TCHAR *he[]={_T("编号"),_T("药名"),_T("规格"),_T("售价"),_T("数量"),_T("有效期")};
int le[]={0,90,50,40,40,40,0};
for(int l=0;l<3;l++)
{
m_lc.InsertColumn(nItem++, he[l], LVCFMT_LEFT,le[l]);
}
for(;l<6;l++)
{
m_lc.InsertColumn(nItem++, he[l], LVCFMT_RIGHT,le[l]);
}
yd = new CYdDlg();
yd->Create(IDD_YD_DIALOG);
yd->pdw=this;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/////////////////////////////////////////////////////////////////////////////
// CYdDlg dialog
CYdDlg::CYdDlg(CWnd* pParent /*=NULL*/)
: CDialog(CYdDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CYdDlg)
m_yname = _T("");
m_ypdl = _T("");
nyw=FALSE;
pdw=FALSE;
//}}AFX_DATA_INIT
}
void CYdDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CYdDlg)
DDX_Control(pDX, IDC_YNAME, m_cyname);
DDX_Control(pDX, IDC_OUT_LIST, m_lc);
DDX_Text(pDX, IDC_YNAME, m_yname);
DDX_CBString(pDX, IDC_YPDL, m_ypdl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CYdDlg, CDialog)
//{{AFX_MSG_MAP(CYdDlg)
ON_EN_CHANGE(IDC_YNAME, OnChangeYname)
ON_NOTIFY(NM_CLICK, IDC_OUT_LIST, OnClickOutList)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_NEW, OnNew)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CYdDlg message handlers
BOOL CYdDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_lc.SetExtendedStyle(LVS_EX_FULLROWSELECT);
int nItem = 0;
TCHAR *he[]={_T("编号"),_T("药名"),_T("进价"),_T("售价")};
int le[]={0,145,40,45};
for(int l=0;l<2;l++)
{
m_lc.InsertColumn(nItem++, he[l], LVCFMT_LEFT,le[l]);
}
for(;l<4;l++)
{
m_lc.InsertColumn(nItem++, he[l], LVCFMT_RIGHT,le[l]);
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CYdDlg::FindYD(CString yname,CString ypdl,BOOL isall)
{
CPdDlg *pd=(CPdDlg*)pdw;
m_lc.SetRedraw(FALSE);
m_lc.DeleteAllItems();
if(yname==_T(""))
{
m_lc.SetRedraw();
return;
}
CFile yd;
if(yd.Open(_T("\\sd\\sf\\yd.dat"),CFile::modeRead,NULL))
{
int nItem=0;
int id=0;
YPINFO yi;
yname.MakeLower();
while(yd.Read(&yi,sizeof yi))
{
CString l1,l2;
l1=yi.ypname;
l2=yi.ypjc;
l1.MakeLower();
l2.MakeLower();
if(l1.Find(yname)!=-1||l2.Find(yname)!=-1)
{
l1=yi.ypdl;
if((l1==ypdl&&isall==FALSE)||isall==TRUE)
{
int nSub=1;
if(yi.del!=TRUE)
{
CString mm;
mm.Format(_T("%d"),id);
nItem=m_lc.InsertItem(nItem,mm);
mm=yi.ypname;
mm+=yi.guige;
m_lc.SetItemText(nItem,nSub++,mm);
mm.Format(_T("%.2f"),yi.jinjia);
m_lc.SetItemText(nItem,nSub++,mm);
mm.Format(_T("%.2f"),yi.lsj);
m_lc.SetItemText(nItem,nSub++,mm);
nItem++;
}
}
}
id++;
}
yd.Close();
}
m_lc.SetRedraw();
}
void CYdDlg::OnChangeYname()
{
UpdateData();
if(m_ypdl!=_T(""))
FindYD(m_yname,m_ypdl,FALSE);
else
FindYD(m_yname,m_ypdl,TRUE);
}
void CYdDlg::OnClickOutList(NMHDR* pNMHDR, LRESULT* pResult)
{
CPdDlg *pd=(CPdDlg*)pdw;
CNewYdDlg *ny=(CNewYdDlg*)nyw;
this->ShowWindow(SW_HIDE);
m_yname=(_T(""));
UpdateData(FALSE);
char stmp[256];
int nItem=m_lc.GetNextItem(-1,LVNI_FOCUSED);
CFile yd;
YPINFO yi;
yd.Open(_T("\\sd\\sf\\yd.dat"),CFile::modeRead,NULL);
::WideCharToMultiByte(CP_ACP, 0,m_lc.GetItemText(nItem,0), -1, stmp,256, NULL, NULL);
int id=atoi(stmp);
yd.Seek(sizeof yi*id,CFile::begin);
yd.Read(&yi,sizeof yi);
if(pd)
{
pd->m_ypid=id;
pd->m_yname=yi.ypname;
pd->UpdateData(FALSE);
pd->SetForegroundWindow();
pd->m_csl.SetFocus();
pd->m_csl.SetSel(0,-1);
}
else if(ny)
{
ny->m_ypname=yi.ypname;
ny->m_ypid=id;
ny->m_danwei=yi.danwei;
ny->m_fplb=yi.fpfylb;
ny->m_guige=yi.guige;
ny->m_jinjia=yi.jinjia;
ny->m_pijia=yi.pifajia;
ny->m_sj=yi.lsj;
ny->m_yfbl=yi.yfdw;
ny->m_ypdl=yi.ypdl;
ny->m_ypjx=yi.ypjc;
ny->m_ypxl=yi.ypxl;
ny->m_ypzyl=yi.ypzyl;
ny->UpdateData(FALSE);
ny->SetForegroundWindow();
ny->m_cypname.SetFocus();
ny->m_cypname.SetSel(0,-1);
}
m_lc.DeleteAllItems();
yd.Close();
*pResult = 0;
}
void CYdDlg::OnDestroy()
{
this->ShowWindow(SW_HIDE);
}
void CPdDlg::OnDestroy()
{
CFile ykc;
char stmp[256];
int ckh=this->MessageBox(_T("药库、药房、取消?"),_T("提示!"),MB_YESNOCANCEL);
TABKC kc,tkc;
if(ckh==IDYES)
{
ckh=1;
}
else if(ckh==IDNO)
{
ckh=0;
}
else return;
ykc.Open(_T("\\sd\\sf\\ykc.dat"),CFile::modeReadWrite|CFile::modeCreate|CFile::modeNoTruncate,NULL);
int nItem=m_lc.GetItemCount();
for(int i=0;i<nItem;i++)
{
::WideCharToMultiByte(CP_ACP, 0,m_lc.GetItemText(i,0), -1, stmp,256, NULL, NULL);
kc.yp_id=atoi(stmp);
::WideCharToMultiByte(CP_ACP, 0,m_lc.GetItemText(i,4), -1, stmp,256, NULL, NULL);
kc.sl=atof(stmp);
kc.ckh=ckh;
::WideCharToMultiByte(CP_ACP, 0,m_lc.GetItemText(i,5), -1, stmp,256, NULL, NULL);
kc.yxx=atof(stmp);
ykc.SeekToBegin();
while(ykc.Read(&tkc,sizeof tkc))
{
if(kc.yp_id==tkc.yp_id&&kc.ckh==tkc.ckh)
{
kc.sl+=tkc.sl;
ykc.Seek(-(LONG)sizeof kc,CFile::current);
break;
}
}
ykc.Write(&kc,sizeof kc);
}
ykc.Close();
CDialog::OnDestroy();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -