arrsh_hy.cpp
来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 399 行
CPP
399 行
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Arrsh_HY.h"
#include "Arrsd_HY.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "GenBaseForm"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmArrsh_HY *frmArrsh_HY;
//---------------------------------------------------------------------------
__fastcall TfrmArrsh_HY::TfrmArrsh_HY(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
: TGenBaseForm(Owner,chWnd,MidCode,WhereStr)
{
SetAutoCodeString(seArrshCode,"Acm-68");
//AutoCtl=seArrshCode;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::sgArrsdSelectCell(TObject *Sender, int ACol,
int ARow, bool &CanSelect)
{
if (ARow == 0)
{
return;
}
comServer->LocateItemByKey(seArrshCode->Text+"\t"+sgArrsd->TextMatrix[ARow][1]);
GetDataFromComObject(2);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::sgArrsdDblClick(TObject *Sender)
{
int iRow;
iRow=sgArrsd->Row;
if (iRow == 0)
{
return;
}
if (comServer->ItemCount >0)
{
GetDataFromComObject(2);
sgArrsd->Visible=false;
FloatPanel2->Visible=true;
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::btnOKClick(TObject *Sender)
{
if ((CurrentState==caAddDetail)||(CurrentState==caAddBill))
{
try
{
if(DetailState==caAddDetail)
comServer->AddItem();
SendDataToComObject(2);
comServer->AddToObject();
ClearControl(2,false);
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
else
ChangeToBrowseState(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::btnCancelClick(TObject *Sender)
{
CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::FormShow(TObject *Sender)
{
ClearControl(1,false);
ClearControl(2,false);
TGenBaseForm::MoveToFirst();
ChangeToBrowseState(true);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::RefreshUpdateData(int MsgSrc,int MsgType)
{
//在这里添加相应消息的语句
}
void __fastcall TfrmArrsh_HY::InitEditControl()
{
ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(1,false,true,false, seArrshCode,seArrshCode->Name);
ClientGroup->AddComponent(1,false,true,true, seArrshDocCode,seArrshDocCode->Name);
ClientGroup->AddComponent(1,true,true,true, scArrshDocType,scArrshDocType->Name);
ClientGroup->AddComponent(2,false,false,true,FloatPanel2,FloatPanel2->Name);
ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
scArrshDocType->ClearAll();
scArrshDocType->AddItems("1-退款单","1");
scArrshDocType->AddItems("2-退回票据","2");
scArrshDocType->AddItems("3-红字应收单","3");
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::ClearControl(int Section,bool BringToNext)
{
if (Section == 1)
{
if (! BringToNext)
{
seArrshCode->Text="";
deArrshDate->Text=g_sdCurDate;
scArrshDocType->ItemIndex=2;
seArrshDocCode->Text="";
memArrshDesc->Text="";
lblArrshUser->Caption=g_sdUserCode;
chkArrshCheck->Checked=false;
lblArrshChecker->Caption="";
lblArrshCheckDate->Caption="";
SetCheckToolbarStatus(false);
}
sgArrsd->RowCount=1;
}
else if (Section==2)
{
if (! BringToNext)
{
// if(comServer->RecordCount > 0)
seArrsdLine->Text=AnsiString(comServer->ItemCount+1);
// else
// seArrsdLine->Text="1";
seArrsdDocCode->Text="";
seArrsdDocLine->Text="0";
seArrsdCAmt->Text="0.00";
seArrsdRAmt->Text="0.00";
seArrsdConv->Text="0.00";
memArrsdDesc->Text="";
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::GetDataFromComObject(int Section)
{
if (Section == 1)
{
seArrshCode->Text=GetHeadValue("ArrshCode");
deArrshDate->Text=GetHeadValue("ArrshDate");
scArrshDocType->LocateKey(GetHeadValue("ArrshDocType"));
seArrshDocCode->Text=GetHeadValue("ArrshDocCode");
memArrshDesc->Text=GetHeadValue("ArrshDesc");
lblArrshUser->Caption=GetHeadValue("ArrshUser");
chkArrshCheck->Checked=(GetHeadValue("ArrshCheck")=="1");
lblArrshChecker->Caption=GetHeadValue("ArrshChecker");
lblArrshCheckDate->Caption=GetHeadValue("ArrshCheckDate");
if((GetHeadValue("ArrshCheck")=="1"))
SetCheckToolbarStatus(true);
else
SetCheckToolbarStatus(false);
}
else
{
seArrsdLine->Text=GetDetailValue("ArrsdLine");
seArrsdDocCode->Text=GetDetailValue("ArrsdDocCode");
seArrsdDocLine->Text=GetDetailValue("ArrsdDocLine");
seArrsdCAmt->Text=GetDetailValue("ArrsdCAmt");
seArrsdRAmt->Text=GetDetailValue("ArrsdRAmt");
seArrsdConv->Text=GetDetailValue("ArrsdConv");
memArrsdDesc->Text=GetDetailValue("ArrsdDesc");
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::SendDataToComObject(int Section)
{
if (Section==1)
{
SetHeadValue("ArrshCode",seArrshCode->Text);
SetHeadValue("ArrshDate",deArrshDate->Text);
SetHeadValue("ArrshDocType",scArrshDocType->ItemData[cbItem2]);
SetHeadValue("ArrshDocCode",seArrshDocCode->Text);
SetHeadValue("ArrshDesc",memArrshDesc->Text);
SetHeadValue("ArrshUser",lblArrshUser->Caption);
}
else
{
SetDetailValue("ArrsdCode",seArrshCode->Text);
SetDetailValue("ArrsdLine",seArrsdLine->Text);
SetDetailValue("ArrsdDocCode",seArrsdDocCode->Text);
SetDetailValue("ArrsdDocLine",seArrsdDocLine->Text);
SetDetailValue("ArrsdCAmt",seArrsdCAmt->Text);
SetDetailValue("ArrsdRAmt",seArrsdRAmt->Text);
SetDetailValue("ArrsdConv",seArrsdConv->Text);
SetDetailValue("ArrsdDesc",memArrsdDesc->Text);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::WaitUserInput(int Section)
{
if (Section ==1)
{
if(seArrshCode->Enabled)
seArrshCode->SetFocus();
}
else
{
sgArrsd->Visible=false;
FloatPanel2->Visible=true;
if(seArrsdDocCode->Enabled)
seArrsdDocCode->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::RefreshGridData(int mAction)
{
AnsiString ItemStr;
ItemStr = GetItemStringToGrid();
switch(mAction)
{
case 0:
sgArrsd->AddItem(ItemStr);
break;
case 1:
sgArrsd->ChangeItem(ItemStr,sgArrsd->Row);
break;
case 2:
sgArrsd->RemoveItem(sgArrsd->Row);
break;
default:
break;
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmArrsh_HY::GetItemStringToGrid()
{
AnsiString s_ItemStr;
s_ItemStr ="\t"+GetDetailValue("ArrsdLine")+
"\t"+GetDetailValue("ArrsdDocCode")+
"\t"+GetDetailValue("ArrsdDocLine")+
"\t"+GetDetailValue("ArrsdCAmt")+
"\t"+GetDetailValue("ArrsdRAmt")+
"\t"+GetDetailValue("ArrsdConv")+
"\t"+GetDetailValue("ArrsdDesc");
return s_ItemStr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::DisplayBill()
{
if(comServer->RecordCount<1)
return;
GetDataFromComObject(1);
ChangeToBrowseState(true);
FillGridWithData();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::GetBill(AnsiString BillID)
{
if(comServer->Find("ArrshCode='"+BillID+"'"))
{
DisplayBill();
}
else
if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
{
AddHeadRecord();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::FillGridWithData()
{
AnsiString ItemStr;
sgArrsd->RowCount=1;
if(comServer->RecordCount<1)
return;
for (int i=0;i<comServer->ItemCount;i++)
{
comServer->LocateItemByIndex(i);
RefreshGridData(0);
}
comServer->LocateItemByIndex(0);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::GenrateBill()
{
int TempCount;
TempCount = comServer->ItemCount;
TfrmArrsd_HY *p;
p=new TfrmArrsd_HY(this);
SetControlState(caAddBill);
p->GetComObject(comServer);
try
{
p->ShowModal();
}
__finally
{
delete p;
}
if (TempCount < comServer->ItemCount)
TGenBaseForm::tbSaveClick(NULL);
else
CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::ChangeToBrowseState(bool Browse)
{
FloatPanel2->Visible=false;
sgArrsd->Visible=true;
if(Browse == false)
sgArrsd->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::seArrshCodeExit(TObject *Sender)
{
if(CurrentState==caNormal && seArrshCode->Text != GetHeadValue("ArrshCode"))
{
comServer->LocateByKey(WideString(seArrshCode->Text));
DisplayBill();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::seArrshDocCodeButtonClick(TObject *Sender)
{
AnsiString SqlStr;
TfrmWnQuery *p;
switch(scArrshDocType->ItemIndex)
{
case 2: //单据类型为红字应收单
SqlStr="005[红字应收单号][财务月份][登记日期][金额][原应收单号] ";
SqlStr+=" select ArobCode,ArobFmonth,ArobDate,ArobAmt-ArobCAmt,ArobDocCode ";
SqlStr+=" from sdArob where ArobCheck=1 and ArobRed=-1 ";
SqlStr+=" order by ArobFmonth,ArobDate,ArobCode ";
try
{
StartWaitForm("正在查询,请稍候...");
p=new TfrmWnQuery(this,"红字应收单查询",SqlStr);
}
__finally
{
EndWaitForm();
}
if(p->ShowModal()==mrOk)
{
seArrshDocCode->Text=p->ColData[1];
}
delete p;
break;
default:
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::scArrshDocTypeChange(TObject *Sender)
{
seArrshDocCode->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TfrmArrsh_HY::tbGenDetailClick(TObject *Sender)
{
if(scArrshDocType->ItemIndex<0)
return;
if(seArrshDocCode->Text == "")
return;
TGenBaseForm::tbGenDetailClick(Sender);
}
//---------------------------------------------------------------------------
bool __fastcall TfrmArrsh_HY::BeforeCheck()
{
SetHeadValue("ArrshCheck",1);
SetHeadValue("ArrshChecker",g_sdUserCode);
SetHeadValue("ArrshCheckDate",g_sdCurDate);
return true;
}
//---------------------------------------------------------------------------
bool __fastcall TfrmArrsh_HY::BeforeUnCheck()
{
SetHeadValue("ArrshCheck",0);
SetHeadValue("ArrshChecker","");
SetHeadValue("ArrshCheckDate",NULL);
return true;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?