📄 tabxsth.cpp
字号:
// TabXSTH.cpp: implementation of the CTabXSTHTH class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "a1.h"
#include "TabXSTH.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CTabXSTH::CTabXSTH(int e_n,int which)
:CBaseTabCtrl(e_n),m_dataXs(which)
{
}
CTabXSTH::~CTabXSTH()
{
delete [] m_statics;
delete [] m_edits;
delete m_list;
delete [] m_btn;
m_statics=NULL;
m_edits=NULL;
m_list=NULL;
m_btn=NULL;
}
BEGIN_MESSAGE_MAP(CTabXSTH, CBaseTabCtrl)
//{{AFX_MSG_MAP(CTabXSTH)
ON_NOTIFY_REFLECT(TCN_SELCHANGE, OnSelchange)//NM_DBLCLK
ON_BN_CLICKED(ID_BUTTONCHAXUN,OnChaXun)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
bool CTabXSTH::InitList()
{
CBaseTabCtrl::InitList();
CString sub_str;
POSITION pos=this->m_dataXs.m_pstrlistFields_Names[1].GetHeadPosition();
for(int i=0;i<mc_iNumber;i++)
{
CString str=m_dataXs.m_pstrlistFields_Names[1].GetNext(pos);
m_list->InsertColumn(i,str);
m_combofields.AddString(str);
}
for(i=0;i<mc_iNumber;i++)
m_list->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);
m_list->Invalidate();
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_dataXs.m_runsql.RunSQL(sql);
m_check.SetCheck(0);
sql.Format("INSERT INTO %s SELECT * FROM %s",m_sTempTables[0],m_sTable);
m_dataXs.m_runsql.RunSQL(sql);
sql.Format("select * from %s",m_sTempTables[0]);
this->m_dataXs.SelectListCtrl(this->m_list);
this->m_dataXs.RefreshListView(sql);
m_iCurTable=0;
return true;
}
bool CTabXSTH::InitSelf()
{
CBaseTabCtrl::InitSelf();
SetItemSize(CSize(80,20));
switch(m_dataXs.m_iState)
{
case XSTH:
CTabCtrl::InsertItem(0,"销售退货信息查询");
CTabCtrl::InsertItem(1,"所选销售退货信息");
break;
case RK:
CTabCtrl::InsertItem(0,"入库信息查询");
CTabCtrl::InsertItem(1,"入库信息管理");
break;
case RKTH:
CTabCtrl::InsertItem(0,"入库退货信息查询");
CTabCtrl::InsertItem(1,"入库退货信息管理");
break;
}
return true;
}
bool CTabXSTH::InitValues()
{
m_sFuhao[0]="=";
m_sFuhao[1]=">";
m_sFuhao[2]="<";
m_sFuhao[3]=">=";
m_sFuhao[4]="<=";
m_sFuhao[5]="LIKE";
switch(m_dataXs.m_iState)
{
case XSTH:
m_sTable="viewxsth";
m_sTempTables[0]="lsxsthinfo0";
m_sTempTables[1]="lsxsthinfo1";
break;
case RK:
m_sTable="viewrk";
m_sTempTables[0]="lsrkquery0";
m_sTempTables[1]="lsrkquery1";
break;
case RKTH:
m_sTable="viewrkth";
m_sTempTables[0]="lsrkthinfo0";
m_sTempTables[1]="lsrkthinfo1";
break;
}
return true;
}
CString CTabXSTH::PrepareSQL()
{
CString field_name,field,fuhao,value,inputtable,outputtable,sql;
this->PrepareTables(outputtable,inputtable);
m_combofields.GetWindowText(field_name);
field=this->m_dataXs.GetFieldFromName(field_name);
m_combofuhao.GetWindowText(fuhao);
if(this->state==STRINGQUERY)
{
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);
if(fuhao!="LIKE"&&m_dataXs.IsNumberField(field))
{
float v=atof(value);
sql.Format("INSERT INTO %s SELECT * FROM %s WHERE %s %s %f",inputtable,outputtable,field,fuhao,v);
}
m_dataXs.m_runsql.RunSQL(sql);
sql.Format("select * from %s",inputtable);
}
else
{
m_tcvalue.GetWindowText(value);
value="#"+value+"#";
sql.Format("INSERT INTO %s SELECT * FROM %s WHERE %s %s %s",inputtable,outputtable,field,fuhao,value);
m_dataXs.m_runsql.RunSQL(sql);
sql.Format("select * from %s",inputtable);
}
return sql;
}
void CTabXSTH::OnChaXun()
{
this->m_dataXs.RefreshListView(this->PrepareSQL());
}
void CTabXSTH::OnSelchange(NMHDR* pNMHDR, LRESULT* pResult)
{
int i=this->GetCurSel();
switch(i)
{
case 0:
m_check.SetCheck(0);
// this->m_dataXs.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;
}
bool CTabXSTH::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_dataXs.m_pstrlistFields_Names[1].GetHeadPosition();
int n=mc_iNumber/2;
int yu=mc_iNumber%2;
for(int i=0;i<n;i++)
{
this->m_statics[i*2].Create(m_dataXs.m_pstrlistFields_Names[1].GetNext(pos)+":",WS_CHILD,rect1,this,ID_STATICS_1+i*2);
this->m_statics[i*2+1].Create(m_dataXs.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);
}
if(yu)
{
this->m_statics[i*2].Create(m_dataXs.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);
}
rect4.OffsetRect(0,-height*2);
rect4.right=rect4.right-160;
rect4.top-=1;
rect4.bottom+=1;
m_rq.Create(WS_CHILD,rect4,this,ID_YUANGONG_RQ);
// CTime time=CTime::GetCurrentTime();
// m_rq.SetTime(&time);
baseinfo_state=NORMAL;
return true;
}
int CTabXSTH::ShowBaseInfo(int show)
{
for(int i=0;i<this->mc_iNumber;i++)
{
this->m_edits[i].ShowWindow(show);
}
for(int j=0;j<this->mc_iNumber;j++)
{
this->m_statics[j].ShowWindow(show);
}
for(int k=0;k<5;k++)
{
this->m_btn[k].ShowWindow(SW_HIDE);
}
// m_edits[5].ShowWindow(SW_HIDE);
this->m_rq.ShowWindow(SW_HIDE);
return show;
}
bool CTabXSTH::EnableBaseInfo(bool enabled)
{
for(int i=0;i<this->mc_iNumber;i++)
{
m_edits[i].SetReadOnly(!enabled);
}
this->m_rq.EnableWindow(enabled);
return enabled;
}
void CTabXSTH::SetKey(int mark)
{
this->m_btn[3].EnableWindow(false);
this->m_btn[4].EnableWindow(false);
int i=3;
while(i--)
{
m_btn[i].EnableWindow(true);
}
this->EnableBaseInfo(false);
if(mark<0)return;
for(i=0;i<this->mc_iNumber;i++)
{
this->m_edits[i].SetWindowText(this->m_list->GetItemText(mark,i));
}
// int y=0,m=0,d=0;
// DateToInt(m_list->GetItemText(mark,5),y,m,d);
// CTime t(y,m,d,0,0,0);
// this->m_rq.SetTime(&t);
// this->GetValuesFromEdits();
// this->EnableBaseInfo(false);
}
void CTabXSTH::SetTheBaseInfoFocus()
{
HWND hwnd=::GetFocus();
int iID=::GetDlgCtrlID(hwnd);
// enum{ID_EDITS_1=161};
// enum{ID_BUTTONS_1=201};
if(iID==160+mc_iNumber)
{ this->SetFocus();
return;
}
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;
}
}
}
void CTabXSTH::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();
}
}*/
}
bool CTabXSTH::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_dataXs.m_runsql.RunSQL(sql);
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -