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 + -
显示快捷键?