fbb.cpp

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

CPP
443
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Fbb.h"
#include "FbbSub.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"

TfrmFbb *frmFbb;
TfrmFbbSub *FbbSubfrm;
TSDEdit *seZY,*seSettleMode;
//---------------------------------------------------------------------------
__fastcall TfrmFbb::TfrmFbb(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TRecBaseForm(Owner,chWnd,MidCode,WhereStr)
{


}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmFbb::GetDataToGrid()
{
    AnsiString ItemStr,FbbAmtStr,FbbTypeStr,ZYStr,SettleModeStr;
    if(!GetFieldValue("FbbAmt").IsEmpty())
    {
      FbbAmtStr=GetFieldValue("FbbAmt");
    }
    else
    {
      FbbAmtStr="0";
    }
    if(!GetFieldValue("FbbType").IsEmpty())
    {
      FbbTypeStr=GetFieldValue("FbbType");
    }
    else
    {
      FbbTypeStr=-1;
    }
    try
    {
      //得到摘要名称
      seZY->LocateKey(GetFieldValue("FbbZy"));
      ZYStr=seZY->ItemData[0];
      //得到结结算方式名称
      seSettleMode->LocateKey(GetFieldValue("FbbSettleMode"));
      SettleModeStr=seSettleMode->ItemData[0];
      //------------
      ItemStr =  GetFieldValue("FbbNo")+"\t"+GetFieldValue("FbbDate");
      switch(FbbTypeStr.ToInt())
      {
         case 1:
           ItemStr=ItemStr+"\t"+"费用";
            break;
         case 2:
           ItemStr=ItemStr+"\t"+"客户往来";
           break;
         case 3:
           ItemStr=ItemStr+"\t"+"供应商往来";
           break;
         case 4:
           ItemStr=ItemStr+"\t"+"部门";
           break;
         case 5:
           ItemStr=ItemStr+"\t"+"个人";
           break;
         case 6:
           ItemStr=ItemStr+"\t"+"内部转帐";
           break;
         case 7:
           ItemStr=ItemStr+"\t"+"换汇";
           break;
         default:
           ItemStr=ItemStr+"\t"+" ";
      }
      ItemStr=ItemStr+"\t"+ZYStr+"\t"+SettleModeStr+"\t"+ GetFieldValue("FbbSettleNo");

      if(GetFieldValue("FbbDir")==1)
        ItemStr=ItemStr+"\t"+"收";
      else
        ItemStr=ItemStr+"\t"+"支";

      ItemStr=ItemStr+ "\t"+FormatFloat("#,##0.00",FbbAmtStr.ToDouble());

      if(GetFieldValue("FbbVerify")=="1")
        ItemStr=ItemStr + "\t" + "√";
      else
        ItemStr=ItemStr + "\t" + AnsiString("");


    }
    __finally
    {
    //
    }
  return (ItemStr);
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::InitEditControl()
{
    ClientGroup->AddComponent(2,true,true,false,sgFbb,sgFbb->Name);
    ClientGroup->AddComponent(2,true,true,false,scFbbCac,scFbbCac->Name);
    ClientGroup->AddComponent(2,true,true,true,seFbbCurrency,seFbbCurrency->Name);
    FillEdit(Handle,seFbbCurrency,"select CurrencyName,CurrencyCode from sdCurrency order by CurrencyCode",
                "CurrencyName","CurrencyCode");
    FillComboBox(Handle,scFbbCac,"select memo=CacCode+space(16-Len(CacCode))+' | '+GlkmCode+'-'+GlkmName,CacCode,CacCurrency,CacType,GlkmCode from sdCac,sdGlkm where CacGlkm=GlkmCode order by CacGlkm",
                "memo","CacCode","CacCurrency","CacType","GlkmCode");
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::ClearControl(bool BringToNext)
{
    //AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::WaitUserInput()
{
    //AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::GetDataFromComObject()
{//AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::SendDataToComObject()
{
   //AddCode
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::RefreshGridData(int mAction)
{
    AnsiString sGridItem;
    sGridItem=GetDataToGrid();
    int i;
    switch(mAction)
    {
      case 0:   //新增
         sgFbb->AddItem(sGridItem);
         break;
      case 1:   //修改
          i   =   sgFbb->Row;
          sgFbb->ChangeItem(sGridItem,i);
          break;
      case 2:   //删除
         sgFbb->RemoveItem(sgFbb->Row);
    } ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::FillGridWithData()
{
    AnsiString ItemStr;
    comServer->MoveFirst();
    sgFbb->RowCount = 1;
    while(comServer->Eof == 0)
    {
       ItemStr = GetDataToGrid();
       sgFbb->AddItem(ItemStr);
       comServer->MoveNext();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::FormShow(TObject *Sender)
{
    try
    {
      StartWaitForm("正在启动出纳日记帐");
      //摘要
      seZY=new TSDEdit(frmFbb);
      seZY->Parent=frmFbb;
      seZY->Visible=false;
      seZY->KeyItem=cbItem2;
      seZY->DispItem=cbItem1;
      FillEdit(Handle,seZY,"select NoteBookText,NoteBookCode from  sdNoteBook order by NoteBookCode","NoteBookText","NoteBookCode");
      //结算方式
      seSettleMode =new TSDEdit(frmFbb);
      seSettleMode->Parent=frmFbb;
      seSettleMode->Visible=false;
      seSettleMode->KeyItem=cbItem2;
      seSettleMode->DispItem=cbItem1;
      FillEdit(Handle,seSettleMode,"select SettleModeName,SettleModeCode from sdSettleMode","SettleModeName","SettleModeCode");

      FbbSubfrm=new TfrmFbbSub(this);
    }
    __finally
    {
      EndWaitForm();
    }

    seFbbCurrency->ItemIndex=-1;
    if(scFbbCac->Items->Count>0)
    {
      scFbbCac->ItemIndex=0;
      scFbbCacChange(Sender);
    }
    else
      throw Exception("出纳帐户的资料没有定义");

}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::RefreshUpdateData(int MsgSrc,int MsgType)
{
/*
    switch(MsgSrc)
    {
       case euSdCurrency:
         if(ShowUpdateMessage(MsgSrc,MsgType))
           FillEdit(Handle,seFbbCurrency,"select CurrencyName,CurrencyCode from sdCurrency order by CurrencyCode",
                "CurrencyName","CurrencyCode");
         break;
       case euSdCac:
         if(ShowUpdateMessage(MsgSrc,MsgType))
           FillComboBox(Handle,scFbbCac,"select memo=CacCode+space(16-Len(CacCode))+GlkmCode+'-'+GlkmName,CacCode,CacCurrency,CacType,GlkmCode from sdCac,sdGlkm where CacGlkm=GlkmCode order by CacCode",
                "memo","CacCode","CacCurrency","CacType","GlkmCode");
         break;
       default:
         break;
    }
*/
}
//---------------------------------------------------------------------------
int __fastcall TfrmFbb::GetMaxFbbNo()
{
    int vMaxNo;
    if(sgFbb->RowCount>1)
    {
      vMaxNo=sgFbb->Cells[0][1].ToInt();
      for(int i=2;i<sgFbb->RowCount;i++)
      {
        if(sgFbb->Cells[0][i].ToInt()>vMaxNo)
          vMaxNo=sgFbb->Cells[0][i].ToInt();
      }
    }
    else
      vMaxNo=0;
    return vMaxNo;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::sgFbbDblClick(TObject *Sender)
{
    if(comServer->RecordCount>0)
    {
      AnsiString Keystr;
      Keystr=sgFbb->Cells[0][sgFbb->Row]+"\t"+scFbbCac->ItemData[1]+"\t"+g_sdFMonth+"\t";//多字段关键字用"\t"
      if(comServer->LocateByKey(Keystr))//定为成功后返回值为false~!,不成功返回true!
        throw Exception("当前没有记录可以编辑");
      try
      {
        FbbSubfrm->SetcomServer(comServer);
        FbbSubfrm->FCurState=CurrentState;
        FbbSubfrm->FFbbVerify=GetFieldValue("FbbVerify");
        FbbSubfrm->FFbbCac=scFbbCac->ItemData[1];
        FbbSubfrm->FMaxFbbNo=sgFbb->TextMatrix[sgFbb->Row][0];  //
        FbbSubfrm->FFbbCurrency=seFbbCurrency->ItemData[1];
        FbbSubfrm->ShowModal();
      }
      catch(Exception &e)
      {
        throw Exception(e.Message);
      }
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muAddDetailClick(TObject *Sender)
{
    try
    {
      TRecBaseForm::muAddDetailClick(Sender);
      FbbSubfrm->SetcomServer(comServer);
      FbbSubfrm->FCurState=CurrentState;
      FbbSubfrm->FFbbCac=scFbbCac->ItemData[1];
      FbbSubfrm->FMaxFbbNo=AnsiString(GetMaxFbbNo()+1);
      FbbSubfrm->FFbbCurrency=seFbbCurrency->ItemData[1];
      FbbSubfrm->ShowModal();
      if(FbbSubfrm->FRetState=="OK")
        TRecBaseForm::muSaveClick(Sender);
      else//cancel
      {
        try
        {
          try
          {
            if(CurState==caAddDetail || CurState==caEditDetail)
            {
                  Screen->Cursor=crHourGlass;
                  Application->ProcessMessages();
                  comServer->Cancel();
                  SetControlState(caSave);
            }
          }
          catch(Exception &e)
          {
            throw Exception(e.Message);
          }
        }
        __finally
        {
          Application->ProcessMessages();
          Screen->Cursor=crDefault;
        }
      }
    }
    __finally
    {

    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muEditDetailClick(TObject *Sender)
{
  if(comServer->RecordCount>0)
  {
    try
    {
      AnsiString Keystr;
      Keystr=sgFbb->Cells[0][sgFbb->Row]+"\t"+scFbbCac->ItemData[1]+"\t"+g_sdFMonth+"\t";//多字段关键字用"\t"
      if(comServer->LocateByKey(Keystr))
        throw Exception("当前没有记录可以编辑");
      else
        TRecBaseForm::muEditDetailClick(Sender);

      FbbSubfrm->SetcomServer(comServer);
      FbbSubfrm->FCurState=CurrentState;
      FbbSubfrm->FFbbVerify=GetFieldValue("FbbVerify");
      FbbSubfrm->FFbbCac=scFbbCac->ItemData[1];
      FbbSubfrm->FMaxFbbNo=sgFbb->TextMatrix[sgFbb->Row][0];
      FbbSubfrm->FFbbCurrency=seFbbCurrency->ItemData[1];
      FbbSubfrm->ShowModal();
      if(FbbSubfrm->FRetState=="OK")
        TRecBaseForm::muSaveClick(Sender);
      else
      {
        try
        {
          try
          {
            if(CurState==caAddDetail || CurState==caEditDetail)
            {
                  Screen->Cursor=crHourGlass;
                  Application->ProcessMessages();
                  comServer->Cancel();
                  SetControlState(caSave);
            }
          }
          catch(Exception &e)
          {
            throw Exception(e.Message);
          }
        }
        __finally
        {
          Application->ProcessMessages();
          Screen->Cursor=crDefault;
        }
      }
    }
    catch(Exception &e)
    {
      throw Exception(e.Message);
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muFirstClick(TObject *Sender)
{
    if(sgFbb->RowCount > 1)
      sgFbb->Row=1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muNextClick(TObject *Sender)
{
    if(sgFbb->RowCount > 1 && sgFbb->Row < sgFbb->RowCount-1)
      sgFbb->Row=sgFbb->Row+1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muLastClick(TObject *Sender)
{
    if(sgFbb->RowCount > 1)
      sgFbb->Row=sgFbb->RowCount-1;
}
//---------------------------------------------------------------------------
void __fastcall TfrmFbb::muPreviousClick(TObject *Sender)
{
    if(sgFbb->RowCount > 1 && sgFbb->Row > 1)
      sgFbb->Row=sgFbb->Row-1;
}
//---------------------------------------------------------------------------

void __fastcall TfrmFbb::scFbbCacChange(TObject *Sender)
{
    if(scFbbCac->ItemIndex==-1)//用在删除后不能定位的情况
    {
      return;
    }

    AnsiString tCacCode;
    tCacCode=scFbbCac->ItemData[1];
    if(tCacCode=="")
      return;
    seFbbCurrency->LocateKey(scFbbCac->ItemData[2]);
    if(scFbbCac->ItemData[3]==1)
    {
      this->Caption="出纳日记帐--银行帐(第"+ g_sdFMonth + "期)";
    }
    else
    {
      this->Caption="出纳日记帐--现金帐(第"+ g_sdFMonth + "期)";
    }
    comServer->FilterString="FbbFmonth='"+g_sdFMonth+"' and FbbCac='"+tCacCode+"'";
    comServer->Query();
    if(comServer->RecordCount>0)
      FillGridWithData();
    else
      sgFbb->RowCount=1;
}
//---------------------------------------------------------------------------
__fastcall TfrmFbb::~TfrmFbb()
{
  if(FbbSubfrm) delete FbbSubfrm;
  delete seZY;
  delete seSettleMode;
}
void __fastcall TfrmFbb::muDeleteDetailClick(TObject *Sender)
{
  //先判断行数!
  if(sgFbb->RowCount>=2)
  {
    TRecBaseForm::muDeleteDetailClick(Sender);
  }

  if(sgFbb->RowCount<2)//当最后一行被删除时,头也被删掉
  {
    scFbbCac->ItemIndex=-1;
    scFbbCacChange(Sender);
  }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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