📄 tabyp.cpp
字号:
// TabYP.cpp: implementation of the CTabYP class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "a1.h"
#include "TabYP.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CTabYP::CTabYP(int e_n)
:CBaseTabCtrl(e_n)
{
}
CTabYP::~CTabYP()
{
delete [] m_statics;
delete [] m_edits;
delete m_list;
delete [] m_btn;
m_statics=NULL;
m_edits=NULL;
m_list=NULL;
m_btn=NULL;
CString sql;
sql.Format("delete from %s",m_sTempTables[0]);
m_dataYp.m_runsql.RunSQL(sql);
sql.Format("delete from %s",m_sTempTables[1]);
m_dataYp.m_runsql.RunSQL(sql);
}
// ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelchange)//NM_DBLCLK
// ON_NOTIFY(NM_DBLCLK, ID_TABLIST, OnDblclkList)
BEGIN_MESSAGE_MAP(CTabYP, CBaseTabCtrl)
//{{AFX_MSG_MAP(CTabYP)
ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelchange)//NM_DBLCLK
ON_BN_CLICKED(ID_BUTTONS_1+3,OnBaoCunClick)
ON_BN_CLICKED(ID_BUTTONS_1,OnZengJiaClick)
ON_BN_CLICKED(ID_BUTTONS_1+2,OnShanChuClick)
ON_BN_CLICKED(ID_BUTTONS_1+1,OnXiuGaiClick)
ON_BN_CLICKED(ID_BUTTONS_1+4,OnCancelClick)
ON_BN_CLICKED(ID_BUTTONCHAXUN,OnChaXun)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBaseTabCtrl message handlers
bool CTabYP::InitList()
{
CBaseTabCtrl::InitList();
CString sub_str;
POSITION pos=this->m_dataYp.m_pstrlistFields_Names[1].GetHeadPosition();
for(int i=0;i<17;i++)
{
m_list->InsertColumn(i,m_dataYp.m_pstrlistFields_Names[1].GetNext(pos));
}
for(i=0;i<17;i++)
m_list->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
m_list->Invalidate();
m_combofields.AddString("药品编号");
m_combofields.AddString("药品名称");
m_combofields.AddString("产地");
m_combofields.AddString("备注");
m_combofields.SetCurSel(0);
for(i=0;i<6;i++)
m_combofuhao.AddString(m_sFuhao[i]);
m_combofuhao.SetCurSel(5);
state=STRINGQUERY;
CString sql;
sql.Format("delete from %s",m_sTempTables[0]);
m_dataYp.m_runsql.RunSQL(sql);
m_check.SetCheck(0);
sql.Format("INSERT INTO lsypinfo0 SELECT * FROM tabypinfo");
m_dataYp.m_runsql.RunSQL(sql);
sql.Format("select * from lsypinfo0");
this->m_dataYp.SelectListCtrl(this->m_list);
this->m_dataYp.RefreshListView(sql);
m_iCurTable=0;
return true;
}
bool CTabYP::InitValues()
{
m_sFuhao[0]="=";
m_sFuhao[1]=">";
m_sFuhao[2]="<";
m_sFuhao[3]=">=";
m_sFuhao[4]="<=";
m_sFuhao[5]="LIKE";
m_sTable="tabypinfo";
m_sTempTables[0]="lsypinfo0";
m_sTempTables[1]="lsypinfo1";
return true;
}
CString CTabYP::PrepareSQL()
{
CString field_name,field,fuhao,value,inputtable,outputtable,sql;
this->PrepareTables(outputtable,inputtable);
m_combofields.GetWindowText(field_name);
field=m_dataYp.GetFieldFromName(field_name);
m_combofuhao.GetWindowText(fuhao);
m_editvalue.GetWindowText(value);
if(fuhao=="LIKE")value="%"+value+"%";
sql.Format("INSERT INTO %s SELECT * FROM %s WHERE %s %s '%s'",inputtable,outputtable,field,fuhao,value);
m_dataYp.m_runsql.RunSQL(sql);
sql.Format("select * from %s",inputtable);
return sql;
}
void CTabYP::OnBaoCunClick()
{
CString value;
this->GetValuesFromEdits();
if(this->baseinfo_state==ZENGJIA)
{
if(!this->m_dataYp.InsertCurValue())
{
MessageBox("增加数据错误","错误");
return;
}
}
else if(this->baseinfo_state==XIUGAI)
{
if(!this->m_dataYp.UpdateCurValue())
{
MessageBox("修改数据错误","错误");
return;
}
}
else
return;
CBaseTabCtrl::OnBaoCunClick();
baseinfo_state=NORMAL;
}
bool CTabYP::InitBaseInfo()
{
TRACE("InitBaseInfo\n");
CRect rect;
this->GetClientRect(&rect);
int height=25;
int top=60;
int wid=rect.Width()/4;
CRect rect1,rect2,rect3,rect4;
rect1.top=top;
rect1.bottom=top+20;
rect1.left=10;
rect1.right=(long)rect.Width()/8;
rect2.top=top;
rect2.bottom=top+20;
rect2.left=(long)rect.Width()/8+10;
rect2.right=(long)rect.Width()/2-10;
rect3.top=top;
rect3.bottom=top+20;
rect3.left=rect.Width()/2+10;
rect3.right=(long)rect.Width()*5/8;
rect4.top=top;
rect4.bottom=top+20;
rect4.left=(long)rect.Width()*5/8+10;
rect4.right=(long)rect.Width()-10;
POSITION pos=NULL;
pos=this->m_dataYp.m_pstrlistFields_Names[1].GetHeadPosition();
for(int i=0;i<8;i++)
{
this->m_statics[i*2].Create(this->m_dataYp.m_pstrlistFields_Names[1].GetNext(pos)+":",WS_CHILD,rect1,this,ID_STATICS_1+i*2);
this->m_statics[i*2+1].Create(m_dataYp.m_pstrlistFields_Names[1].GetNext(pos)+":",WS_CHILD,rect3,this,ID_STATICS_1+i*2+1);
this->m_edits[i*2].Create(WS_CHILD|ES_AUTOHSCROLL|WS_BORDER,rect2,this,ID_EDITS_1+i*2);
this->m_edits[i*2+1].Create(WS_CHILD|ES_AUTOHSCROLL|WS_BORDER,rect4,this,ID_EDITS_1+i*2+1);
rect1.OffsetRect(0,height);
rect2.OffsetRect(0,height);
rect3.OffsetRect(0,height);
rect4.OffsetRect(0,height);
}
this->m_statics[i*2].Create(m_dataYp.m_pstrlistFields_Names[1].GetNext(pos)+":",WS_CHILD,rect1,this,ID_STATICS_1+i*2);
this->m_edits[i*2].Create(WS_CHILD|ES_AUTOHSCROLL|WS_BORDER,rect2,this,ID_EDITS_1+i*2);
baseinfo_state=NORMAL;
return true;
}
bool CTabYP::InitSelf()
{
SetItemSize(CSize(50,20));
this->InsertItem(0,"药品信息查询");
this->InsertItem(1,"药品信息管理");
return true;
}
void CTabYP::SetTheFocus()
{
HWND hwnd=::GetFocus();
int iID=::GetDlgCtrlID(hwnd);
const int theID=this->GetDlgCtrlID();
// enum{ID_EDITS_1=161};
// enum{ID_BUTTONS_1=201};
if(iID==205)
{
this->SetFocus();return;
}
else if(iID==theID||(iID>200&&iID<206))
{
int pID=iID+1;
if(iID==theID)pID=201;
int n=206-pID;
for(int i=0;i<n;i++)
{
if(this->GetDlgItem(pID)->IsWindowEnabled())
{
GetDlgItem(pID)->SetFocus();
return;
}
pID++;
}
if(i==n)
{
this->SetFocus();
}
}
}
void CTabYP::OnCancelClick()
{
if(!this->SetValuesIntoEdits())
{
for(int i=0;i<mc_iNumber;i++)
{
this->m_edits[i].SetWindowText("");
}
}
EnableBaseInfo(false);
baseinfo_state=NORMAL;
CBaseTabCtrl::OnCancelClick();
}
void CTabYP::OnXiuGaiClick()
{
CString str;
m_edits[0].GetWindowText(str);
if(str=="")
{
MessageBox("请选择某条记录");
return;
}
CBaseTabCtrl::OnXiuGaiClick();
m_edits[0].SetReadOnly();
m_edits[1].SetFocus();
m_edits[1].SetSel(0,-1);
}
void CTabYP::OnShanChuClick()
{
CString str;
m_edits[0].GetWindowText(str);
if(str=="")
{
MessageBox("请选择某条纪录");
return;
}
if(MessageBox("确定要删除吗?删除后不可恢复,并且相关的库存信息也将被删除!","注意!",
MB_YESNO)!=IDYES)
return ;
this->GetValuesFromEdits();
if(this->m_dataYp.DeleteCurValue())
CBaseTabCtrl::OnShanChuClick(); //进行界面操作
else
{
MessageBox("删除失败!","错误");
return;
}
this->m_dataYp.data=CDataYP::data_yp();//删除后的数据被初始为0;
}
void CTabYP::OnZengJiaClick()
{
CBaseTabCtrl::OnZengJiaClick();
m_edits[0].SetWindowText(this->ChanShengID());
m_edits[0].SetReadOnly();
m_edits[1].SetFocus();
}
void CTabYP::SetTheBaseInfoFocus()
{
HWND hwnd=::GetFocus();
int iID=::GetDlgCtrlID(hwnd);
if(iID==160+mc_iNumber)
goto jumpbtn;
if(iID>160&&iID<160+mc_iNumber)
{
int pID=iID+1;
if(this->GetDlgItem(pID)->IsWindowEnabled())
{
CEdit* a=(CEdit*)GetDlgItem(pID);
a->SetFocus();
a->SetSel(0,-1);
return;
}
}
else return;
jumpbtn:
for(int i=0;i<5;i++)
if(this->m_btn[i].IsWindowEnabled())
{
m_btn[i].SetFocus();
break;
}
}
bool CTabYP::GetValuesFromEdits()
{
CString value;
this->m_edits[0].GetWindowText(value);if(value=="")return false;this->m_dataYp.data.yp_id=value;
this->m_edits[1].GetWindowText(value);this->m_dataYp.data.yp_name=value;
this->m_edits[2].GetWindowText(value);this->m_dataYp.data.yp_jc=value;
this->m_edits[3].GetWindowText(value);this->m_dataYp.data.jixing=value;
this->m_edits[4].GetWindowText(value);this->m_dataYp.data.huowei=value;
this->m_edits[5].GetWindowText(value);this->m_dataYp.data.chandi=value;
this->m_edits[6].GetWindowText(value);this->m_dataYp.data.guige=value;
this->m_edits[7].GetWindowText(value);this->m_dataYp.data.danwei=value;
this->m_edits[8].GetWindowText(value);this->m_dataYp.data.shangbiao=value;
this->m_edits[9].GetWindowText(value);this->m_dataYp.data.pizhunwenhao=value;
this->m_edits[10].GetWindowText(value);this->m_dataYp.data.jinjia=atof(value);
this->m_edits[11].GetWindowText(value);this->m_dataYp.data.pifajia=atof(value);
this->m_edits[12].GetWindowText(value);this->m_dataYp.data.lingshoujia=atof(value);
this->m_edits[13].GetWindowText(value);this->m_dataYp.data.pihao=value;
this->m_edits[14].GetWindowText(value);this->m_dataYp.data.baozhiqi=value;
this->m_edits[15].GetWindowText(value);this->m_dataYp.data.huoyuan=value;
this->m_edits[16].GetWindowText(value);this->m_dataYp.data.beizhu=value;
return true;
}
bool CTabYP::SetValuesIntoEdits()
{
CString value;
value=this->m_dataYp.data.yp_id;if(value=="")return false; this->m_edits[0].SetWindowText(value);
//this->m_edits[1].GetWindowText(value);this->m_dataYp.data.yp_name=value;
value= this->m_dataYp.data.yp_name; this->m_edits[1].SetWindowText(value);
value= this->m_dataYp.data.yp_jc; this->m_edits[2].SetWindowText(value);
value= this->m_dataYp.data.jixing; this->m_edits[3].SetWindowText(value);
value= this->m_dataYp.data.huowei; this->m_edits[4].SetWindowText(value);
value= this->m_dataYp.data.chandi; this->m_edits[5].SetWindowText(value);
value= this->m_dataYp.data.guige; this->m_edits[6].SetWindowText(value);
value= this->m_dataYp.data.danwei; this->m_edits[7].SetWindowText(value);
value= this->m_dataYp.data.shangbiao; this->m_edits[8].SetWindowText(value);
value= this->m_dataYp.data.pizhunwenhao; this->m_edits[9].SetWindowText(value);
value.Format("%0.2f",this->m_dataYp.data.jinjia); this->m_edits[10].SetWindowText(value);
value.Format("%0.2f",this->m_dataYp.data.pifajia); this->m_edits[11].SetWindowText(value);
value.Format("%0.2f",this->m_dataYp.data.lingshoujia); this->m_edits[12].SetWindowText(value);
value= this->m_dataYp.data.pihao; this->m_edits[13].SetWindowText(value);
value= this->m_dataYp.data.baozhiqi; this->m_edits[14].SetWindowText(value);
value= this->m_dataYp.data.huoyuan; this->m_edits[15].SetWindowText(value);
value= this->m_dataYp.data.beizhu; this->m_edits[16].SetWindowText(value);
return true;
}
void CTabYP::OnChaXun()
{
this->m_dataYp.RefreshListView(this->PrepareSQL());
}
void CTabYP::SetKey(int mark)
{
this->EnableBaseInfo(false);
this->m_btn[3].EnableWindow(false);
this->m_btn[4].EnableWindow(false);
int i=3;
while(i--)
{
m_btn[i].EnableWindow(true);
}
if(mark<0)return;
for(i=0;i<17;i++)
{
this->m_edits[i].SetWindowText(this->m_list->GetItemText(mark,i));
}
this->GetValuesFromEdits();
}
bool CTabYP::PrepareTables(CString &output, CString &input)
{
int sel=m_check.GetCheck( );
if(sel)
{
output=m_sTempTables[m_iCurTable];
input=m_sTempTables[!m_iCurTable];
m_iCurTable=!m_iCurTable;
}
else
{
output=m_sTable;
input=m_sTempTables[m_iCurTable];
}
CString sql;
sql.Format("delete from %s",input);
this->m_dataYp.m_runsql.RunSQL(sql);
return true;
}
void CTabYP::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult)
{
int i=this->GetCurSel();
switch(i)
{
case 0:
m_check.SetCheck(0);
this->m_dataYp.RefreshListView(PrepareSQL());
this->ShowBaseInfo(SW_HIDE);
this->ShowListChaXun(SW_SHOW);
break;
case 1:
this->ShowBaseInfo(SW_SHOW);
this->ShowListChaXun(SW_HIDE);
if(!this->baseinfo_state)
this->SetKey(this->m_list->GetSelectionMark());
break;
}
*pResult = 0;
}
CString CTabYP::ChanShengID()
{
CString sql;
sql.Format("select yp_id from tabypinfo order by yp_id asc");//按升序排列
if(!this->m_dataYp.m_runsql.CheckSQLResult(sql))
{
return CString("YP00001");
}
_variant_t value;int i;
CString result;
for(i=1;i<99999;i++) //按顺序检索
{
value=m_dataYp.m_runsql.m_recordset->GetCollect("yp_id");
CString str=(char*)(_bstr_t)value;
CString sub=str.Mid(2);
int number=atoi(sub);
if(number!=i)
{
break;
}
m_dataYp.m_runsql.m_recordset->MoveNext();
if(m_dataYp.m_runsql.m_recordset->adoEOF)
{
i++;
break;
}
}
if(i==99999)
{
MessageBox("药品数量大于99999了","错误");
return CString("");
}
// CString s="%"+str+"d";
result.Format("YP%05d",i);
return result;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -