📄 accobook_ceview.cpp
字号:
{
int num=g_dbf.GetRecordCount();
if(g_nHitIndex<0||g_nHitIndex>num)
{
::MessageBox(GetSafeHwnd(),_T("请先选定要修改的记录!"),
_T(" 提示 !"),MB_OK);
return;
}
if(::MessageBox(GetSafeHwnd(),_T("真要修改所选记录吗?"),
_T(" 修改 ?"),MB_YESNO)==IDNO)
{
return;
}
TCHAR cc[100];
CString sRiQi,sShuE,sType,sBeiZhu;
g_pEditBeiZhu->GetWindowText(sBeiZhu);
UpdateData();
if(m_bShouRu&&m_bZhiChu)
{
::MessageBox(GetSafeHwnd(),_T("收入或支出只能选一个!"),
_T(" 提示 !"),MB_OK);
return;
}
g_pEditShuE->GetWindowText(sShuE);
if(sShuE=="")
{
::MessageBox(GetSafeHwnd(),_T("请填写金额后再按修改!"),
_T(" 提示 !"),MB_OK);
return;
}
g_pEditRiQi->GetWindowText(sRiQi);
if(m_bShouRu)
sType=_T("收入");
else
sType=_T("支出");
char cXuHao[100],cShuE[100],cRiQi[40],cType[20],cBeiZhu[255];
int len;
int index;
if(m_nIsListAll)
index=g_nHitIndex+1;
else
index=g_wStationsArray[g_nHitIndex]+1;
wsprintf(cc,_T("%d"),index);
len=g_dbf.WideCharToChar(cc,cXuHao);
g_dbf.SetFieldStr(index,0,(PBYTE)cXuHao,len);
len=g_dbf.WideCharToChar(sRiQi,cRiQi);
g_dbf.SetFieldStr(index,1,(PBYTE)cRiQi,len);
len=g_dbf.WideCharToChar(sType,cType);
g_dbf.SetFieldStr(index,2,(PBYTE)cType,len);
len=g_dbf.WideCharToChar(sShuE,cShuE);
g_dbf.SetFieldStr(index,3,(PBYTE)cShuE,len);
len=g_dbf.WideCharToChar(sBeiZhu,cBeiZhu);
g_dbf.SetFieldStr(index,4,(PBYTE)cBeiZhu,len);
g_dbf.WriteAllDataToFile();
if(m_nIsListAll)
ShowAll();
else
RefreshCtrl();
g_nHitIndex=-1;
}
void CAccobook_CEView::MyUpdate()
{
m_bShouRu=g_bShouRu;
m_bZhiChu=g_bZhiChu;
UpdateData(0);
}
void CAccobook_CEView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
}
void CAccobook_CEView::OnFileDeleteall()
{
if(::MessageBox(GetSafeHwnd(),_T("真要删除全部记录吗?"),
_T(" 删除全部记录 ?"),MB_YESNO)==IDNO)
return;
if(::MessageBox(GetSafeHwnd(),_T("删除的全部记录将不能恢复!是否继续?"),
_T(" 删除全部记录 ?"),MB_YESNO)==IDNO)
return;
int num=g_dbf.GetRecordCount();
int i;
BOOL bTrue=-1;
for(i=0;i<num;i++)
{
bTrue=g_dbf.DeleteRecordInMem(1);//i+1);
}
if(bTrue==1)
{
g_dbf.WriteAllDataToFile();
}
ShowAll();
g_nHitIndex=-1;
}
void CAccobook_CEView::InitCtrl()
{
m_listctrl.DeleteAllItems();
UpdateData();
GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_LISTALL)->EnableWindow(FALSE);
m_nStepNum=0;
g_nTotalRecordNum=0;
m_s2=_T("0");
m_s1=_T("0");
UpdateData(FALSE);
}
void CAccobook_CEView::RefreshCtrl()
{
OnButton2();
m_listctrl.DeleteAllItems();
TCHAR cc[20];
int i,j,len;
CString s;
g_nTotalRecordNum=g_wStationsArray.GetSize();
wsprintf(cc,_T("%d"),g_nTotalRecordNum);
m_s2=cc;
int total=min(10,g_nTotalRecordNum);
for(i=0;i<total;i++)
{
for(j=0;j<g_nTotalFieldNum;j++)
{
len=g_dbf.ReadFieldStr(g_wStationsArray[i]+1,j,g_pFieldBuf);
s=g_dbf.CharToWideChar(g_pFieldBuf,len);
m_listctrl.AddItem(i,j,s);
}
}
if(total>=10)
{
m_s1=_T("1~10");
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
}
else
{
m_s1=_T("1~")+m_s2;
}
GetDlgItem(IDC_BUTTON_LISTALL)->EnableWindow(TRUE);
UpdateData(FALSE);
}
int CAccobook_CEView::StationIn(PBYTE cc,CString s)
{
int nRtn=0;
CString ss=cc;
int pos=ss.Find(s);
if(pos>-1)nRtn=1;
if(s=="")nRtn=1;
return nRtn;
}
int CAccobook_CEView::StationIn2(const char* cc,const char* c)
{
char* ptr=strstr(cc,c);
if(ptr==NULL)return 0;
return 1;
}
void CAccobook_CEView::ReShow()
{
GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(0);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(0);
//GetDlgItem(IDC_BUTTON_ListAll)->EnableWindow(0);
m_listctrl.DeleteAllItems();
int i ,j ,len;
CString s;
TCHAR cc3[30];
m_nStepNum=0;
g_nTotalRecordNum=g_dbf.GetRecordCount();
wsprintf(cc3,_T("%d"),g_nTotalRecordNum);
m_s2=cc3;
int total=min(10,g_nTotalRecordNum);
if(total<10)
{
m_s1=_T("1~")+m_s2;
}
else
m_s1=_T("1~10");
for(i=0;i<total;i++)
{
for(j=0;j<g_nTotalFieldNum;j++)
{
if(m_nIsListAll)
{
len=g_dbf.ReadFieldStr(i+1,j,g_pFieldBuf);
s=g_dbf.CharToWideChar(g_pFieldBuf,len);
m_listctrl.AddItem(i,j,s);
}
else
{
len=g_dbf.ReadFieldStr(g_wStationsArray[i]+1,j,g_pFieldBuf);
s=g_dbf.CharToWideChar(g_pFieldBuf,len);
m_listctrl.AddItem(i,j,s);
}
}
}
GetDlgItem(IDC_BUTTON_PREV)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_NEXT)->EnableWindow(TRUE);
UpdateData(FALSE);
}
int CAccobook_CEView::UpdateList(int nField,CString s)//sBeiZhu,sType
{
char sc[101];
int i,j,count=0;
InitCtrl();
m_nIsListAll=0;
int len;
g_wStationsArray.RemoveAll();
g_dbf.WideCharToChar(s,sc);
DWORD l;
for(i=0;i<g_dbf.GetRecordCount();i++)
{
l=g_dbf.ReadFieldStr(i+1,nField,g_pFieldBuf);
if(StationIn2((const char*)g_pFieldBuf,sc))
{
g_wStationsArray.Add(count);
}
count++;
}
RefreshCtrl();
return 1;
}
int CAccobook_CEView::UpdateList2(int nField,CString s1,CString s2)//sShuE1,sShuE2
{
char sc1[101],sc2[101];
int i,j,count=0;
InitCtrl();
m_nIsListAll=0;
int len;
g_wStationsArray.RemoveAll();
TCHAR *stopstring;
double f1=_tcstod(s1,&stopstring);
double f2=_tcstod(s2,&stopstring);
if(f1==0)
f1=-100000000000000;
if(f2==0)
f2=100000000000000;
double f;
DWORD l;
CString s;
for(i=0;i<g_dbf.GetRecordCount();i++)
{
l=g_dbf.ReadFieldStr(i+1,nField,g_pFieldBuf);
s=g_dbf.CharToWideChar(g_pFieldBuf,l);
f=_tcstod(s,&stopstring);
if(f>=f1&&f<=f2)
{
g_wStationsArray.Add(count);
}
count++;
}
RefreshCtrl();
return 1;
}
int CAccobook_CEView::UpdateListByTime(int nField,CString s1,CString s2)//sRIQI1,sRIQI2
{
if(s1=="")s1=s2;
if(s2=="")s2=s1;
if(s1==""&&s2=="")
{
::MessageBox(GetSafeHwnd(),_T("请输入日期后再查询!"),
_T(" 提示! "),MB_OK);
return 0;
};
CMyTime t1(s1);
CMyTime t2(s2);
char sc1[101],sc2[101];
int i,j,count=0;
InitCtrl();
m_nIsListAll=0;
int len;
g_wStationsArray.RemoveAll();
DWORD l;
CString s;
for(i=0;i<g_dbf.GetRecordCount();i++)
{
l=g_dbf.ReadFieldStr(i+1,nField,g_pFieldBuf);
s=g_dbf.CharToWideChar(g_pFieldBuf,l);
CMyTime t(s);
if(YearMonthDayIn(t1.m_dYear,t1.m_dMonth,t1.m_dDay,
t2.m_dYear,t2.m_dMonth,t2.m_dDay,
t.m_dYear,t.m_dMonth,t.m_dDay))
{
g_wStationsArray.Add(count);
}
count++;
}
RefreshCtrl();
return 1;
}
int CAccobook_CEView::UpdateListWithAll(CString sType,
CString sShuE1,CString sShuE2,
CString sRIQI1,CString sRIQI2,
CString sBeiZhu)
{
char sc1[101],sc2[101];
int i,j,count=0;
InitCtrl();
m_nIsListAll=0;
int len;
g_wStationsArray.RemoveAll();
char cType[40];
g_dbf.WideCharToChar(sType,cType);
TCHAR *stopstring;
double f1=_tcstod(sShuE1,&stopstring);
double f2=_tcstod(sShuE2,&stopstring);
if(f1==0)
f1=-100000000000000;
if(f2==0)
f2=100000000000000;
if(sRIQI1=="")sRIQI1=_T("0.0.0.");
if(sRIQI2=="")sRIQI2=_T("2999.12.31.");
CMyTime t1(sRIQI1);
CMyTime t2(sRIQI2);
char cBeiZhu[101];
g_dbf.WideCharToChar(sBeiZhu,cBeiZhu);
double f;
DWORD l;
CString s;
for(i=0;i<g_dbf.GetRecordCount();i++)
{
l=g_dbf.ReadFieldStr(i+1,2,g_pFieldBuf);
if(StationIn2((const char*)g_pFieldBuf,cType))
{
l=g_dbf.ReadFieldStr(i+1,4,g_pFieldBuf);
if(StationIn2((const char*)g_pFieldBuf,cBeiZhu))
{
l=g_dbf.ReadFieldStr(i+1,3,g_pFieldBuf);
s=g_dbf.CharToWideChar(g_pFieldBuf,l);
f=_tcstod(s,&stopstring);
if(f>=f1&&f<=f2)
{
l=g_dbf.ReadFieldStr(i+1,1,g_pFieldBuf);
s=g_dbf.CharToWideChar(g_pFieldBuf,l);
CMyTime t(s);
if(YearMonthDayIn(t1.m_dYear,t1.m_dMonth,t1.m_dDay,
t2.m_dYear,t2.m_dMonth,t2.m_dDay,
t.m_dYear,t.m_dMonth,t.m_dDay))
{
g_wStationsArray.Add(count);
}
}
}
}
count++;
}
RefreshCtrl();
return 1;
}
/*
void CAccobook_CEView::OnButtonStatistics()
{
CString sType1=_T("收入");
CString sType2=_T("支出");
char cType1[50],cType2[50];
g_dbf.WideCharToChar(sType1,cType1);
g_dbf.WideCharToChar(sType2,cType2);
double dShouRu=0;
double dZhiChu=0;
double f;
int i,j,len;
CString s;
TCHAR *stopstring;
for(i=0;i<g_nTotalRecordNum;i++)
{
if(m_nIsListAll)
{
len=g_dbf.ReadFieldStr(i+1,3,g_pFieldBuf);
s=g_dbf.CharToWideChar(g_pFieldBuf,len);
f=_tcstod(s,&stopstring);
len=g_dbf.ReadFieldStr(i+1,2,g_pFieldBuf);
if(StationIn2((const char*)g_pFieldBuf,cType1))
dShouRu+=f;
else
dZhiChu+=f;
}
else
{
len=g_dbf.ReadFieldStr(g_wStationsArray[i]+1,3,g_pFieldBuf);
s=g_dbf.CharToWideChar(g_pFieldBuf,len);
f=_tcstod(s,&stopstring);
len=g_dbf.ReadFieldStr(g_wStationsArray[i]+1,2,g_pFieldBuf);
if(StationIn2((const char*)g_pFieldBuf,cType1))
dShouRu+=f;
else
dZhiChu+=f;
}
}
m_dIncome=dShouRu;
m_dOutcome=dZhiChu;
m_dYingyu=dShouRu-dZhiChu;
UpdateData(0);
}
*/
BOOL CAccobook_CEView::YearMonthDayIn(
double y1,double m1,double d1,
double y2,double m2,double d2,
double y,double m,double d)
{
int num1=CalcYangDays(y1,m1,d1);
int num2=CalcYangDays(y2,m2,d2);
int num=CalcYangDays(y,m,d);
if(num>=num1&&num<=num2)return 1;
return 0;
}
BOOL CAccobook_CEView::IsLeapYear(int AYear)
{
return (AYear % 4 == 0) && ((AYear % 100 != 0) || (AYear % 400 == 0));
}
int CAccobook_CEView::CalcNewYangWithDaysLess365(int year,int days,int& y,int& m,int& d)//0,0,0 as base yang year
{
if(days<1)
{
if(IsLeapYear(year))
days=366+days;
else
days=365+days;
year--;
CalcNewYangWithDaysLess365(year,days,y,m,d);
return 1;
}
//days>0:
y=year;
m=12;
d=31;
int i;
m=0;
d=0;
y++;
for(i=1;i<13;i++)
{
if((i==1)||(i==3)||(i==5)||(i==7)||(i==8)||(i==10)||(i==12))
{
if(days>31)
days-=31;
else
{
m=i;
d=days;
break;
}
}
else
{
if(i!=2)//4,6,9,11
{
if(days>30)
days-=30;
else
{
m=i;
d=days;
break;
}
}
else
{
if(IsLeapYear(y))
{
if(days>29)
days-=29;
else
{
m=i;
d=days;
break;
}
}
else
{
if(days>28)
days-=28;
else
{
m=i;
d=days;
break;
}
}
}
}
m=i;
}
return 1;
}
int CAccobook_CEView::CalcNewYangWithDays(int days,int& y,int& m,int& d)//0,0,0 as base yang year
{
int i=0;
int num=days/365-1;
if(num<0)return 0;
int leftDays=days-(num+1)*365;
int leapYearNum=0;
for(i=1;i<=num;i++)
{
if(IsLeapYear(i))
leapYearNum++;
}
if(leftDays>=leapYearNum)
{
leftDays=leftDays-leapYearNum;
CalcNewYangWithDaysLess365(num,leftDays,y,m,d);
}
else//leftDays<leapYearNum
{
if(IsLeapYear(num))
leapYearNum--;
num=num-1;
leftDays=365+leftDays-leapYearNum;
CalcNewYangWithDaysLess365(num,leftDays,y,m,d);
}
return 1;
}
int CAccobook_CEView::CalcYangDays(int endY,int endM,int endD)
{
int i,leapYearNum=0;
for(i=1;i<endY;i++)
{
if(IsLeapYear(i))
leapYearNum++;
}
int day1=endY*365+leapYearNum;
int day2=0;
for(i=1;i<endM;i++)
{
if((i==1)||(i==3)||(i==5)||(i==7)||(i==8)||(i==10)||(i==12))
day2+=31;
else
{
if(i!=2)
day2+=30;
else
if(IsLeapYear(endY))
day2+=29;
else
day2+=28;
}
}
day1+=day2+endD;
return day1;
}
void CAccobook_CEView::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
/*
long lwStyle = ::GetWindowLong(GetSafeHwnd(), GWL_STYLE);
lwStyle &= ~WS_VSCROLL;
lwStyle &= ~WS_HSCROLL;
::SetWindowLong(GetSafeHwnd(), GWL_STYLE, lwStyle);
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -