glkm.cpp

来自「速达开源ERP系统」· C++ 代码 · 共 555 行 · 第 1/2 页

CPP
555
字号
//---------------------------------------------------------------------------
#include <vcl.h>

#include "Glkm.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "SDComboBox"
#pragma resource "*.dfm"
#define ParaCode "10701"  //分类码各层字符长度参数代码头
TfrmGlkm *frmGlkm;
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmGlkm::GetFieldValue(int FieldIndex)
{
    AnsiString S;
    S = ReadFieldValue(comServer,FieldIndex);
    return(S);
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlkm::ClearControl(bool BringToNext)
{
    if(!BringToNext)
    {
      seGlkmCode->Text       ="";
      seGlkmItem->Text       ="";
      seGlkmUpperCode->Text  ="";
      seGlkmLevel->Text      ="";
      seLevelLen->Text       ="";
      seGlkmName->Text       ="";
      seGlkmShortCut->Text   ="";
      chkGlkmMx->Checked         =false;
      chkGlkmWb->Checked         =false;
      scGlkmCurrency->Enabled    =false;
      scGlkmCurrency->Text       ="";
      scGlkmCurrency->ItemIndex  =-1;
      chkGlkmSl->Checked         =false;
      scGlkmUnit->Enabled       =false;
      scGlkmUnit->Text          ="";
      scGlkmUnit->ItemIndex      =-1;
      scGlkmDir->ItemIndex       =0;
      scGlkmBookType->ItemIndex  =0;
      chkGlkmCash->Checked       =false;
      chkGlkmBank->Checked       =false;
      chkGlkmDept->Checked       =false;
      chkGlkmHuman->Checked      =false;
      chkGlkmClient->Checked     =false;
      chkGlkmSupply->Checked     =false;
      chkGlkmProject->Checked    =false;
      chkGlkmCc->Checked         =false;
      chkGlkmAer->Checked        =false;
      chkGlkmNoUse->Checked      =false;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlkm::GetDataFromComObject()
{
    AnsiString strLevel;
    strLevel=GetFieldValue(fiGlkmLevel);
    if(strLevel.ToInt() <= 0)
     return;
    //根据各层设定的代码长度,设置控件的最大字符数
    if (TierLen[strLevel.ToInt()] <= 0)
     seGlkmItem->MaxLength=18;
    else
    {
     seGlkmItem->MaxLength=TierLen[strLevel.ToInt()];
     seLevelLen->Text=IntToStr(TierLen[strLevel.ToInt()]);
    }
    seGlkmCode->Text       =GetFieldValue(fiGlkmCode);
    seGlkmItem->Text       =GetFieldValue(fiGlkmItem);
    seGlkmUpperCode->Text  =GetFieldValue(fiGlkmUpperCode);
    seGlkmLevel->Text      =GetFieldValue(fiGlkmLevel);
    seGlkmName->Text       =GetFieldValue(fiGlkmName);
    seGlkmShortCut->Text   =GetFieldValue(fiGlkmShortCut);
    chkGlkmMx->Checked         =GetFieldValue(fiGlkmMx)=="1";
    chkGlkmWb->Checked         =GetFieldValue(fiGlkmWb)=="1";
    scGlkmCurrency->Enabled   =false;
    if(chkGlkmWb->Checked)
    {
     scGlkmCurrency->LocateKey(GetFieldValue(fiGlkmCurrency));
    }
    else
    {
     scGlkmCurrency->ItemIndex =-1;
    }
    chkGlkmSl->Checked         =GetFieldValue(fiGlkmSl)=="1";
    scGlkmUnit->Enabled        =false;
    if(chkGlkmSl->Checked)
    {
     scGlkmUnit->LocateKey(GetFieldValue(fiGlkmUnit));
    }
    else
    {
     scGlkmUnit->ItemIndex      =-1;
    }
    scGlkmDir->ItemIndex       =StrToInt(GetFieldValue(fiGlkmDir))-1;
    scGlkmBookType->ItemIndex  =StrToInt(GetFieldValue(fiGlkmBookType))-1;
    chkGlkmCash->Checked       =GetFieldValue(fiGlkmCash)=="1";
    chkGlkmBank->Checked       =GetFieldValue(fiGlkmBank)=="1";
    chkGlkmDept->Checked       =GetFieldValue(fiGlkmDept)=="1";
    chkGlkmHuman->Checked      =GetFieldValue(fiGlkmHuman)=="1";
    chkGlkmClient->Checked     =GetFieldValue(fiGlkmClient)=="1";
    chkGlkmSupply->Checked     =GetFieldValue(fiGlkmSupply)=="1";
    chkGlkmProject->Checked    =GetFieldValue(fiGlkmProject)=="1";
    chkGlkmCc->Checked         =GetFieldValue(fiGlkmCc)=="1";
    chkGlkmAer->Checked        =GetFieldValue(fiGlkmAer)=="1";
    chkGlkmNoUse->Checked      =GetFieldValue(fiGlkmNoUse)=="1";

}
//---------------------------------------------------------------------------

void __fastcall TfrmGlkm::SendDataToComObject()
{
    AnsiString strLevel;
    AnsiString strErr,strTemp,tmpStr;
    strLevel=seGlkmLevel->Text;
    //输入的代码长度必须等于设定长度
    if (TierLen[strLevel.ToInt()] <= 0)
    {
     throw Exception("本级编码长度参数无效!");
    }
    strTemp=seGlkmItem->Text;
    if (strTemp.Length() != TierLen[strLevel.ToInt()])
    {
     strErr="本级编码长度必须为"+AnsiString(TierLen[strLevel.ToInt()]);
     throw Exception(strErr.c_str());
    }
    WriteFieldValue(comServer,fiGlkmCode       ,seGlkmCode->Text       );
    WriteFieldValue(comServer,fiGlkmItem       ,seGlkmItem->Text       );
    WriteFieldValue(comServer,fiGlkmUpperCode  ,seGlkmUpperCode->Text  );
    tmpStr=seGlkmUpperCode->Text;
    if(StrToInt(strLevel) > 0)
     WriteFieldValue(comServer,fiGlkmType,tmpStr.SubString(1,1));
    else
    {
     if(tvGlkm->Selected->Text=="资产")
      WriteFieldValue(comServer,fiGlkmType,"1");
     if(tvGlkm->Selected->Text=="负债")
      WriteFieldValue(comServer,fiGlkmType,"2");
     if(tvGlkm->Selected->Text=="权益")
      WriteFieldValue(comServer,fiGlkmType,"3");
     if(tvGlkm->Selected->Text=="成本")
      WriteFieldValue(comServer,fiGlkmType,"4");
     if(tvGlkm->Selected->Text=="损益")
      WriteFieldValue(comServer,fiGlkmType,"5");
    }
    WriteFieldValue(comServer,fiGlkmLevel      ,seGlkmLevel->Text      );
    WriteFieldValue(comServer,fiGlkmName       ,seGlkmName->Text       );
    WriteFieldValue(comServer,fiGlkmShortCut   ,seGlkmShortCut->Text   );
    WriteFieldValue(comServer,fiGlkmMx         ,chkGlkmMx->Checked?"1":"0"         );
    WriteFieldValue(comServer,fiGlkmWb         ,chkGlkmWb->Checked?"1":"0"         );
    WriteFieldValue(comServer,fiGlkmCurrency   ,scGlkmCurrency->ItemData[1]        );
    WriteFieldValue(comServer,fiGlkmSl         ,chkGlkmSl->Checked?"1":"0"         );
    WriteFieldValue(comServer,fiGlkmUnit       ,scGlkmUnit->ItemData[1]            );
    WriteFieldValue(comServer,fiGlkmDir        ,IntToStr(scGlkmDir->ItemIndex+1)   );
    WriteFieldValue(comServer,fiGlkmBookType   ,IntToStr(scGlkmBookType->ItemIndex+1));
    WriteFieldValue(comServer,fiGlkmCash       ,chkGlkmCash->Checked?"1":"0"       );
    WriteFieldValue(comServer,fiGlkmBank       ,chkGlkmBank->Checked?"1":"0"       );
    WriteFieldValue(comServer,fiGlkmDept       ,chkGlkmDept->Checked?"1":"0"       );
    WriteFieldValue(comServer,fiGlkmHuman      ,chkGlkmHuman->Checked?"1":"0"      );
    WriteFieldValue(comServer,fiGlkmClient     ,chkGlkmClient->Checked?"1":"0"     );
    WriteFieldValue(comServer,fiGlkmSupply     ,chkGlkmSupply->Checked?"1":"0"     );
    WriteFieldValue(comServer,fiGlkmProject    ,chkGlkmProject->Checked?"1":"0"    );
    WriteFieldValue(comServer,fiGlkmCc         ,chkGlkmCc->Checked?"1":"0"         );
    WriteFieldValue(comServer,fiGlkmAer        ,chkGlkmAer->Checked?"1":"0"        );
    WriteFieldValue(comServer,fiGlkmNoUse      ,chkGlkmNoUse->Checked?"1":"0"      );

}
//---------------------------------------------------------------------------

void __fastcall TfrmGlkm::WaitUserInput()
{
    seGlkmItem->SetFocus();
    scGlkmCurrency->Enabled=chkGlkmWb->Checked;
    scGlkmUnit->Enabled=chkGlkmSl->Checked;
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlkm::RefreshGridData(int mAction)
{
    AnsiString  tempText;
    TTreeNode *TempNode;
    if (mAction == 0)
    {
        if(tvGlkm->Selected)
        {
            tempText = "(" + GetFieldValue(fiGlkmCode) + ")" + GetFieldValue(fiGlkmName);
            TempNode=tvGlkm->Items->AddChild(tvGlkm->Selected,tempText);
//            tvGlkm->Selected=TempNode;
            if(GetFieldValue(fiGlkmMx)=="1")
            {
             TempNode->StateIndex=1;
             TempNode->SelectedIndex=1;
            }
            else
            {
             TempNode->StateIndex=-1;
             TempNode->SelectedIndex=-1;
            }
            tvGlkm->Selected->Expanded = true;
        }
    }
    else if(mAction == 1)
    {
        if(tvGlkm->Selected->HasChildren)
        {   //如果有子节点,则刷新一次.
            comServer->Query();
            FillGridWithData();
        }
        else
        {
            tvGlkm->Selected->Text = "(" + GetFieldValue(fiGlkmCode) + ")"
                + GetFieldValue(fiGlkmName);
            if(GetFieldValue(fiGlkmMx)=="1")
            {
             tvGlkm->Selected->StateIndex=1;
             tvGlkm->Selected->SelectedIndex=1;
            }
            else
            {
             tvGlkm->Selected->StateIndex=-1;
             tvGlkm->Selected->SelectedIndex=-1;
            }
        }
    }
    else if(mAction == 2)
    {
        tvGlkm->Items->Delete(tvGlkm->Selected);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmGlkm::FillGridWithData()
{
  AnsiString  tempText;
  TTreeNode* TempNode[10];
  int mLevel;
  TreeFresh=true; //更新分类码树,不执行Change事件
  tvGlkm->Items->Clear();
  TreeFresh=false;

  for(int i=1;i<6;i++)
  {
   switch(i)
   {
    case 1:
     TempNode[0]=tvGlkm->Items->Add(NULL,"资产");
     comServer->FilterString="GlkmType = 1";
     comServer->Query();
     break;
    case 2:
     TempNode[0]=tvGlkm->Items->Add(NULL,"负债");
     comServer->FilterString="GlkmType = 2";
     comServer->Query();
     break;
    case 3:
     TempNode[0]=tvGlkm->Items->Add(NULL,"权益");
     comServer->FilterString="GlkmType =3";
     comServer->Query();
     break;
    case 4:
     TempNode[0]=tvGlkm->Items->Add(NULL,"成本");
     comServer->FilterString="GlkmType =4";
     comServer->Query();
     break;
    case 5:
     TempNode[0]=tvGlkm->Items->Add(NULL,"损益");
     comServer->FilterString="GlkmType =5";
     comServer->Query();
     break;
    default:
     break;
   }

⌨️ 快捷键说明

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