📄 listxsth.cpp
字号:
{
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 + -