formula.cpp

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

CPP
233
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Formula.h"
#include "GlkmQuery.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "SDEdit"
#pragma link "SDComboBox"
#pragma resource "*.dfm"

TfrmFormula *frmFormula;
//---------------------------------------------------------------------------
__fastcall TfrmFormula::TfrmFormula(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TForm(Owner,chWnd,MidCode,WhereStr)
{
    FinReport = (TfrmFinReport*)Owner;
    FMoving = false;
    FDestroy = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::tvForChange(TObject *Sender, TTreeNode *Node)
{
    HidePanel();
    if(Node->Text == "财务数据")
    {
       seGlkm->Text = "";
       seGlkm2->Text = "";
       scPeriod->ClearAll();
       scType->ClearAll();
       scPerInc->ClearAll();
       scPeriod->AddItems("年初","NC");
       scPeriod->AddItems("期初","QC");
       scPeriod->AddItems("借方","JF");
       scPeriod->AddItems("贷方","DF");
       scPeriod->AddItems("本年","BN");
       scPeriod->AddItems("累计","LJ");
       scPeriod->ItemIndex = 2;
       scType->AddItems("金额","JE");
       scType->AddItems("外币金额","WB");
       scType->AddItems("数量","SL");
       scType->ItemIndex = 0;
       scPerInc->AddItems("上月","-1");
       scPerInc->AddItems("本月","0");
       scPerInc->AddItems("下月","1");
       scPerInc->ItemIndex = 1;
       pCwsj->Visible = true;
    }
    if(Node->Text == "科目名称")
    {
       seKmmcGlkm->Text = "";
       pKmmc->Visible = true;
    }
}
//---------------------------------------------------------------------------
void TfrmFormula::HidePanel()
{
    pCwsj->Visible = false;
    pKmmc->Visible = false;
}
void __fastcall TfrmFormula::FormShow(TObject *Sender)
{
    HidePanel();
    Sheet = FinReport->SelSheet;
    Row = FinReport->SelRow;
    Col = FinReport->SelCol;
    Formula = FinReport->Formula->FormulaSRC[Sheet][Row][Col];
    tvFor->Selected = tvFor->Items->Item[0];
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::bbAddClick(TObject *Sender)
{
    if(tvFor->Selected->Text == "财务数据")
    {
       if(seGlkm->Text == "")
          throw Exception("科目不能为空!");
       if(seGlkm->Text == seGlkm2->Text)
          AddFun("财务数据(\"" + seGlkm->Text + "\",\"" +
                scPeriod->ItemData[1] + "\",\"" +scType->ItemData[1] + "\"," +
                scPerInc->ItemData[1] + ") ");
       else
          AddFun("财务数据(\"" + seGlkm->Text + ":" + seGlkm2->Text + "\",\"" +
                scPeriod->ItemData[1] + "\",\"" +scType->ItemData[1] + "\"," +
                scPerInc->ItemData[1] + ") ");
    }
    if(tvFor->Selected->Text == "科目名称")
    {
       AddFun("科目名称(\"" + seKmmcGlkm->Text + "\") ");
    }
}
//---------------------------------------------------------------------------
void TfrmFormula::AddFun(AnsiString Fun)
{
    AnsiString s = Formula;
    Formula = s.SubString(1, mFormula->SelStart) + Fun + s.SubString(1+mFormula->SelStart, s.Length() - mFormula->SelStart);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmFormula::GetFormula()
{
    return mFormula->Text;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::SetFormula(AnsiString For)
{
    mFormula->Text = For;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::seGlkmButtonClick(TObject *Sender)
{
    int q;
    TfrmGlkmQuery *FGlkmQuery = new TfrmGlkmQuery(this,q);
    try{
       FGlkmQuery->ShowModal();
       if(q==1)
          ((TSDEdit*)(Sender))->Text = GetGlkmValue(gtOpenForm,"GLKMCODE");
    }__finally
    {
       delete FGlkmQuery;
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::SpeedButton1Click(TObject *Sender)
{
    AddFun(" + ");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::SpeedButton2Click(TObject *Sender)
{
    AddFun(" - ");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::SpeedButton3Click(TObject *Sender)
{
    AddFun(" * ");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::SpeedButton4Click(TObject *Sender)
{
    AddFun(" / ");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::SpeedButton5Click(TObject *Sender)
{
    AddFun(" (");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::SpeedButton6Click(TObject *Sender)
{
    AddFun(") ");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::seKmmcGlkmButtonClick(TObject *Sender)
{
    int q;
    TfrmGlkmQuery *FGlkmQuery = new TfrmGlkmQuery(this,q);
    try{
       FGlkmQuery->ShowModal();
       if(q==1)
          seKmmcGlkm->Text = GetGlkmValue(gtOpenForm,"GLKMCODE");
    }__finally
    {
       delete FGlkmQuery;
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    if(FDestroy)
       Hide();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::bbCancelClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::bbOkClick(TObject *Sender)
{
    FinReport->Formula->FormulaSRC[Sheet][Row][Col] = WideString(Formula);
    FinReport->Formula->SSUpdate();
    FinReport->Repaint();
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::seGlkmChange(TObject *Sender)
{
   if(seGlkm2->Text == FBkValue || seGlkm2->Text == "")
   {
      seGlkm2->Text = seGlkm->Text;
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::seGlkmEnter(TObject *Sender)
{
   FBkValue = seGlkm->Text;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::FormMouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
   if(FMoving)
   {
      Left += X - FMoveStartX;
      Top += Y - FMoveStartY;
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::FormMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
   FMoveStartX = X;
   FMoveStartY = Y;
   FMoving = true;
   SetCapture(this->Handle);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::FormMouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
   FMoving = false;
   ReleaseCapture();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFormula::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if(Key == VK_ESCAPE)
       Hide();
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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