bcs.cpp
来自「科思ERP部分源码及控件」· C++ 代码 · 共 442 行
CPP
442 行
#include <vcl.h>
#include "Bcs.h"
#include "BcsSub.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "DateEdit"
#pragma link "SDComboBox"
#pragma resource "*.dfm"
TfrmBcs *frmBcs;
TfrmBcsSub *BcsSubfrm;
TSDEdit *seZYb,*seSettleModeb;
//---------------------------------------------------------------------------
__fastcall TfrmBcs::TfrmBcs(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmBcs::GetDataToGrid()
{
AnsiString ItemStr,BcsAmtStr,ZYStr,SettleModeStr;
if(!GetFieldValue("BcsAmt").IsEmpty())
{
BcsAmtStr=GetFieldValue("BcsAmt");
}
else
{
BcsAmtStr="0";
}
try
{
//得到摘要名称
seZYb->LocateKey(GetFieldValue("BcsZy"));
ZYStr=seZYb->ItemData[0];
//得到结结算方式名称
seSettleModeb->LocateKey(GetFieldValue("BcsSettleMode"));
SettleModeStr=seSettleModeb->ItemData[0];
//------------
ItemStr =GetFieldValue("BcsLine")+"\t"+GetFieldValue("BcsDate")+"\t"+ZYStr+"\t"+SettleModeStr+"\t"+GetFieldValue("BcsSettleNo")+"\t";
if(GetFieldValue("BcsDir")==1)
ItemStr =ItemStr+FormatFloat("#,##0.00",BcsAmtStr.ToDouble())+"\t"+AnsiString("");
else
ItemStr = ItemStr+AnsiString("")+"\t"+FormatFloat("#,##0.00",BcsAmtStr.ToDouble());
if(GetFieldValue("BcsVeriry")==1)
ItemStr=ItemStr+"\t"+"√";
else
ItemStr=ItemStr+"\t"+AnsiString("");
}
__finally
{
return (ItemStr);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::InitEditControl()
{
ClientGroup->AddComponent(2,true,true,false,sgBcs,sgBcs->Name);
ClientGroup->AddComponent(2,true,true,false,scBcsCode,scBcsCode->Name);
FillComboBox(Handle,scBcsCode,"select distinct BcsCode from sdBcs order by BcsCode","BcsCode");
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::ClearControl(bool BringToNext)
{
//AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::WaitUserInput()
{
//AddCode scBcsCode->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::GetDataFromComObject()
{
//AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::SendDataToComObject()
{
//AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::RefreshGridData(int mAction)
{
AnsiString sItemStr;
sItemStr=GetDataToGrid();
switch(mAction)
{
case 0: //新增
sgBcs->AddItem(sItemStr);
break;
case 1: //修改
int i;
i = sgBcs->Row;
sgBcs->ChangeItem(sItemStr,i);
break;
case 2: //删除
sgBcs->RemoveItem(sgBcs->Row);
break;
};
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::FillGridWithData()
{
AnsiString ItemStr;
comServer->MoveFirst();
sgBcs->RowCount = 1;
while(comServer->Eof == 0)
{
ItemStr = GetDataToGrid();
sgBcs->AddItem(ItemStr);
comServer->MoveNext();
}
if(sgBcs->RowCount>1)
{
sgBcs->Row=1;
sgBcsClick(this);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::FormShow(TObject *Sender)
{
try
{
StartWaitForm("正在启动银行对帐单明细");
BcsSubfrm=new TfrmBcsSub(this);
//摘要
seZYb=new TSDEdit(frmBcs);
seZYb->Parent=frmBcs;
seZYb->Visible=false;
seZYb->KeyItem=cbItem2;
seZYb->DispItem=cbItem1;
FillEdit(Handle,seZYb,"select NoteBookText,NoteBookCode from sdNoteBook order by NoteBookCode","NoteBookText","NoteBookCode");
//结算方式
seSettleModeb =new TSDEdit(frmBcs);
seSettleModeb->Parent=frmBcs;
seSettleModeb->Visible=false;
seSettleModeb->KeyItem=cbItem2;
seSettleModeb->DispItem=cbItem1;
FillEdit(Handle,seSettleModeb,"select SettleModeName,SettleModeCode from sdSettleMode","SettleModeName","SettleModeCode");
}
__finally
{
EndWaitForm();
}
sgBcs->RowCount=1;
if(scBcsCode->Items->Count>0)
{
scBcsCode->ItemIndex=0;
scBcsCode->Tag=0;//default发生change事件
scBcsCodeChange(Sender);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::RefreshUpdateData(int MsgSrc,int MsgType)
{
/*
//AddCode
*/
}
//---------------------------------------------------------------------------
int __fastcall TfrmBcs::GetMaxBcsLine()
{
int vMaxLine;
if(sgBcs->RowCount>1)
{
vMaxLine=sgBcs->Cells[0][1].ToInt();
for(int i=2;i<sgBcs->RowCount;i++)
{
if(sgBcs->Cells[0][i].ToInt()>vMaxLine)
vMaxLine=sgBcs->Cells[0][i].ToInt();
}
}
else
vMaxLine=0;
return vMaxLine;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::sgBcsDblClick(TObject *Sender)
{
if(comServer->RecordCount>0)
{ AnsiString Keystr;
Keystr=scBcsCode->Text+"\t"+sgBcs->TextMatrix[sgBcs->Row][0]+"\t";; //多字段主键需要用"\t"分开)
if(comServer->LocateByKey(Keystr))//定为成功后返回值为false~!,不成功返回true!
throw Exception("当前没有记录可以编辑");
try
{
BcsSubfrm->SetcomServer(comServer);//基类里不要析构该对象
BcsSubfrm->FCurState=CurrentState;
BcsSubfrm->FBcsVeriry=GetFieldValue("BcsVeriry");
BcsSubfrm->FBcsCode=scBcsCode->Text;
BcsSubfrm->FMaxBcsLine=sgBcs->TextMatrix[sgBcs->Row][0];
BcsSubfrm->ShowModal();
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::muAddDetailClick(TObject *Sender)
{
AnsiString tempBcsCode;
tempBcsCode=Trim(scBcsCode->Text);
if(tempBcsCode.IsEmpty())
{
scBcsCode->SetFocus();
sgBcs->RowCount=1; //新增bcscode
}
else
{
if(!scBcsCode->LocateKey(tempBcsCode))
sgBcs->RowCount=1; //新增bcscode
}
try
{
TRecBaseForm::muAddDetailClick(Sender);
BcsSubfrm->SetcomServer(comServer);
BcsSubfrm->FCurState=CurrentState;
BcsSubfrm->FBcsCode=scBcsCode->Text;
BcsSubfrm->FMaxBcsLine=AnsiString(GetMaxBcsLine()+1);
BcsSubfrm->ShowModal();
if(BcsSubfrm->FRetState=="OK")
{
TRecBaseForm::muSaveClick(Sender);
FillComboBox(Handle,scBcsCode,"select distinct BcsCode from sdBcs order by BcsCode","BcsCode");
scBcsCode->LocateKey(BcsSubfrm->FBcsCode);
scBcsCodeChange(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;
}
}
}
catch(...)
{
TRecBaseForm::muCancelClick(Sender);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::muEditDetailClick(TObject *Sender)
{
AnsiString Keystr;
if(comServer->RecordCount>0)
{
Keystr=scBcsCode->Text+"\t"+sgBcs->TextMatrix[sgBcs->Row][0]+"\t";; //多字段主键需要用"\t"分开)
try
{
if(comServer->LocateByKey(Keystr))
throw Exception("当前没有记录可以编辑");
else
TRecBaseForm::muEditDetailClick(Sender);
BcsSubfrm->SetcomServer(comServer);
BcsSubfrm->FCurState=CurrentState;
BcsSubfrm->FBcsVeriry=GetFieldValue("BcsVeriry");
BcsSubfrm->FBcsCode=scBcsCode->Text;
BcsSubfrm->FMaxBcsLine=sgBcs->TextMatrix[sgBcs->Row][0];
BcsSubfrm->ShowModal();
if(BcsSubfrm->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 TfrmBcs::scBcsCodeChange(TObject *Sender)
{
if( scBcsCode->Tag!=0)//定位不到时不为0
{
scBcsCode->Tag=0;
return;
}
AnsiString tBcsCode;
tBcsCode=scBcsCode->Text;
if(tBcsCode.IsEmpty())
return;
comServer->FilterString="BcsCode='"+tBcsCode+"'";
comServer->Query();
if(comServer->RecordCount>0)
FillGridWithData();
else
sgBcs->RowCount=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::sgBcsClick(TObject *Sender)
{
int ARow;
AnsiString KeyCode;
ARow=sgBcs->Row;
if(ARow==0)
return;
KeyCode=scBcsCode->Text+"\t"+sgBcs->TextMatrix[ARow][0]+"\t";
comServer->LocateByKey(KeyCode);//多字段主键需要用"\t"分开
if(GetFieldValue("BcsVeriry")==1)
{
tbDeleteHead->Enabled=false;
muDeleteDetail->Enabled=false;
}
else
{
tbDeleteHead->Enabled=true;
muDeleteDetail->Enabled=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::scBcsCodeKeyPress(TObject *Sender, char &Key)
{
scBcsCode->Tag=1;
TObject *temp_Sender;
if(Key==0 && CurrentState==caNormal)//回车
{
try
{
temp_Sender=new TObject;
if(scBcsCode->LocateKey(Trim(scBcsCode->Text)))
{
scBcsCode->Tag=0;//key=0
scBcsCodeChange(temp_Sender);
}
else
throw Exception("银行对帐单号:'"+scBcsCode->Text+"'不存在");
}
__finally
{
delete temp_Sender;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::muPreviousClick(TObject *Sender)
{
if(sgBcs->RowCount > 1 && sgBcs->Row > 1)
sgBcs->Row=sgBcs->Row-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::muNextClick(TObject *Sender)
{
if(sgBcs->RowCount > 1 && sgBcs->Row < sgBcs->RowCount-1)
sgBcs->Row=sgBcs->Row+1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::muLastClick(TObject *Sender)
{
if(sgBcs->RowCount > 1)
sgBcs->Row=sgBcs->RowCount-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::muFirstClick(TObject *Sender)
{
if(sgBcs->RowCount > 1)
sgBcs->Row=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBcs::muDeleteDetailClick(TObject *Sender)
{
//先判断行数!
if(sgBcs->RowCount>=2)
{
TRecBaseForm::muDeleteDetailClick(Sender);
}
if(sgBcs->RowCount<2)//当最后一行被删除时,头也被删掉
{
FillComboBox(Handle,scBcsCode,"select distinct BcsCode from sdBcs order by BcsCode","BcsCode");
scBcsCode->ItemIndex=-1;
scBcsCodeChange(Sender);
}
}
//---------------------------------------------------------------------------
__fastcall TfrmBcs::~TfrmBcs()
{
if(BcsSubfrm) delete BcsSubfrm;
delete seZYb;
delete seSettleModeb;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?