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

📄 listxsdj.cpp

📁 这是一个信息管理系统的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// ListXSDJ.cpp: implementation of the CListXSDJ class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "a1.h"
#include "ListXSDJ.h"
#include "myfunction.h"

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

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

CListXSDJ::CListXSDJ(bool isxs)
{
	m_bXs=isxs;
	m_bWaitPopList=false;
	m_bSetValue=false;
	m_Kill=NORMALKILL;

	for(int i=0;i<100;i++)
	{
	m_iTheItemState[i]=NONE;
	this->m_iYpKcSelected[i]=-1;
	}
	this->InitListKc();
	this->InitListYp();

	this->m_pstrlistYpKc=new CStringList[4];
	m_pstrlistCurYpKc=new CStringList[4];

	m_pstrlistCurYpKc[0].AddTail("药品编号");
	m_pstrlistCurYpKc[1].AddTail("药品名称");
	m_pstrlistCurYpKc[2].AddTail("仓库名字");
	m_pstrlistCurYpKc[3].AddTail("药品数量");
	m_pstrlistCurYpKc[0].AddTail("");
	m_pstrlistCurYpKc[1].AddTail("");
	m_pstrlistCurYpKc[2].AddTail("");
	m_pstrlistCurYpKc[3].AddTail("");
}

CListXSDJ::~CListXSDJ()
{
	delete [] this->m_pstrlistYp;
	delete [] this->m_pstrlistCurYpKc;
	delete [] this->m_pstrlistYpKc;
	delete [] this->m_pstrlistKc;
	this->m_pstrlistYp=NULL;
	this->m_pstrlistCurYpKc=NULL;
	this->m_pstrlistYpKc=NULL;
	this->m_pstrlistKc=NULL;



}
BEGIN_MESSAGE_MAP(CListXSDJ, CBaseList)
	//{{AFX_MSG_MAP(CListXSDJ)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CGeneralEdit message handlers
void CListXSDJ::OnEditKillFocus(const int& item,const int& subitem)
{
	CString str;
	m_edit.GetWindowText(str);
	switch(subitem)
	{
	case 0:
		{
			str.MakeUpper();
			this->SetValueUnChange(str);
			break;
		}
	case 1:break;
	case 2:
		{
			str.MakeUpper();
			this->SetValueUnChange(str);
			break;
		}
	case 3:
	case 4:
		{

			break;
		}
	}
	CBaseList::OnEditKillFocus(item,subitem);
	if(subitem==5)
		this->SetZje();
}
bool CListXSDJ::OnEditReturn(const int& item,const int& subitem)
{
	switch(subitem)
	{
	case 0:
		{	
			if(this->m_poplist->IsWindowVisible()&&this->m_poplist->GetSelectedMark()>=0)
			{
				this->SetValueUnChange(m_poplist->GetListCtrlSel(0));
				this->SetItemText(m_nItem,0,this->m_poplist->GetListCtrlSel(0));
				this->SetItemText(m_nItem,1,this->m_poplist->GetListCtrlSel(1));
				this->SetItemText(m_nItem,3,this->m_poplist->GetListCtrlSel(3));
				this->InitListYpCk(item,m_poplist->GetListCtrlSel(0));
				m_iTheItemState[item]=NONE;	
				m_iTheItemState[item]&=NOCK;
				m_iTheItemState[item]|=YPTRUE;
			}
			else
				SetValueUnChange("");
			break;
		}
	case 1:
		{
			if(this->m_poplist->IsWindowVisible()&&this->m_poplist->GetSelectedMark()>=0)
			{
			SetValueUnChange(m_poplist->GetListCtrlSel(1));
			this->SetItemText(m_nItem,0,this->m_poplist->GetListCtrlSel(0));
			this->SetItemText(m_nItem,1,this->m_poplist->GetListCtrlSel(1));
			this->SetItemText(m_nItem,3,this->m_poplist->GetListCtrlSel(3));
			this->InitListYpCk(item,m_poplist->GetListCtrlSel(0));
			m_iTheItemState[item]=NONE;			
			m_iTheItemState[item]&=NOCK;
			m_iTheItemState[item]|=YPTRUE;
			}
			else
				SetValueUnChange("");
			break;
			
		}
	case 2:
		{
			if(this->m_poplist->IsWindowVisible()&&this->m_poplist->GetSelectedMark()>=0)
			{
			SetValueUnChange(m_poplist->GetListCtrlSel(2));
			this->SetItemText(m_nItem,2,this->m_poplist->GetListCtrlSel(2));
			m_iTheItemState[item]=CKTRUE;
			this->InitListCurYpKc(item);
			}
			else
				SetValueUnChange("");
			break;
		}
	case 3:
	case 4:
		{
			break;
		}
	}
	CBaseList::OnEditReturn(item,subitem);
	return true;
}
void CListXSDJ::OnEditSetFocus(const int& item,const int& subitem)
{
	CBaseList::OnEditSetFocus(item,subitem);
	CString str;

	m_edit.m_dSetFocusValue=0;
	m_edit.GetWindowText(m_sSetFocus);
	str=this->m_sSetFocus  ;
	m_edit.GetWindowRect(&this->m_rectWindow);
	str.MakeUpper();
	switch(subitem)
	{
	case 0:
		{
			this->m_poplist->ShowWindow(SW_HIDE);
				ASSERT(this->m_poplist!=NULL);

			m_poplist->SelectStringList(6,this->m_pstrlistYp);
			this->m_poplist->SetShowPosition(this->m_rectWindow,&m_edit);
			this->m_poplist->RefreshListCtrlView(0,str);
			if(!m_poplist->IsWindowVisible())
			m_poplist->ShowListPop();
			break;
			}
	case 1:
		{	
			this->m_poplist->ShowWindow(SW_HIDE);

				ASSERT(this->m_poplist!=NULL);

			m_poplist->SelectStringList(6,this->m_pstrlistYp);
			this->m_poplist->SetShowPosition(this->m_rectWindow,&m_edit);
			CString id=this->GetItemText(item,0);
			m_poplist->RefreshListCtrlView(1,str,id,0);
			if(!m_poplist->IsWindowVisible())
			m_poplist->ShowListPop();
			break;
		}
	case 2:
		{
			if(m_iTheItemState[item]&YPFALSE)goto wrong_mission;
			if(!m_iTheItemState[item])
				CheckYp(item);
			if(!(this->m_iTheItemState[item]&YPTRUE))
				goto wrong_mission;

			m_iTheItemState[item]&=NOCK;
			this->InitListYpCk(item,this->GetItemText(item,0));
			this->m_poplist->ShowWindow(SW_HIDE);

				ASSERT(this->m_poplist!=NULL);

			m_poplist->SelectStringList(4,this->m_pstrlistYpKc);
			this->m_poplist->SetShowPosition(this->m_rectWindow,&m_edit);
			m_poplist->RefreshListCtrlView(2,str);
			if(!m_poplist->IsWindowVisible())
			m_poplist->ShowListPop();
			break;

		}
	case 3:
		{
			if(m_poplist->IsWindowVisible())
			this->m_poplist->ShowWindow(SW_HIDE);
			if(m_iTheItemState[item]&YPFALSE)	goto wrong_mission;
			if(m_iTheItemState[item]==CKFALSE)goto wrong_mission;
			if(!(m_iTheItemState[item]&CHECKCK))
				CheckCk(item);
			if(m_iTheItemState[item]!=CKTRUE)
					goto wrong_mission;
				ASSERT(this->m_poplist!=NULL);

			m_poplist->SelectStringList(6,this->m_pstrlistYp);
			this->m_poplist->SetShowPosition(this->m_rectWindow,&m_edit);
			m_poplist->RefreshListCtrlView(0,this->GetItemText(item,0));
			if(str=="")
			{
				str=m_poplist->GetListCtrlSel(3);
				this->SetValueUnChange(str);
			}
			m_edit.SetSel(0,-1);

			//计算
			long sl=0;double dj=0,je=0;
			sl=atoi(this->GetItemText(item,4));
			dj=atof(str);
			je=sl*dj;
			CString s_je;
			s_je.Format("%0.2f",je);
			this->SetItemText(item,5,s_je);
			this->SetItemText(item,6,s_je);

			if(!m_poplist->IsWindowVisible())
			m_poplist->ShowListPop();
		break;
		}
	case 4:
		{
			if(m_poplist->IsWindowVisible())
			this->m_poplist->ShowWindow(SW_HIDE);
			if(m_iTheItemState[item]&YPFALSE)	goto wrong_mission;
			if(m_iTheItemState[item]==CKFALSE)	goto wrong_mission;
			if(!(m_iTheItemState[item]&CHECKCK))
				this->CheckCk(item);
			if(m_iTheItemState[item]!=CKTRUE)
					goto wrong_mission;
			
			if(str!="")
			m_edit.m_dSetFocusValue=atoi(str);


			this->InitListCurYpKc(item);
			m_edit.kc_number=atoi(m_pstrlistCurYpKc[3].GetTail());//cur kc_number;
			ASSERT(this->m_poplist!=NULL);

			m_poplist->SelectStringList(4,this->m_pstrlistCurYpKc);
			this->m_poplist->SetShowPosition(this->m_rectWindow,&m_edit);
			m_poplist->RefreshListCtrlView(2,"");

			//计算
			long sl=0;double dj=0,je=0;
			dj=atof(this->GetItemText(item,3));
			sl=atoi(str);
			je=sl*dj;
			CString s_je;
			s_je.Format("%0.2f",je);
			this->SetItemText(item,5,s_je);
			this->SetItemText(item,6,s_je);

			if(!m_poplist->IsWindowVisible())
			m_poplist->ShowListPop();
			break;
		}
	case 5:
		{

			if(m_poplist->IsWindowVisible())
			this->m_poplist->ShowWindow(SW_HIDE);
			if(m_iTheItemState[item]&YPFALSE)	goto wrong_mission;
			if(m_iTheItemState[item]==CKFALSE)	goto wrong_mission;
			if(!(m_iTheItemState[item]&CHECKCK))
				CheckCk(item);
			if(m_iTheItemState[item]!=CKTRUE)
					goto wrong_mission;

			CString str=this->GetItemText(item,4);
			if(str==""||str=="0")
			{
		//		goto wrong_mission;
		//		TRACE("SL false");	
		//		this->m_iEditedIndex=3;
		//		m_edit.ShowWindow(SW_HIDE);
		//		this->PostMessage(SETNEXTITEMPHFOCUS,0,0);
					this->m_iEditedIndex=3;
					m_edit.ShowWindow(SW_HIDE);
					this->SetNextItemFocus();
			}

			break;
		}
	}
	return;
wrong_mission:
	{
					this->m_iEditedIndex=-1;
					m_edit.ShowWindow(SW_HIDE);
					this->SetNextItemFocus();
	}
}
void CListXSDJ::OnNewEditChange(const int& item,const int& sub_item)
{
	if(this->m_bSetValue) return ;
		ASSERT(this->m_poplist!=NULL);
	CString str;
	m_edit.GetWindowText(str);
	CString str_sl=this->GetItemText(item,4);

	switch(sub_item)
	{
	case 0:
		{//显示药品编号

			str.MakeUpper();
			if(!m_poplist->IsWindowVisible())
			m_poplist->ShowListPop();
			this->m_iTheItemState[item]=NONE;

			int sl=0;
			sl=atoi(str_sl);
			if(sl&&str!=this->m_sSetFocus&&m_iYpKcSelected[item]>=0)
				this->CancelTheItem(item);
			m_iYpKcSelected[item]=-1;
			this->m_poplist->RefreshListCtrlView(0,str);
			break;
		}
	case 1:
		{	//显示药品名称
			CString id=this->GetItemText(item,0);
			if(!m_poplist->IsWindowVisible())
			m_poplist->ShowListPop();
			this->m_iTheItemState[item]=NONE;
			int sl=0;
			sl=atoi(str_sl);
			if(sl&&str!=this->m_sSetFocus&&m_iYpKcSelected[item]>=0)
				this->CancelTheItem(item);
			m_iYpKcSelected[item]=-1;
			m_poplist->RefreshListCtrlView(1,str,id,0);
			break;
		}
	case 2://显示仓库名称
		{
			str.MakeUpper();
			if(!m_poplist->IsWindowVisible())
			m_poplist->ShowListPop();
			m_iTheItemState[item]&=NOCK;

			int sl=0;
			sl=atoi(str_sl);
			if(sl&&str!=this->m_sSetFocus&&m_iYpKcSelected[item]>=0)
				this->CancelTheItem(item);
			m_iYpKcSelected[item]=-1;
			this->m_poplist->RefreshListCtrlView(2,str);
			break;
		}
	case 3://单价
		{
			//计算
			long sl=0;double dj=0,je=0;
			sl=atoi(this->GetItemText(item,4));
			dj=atof(str);
			je=sl*dj;
			CString s_je;
			s_je.Format("%0.2f",je);
			this->SetItemText(item,5,s_je);
			this->SetItemText(item,6,s_je);		
			break;
		}
	case 4://数量
		{	//计算显示多少;
			
			long l_left=0;
			if(m_bXs)
				l_left=m_edit.kc_number-atoi(str)+m_edit.m_dSetFocusValue;//- cur show number + setfocus value= left
			else
				l_left=m_edit.kc_number+atoi(str)-m_edit.m_dSetFocusValue;//+ cur show number - setfocus value= left

			CString left;
			left.Format("%d",l_left);

			this->m_pstrlistCurYpKc[3].RemoveTail();
			this->m_pstrlistCurYpKc[3].AddTail(left);
			m_poplist->SelectStringList(4,this->m_pstrlistCurYpKc);
			this->m_pstrlistKc[3].SetAt(m_pstrlistKc[3].FindIndex(this->m_iYpKcSelected[item]),left);
//			left.Format("%d",kc_number);
//			this->m_pstrlistCurYpKc[3].RemoveTail();
//			this->m_pstrlistCurYpKc[3].AddTail(left);
			this->m_poplist->RefreshListCtrlView(0,"");
			
			//计算
			long sl=0;double dj=0,je=0;
			dj=atof(this->GetItemText(item,3));
			sl=atoi(str);
			je=sl*dj;
			CString s_je;
			s_je.Format("%0.2f",je);
			this->SetItemText(item,5,s_je);
			this->SetItemText(item,6,s_je);
			if(!m_poplist->IsWindowVisible())
			m_poplist->ShowListPop();

//			CString out;
//			out.Format("%d",atoi(str));
//			this->SetValueUnChange(out);

			break;
		}
	case 5://总金额
		{
			//计算
			CString s_je; 
			long sl=0;double dj=0,je=0;
			je=atof(str);
			if(je<0) 
			{
				this->SetValueUnChange("");
				break;
			}
			break;
		}

	}
			this->SetZje();
}
	
void CListXSDJ::SetValueUnOnChange(CString text)
{	
	TRACE("void CListXSDJ::SetValueUnOnChange()\n");
	this->m_bSetValue=true;
	this->m_edit.SetWindowText(text);
	this->m_bSetValue=false;
}
	
void CListXSDJ::SelectPopList(CListCtrlPop*  poplist)
{	TRACE("void CListXSDJ::SelectPopList(CListCtrlPop*  poplist)\n");
	TRACE("void CListXSDJ::SelectPopList()\n");
		ASSERT(poplist!=NULL);
	this->m_poplist=poplist;
}

⌨️ 快捷键说明

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