finreport.cpp

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

CPP
631
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "FinReport.h"
#include "Formula.h"
#include "Preview.h"
#include "PageSetup.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "TTF160_OCX"
#pragma link "SDComboBox"
#pragma link "StdBaseForm"
#pragma link "SDEdit"
#pragma resource "*.dfm"

TfrmFinReport *frmFinReport;
//---------------------------------------------------------------------------
__fastcall TfrmFinReport::TfrmFinReport(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TStdBaseForm(Owner,chWnd,MidCode,WhereStr)
{
}
//---------------------------------------------------------------------------
double __fastcall TfrmFinReport::FinData(AnsiString Glkm,
                                      AnsiString Period,
                                      AnsiString Type,
                                      AnsiString PerInc)
{
   AnsiString FMonth = scFMonth->Text;
   char * c = Glkm.c_str();
   AnsiString Glkm2 = "";
   for(int i = 1; i < Glkm.Length(); i++)
   {
       if(*c == ':')
       {
          Glkm2 = Glkm.SubString(i + 1, Glkm.Length() - i + 1);
          Glkm = Glkm.SubString(1, i - 1);
          break;
       }
       c++;
   }
   Period = Period.UpperCase();
   Type = Type.UpperCase();
   if(Period == "NC")
      Period = "年初";
   else if(Period == "QC")
      Period = "期初";
   else if(Period == "BN")
      Period = "本年";
   else if(Period == "JF")
      Period = "借方";
   else if(Period == "DF")
      Period = "贷方";
   else if(Period == "LJ")
      Period = "累计";
   if(Type == "JE")
      Type = "金额";
   else if(Type == "WB")
      Type = "外币金额";
   else if(Type == "SL")
      Type = "数量";
   RsRpod->Close();
   if(Glkm2 == "")
      RsRpod->Open("exec sdRpt_FinData '" + FMonth + "', '" + Glkm +
                "', '" + Period + "', '" + Type + "', " + PerInc, "");
   else
      RsRpod->Open("exec sdRpt_FinSum '" + FMonth + "', '" + Glkm + "', '" +Glkm2 +
                "', '" + Period + "', '" + Type + "', " + PerInc, "");
   AnsiString Data = RsRpod->FieldByName("Value").Trim();
   return Data.ToDouble();
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmFinReport::KmName(AnsiString Glkm)
{
   if(!g_sdRsGlkm->LocateByKey(Glkm))
      return g_sdRsGlkm->FieldByName("GLKMNAME");
   throw Exception("无此科目!");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::FormShow(TObject *Sender)
{
   FillComboBox(Handle,scFMonth,"select FyYear value from sdfy union select FcMonth value from sdfc order by value","value");
   scFMonth->LocateKey(g_sdFMonth);
   RsRpod = new  TComResultSet(Handle,g_ClientHandle);
   Formula->LoadAddIn(WideString("sdFinance.dll"), true);
   frmFormula = new TfrmFormula(this);
   Formula->SetColWidthAuto(1, 1, 50, 50, false);
   Formula->DefaultFontCharSet = F1GB2312CharSet;
   Formula->FontCharSet = F1GB2312CharSet;
   cbFontName->Items->Assign(Screen->Fonts);
   miNewClick(miNew);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::FormClose(TObject *Sender,
      TCloseAction &Action)
{
   //if(RsRpod!=NULL)
   RsRpod->Close();
   delete RsRpod;
   frmFormula->FDestroy = true;
   delete frmFormula;
   TStdBaseForm::FormClose(Sender, Action);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miFCellsClick(TObject *Sender)
{
   Formula->FormatCellsDlg(F1AllPages^F1ProtectionPage^F1ValidationPage);
   //F1AlignmentPage|
   //F1BorderPage|F1FontPage|F1NumberPage|
   //F1PatternsPage);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miOpenClick(TObject *Sender)
{
   if(od->Execute())
   {
      ShowFormulas(false);
      FFileName = od->FileName;
      Formula->ReadEx(WideString(FFileName));
      Formula->Visible = true;
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miSaveClick(TObject *Sender)
{
   if(!FFileName.IsEmpty())
   {
       F1FileTypeConstants FileType;
       AnsiString FileExt = FFileName.SubString(FFileName.Length()-2,3);
       bool bk = ShowFormula;
       if(FileExt.UpperCase() == "FRP")
       {
          FileType = F1FileFormulaOne6;
          ShowFormulas(false);
       }else if(FileExt.UpperCase() == "XLS")
          FileType = F1FileExcel97;
       else if(FileExt.UpperCase() == "TXT")
          FileType = F1FileTabbedText;
       else if(FileExt.UpperCase() == "HTM" || FileExt.UpperCase() == "TML")
          FileType = F1FileHTML;
       else
       {
          FileType = F1FileFormulaOne6;
          ShowFormulas(false);
       }
       Formula->WriteEx(WideString(FFileName), FileType);
       ShowFormula = bk;
   }
   else
   {
       miSaveAsClick(Sender);
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miSaveAsClick(TObject *Sender)
{
   if(sd->Execute())
   {
      FFileName = sd->FileName;
      miSaveClick(Sender);
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miExitClick(TObject *Sender)
{
   Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miCutClick(TObject *Sender)
{
   Formula->EditCut();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miCopyClick(TObject *Sender)
{
   Formula->EditCopy();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miPasteClick(TObject *Sender)
{
   Formula->EditPaste();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miNewClick(TObject *Sender)
{
   Formula->EditClear(F1ClearAll);
   Formula->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miCloseClick(TObject *Sender)
{
   Formula->Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miViewToolBarClick(TObject *Sender)
{
   ((TMenuItem*)(Sender))->Checked = !((TMenuItem*)(Sender))->Checked;
   tbButton->Visible = miViewToolBar->Checked;
   sb->Visible = miViewStatus->Checked;
   Formula->ShowEditBar = (miViewEditBar->Checked);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miCellsRightClick(TObject *Sender)
{
   Formula->EditInsert(F1ShiftHorizontal);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miCellsDownClick(TObject *Sender)
{
   Formula->EditInsert(F1ShiftVertical);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miRowsClick(TObject *Sender)
{
   Formula->EditInsert(F1ShiftRows);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miColsClick(TObject *Sender)
{
   Formula->EditInsert(F1ShiftCols);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miWorkSheetClick(TObject *Sender)
{
   for(int i = Formula->NumSheets; i > 0; i--)
   {
      if(Formula->SheetSelected[i])
      {
         Formula->InsertSheets(i+1, 1);
         return;
      }
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miDeleteCellLeftClick(TObject *Sender)
{
   Formula->EditDelete(F1ShiftHorizontal);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miDeleteCellsTopClick(TObject *Sender)
{
   Formula->EditDelete(F1ShiftVertical);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miDeleteRowClick(TObject *Sender)
{
   Formula->EditDelete(F1ShiftRows);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miDeleteColClick(TObject *Sender)
{
   Formula->EditDelete(F1ShiftCols);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miDeleteSheetClick(TObject *Sender)
{
   for(int i = Formula->NumSheets; i > 0; i--)
   {
      if(Formula->SheetSelected[i])
         Formula->DeleteSheets(i, 1);
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::miFormulaClick(TObject *Sender)
{
   frmFormula->Show();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::scFMonthChange(TObject *Sender)
{
   Formula->Recalc();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::FormulaStartRecalc(TObject *Sender)
{
   StartWaitForm("正在重新生成报表,请稍候......");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::FormulaEndRecalc(TObject *Sender)
{
   EndWaitForm();
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::FormDestroy(TObject *Sender)
{
   Formula->AddInEnabled[0] = false;
   delete frmFormula;
}
//---------------------------------------------------------------------------
int __fastcall TfrmFinReport::GetSelRow()
{
   return Formula->SelStartRow;
}
//---------------------------------------------------------------------------
int __fastcall TfrmFinReport::GetSelCol()
{
   return Formula->SelStartCol;
}
//---------------------------------------------------------------------------
int __fastcall TfrmFinReport::GetSelSheet()
{
   return Formula->Sheet;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::SetSelSheet(int s)
{
   Formula->Sheet = s;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::SetSelRow(int s)
{
   Formula->SelStartRow = s;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFinReport::SetSelCol(int s)
{
   Formula->SelStartCol = s;

⌨️ 快捷键说明

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