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

📄 dlgkcpd.cpp

📁 进销存管理系统介绍了企业的现状以及进销存数据管理系统的特点、功能和使用对象
💻 CPP
字号:
// DlgKCPD.cpp : implementation file
//

#include "stdafx.h"
#include "a1.h"
#include "DlgKCPD.h"
#include "ScrollPrintView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgKCPD dialog


CDlgKCPD::CDlgKCPD(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgKCPD::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgKCPD)
	m_iJsr = -1;
	m_tRq = 0;
	//}}AFX_DATA_INIT
	this->m_listKcpd=NULL;
	 m_draw=new CDrawKCPD(this);
}

void CDlgKCPD::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgKCPD)
	DDX_Control(pDX, IDC_EDIT1, m_editPh);
	DDX_Control(pDX, IDC_BUTTON2, m_btnDel);
	DDX_Control(pDX, IDCANCEL, m_btnCancel);
	DDX_Control(pDX, IDC_BUTTON1, m_btnOk);
	DDX_Control(pDX, IDC_DATETIMEPICKER1, m_tcRq);
	DDX_Control(pDX, IDC_COMBO1, m_comboJsr);
	DDX_CBIndex(pDX, IDC_COMBO1, m_iJsr);
	DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_tRq);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CDlgKCPD, CDialog)
	//{{AFX_MSG_MAP(CDlgKCPD)
	ON_BN_CLICKED(IDC_BUTTON2, OnButtonDelete)
	ON_BN_CLICKED(IDC_BUTTON1, OnButtonOk)
	ON_WM_MOVE()
	ON_BN_CLICKED(IDC_BUTTON_PRINT, OnButtonPrint)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgKCPD message handlers

bool CDlgKCPD::InitnListKcpd()
{
		CRect rect_nlist(10,150,700,350);
		this->GetClientRect(&rect_nlist);
		rect_nlist.top=110;
		rect_nlist.left+=10;
		rect_nlist.right-=10;
		rect_nlist.bottom=340;
	m_listKcpd=new CListKCPD;
	m_listKcpd->Create(WS_CHILD|WS_VISIBLE|LVS_REPORT|WS_BORDER,rect_nlist,this,ID_NEWLISTLSXSDJ);

	this->m_listKcpd->ModifyStyle(LVS_EDITLABELS, 0L);		//禁止标题编辑
	m_listKcpd->ModifyStyle(0L, LVS_REPORT);			//设为Report类型
	m_listKcpd->ModifyStyle(0L, LVS_SHOWSELALWAYS);		//始终高亮度被选中的表项
	m_listKcpd->ModifyStyle(0L, LVS_NOSORTHEADER);
//	m_listKcpd->SetBkColor(RGB(0,200,200));
//	m_listKcpd->SetTextBkColor(RGB(0,200,200));

	m_listKcpd->ModifyStyle( LVS_OWNERDRAWFIXED,0L);
	m_listKcpd->SetExtendedStyle( LVS_EX_FULLROWSELECT |		//允许整行选中
	//	LVS_EX_HEADERDRAGDROP |		//允许整列拖动
		LVS_EX_GRIDLINES |	//画出网格线
	//	LVS_EX_ONECLICKACTIVATE |	//单击选中表项
		LVS_EX_FLATSB				//扁平风格的滚动条	
	//	LVS_EX_UNDERLINEHOT 
		);	
	CString str;
	// 1、先产生numTitle列
//	m_listKcpd->SetItemCount(20);
	int i=0;

	m_listKcpd->InsertColumn( i, "仓库名称" );
	m_listKcpd->InsertColumn( 1, "药品编号" );
	m_listKcpd->InsertColumn( 2, "药品名称" );
	m_listKcpd->InsertColumn( 3, "数量" );

	// 2、插入1行
		m_listKcpd->InsertItem(0,"");
	// 3、调整列宽
	RECT rect2;
	m_listKcpd->GetWindowRect(&rect2);
	int wid = rect2.right - rect2.left;

	for( i=0; i<4; i++ )
	{

		m_listKcpd->SetItemText(0,i,"");
		m_listKcpd->SetColumnWidth( i, wid/4 );
	}
	
	m_listKcpd->SetSubItemCanEdited(0);
	m_listKcpd->SetSubItemCanEdited(1);
	m_listKcpd->SetSubItemCanEdited(2);
	m_listKcpd->SetSubItemCanEdited(3);

	m_listKcpd->Invalidate(false);
	return true;

}



BOOL CDlgKCPD::OnInitDialog() 
{
	CDialog::OnInitDialog();
	InitBaseInfo();
	InitnListKcpd();
	this->m_editPh.SetWindowText(this->ChanShengPh());

	::PostMessage(this->m_tcRq.GetSafeHwnd(),WM_ACTIVATE ,WA_CLICKACTIVE,0);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

bool CDlgKCPD::InitBaseInfo()
{
	m_font.CreateFont(-12, 0, 0, 0, 400, FALSE, FALSE,
	                0,GB2312_CHARSET , OUT_DEFAULT_PRECIS,//ANSI_CHARSET
	                CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
	                 VARIABLE_PITCH | FF_SCRIPT, "楷体_GB2312");//DEFAULT_PITCH FF_MODERN

	m_headfont.CreateFont(-24, 0, 0, 0, 400, FALSE, FALSE,
	                0,GB2312_CHARSET , OUT_DEFAULT_PRECIS,//ANSI_CHARSET
	                CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
	                 VARIABLE_PITCH | FF_SCRIPT, "楷体_GB2312");//DEFAULT_PITCH FF_MODERN
	this->GetDlgItem(IDC_STATIC_KCPD)->SetFont(&m_headfont,true);
	CRect rect;
	this->GetClientRect(&rect);
	rect.left+=10;
	rect.right-=320;
	rect.top+=10;
	rect.bottom=90;
	m_wt.Create("",WS_CHILD|WS_VISIBLE,rect,this,700);
	rect=CRect(15,25,100,45); 
	this->m_wfRq.Create("日期:",WS_CHILD|WS_VISIBLE,rect,&m_wt);
	rect.OffsetRect(0,25);
	m_wfRq.SetFont(&m_font,true);
	this->m_wfJsr.Create("经手人:",WS_CHILD|WS_VISIBLE,rect,&m_wt);
	m_wfJsr.SetFont(&m_font,true);

	this->m_comboJsr.SetParent(&m_wt);
	this->m_tcRq.SetParent(&m_wt);
	this->m_comboJsr.SetFont(&m_font,true);
	this->m_tcRq.SetFont(&m_font,true);


	m_tRq=CTime::GetCurrentTime();
	this->m_tcRq.SetTime(&m_tRq);
	CString sql;
	sql.Format("select yg_name from tabyginfo");
	this->m_runsql.RunSQL(sql);
	_variant_t value;
	while(!m_runsql.m_recordset->adoEOF)
	{
		value=m_runsql.m_recordset->GetCollect("yg_name");
		this->m_comboJsr.AddString((char*)(_bstr_t)value);
		m_runsql.m_recordset->MoveNext();
	}
	//this->m_iJsr=0;
	this->m_comboJsr.SetCurSel(0);
//	this->UpdateData(false);
	return true;
}

void CDlgKCPD::OnOK() 
{
	// TODO: Add extra validation here
	//CDialog::OnOK();
}

void CDlgKCPD::OnButtonDelete() 
{
	this->m_listKcpd->DeleteSelected();
}

void CDlgKCPD::OnButtonOk() 
{
		this->BeginWaitCursor();
		this->EndWaitCursor();

		if(!this->m_listKcpd->CheckAll())return ;
		CString sql;int i=0;
		_variant_t value;
		CA1App * app=(CA1App*)AfxGetApp();
		CString pd_ph;this->m_editPh.GetWindowText(pd_ph);
		CString czy=app->m_sUserName;
		CString jsr;this->m_comboJsr.GetWindowText(jsr);
		CString rq;this->m_tcRq.GetWindowText(rq);
		long l_sl,old_sl,ying_kui;
		CString yp_id,yp_name,cangku;
		int n=m_listKcpd->GetItemCount();
		if(n<=0)
		{
			MessageBox("请输入登记信息","注意");
			this->m_listKcpd->m_iEditedIndex=-1;
			m_listKcpd->InsertItem(0,"");
			::PostMessage(m_listKcpd->GetSafeHwnd(),WM_SETFOCUS,0,0);
			::PostMessage(m_listKcpd->GetSafeHwnd(),SETNEXTITEMPHFOCUS,0,0);
			return ;
		}
		try{
		m_runsql.m_recordset->Close();
		LRunSql::BeginTrans();
		}
		catch(_com_error e)
		{
			MessageBox(e.ErrorMessage());
		}
		for(i=n-1;i>=0;i--)
		{
			cangku=this->m_listKcpd->GetItemText(i,0);
			yp_id=this->m_listKcpd->GetItemText(i,1);
			yp_name=this->m_listKcpd->GetItemText(i,2);
			l_sl=atoi(this->m_listKcpd->GetItemText(i,3));

			old_sl=atoi(m_listKcpd->m_strlistNo.GetAt(m_listKcpd->m_strlistNo.FindIndex(m_listKcpd->m_iKcSelected[i])));
			ying_kui=l_sl-old_sl;
			//save dj;		
			sql.Format("INSERT INTO tabkcpddj(pd_ph,yp_id,ck_name,ying_kui) VALUES('%s','%s','%s',%d)"
				,pd_ph,yp_id,cangku,ying_kui);
			this->m_runsql.RunSQL(sql);

			//save kc;
			sql.Format("update tabkc set kc_number = %d where yp_id='%s' and ck_name = '%s'",l_sl,yp_id,cangku);
			this->m_runsql.RunSQL(sql);
		}
		if(!LRunSql::CommitTrans())
		{
		MessageBox("数据库事务提交错误","医药管理系统");
		}
		else
		MessageBox("OK","医药管理系统");

		this->EndDialog(0);
}

CString CDlgKCPD::ChanShengPh()
{
//	this->UpdateData();
	CString sql;
	_bstr_t sql_;
	_variant_t value;
	CString s_value;
	CString s_date;
	CString ph;
	this->m_tcRq.GetWindowText(s_date);
	this->m_tcRq.GetTime(m_tRq);
	CString y_date,m_date,d_date;
	y_date=this->m_tRq.Format("%Y");
	m_date.Format("%d",this->m_tRq.GetMonth());
	d_date.Format("%d",m_tRq.GetDay());
	if(m_date.GetLength()==1)
		m_date=CString("0")+m_date;
	if(d_date.GetLength()==1)
		d_date=CString("0")+d_date;
	ph=y_date+"-"+m_date+"-"+d_date;
	ph=ph+"pdd";

	sql.Format("select pd_ph from tabkcpdph where rq='%s' order by pd_ph desc",s_date);
	if(m_runsql.CheckSQLResult(sql))
	{
		value=m_runsql.m_recordset->GetCollect("pd_ph");
		if(value.vt!=NULL)
		{
			s_value=(char*)(_bstr_t)value;
			s_value=s_value.Mid(s_value.GetLength()-4,4);
		}
	}
	else
	{
	s_value="0";
	}
	long l_value=atoi(s_value)+1;
	s_value.Format("%d",l_value);
	for(int i=s_value.GetLength();i<4;i++)
	{
		s_value="0"+s_value;
	}
	ph=ph+s_value;

	return ph;	
}

void CDlgKCPD::OnMove(int x, int y) 
{
	CDialog::OnMove(x, y);
	
	if(m_listKcpd!=NULL)
		if(m_listKcpd->m_hWnd!=NULL)
			::PostMessage(this->m_listKcpd->GetSafeHwnd(),MYMESSAGE_EDIT_MOVED,0,0);	
	
}

bool CDlgKCPD::SetTheFocus()
{
	HWND hwnd=::GetFocus();
	int iID=::GetDlgCtrlID(hwnd);
	switch(iID)
	{
	case IDC_DATETIMEPICKER1:
		{
			this->m_comboJsr.SetFocus();
			return true;
		}
	case IDC_COMBO1:
		{
			this->m_listKcpd->m_iEditedIndex=-1;
			::PostMessage(m_listKcpd->GetSafeHwnd(),WM_SETFOCUS,0,0);
			::PostMessage(m_listKcpd->GetSafeHwnd(),SETNEXTITEMPHFOCUS,0,0);
			return true;
		}
	case IDC_BUTTON1:
		{
			this->m_btnCancel.SetFocus();
			return true;

		}
	case IDCANCEL:
		{
//			
			this->m_tcRq.SetFocus();//mm_btnCancel.SetActiveWindow();	
			return true;
		}
	case IDC_BUTTON2:
		{
			this->m_btnOk.SetFocus();
			return true;
		}
	}
	return false;
}

BOOL CDlgKCPD::PreTranslateMessage(MSG* pMsg) 
{
	const HWND hwnd=(pMsg!=NULL)?pMsg->hwnd:NULL;
		if(hwnd==NULL) goto a;
		
	if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==13)
	{
		if(hwnd==this->m_btnOk.GetSafeHwnd()||
			hwnd==this->m_btnCancel.GetSafeHwnd()||
			hwnd==this->m_btnDel.GetSafeHwnd())
				::PostMessage(this->GetSafeHwnd(),WM_COMMAND,::GetDlgCtrlID(hwnd),(UINT)hwnd);
		else
		this->SetTheFocus();
	}
	if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_TAB)
	{
			if(SetTheFocus())
					pMsg->wParam=VK_CONTROL;
	}

a:	
	return CDialog::PreTranslateMessage(pMsg);
}

//////////////////////////////////////////////////////////////////////
// CDrawKCPD Class
//////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDrawKCPD::CDrawKCPD(CDlgKCPD* dlg)
{
this->parent=dlg;

	m_nColumns=4;
	m_iHaveColumnsTitle=1;
	m_nSmallTilte=2;
	m_piCharsColumns=new int[m_nColumns];
	m_piWidthColumns=new int[m_nColumns];	//每列宽度
	this->m_pstrColumnTitle=new CString[this->m_nColumns]; 

	m_pstrColumnTitle[0]=_T("仓库名称");
	m_pstrColumnTitle[1]=_T("药品编号");
	m_pstrColumnTitle[2]=_T("药品名称");
	m_pstrColumnTitle[3]=_T("数量");
}

CDrawKCPD::~CDrawKCPD()
{

}
void CDrawKCPD::PrintDlg(CDC* pDC, CPrintInfo* pInfo)
{		m_pOldFont = (CFont*) (pDC->SelectObject(m_pGeneralFont));	

	CPoint ptLeftCurPos(pInfo->m_rectDraw.TopLeft());
	CPoint ptRightCurPos(pInfo->m_rectDraw.right,pInfo->m_rectDraw.top);

	ptLeftCurPos.Offset(this->m_iLeftMargin,2*this->m_iLineHeight);
	ptRightCurPos.Offset(-this->m_iRightMargin,2*this->m_iLineHeight);
	int iCurPage=pInfo->m_nCurPage;
	if(iCurPage==pInfo->GetMinPage())
	{
		ptLeftCurPos.Offset(0,this->m_iLineHeight*5/4);//开始写字的起始坐标
		ptRightCurPos.Offset(0,this->m_iLineHeight/4);

		CString str;
		CSize size;

		//左边的1行:
		this->parent->m_comboJsr.GetWindowText(str);
		pDC->TextOut(ptLeftCurPos.x,ptLeftCurPos.y,"经手人:");	
		pDC->TextOut(m_iLineHeight*4,ptLeftCurPos.y,str);
		//右边的两行:
		//票号:
		this->parent->m_editPh.GetWindowText(str);
		str="库存盘点票号:  "+str;
		size=pDC->GetTextExtent(str);
		pDC->TextOut(ptRightCurPos.x-size.cx,ptRightCurPos.y,str);

		//日期:
		ptRightCurPos.Offset(0,m_iLineHeight);
		parent->m_tcRq.GetWindowText(str);
		str="日期:  "+str;
		pDC->TextOut(ptRightCurPos.x-size.cx,ptRightCurPos.y,str);

		ptLeftCurPos.Offset(0,m_iLineHeight*3/4);
		ptRightCurPos.Offset(0,m_iLineHeight*3/4);
	}
	int n=this->parent->m_listKcpd->GetItemCount();
	if(n==0) return ;
	this->DrawListItems(pDC,iCurPage,ptLeftCurPos,ptRightCurPos,parent->m_listKcpd);
	pDC->SelectObject(m_pOldFont);	

}

void CDrawKCPD::PrintPageHeader(CDC* pDC, CPrintInfo* pInfo)
{
	CDrawDlg::PrintPageHeader(pDC,pInfo,"库存盘点");
}

void CDlgKCPD::OnButtonPrint() 
{
	for(int i=this->m_listKcpd->GetItemCount()-1;i>=0;i--)
	if(m_listKcpd->GetItemText(i,0)==""&&
		m_listKcpd->GetItemText(i,1)==""&&
		m_listKcpd->GetItemText(i,2)=="")
	{
		m_listKcpd->DeleteItem(i);
	}
	if(!::OpenPrintFrame(this,m_draw))
	{
		MessageBox("打开打印框架错误","错误!");
		
	}
	if(m_listKcpd->GetItemCount()==0)
		m_listKcpd->InsertItem(0,"");

}

void CDlgKCPD::OnCancel() 
{
		if(MessageBox("确定库存盘点登记模块?","注意",MB_YESNO)==IDYES)
		{
			if(MessageBox("是否保存?","注意",MB_YESNO)==IDNO)
			{
				CDialog::OnCancel();
			}
			else
				this->OnButtonOk();
		}
			return;
}

BOOL CDlgKCPD::DestroyWindow() 
{
				
	delete this->m_listKcpd;
	m_listKcpd=NULL;
	delete m_draw;
	m_draw=NULL;
	
	return CDialog::DestroyWindow();
}




CListCtrl* CDrawKCPD::GetListCtrl()
{
return this->parent->m_listKcpd;

}

⌨️ 快捷键说明

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