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

📄 listxsdj.cpp

📁 这是一个信息管理系统的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:



bool CListXSDJ::Create(DWORD dwStyle, const RECT &rect, CWnd *pParentWnd, UINT nID)
{
	bool b=CBaseList::Create(dwStyle,rect,pParentWnd,nID);
	return b;
}

void CListXSDJ::OnESC(const int& item, const int& subitem)
{			
	CString str;
	m_edit.GetWindowText(str);
	switch(subitem)
	{
	case 4:
		CString kc_number;
		kc_number.Format("%d",m_edit.kc_number);
		this->m_pstrlistKc[3].SetAt(m_pstrlistKc[3].FindIndex(this->m_iYpKcSelected[item]),kc_number);

		//重新计算金额
		long sl=0;double dj=0,je=0;
		sl=atoi(this->GetItemText(item,4));
		dj=atof(GetItemText(item,3));

		je=sl*dj;
		CString s_je;
		s_je.Format("%0.2f",je);
		this->SetItemText(item,5,s_je);
		break;
	}
	CBaseList::OnESC(item,subitem);

}

void CListXSDJ::OnParentMoved()
{
	TRACE("void CListXSDJ::OnParentMoved()\n");
	if(m_poplist==NULL)return ;
	if(m_edit.m_hWnd==NULL)return ;
	m_edit.GetWindowRect(&this->m_rectWindow);
//	this->ClientToScreen(&this->m_rectWindow);
	if(this->m_poplist->IsWindowVisible())
	{
		this->m_poplist->SetShowPosition(m_rectWindow,&m_edit);
		this->m_poplist->ShowListPop();
	}
}

void CListXSDJ::OnEditUDNPMessage(const int& item, const int& subitem,UINT key)
{
	switch(subitem)
	{
	case 0:
	case 1:
	case 2:
		{
			this->m_poplist->SendTheUDNPMessage(key);
			break;
		}
	default:
		break;
	}
}

bool CListXSDJ::CheckYp(const int& mark)
{	
	int n=this->GetItemCount();
	if(mark<-1||mark>=n)return false;
	CString yp_id=this->GetItemText(mark,0);
	CString yp_name=this->GetItemText(mark,1);

	bool result=false;
	POSITION pos=NULL;int i;
   for( pos = m_pstrlistYp[0].GetHeadPosition(),i=0; pos != NULL; i++)
   {
		if(yp_id== m_pstrlistYp[0].GetNext( pos ))
			if(this->m_pstrlistYp[1].Find(yp_name)!=NULL)
			{
					result=true;
					break;			
			}
   }
   	m_iTheItemState[mark]&=NOCK;
	if(result)	this->m_iTheItemState[mark]|=YPTRUE;
	else {
			TRACE("YP false");
		this->m_iTheItemState[mark]|=YPFALSE;
	}
	return result;
}
//初始化药品信息
bool CListXSDJ::InitListYp()
{
	LRunSql m_runsql;
	CString yp_id;
	this->m_pstrlistYp=new CStringList[6];
	m_pstrlistYp[0].AddTail("药品编号");
	m_pstrlistYp[1].AddTail("药品名称");

	m_pstrlistYp[2].AddTail("产地");
	if(m_bXs)
	{
	m_pstrlistYp[3].AddTail("零售价");
	m_pstrlistYp[4].AddTail("进价");
	}
	else
	{
	m_pstrlistYp[3].AddTail("进价");
	m_pstrlistYp[4].AddTail("单位");
	}

	m_pstrlistYp[5].AddTail("规格");

	CString sql;
	_variant_t value;
	sql.Format("select * from tabypinfo order by yp_id asc");
	m_runsql.CheckSQLResult(sql);
	while(!m_runsql.m_recordset->adoEOF)
	{
		value=m_runsql.m_recordset->GetCollect("yp_id");
		if(value.vt!=VT_NULL)
		{
			m_pstrlistYp[0].AddTail((char*)(_bstr_t)value);
			yp_id=(char*)(_bstr_t)value;
		}
		value=m_runsql.m_recordset->GetCollect("yp_name");
		if(value.vt!=VT_NULL)
			m_pstrlistYp[1].AddTail((char*)(_bstr_t)value);
		value=m_runsql.m_recordset->GetCollect("chandi");
		if(value.vt!=VT_NULL)
			m_pstrlistYp[2].AddTail((char*)(_bstr_t)value);
		if(m_bXs)
		{
		value=m_runsql.m_recordset->GetCollect("lingshoujia");
		if(value.vt!=VT_NULL)
			m_pstrlistYp[3].AddTail((char*)(_bstr_t)value);
		value=m_runsql.m_recordset->GetCollect("jinjia");
		if(value.vt!=VT_NULL)
			{
				m_pstrlistYp[4].AddTail((char*)(_bstr_t)value);
				this->m_mapYpToJj.SetAt(yp_id,value.dblVal);
			}
		else
			{
				m_pstrlistYp[4].AddTail("");
				this->m_mapYpToJj.SetAt(yp_id,0);
				MessageBox(yp_id+"没有进价");
			}
		}
		else
		{
		value=m_runsql.m_recordset->GetCollect("jinjia");
		if(value.vt!=VT_NULL)
			m_pstrlistYp[3].AddTail((char*)(_bstr_t)value);
		value=m_runsql.m_recordset->GetCollect("danwei");
		if(value.vt!=VT_NULL)
			m_pstrlistYp[4].AddTail((char*)(_bstr_t)value);
		}
		value=m_runsql.m_recordset->GetCollect("guige");
		if(value.vt!=VT_NULL)
			m_pstrlistYp[5].AddTail((char*)(_bstr_t)value);
		m_runsql.m_recordset->MoveNext();
	}
	return true;
}

bool CListXSDJ::InitListKc()
{
	LRunSql m_runsql;
	this->m_pstrlistKc=new CStringList[4];
	m_pstrlistKc[0].AddTail("药品编号");
	m_pstrlistKc[1].AddTail("药品名称");
	m_pstrlistKc[2].AddTail("仓库名字");
	m_pstrlistKc[3].AddTail("药品数量");

	CString sql;
	_variant_t value;
	sql.Format("select * from viewkc");
	m_runsql.CheckSQLResult(sql);
	while(!m_runsql.m_recordset->adoEOF)
	{
		value=m_runsql.m_recordset->GetCollect("yp_id");
		if(value.vt!=VT_NULL)
			m_pstrlistKc[0].AddTail((char*)(_bstr_t)value);
		value=m_runsql.m_recordset->GetCollect("yp_name");
		if(value.vt!=VT_NULL)
			m_pstrlistKc[1].AddTail((char*)(_bstr_t)value);
		value=m_runsql.m_recordset->GetCollect("ck_name");
		if(value.vt!=VT_NULL)
			m_pstrlistKc[2].AddTail((char*)(_bstr_t)value);
		value=m_runsql.m_recordset->GetCollect("kc_number");
		if(value.vt!=VT_NULL)
			m_pstrlistKc[3].AddTail((char*)(_bstr_t)value);
		m_runsql.m_recordset->MoveNext();
	}
	return true;
}

bool CListXSDJ::InitListYpCk(const int& item,CString yp_id)
{
		if(!(this->m_iTheItemState[item]&YPTRUE))return false;
		POSITION pos=NULL;
		bool	result=false;

		m_pstrlistYpKc[0].RemoveAll();
		m_pstrlistYpKc[1].RemoveAll();
		m_pstrlistYpKc[2].RemoveAll();
		m_pstrlistYpKc[3].RemoveAll();

		m_pstrlistYpKc[0].AddTail("药品编号");
		m_pstrlistYpKc[1].AddTail("药品名称");
		m_pstrlistYpKc[2].AddTail("仓库名字");
		m_pstrlistYpKc[3].AddTail("药品数量");
		int i;
		for(pos = m_pstrlistKc[0].GetHeadPosition(),i=0; pos != NULL; i++)
		{
			if(yp_id== m_pstrlistKc[0].GetNext( pos ))
				{
						m_pstrlistYpKc[0].AddTail(m_pstrlistKc[0].GetAt(
							this->m_pstrlistKc[0].FindIndex(i)));
						m_pstrlistYpKc[1].AddTail(m_pstrlistKc[1].GetAt(
							this->m_pstrlistKc[1].FindIndex(i)));
						m_pstrlistYpKc[2].AddTail(m_pstrlistKc[2].GetAt(
							this->m_pstrlistKc[2].FindIndex(i)));
						m_pstrlistYpKc[3].AddTail(m_pstrlistKc[3].GetAt(
							this->m_pstrlistKc[3].FindIndex(i)));
						result=true;
				}
		 }
	return result;
}

bool CListXSDJ::CheckCk(const int& item)
{
	if(this->m_iTheItemState[item]&YPFALSE) return false;
	if(!this->m_iTheItemState[item])
		if(!CheckYp(item))return false;
	int n=this->GetItemCount();
	if(item<-1||item>=n)return false;
	CString yp_id=this->GetItemText(item,0);
	CString yp_name=this->GetItemText(item,1);
	CString ck_name=this->GetItemText(item,2);
	
	bool result=false;
	POSITION pos=NULL;int i;
   for( pos = m_pstrlistKc[0].GetHeadPosition(),i=0; pos != NULL; i++)
   {
		if(yp_id== m_pstrlistKc[0].GetNext( pos ))
			if(this->m_pstrlistKc[1].Find(yp_name)!=NULL)
			{
				if(this->m_pstrlistKc[2].Find(ck_name)!=NULL)
				{
					result=true;
					break;			
				}
			}
   }
	if(result)			
	{
			m_iTheItemState[item]=CKTRUE;
	}
	else 
	{
			TRACE("CKFALSE");
			m_iTheItemState[item]=CKFALSE;
	}
	return result;
}

bool CListXSDJ::InitListCurYpKc(const int& item)
{
		if(m_iTheItemState[item]!=CKTRUE)return false;


		CString yp_id=this->GetItemText(item,0);
		CString ck_name=this->GetItemText(item,2);
		for(int j=1;j<m_pstrlistCurYpKc[0].GetCount();j++)
		{
			m_pstrlistCurYpKc[0].RemoveTail();
			m_pstrlistCurYpKc[1].RemoveTail();
			m_pstrlistCurYpKc[2].RemoveTail();
			m_pstrlistCurYpKc[3].RemoveTail();
		}

		int i;
		POSITION pos=NULL;
		bool result=false;
		for(pos = m_pstrlistKc[0].GetHeadPosition(),i=0; pos != NULL; i++)
		{
			if(yp_id== m_pstrlistKc[0].GetNext( pos ))
				{
				if(ck_name==m_pstrlistKc[2].GetAt(this->m_pstrlistKc[2].FindIndex(i)))
					{
						m_pstrlistCurYpKc[0].AddTail(m_pstrlistKc[0].GetAt(
							this->m_pstrlistKc[0].FindIndex(i)));
						m_pstrlistCurYpKc[1].AddTail(m_pstrlistKc[1].GetAt(
							this->m_pstrlistKc[1].FindIndex(i)));
						m_pstrlistCurYpKc[2].AddTail(m_pstrlistKc[2].GetAt(
							this->m_pstrlistKc[2].FindIndex(i)));
						m_pstrlistCurYpKc[3].AddTail(m_pstrlistKc[3].GetAt(
							this->m_pstrlistKc[3].FindIndex(i)));
						result=true;
						this->m_iYpKcSelected[item]=i;
						break;

					}
				}
		 }
	return result;
}

bool CListXSDJ::CheckTheItem(const int& item)
{
	if(!this->CheckCk(item))
	{
		this->m_nItem=item;
		this->m_iEditedIndex=-1;
		this->PostMessage(SETNEXTITEMPHFOCUS,0,0);	
		return false;
	}

	CString str=this->GetItemText(item,4);
	if(str==""||str=="0")
	{
		TRACE("SL false");	this->m_nItem=item;
		this->m_iEditedIndex=3;
		this->PostMessage(SETNEXTITEMPHFOCUS,0,0);
		return false; 
	}
	return true;
}

bool CListXSDJ::CheckAllItem()
{
	int n=GetItemCount();
	for(int i=0;i<n;i++)
	{
		if(GetItemText(i,0)==""&&GetItemText(i,1)=="")
		{
			DeleteItem(i);
			continue;
		}
		long number=0;
		if(!this->CheckTheItem(i))
		{
		return false;
		}
	}
	return true;
}

bool CListXSDJ::DeleteSelected()
{
	if(this->m_poplist->IsWindowVisible())
		this->m_poplist->ShowWindow(SW_HIDE);
	if(this->m_edit.IsWindowVisible())
		m_edit.ShowWindow(SW_HIDE);
	LVITEM* item=new LVITEM;
	int number=this->GetSelectedCount();
	for(int i=this->GetItemCount()-1;i>=0;i--)
	{
			this->m_nItem=i;
			item->iItem=i;
			item->mask=LVIF_STATE ;
			item->stateMask=LVIS_SELECTED ;
			GetItem(item);
		if(item->state==LVIS_SELECTED)
		{
			CString s_sl=this->GetItemText(i,4);
			long l_sl=atoi(s_sl);
			if(m_iYpKcSelected[i]<0||l_sl==0)continue;
			long kc_number=atoi(m_pstrlistKc[3].GetAt(this->m_pstrlistKc[3].FindIndex(this->m_iYpKcSelected[i])));
			CString left;
			if(m_bXs)
			left.Format("%d",kc_number+l_sl);
			else
			left.Format("%d",kc_number-l_sl);
			this->m_pstrlistKc[3].SetAt(this->m_pstrlistKc[3].FindIndex(this->m_iYpKcSelected[i]),left);
			DeleteItem(i);
			for(int j=i;j<this->GetItemCount()-1;j++)
			this->m_iTheItemState[j]=m_iTheItemState[j+1];
		}
	}
		if(GetItemCount()==0)
			InsertItem(0,"");
		this->m_nItem=0;
		this->SetZje();
		Invalidate();
	return true;
}

void CListXSDJ::PreOnEditChar(const int& item, const int& subitem, UINT& key)
{

	switch(subitem)
	{

	case 4:
		if((key>=0x30&&key<=0x39)||key==0x08)
		{
			;
		}
		else
		{
		key=VK_CONTROL;
		}
		break;
	case 3:
	case 5:
		if((key>=0x30&&key<=0x39)||key==0x2E||key==0x08)
		{
			;
		}
		else
		{
		key=VK_CONTROL;
		}

		break;
	}
}

bool CListXSDJ::CancelTheItem(const int &item)
{
	CString s_sl=this->GetItemText(item,4);
	long l_sl=atoi(s_sl);
	if(m_iYpKcSelected[item]<0||l_sl==0)
		return false;

	long kc_number=atoi(m_pstrlistKc[3].GetAt(this->m_pstrlistKc[3].FindIndex(this->m_iYpKcSelected[item])));

	CString left;
	if(m_bXs)
		left.Format("%d",kc_number+l_sl);
	else
		left.Format("%d",kc_number-l_sl);
	this->m_pstrlistKc[3].SetAt(this->m_pstrlistKc[3].FindIndex(this->m_iYpKcSelected[item]),left);
//	DeleteItem(i);
	this->m_iTheItemState[item]=NONE;
	m_iYpKcSelected[item]=-1;
	this->SetItemText(item,3,"");
	this->SetItemText(item,4,"");
	this->SetItemText(item,5,"");
	this->SetItemText(item,6,"");

	return true;
}

double CListXSDJ::SetZje()
{
	CString sZje;
	double dZje=0;
	CString str;
	for(int i=0;i<this->GetItemCount();i++)
	if(m_iTheItemState[i]==CKTRUE)
	{
		if((str=GetItemText(i,5))!="")
		dZje+=atof(str);
	}
	sZje.Format("%0.2f",dZje);
	this->GetParent()->GetDlgItem(IDC_STATIC_ZJE)->SetWindowText(sZje);
	this->GetParent()->GetDlgItem(IDC_EDIT_SS)->SetWindowText(sZje);

	return dZje;
}

⌨️ 快捷键说明

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