📄 sexch.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Sexch.h"
#include "Sexcd.h"
#include "func.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"
TfrmSexch *frmSexch;
//---------------------------------------------------------------------------
__fastcall TfrmSexch::TfrmSexch(TComponent* Owner)
: TGenBaseForm(Owner,euSdSexch,"")
{
AutoCtl=seSexchCode;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::InitEditControl()
{
ClientGroup->AddComponent(1,true,true,true, FloatPanel3,FloatPanel3->Name);
ClientGroup->AddComponent(1,false,false,true, FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(1,true,true,false, sgSexcd,sgSexcd->Name);
ClientGroup->AddComponent(1,false,true,true,seSexchClient,seSexchClient->Name);
ClientGroup->AddComponent(1,false,true,false,seSexchCode,seSexchCode->Name);
ClientGroup->AddComponent(1,true,true,true,scSexchFmonth,scSexchFmonth->Name);
ClientGroup->AddComponent(1,false,false,true,seSexchCurrency,seSexchCurrency->Name);
ClientGroup->AddComponent(1,false,false,true,seSexchEnrate,seSexchEnrate->Name);
ClientGroup->AddComponent(2,false,false,true, FloatPanel2,FloatPanel2->Name);
ClientGroup->AddComponent(2,false,true,true, seSexcdSretCode,seSexcdSretCode->Name);
ClientGroup->AddComponent(2,true,true,true,seSexcdSretdLine,seSexcdSretdLine->Name);
ClientGroup->AddComponent(2,true,true,true,seSexcdGoods,seSexcdGoods->Name);
ClientGroup->AddComponent(2,true,true,true,seSexcdGoodsName,seSexcdGoodsName->Name);
ClientGroup->AddComponent(2,true,true,true,seSexcdUnit,seSexcdUnit->Name);
ClientGroup->AddComponent(2,true,true,true,seSexcdConv,seSexcdConv->Name);
ClientGroup->AddComponent(2,true,true,true,seSexcdAmt,seSexcdAmt->Name);
ClientGroup->AddComponent(2,true,true,true,seSexcdBatch,seSexcdBatch->Name);
ClientGroup->AddComponent(2,true,true,true,seSexcdLoc,seSexcdLoc->Name);
ClientGroup->AddComponent(2,true,true,true,scSexcdState,scSexcdState->Name);
ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);
ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
//Sexch
FillComboBox(scSexchFmonth,"SELECT FcMonth FROM sdFc","FcMonth");
AnsiString sSql;
sSql =AnsiString("select currencycode,currencyname,currencyrate=coalesce(rateratio,1),currencylocal from sdcurrency,sdrate");
sSql+=" where currencycode*=ratecurrency and ";
sSql+=" ratefmonth='"+g_sdSMonth+"'";
FillEdit(seSexchCurrency,sSql,"CurrencyName","CurrencyCode","CurrencyRate","CurrencyLocal");
FillEdit(seSexchClient,"SELECT ClientCode,ClientName FROM sdClient where ClientCancel=0","ClientName","ClientCode");
FillComboBox(scSexchRr,"SELECT SexcRrCode FROM sdSexcRr","SexcRrCode");
FillEdit(seSexchUser,"select UserName,UserCode from sdUser order by usercode","UserName","UserCode");
FillEdit(seSexchChecker,"select UserName,UserCode from sdUser order by usercode","UserName","UserCode");
//Sexcd
FillEdit(seSexcdUnit,"SELECT UnitCode,UnitName FROM sdUnit","UnitName","UnitCode");
FillEdit(seSexcdLoc,"SELECT LocCode,LocName FROM sdLoc","Locname","LocCode");
FillEdit(seSexcdBatch,"SELECT BatchCode,BatchDesc FROM sdBatch","BatchDesc","BatchCode");
scSexcdState->ClearAll();
scSexcdState->AddItems("预备","1");
scSexcdState->AddItems("确认","2");
scSexcdState->AddItems("待下达","3");
scSexcdState->AddItems("已下达","4");
scSexcdState->AddItems("已完成","5");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::ClearControl(int Section,bool BringToNext)
{
if (Section == 1)
{
if (! BringToNext)
{
seSexchCode->Text ="";
deSexchDate->Text =g_sdCurDate;
seSexchClient->ItemIndex =-1;
seSexchCurrency->ItemIndex =-1;
seSexchDesc->Text ="";
cheSexchCheck->Checked =false;
seSexchChecker->ItemIndex =-1;
cheSexchCancel->Checked =false;
seSexchUser->LocateKey(g_sdUserCode);
seSexchEnrate->Text ="1";
scSexchFmonth->Text =g_sdSMonth;
scSexchRr->Text ="";
lbSexchSysDate->Caption="";
}
sgSexcd->RowCount=1;
}
else if (Section==2)
{
if (!BringToNext)
{
if(comServer->ItemCount==0)
seSexcdLine->Text ="1";
else
{
comServer->LocateItemByIndex(comServer->ItemCount-1);
seSexcdLine->Text=AnsiString(StrToInt(GetDetailValue(fiSexcdLine))+1);
}
seSexcdSretdLine->Text ="";
seSexcdSretCode->Text ="";
seSexcdGoods->Text ="";
seSexcdGoodsName->Text ="";
seSexcdUnit->ItemIndex =-1;
seSexcdConv->Text ="1";
seSexcdQty->Text ="0";
seSexcdExes->Text ="0.00";
scSexcdState->ItemIndex =0;
seSexcdBatch->ItemIndex =-1;
memSexcdDesc->Text ="";
seSexcdLoc->ItemIndex =-1;
seSexcdAmt->Text ="0.00";
seSexcdPrice->Text ="0";
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::GetDataFromComObject(int Section)
{
if (Section==1)
{
seSexchCode->Text =GetHeadValue(fiSexchCode);
deSexchDate->Text =GetHeadValue(fiSexchDate);
seSexchClient->LocateKey(GetHeadValue(fiSexchClient));
seSexchCurrency->LocateKey(GetHeadValue(fiSexchCurrency));
if(seSexchCurrency->ItemData[cbItem4]=="1")
seSexchEnrate->Enabled=false;
seSexchDesc->Text =GetHeadValue(fiSexchDesc);
cheSexchCheck->Checked =GetHeadValue(fiSexchCheck)=="1";
seSexchChecker->LocateKey(GetHeadValue(fiSexchChecker));
cheSexchCancel->Checked=GetHeadValue(fiSexchCancel)=="1";
seSexchUser->LocateKey(GetHeadValue(fiSexchUser));
seSexchEnrate->Text =GetHeadValue(fiSexchEnrate);
scSexchFmonth->Text =GetHeadValue(fiSexchFmonth);
scSexchRr->Text =GetHeadValue(fiSexchRr);
lbSexchSysDate->Caption=GetHeadValue(fiSexchSysDate);
SetCheckToolbarStatus(cheSexchCheck->Checked);
SetCancelToolbarStatus(cheSexchCancel->Checked);
}
else
{
seSexcdLine->Text =GetDetailValue(fiSexcdLine);
seSexcdSretCode->Text =GetDetailValue(fiSexcdSretCode);
seSexcdSretdLine->Text =GetDetailValue(fiSexcdSretdLine);
seSexcdGoods->Text =GetDetailValue(fiSexcdGoods);
if(g_sdRsGoods->LocateByKey(WideString(seSexcdGoods->Text))==0)
seSexcdGoodsName->Text =GetGoodsValue("GoodsName");
seSexcdUnit->LocateKey(GetDetailValue(fiSexcdUnit));
seSexcdConv->Text =GetDetailValue(fiSexcdConv);
seSexcdQty->Text =GetDetailValue(fiSexcdQty);
seSexcdPrice->Text =GetDetailValue(fiSexcdPrice);
seSexcdAmt->Text =GetDetailValue(fiSexcdAmt);
seSexcdExes->Text =GetDetailValue(fiSexcdExes);
scSexcdState->LocateKey(GetDetailValue(fiSexcdState));
seSexcdBatch->LocateKey(GetDetailValue(fiSexcdBatch));
memSexcdDesc->Text =GetDetailValue(fiSexcdDesc);
seSexcdLoc->LocateKey(GetDetailValue(fiSexcdLoc));
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::SendDataToComObject(int Section)
{
AnsiString s;
if (Section==1)
{
SetHeadValue(fiSexchCode, seSexchCode->Text );
SetHeadValue(fiSexchDate, deSexchDate->Text);
SetHeadValue(fiSexchClient, seSexchClient->ItemData[cbItem2] );
SetHeadValue(fiSexchCurrency, seSexchCurrency->ItemData[cbItem2] );
SetHeadValue(fiSexchDesc, seSexchDesc->Text );
SetHeadValue(fiSexchUser, g_sdUserCode/*scSexchUser->Text*/);
SetHeadValue(fiSexchEnrate, seSexchEnrate->Text );
SetHeadValue(fiSexchFmonth, scSexchFmonth->Text );
SetHeadValue(fiSexchRr, scSexchRr->Text );
}
else
{
CalculateAmt();
SetDetailValue(fiSexcdCode,seSexchCode->Text);
SetDetailValue(fiSexcdLine, seSexcdLine->Text );
SetDetailValue(fiSexcdSretCode, seSexcdSretCode->Text );
SetDetailValue(fiSexcdSretdLine, seSexcdSretdLine->Text );
SetDetailValue(fiSexcdUnit, seSexcdUnit->ItemData[cbItem2] );
SetDetailValue(fiSexcdConv, seSexcdConv->Text );
SetDetailValue(fiSexcdGoods, seSexcdGoods->Text );
SetDetailValue(fiSexcdLoc, seSexcdLoc->ItemData[cbItem2]);
SetDetailValue(fiSexcdQty, seSexcdQty->Text );
SetDetailValue(fiSexcdPrice, seSexcdPrice->Text );
SetDetailValue(fiSexcdAmt, seSexcdAmt->Text );
SetDetailValue(fiSexcdExes, seSexcdExes->Text );
SetDetailValue(fiSexcdBatch, seSexcdBatch->ItemData[cbItem2]);
SetDetailValue(fiSexcdState, scSexcdState->ItemData[cbItem2]);
SetDetailValue(fiSexcdDesc, memSexcdDesc->Text );
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::WaitUserInput(int Section)
{
if (Section ==1)
{
// FloatPanel1->Enabled=true;
if(seSexchCode->Enabled)
seSexchCode->SetFocus();
}
else
{
// FloatPanel1->Enabled=false;
sgSexcd->Visible=false;
sgSexcd->Align=alNone;
FloatPanel2->Visible=true;
FloatPanel2->Align=alClient;
if(seSexcdLine->Enabled)
seSexcdLine->SetFocus();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::RefreshGridData(int mAction)
{
AnsiString ItemStr;
switch(mAction)
{
case 0:
ItemStr="\t"+GetDetailValue(fiSexcdLine)+"\t"+GetDetailValue(fiSexcdSretCode)+"\t"+
GetDetailValue(fiSexcdSretdLine)+"\t"+GetDetailValue(fiSexcdGoods)+"\t"+
GetDetailValue(fiSexcdUnit)+"\t"+GetDetailValue(fiSexcdQty)+"\t"+
GetDetailValue(fiSexcdAmt)+"\t"+GetDetailValue(fiSexcdExes);
sgSexcd->AddItem(ItemStr);
break;
case 1:
ItemStr="\t"+GetDetailValue(fiSexcdLine)+"\t"+GetDetailValue(fiSexcdSretCode)+"\t"+
GetDetailValue(fiSexcdSretdLine)+"\t"+GetDetailValue(fiSexcdGoods)+"\t"+
GetDetailValue(fiSexcdUnit)+"\t"+GetDetailValue(fiSexcdQty)+"\t"+
GetDetailValue(fiSexcdExes)+"\t"+GetDetailValue(fiSexcdExes);
sgSexcd->ChangeItem(ItemStr,sgSexcd->Row);
break;
case 2:
sgSexcd->RemoveItem(sgSexcd->Row);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::DisplayBill()
{
if(comServer->RecordCount<1)
return;
GetDataFromComObject(1);
ChangeToBrowseState(true);
FillGridWithData();
/* if (sgSexcd->RowCount >1)
{
AnsiString Keystr;
Keystr=sgSexcd->Cells[1][sgSexcd->Row];
comServer->LocateItemByKey(WideString(Keystr));
GetDataFromComObject(2);
}*/
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::GetBill(AnsiString BillID)
{
if(comServer->Find("SexchCode='"+BillID+"'"))
{
DisplayBill();
}
else
if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
{
AddHeadRecord();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::FillGridWithData()
{
int i;
AnsiString ItemStr;
sgSexcd->RowCount=1;
for (i=0;i<comServer->ItemCount;i++)
{
comServer->LocateItemByIndex(i);
RefreshGridData(0);
}
comServer->LocateItemByIndex(0);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmSexch::GetHeadValue(int Index)
{
WideString S;
S = ReadFieldValue(comServer,Index);
return S;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmSexch::GetDetailValue(int Index)
{
WideString S;
S = ReadItemValue(comServer,Index);
return S;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSexch::SetHeadValue(int Index,AnsiString Value)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -