fbb.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 443 行
CPP
443 行
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Fbb.h"
#include "FbbSub.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmFbb *frmFbb;
TfrmFbbSub *FbbSubfrm;
TSDEdit *seZY,*seSettleMode;
//---------------------------------------------------------------------------
__fastcall TfrmFbb::TfrmFbb(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmFbb::GetDataToGrid()
{
AnsiString ItemStr,FbbAmtStr,FbbTypeStr,ZYStr,SettleModeStr;
if(!GetFieldValue("FbbAmt").IsEmpty())
{
FbbAmtStr=GetFieldValue("FbbAmt");
}
else
{
FbbAmtStr="0";
}
if(!GetFieldValue("FbbType").IsEmpty())
{
FbbTypeStr=GetFieldValue("FbbType");
}
else
{
FbbTypeStr=-1;
}
try
{
//得到摘要名称
seZY->LocateKey(GetFieldValue("FbbZy"));
ZYStr=seZY->ItemData[0];
//得到结结算方式名称
seSettleMode->LocateKey(GetFieldValue("FbbSettleMode"));
SettleModeStr=seSettleMode->ItemData[0];
//------------
ItemStr = GetFieldValue("FbbNo")+"\t"+GetFieldValue("FbbDate");
switch(FbbTypeStr.ToInt())
{
case 1:
ItemStr=ItemStr+"\t"+"费用";
break;
case 2:
ItemStr=ItemStr+"\t"+"客户往来";
break;
case 3:
ItemStr=ItemStr+"\t"+"供应商往来";
break;
case 4:
ItemStr=ItemStr+"\t"+"部门";
break;
case 5:
ItemStr=ItemStr+"\t"+"个人";
break;
case 6:
ItemStr=ItemStr+"\t"+"内部转帐";
break;
case 7:
ItemStr=ItemStr+"\t"+"换汇";
break;
default:
ItemStr=ItemStr+"\t"+" ";
}
ItemStr=ItemStr+"\t"+ZYStr+"\t"+SettleModeStr+"\t"+ GetFieldValue("FbbSettleNo");
if(GetFieldValue("FbbDir")==1)
ItemStr=ItemStr+"\t"+"收";
else
ItemStr=ItemStr+"\t"+"支";
ItemStr=ItemStr+ "\t"+FormatFloat("#,##0.00",FbbAmtStr.ToDouble());
if(GetFieldValue("FbbVerify")=="1")
ItemStr=ItemStr + "\t" + "√";
else
ItemStr=ItemStr + "\t" + AnsiString("");
}
__finally
{
//
}
return (ItemStr);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::InitEditControl()
{
ClientGroup->AddComponent(2,true,true,false,sgFbb,sgFbb->Name);
ClientGroup->AddComponent(2,true,true,false,scFbbCac,scFbbCac->Name);
ClientGroup->AddComponent(2,true,true,true,seFbbCurrency,seFbbCurrency->Name);
FillEdit(Handle,seFbbCurrency,"select CurrencyName,CurrencyCode from sdCurrency order by CurrencyCode",
"CurrencyName","CurrencyCode");
FillComboBox(Handle,scFbbCac,"select memo=CacCode+space(16-Len(CacCode))+' | '+GlkmCode+'-'+GlkmName,CacCode,CacCurrency,CacType,GlkmCode from sdCac,sdGlkm where CacGlkm=GlkmCode order by CacGlkm",
"memo","CacCode","CacCurrency","CacType","GlkmCode");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::ClearControl(bool BringToNext)
{
//AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::WaitUserInput()
{
//AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::GetDataFromComObject()
{//AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::SendDataToComObject()
{
//AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::RefreshGridData(int mAction)
{
AnsiString sGridItem;
sGridItem=GetDataToGrid();
int i;
switch(mAction)
{
case 0: //新增
sgFbb->AddItem(sGridItem);
break;
case 1: //修改
i = sgFbb->Row;
sgFbb->ChangeItem(sGridItem,i);
break;
case 2: //删除
sgFbb->RemoveItem(sgFbb->Row);
} ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::FillGridWithData()
{
AnsiString ItemStr;
comServer->MoveFirst();
sgFbb->RowCount = 1;
while(comServer->Eof == 0)
{
ItemStr = GetDataToGrid();
sgFbb->AddItem(ItemStr);
comServer->MoveNext();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::FormShow(TObject *Sender)
{
try
{
StartWaitForm("正在启动出纳日记帐");
//摘要
seZY=new TSDEdit(frmFbb);
seZY->Parent=frmFbb;
seZY->Visible=false;
seZY->KeyItem=cbItem2;
seZY->DispItem=cbItem1;
FillEdit(Handle,seZY,"select NoteBookText,NoteBookCode from sdNoteBook order by NoteBookCode","NoteBookText","NoteBookCode");
//结算方式
seSettleMode =new TSDEdit(frmFbb);
seSettleMode->Parent=frmFbb;
seSettleMode->Visible=false;
seSettleMode->KeyItem=cbItem2;
seSettleMode->DispItem=cbItem1;
FillEdit(Handle,seSettleMode,"select SettleModeName,SettleModeCode from sdSettleMode","SettleModeName","SettleModeCode");
FbbSubfrm=new TfrmFbbSub(this);
}
__finally
{
EndWaitForm();
}
seFbbCurrency->ItemIndex=-1;
if(scFbbCac->Items->Count>0)
{
scFbbCac->ItemIndex=0;
scFbbCacChange(Sender);
}
else
throw Exception("出纳帐户的资料没有定义");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::RefreshUpdateData(int MsgSrc,int MsgType)
{
/*
switch(MsgSrc)
{
case euSdCurrency:
if(ShowUpdateMessage(MsgSrc,MsgType))
FillEdit(Handle,seFbbCurrency,"select CurrencyName,CurrencyCode from sdCurrency order by CurrencyCode",
"CurrencyName","CurrencyCode");
break;
case euSdCac:
if(ShowUpdateMessage(MsgSrc,MsgType))
FillComboBox(Handle,scFbbCac,"select memo=CacCode+space(16-Len(CacCode))+GlkmCode+'-'+GlkmName,CacCode,CacCurrency,CacType,GlkmCode from sdCac,sdGlkm where CacGlkm=GlkmCode order by CacCode",
"memo","CacCode","CacCurrency","CacType","GlkmCode");
break;
default:
break;
}
*/
}
//---------------------------------------------------------------------------
int __fastcall TfrmFbb::GetMaxFbbNo()
{
int vMaxNo;
if(sgFbb->RowCount>1)
{
vMaxNo=sgFbb->Cells[0][1].ToInt();
for(int i=2;i<sgFbb->RowCount;i++)
{
if(sgFbb->Cells[0][i].ToInt()>vMaxNo)
vMaxNo=sgFbb->Cells[0][i].ToInt();
}
}
else
vMaxNo=0;
return vMaxNo;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::sgFbbDblClick(TObject *Sender)
{
if(comServer->RecordCount>0)
{
AnsiString Keystr;
Keystr=sgFbb->Cells[0][sgFbb->Row]+"\t"+scFbbCac->ItemData[1]+"\t"+g_sdFMonth+"\t";//多字段关键字用"\t"
if(comServer->LocateByKey(Keystr))//定为成功后返回值为false~!,不成功返回true!
throw Exception("当前没有记录可以编辑");
try
{
FbbSubfrm->SetcomServer(comServer);
FbbSubfrm->FCurState=CurrentState;
FbbSubfrm->FFbbVerify=GetFieldValue("FbbVerify");
FbbSubfrm->FFbbCac=scFbbCac->ItemData[1];
FbbSubfrm->FMaxFbbNo=sgFbb->TextMatrix[sgFbb->Row][0]; //
FbbSubfrm->FFbbCurrency=seFbbCurrency->ItemData[1];
FbbSubfrm->ShowModal();
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muAddDetailClick(TObject *Sender)
{
try
{
TRecBaseForm::muAddDetailClick(Sender);
FbbSubfrm->SetcomServer(comServer);
FbbSubfrm->FCurState=CurrentState;
FbbSubfrm->FFbbCac=scFbbCac->ItemData[1];
FbbSubfrm->FMaxFbbNo=AnsiString(GetMaxFbbNo()+1);
FbbSubfrm->FFbbCurrency=seFbbCurrency->ItemData[1];
FbbSubfrm->ShowModal();
if(FbbSubfrm->FRetState=="OK")
TRecBaseForm::muSaveClick(Sender);
else//cancel
{
try
{
try
{
if(CurState==caAddDetail || CurState==caEditDetail)
{
Screen->Cursor=crHourGlass;
Application->ProcessMessages();
comServer->Cancel();
SetControlState(caSave);
}
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
__finally
{
Application->ProcessMessages();
Screen->Cursor=crDefault;
}
}
}
__finally
{
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muEditDetailClick(TObject *Sender)
{
if(comServer->RecordCount>0)
{
try
{
AnsiString Keystr;
Keystr=sgFbb->Cells[0][sgFbb->Row]+"\t"+scFbbCac->ItemData[1]+"\t"+g_sdFMonth+"\t";//多字段关键字用"\t"
if(comServer->LocateByKey(Keystr))
throw Exception("当前没有记录可以编辑");
else
TRecBaseForm::muEditDetailClick(Sender);
FbbSubfrm->SetcomServer(comServer);
FbbSubfrm->FCurState=CurrentState;
FbbSubfrm->FFbbVerify=GetFieldValue("FbbVerify");
FbbSubfrm->FFbbCac=scFbbCac->ItemData[1];
FbbSubfrm->FMaxFbbNo=sgFbb->TextMatrix[sgFbb->Row][0];
FbbSubfrm->FFbbCurrency=seFbbCurrency->ItemData[1];
FbbSubfrm->ShowModal();
if(FbbSubfrm->FRetState=="OK")
TRecBaseForm::muSaveClick(Sender);
else
{
try
{
try
{
if(CurState==caAddDetail || CurState==caEditDetail)
{
Screen->Cursor=crHourGlass;
Application->ProcessMessages();
comServer->Cancel();
SetControlState(caSave);
}
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
__finally
{
Application->ProcessMessages();
Screen->Cursor=crDefault;
}
}
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muFirstClick(TObject *Sender)
{
if(sgFbb->RowCount > 1)
sgFbb->Row=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muNextClick(TObject *Sender)
{
if(sgFbb->RowCount > 1 && sgFbb->Row < sgFbb->RowCount-1)
sgFbb->Row=sgFbb->Row+1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muLastClick(TObject *Sender)
{
if(sgFbb->RowCount > 1)
sgFbb->Row=sgFbb->RowCount-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muPreviousClick(TObject *Sender)
{
if(sgFbb->RowCount > 1 && sgFbb->Row > 1)
sgFbb->Row=sgFbb->Row-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::scFbbCacChange(TObject *Sender)
{
if(scFbbCac->ItemIndex==-1)//用在删除后不能定位的情况
{
return;
}
AnsiString tCacCode;
tCacCode=scFbbCac->ItemData[1];
if(tCacCode=="")
return;
seFbbCurrency->LocateKey(scFbbCac->ItemData[2]);
if(scFbbCac->ItemData[3]==1)
{
this->Caption="出纳日记帐--银行帐(第"+ g_sdFMonth + "期)";
}
else
{
this->Caption="出纳日记帐--现金帐(第"+ g_sdFMonth + "期)";
}
comServer->FilterString="FbbFmonth='"+g_sdFMonth+"' and FbbCac='"+tCacCode+"'";
comServer->Query();
if(comServer->RecordCount>0)
FillGridWithData();
else
sgFbb->RowCount=1;
}
//---------------------------------------------------------------------------
__fastcall TfrmFbb::~TfrmFbb()
{
if(FbbSubfrm) delete FbbSubfrm;
delete seZY;
delete seSettleMode;
}
void __fastcall TfrmFbb::muDeleteDetailClick(TObject *Sender)
{
//先判断行数!
if(sgFbb->RowCount>=2)
{
TRecBaseForm::muDeleteDetailClick(Sender);
}
if(sgFbb->RowCount<2)//当最后一行被删除时,头也被删掉
{
scFbbCac->ItemIndex=-1;
scFbbCacChange(Sender);
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?