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