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

📄 listxsth.cpp

📁 这是一个信息管理系统的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		{
			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)
				this->CancelTheItem(item);
			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)
				this->CancelTheItem(item);
			m_poplist->RefreshListCtrlView(1,str,id,0);
			break;
		}
	case 2:
		{
			str.MakeUpper();
			CString id=this->GetItemText(item,0);
			if(!m_poplist->IsWindowVisible())
			m_poplist->ShowListPop();
			m_iTheItemState[item]&=NOCK;
			int sl=0;
			sl=atoi(str_sl);
			if(sl&&str!=this->m_sSetFocus)
				this->CancelTheItem(item);
			this->m_poplist->RefreshListCtrlView(0,id,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:
		{
				if(m_poplist->IsWindowVisible())
					m_poplist->ShowWindow(SW_HIDE);
			CString	id=this->GetItemText(item,0);

			long l_left=0;
			l_left=this->m_edit.kc_number-atoi(str)+m_edit.m_dSetFocusValue;//- cur show number + setfocus value= left


/*			CString left;
			left.Format("%d",l_left);
			this->SetLeftNumber();*/
//			m_strtolongYpIdToSl.SetAt(id,l_left);

			this->SetstrlistKcNumber(id,l_left);
//			m_poplist->SelectStringList(6,this->m_pstrlistThYp);
	
			CString ck_name=this->GetItemText(item,2);
		
			m_poplist->RefreshListCtrlView(0,id,2,ck_name);
			
			//计算
			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:
		{
			//计算
			CString s_je; 
			long sl=0;double dj=0,je=0;
			je=atof(str);
			if(je<0) 
			{
				this->SetValueUnChange("");
				break;
			}
			this->SetItemText(item,6,str);
			break;
		}
	}
	SetZje();
}

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

	}
}

void CListXSTH::OnESC(const int& item, const int& subitem)
{
	this->SetLeftNumber();
		SetZje();
	CBaseList::OnESC(item,subitem);
}

void CListXSTH::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();
	}
}

bool CListXSTH::SetLeftNumber()
{
	POSITION pos=NULL;
	int i;long left;
	CString str;
		for(pos=m_pstrlistThYp[0].GetHeadPosition(),i=0; pos != NULL; i++)
		{
			if(this->m_strtolongYpIdToSl.Lookup(m_pstrlistThYp[0].GetNext( pos ),left))
			{
				str.Format("%d",left);
				this->m_pstrlistThYp[5].SetAt(m_pstrlistThYp[5].FindIndex(i),str);
			}
		}
		return true;
}

bool CListXSTH::SetstrlistKcNumber(CString id, long number)
{
	POSITION pos=NULL;
	int i;
	CString str;
		for(pos=m_pstrlistThYp[0].GetHeadPosition(),i=0; pos != NULL; i++)
		{
			if(id==m_pstrlistThYp[0].GetNext( pos ))
			{
				str.Format("%d",number);
				this->m_pstrlistThYp[5].SetAt(
					m_pstrlistThYp[5].FindIndex(i),str);
			}
		}
		return true;
}

int CListXSTH::CheckYp(const int& item)
{
	if(this->m_iTheItemState[item]!=NONE)
		return this->m_iTheItemState[item];
	int n=this->GetItemCount();
	if(item<=-1||item>=n)return -1;

	CString yp_id=this->GetItemText(item,0);
	CString yp_name=this->GetItemText(item,1);

	POSITION pos=NULL;int i;
	bool	result=false;
   for( pos = m_pstrlistThYp[0].GetHeadPosition(),i=0; pos != NULL; i++)
   {
		if(yp_id== m_pstrlistThYp[0].GetNext( pos ))
			if(this->m_pstrlistThYp[1].GetAt(this->m_pstrlistThYp[1].FindIndex(i))==yp_name)
			{
					result=true;
					break;			
			}
   }
   	m_iTheItemState[item]&=NOCK;
	if(result)	this->m_iTheItemState[item]|=YPTRUE;
	else {
			TRACE("YP false");
		this->m_iTheItemState[item]|=YPFALSE;
	}
	return m_iTheItemState[item];
}

int CListXSTH::CheckCk(const int& item)
{
	if(this->m_iTheItemState[item]&CHECKCK) 
		return this->m_iTheItemState[item];
//	if(this->m_iTheItemState[item]==NONE)
		if(CheckYp(item)&YPFALSE)return YPFALSE;//
		if(CheckYp(item)==-1)MessageBox("这个item 不知道是哪里来的","注意");
	int n=this->GetItemCount();
	if(item<-1||item>=n)return -1;
	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_pstrlistThYp[0].GetHeadPosition(),i=0; pos != NULL; i++)
   {
		if(yp_id== m_pstrlistThYp[0].GetNext( pos ))
				if(this->m_pstrlistThYp[2].GetAt(this->m_pstrlistThYp[2].FindIndex(i))==ck_name)
				{
					result=true;
					break;			
				}
   }
	if(result)			
	{
			m_iTheItemState[item]=CKTRUE;
	}
	else 
	{
			TRACE("CKFALSE");
			m_iTheItemState[item]=CKFALSE;
	}
	return m_iTheItemState[item];
}

bool CListXSTH::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);
			CString id=this->GetItemText(i,0);
			long l_sl=atoi(s_sl);
			long kc_number;
			this->m_strtolongYpIdToSl.Lookup(id,kc_number);
			this->m_strtolongYpIdToSl.SetAt(id,kc_number+l_sl);
			DeleteItem(i);
			for(int j=i;j<this->GetItemCount()-1;j++)
			this->m_iTheItemState[i]=m_iTheItemState[i+1];
			this->SetLeftNumber();
//			this->m_poplist->SelectStringList(6,this->m_pstrlistThYp);
		}
	}
		if(GetItemCount()==0)
			InsertItem(0,"");
		this->m_nItem=0;
			SetZje();
		Invalidate();
	return true;
}

bool CListXSTH::CheckAll()
{
	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 CListXSTH::CheckTheItem(const int& item)
{
	if(!this->CheckCk(item))
	{
		this->m_nItem=item;
		this->m_iEditedIndex=-1;
		MessageBox("请输入完整退货登记信息","注意");
		this->PostMessage(SETNEXTITEMPHFOCUS,0,0);	
		return false;
	}

	CString str=this->GetItemText(item,4);
	CString id=this->GetItemText(item,0);long number=0;
	this->m_strtolongYpIdToSl.Lookup(id,number);
	if(str==""||str=="0"||number<0)
	{
		TRACE("SL false");	this->m_nItem=item;
		this->m_iEditedIndex=3;
		MessageBox("该药品退货数量过多或过少","注意");
		this->PostMessage(SETNEXTITEMPHFOCUS,0,0);
		return false; 
	}
	return true;
}

void CListXSTH::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:
	case 6:
		if((key>=0x30&&key<=0x39)||key==0x2E||key==0x08)
		{
			;
		}
		else
		{
		key=VK_CONTROL;
		}

		break;
	}
}

bool CListXSTH::CancelTheItem(const int &item)
{
	CString s_sl=this->GetItemText(item,4);
	CString id=this->GetItemText(item,0);
	long l_sl=atoi(s_sl);
	long kc_number;
	this->m_strtolongYpIdToSl.Lookup(id,kc_number);
	this->m_strtolongYpIdToSl.SetAt(id,kc_number+l_sl);
	this->m_iTheItemState[item]=NONE;
	this->SetLeftNumber();
	this->SetItemText(item,3,"");
	this->SetItemText(item,4,"");
	this->SetItemText(item,5,"");
	this->SetItemText(item,6,"");

	return true;
}

double CListXSTH::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 + -