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