arcl.cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 204 行

CPP
204
字号
//--------Receive-------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Arcl.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma link "SDComboBox"
#pragma resource "*.dfm"
TfrmArcl *frmArcl;
//---------------------------------------------------------------------------
__fastcall TfrmArcl::TfrmArcl(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcl::ClearControl(bool BringToNext)
{
    if(!BringToNext)
    {
      scArclCurrency->ItemIndex=0;
      seArclFmonth->Text=g_sdFMonth;
      seArclBoyAmt->Text="0.00";
      seArclNBoyAmt->Text="0.00";
      seArclIoyAmt->Text="0.00";
      seArclNIoyAmt->Text="0.00";
      seArclOoyAmt->Text="0.00";
      seArclNOoyAmt->Text="0.00";
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcl::InitEditControl()
{
       ClientGroup->AddComponent(2,false,false,true, FloatPanel1,FloatPanel1->Name);
       ClientGroup->AddComponent(2,true,true,false, sgArcl,sgArcl->Name);
       ClientGroup->AddComponent(2,true,true,false, FloatPanel2,FloatPanel2->Name);
       ClientGroup->AddComponent(2,true,true,true, seArclFmonth,seArclFmonth->Name);
       FillComboBox(Handle,scArclClient,"select ClientName Memo,ClientCode from sdClient order by ClientCode","Memo","ClientCode");
       FillComboBox(Handle,scArclCurrency,"select CurrencyName Memo,CurrencyCode,CurrencyLocal from sdCurrency order by CurrencyCode","Memo","CurrencyCode","CurrencyLocal");
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcl::GetDataFromComObject()
{
       scArclCurrency->LocateKey(GetFieldValue("ArclCurrency"));
       sgArcl->LocateGrid(1,GetFieldValue("ArclCurrency"));
       seArclFmonth->Text=GetFieldValue("ArclFmonth");
       seArclBoyAmt->Text=GetFieldValue("ArclBoyAmt");
       seArclNBoyAmt->Text=GetFieldValue("ArclNBoyAmt");
       seArclIoyAmt->Text=GetFieldValue("ArclIoyAmt");
       seArclNIoyAmt->Text=GetFieldValue("ArclNIoyAmt");
       seArclOoyAmt->Text=GetFieldValue("ArclOoyAmt");
       seArclNOoyAmt->Text=GetFieldValue("ArclNOoyAmt");
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcl::SendDataToComObject()
{
       seArclBoyAmtExit(NULL);

       SetFieldValue("ArclFmonth",seArclFmonth->Text);
       SetFieldValue("ArclClient",scArclClient->ItemData[cbItem2]);
       SetFieldValue("ArclCurrency",scArclCurrency->ItemData[cbItem2]);
       SetFieldValue("ArclBoyAmt",seArclBoyAmt->Text);
       SetFieldValue("ArclNBoyAmt",seArclNBoyAmt->Text);
       SetFieldValue("ArclIoyAmt",seArclIoyAmt->Text);
       SetFieldValue("ArclNIoyAmt",seArclNIoyAmt->Text);
       SetFieldValue("ArclOoyAmt",seArclOoyAmt->Text);
       SetFieldValue("ArclNOoyAmt",seArclNOoyAmt->Text);
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcl::WaitUserInput()
{
       if(scArclCurrency->Enabled)
        scArclCurrency->SetFocus();
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmArcl::GetDataToGrid()
{
       AnsiString  s;
       s = "\t" + GetFieldValue("ArclCurrency")    +
           "\t" + GetFieldValue("ArclBoyAmt")    +
           "\t" + GetFieldValue("ArclNBoyAmt")    +
           "\t" + GetFieldValue("ArclFmonth")    ;
       return s;
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcl::RefreshGridData(int mAction)
{
      AnsiString ItemStr;
      ItemStr = GetDataToGrid();
      if (mAction ==  0)   //Add
      {
          sgArcl->AddItem(ItemStr);
      }
      else if(mAction ==  1)   //Modify
      {
          int i   =   sgArcl->Row;
          sgArcl->ChangeItem(ItemStr,i);
      }
      else if(mAction ==  2)      //Delete
      {
          sgArcl->RemoveItem(sgArcl->Row);
      }
}
//---------------------------------------------------------------------------
void __fastcall TfrmArcl::FillGridWithData()
{
      AnsiString ItemStr,stmp;
      bool bInit;
      comServer->MoveFirst();
      sgArcl->RowCount    =   1;
      while (comServer->Eof   ==  0)
      {
         stmp=GetFieldValue("ArclCurrency");
         bInit=false;
         for(int i=0;i<sgArcl->RowCount;i++)
         {
          if(stmp == sgArcl->Cells[1][i]) //该币种账已经初始化
          {
           bInit=true;
           break;
          }
         }
         if(!bInit)
         {
          ItemStr =  GetDataToGrid();
          sgArcl->AddItem(ItemStr);
         }
         comServer->MoveNext();
      }
      comServer->MoveFirst();
}
//---------------------------------------------------------------------------

void __fastcall TfrmArcl::sgArclClick(TObject *Sender)
{
      int ARow=sgArcl->Row;
      if(sgArcl->Row > 0)
       comServer->LocateByKey(sgArcl->Cells[4][ARow]+"\t"+scArclClient->ItemData[1]+"\t"+sgArcl->Cells[1][ARow]);
      if(comServer->RecordCount>0)
       GetDataFromComObject();
}
//---------------------------------------------------------------------------

void __fastcall TfrmArcl::FormShow(TObject *Sender)
{
    ClearControl(false);
    if(scArclClient->Items->Count > 0)
    {
       scArclClient->ItemIndex=0;
       scArclClientClick(NULL);
    }
    sgArcl->SetFocus();
}
//---------------------------------------------------------------------------


void __fastcall TfrmArcl::scArclClientClick(TObject *Sender)
{
    AnsiString s;
    s = scArclClient->ItemData[1];
    s = " ArclClient = '" + s + "' ";
    comServer->FilterString = WideString(s);
    comServer->OrderString = WideString("ArclCurrency,ArclFmonth");
    comServer->Query();
    FillGridWithData();
    comServer->MoveFirst();
    GetDataFromComObject();
}
//---------------------------------------------------------------------------

void __fastcall TfrmArcl::scArclCurrencyClick(TObject *Sender)
{
 if(scArclCurrency->ItemData[2] == "1") // 币种为本币
 {
  seArclNBoyAmt->Enabled=false;
  seArclNIoyAmt->Enabled=false;
  seArclNOoyAmt->Enabled=false;
 }
 else
 {
  seArclNBoyAmt->Enabled=true;
  seArclNIoyAmt->Enabled=true;
  seArclNOoyAmt->Enabled=true;
 }
}
//---------------------------------------------------------------------------

void __fastcall TfrmArcl::seArclBoyAmtExit(TObject *Sender)
{
 if(scArclCurrency->ItemData[2] == "1") // 币种为本币
 {
  seArclNBoyAmt->Text=seArclBoyAmt->Text;
  seArclNIoyAmt->Text=seArclIoyAmt->Text;
  seArclNOoyAmt->Text=seArclOoyAmt->Text;
 }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?