⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfch.cpp

📁 速达开源ERP系统
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "Mfch.h"
#include "Mfcd.h"
#include "func.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma link "GenBaseForm"
#pragma link "DateEdit"
#pragma link "fpanel"
#pragma link "SDComboBox"
#pragma link "SDEdit"
#pragma link "SDGrid"
#pragma resource "*.dfm"

TfrmMfch *frmMfch;
//---------------------------------------------------------------------------
__fastcall TfrmMfch::TfrmMfch(TComponent* Owner)
        : TGenBaseForm(Owner,euSdMfch,"")
{
 AutoCtl=seMfchCode;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMfch::InitEditControl()
{
    ClientGroup->AddComponent(1,true,true,false,sgMfch,sgMfch->Name);
    ClientGroup->AddComponent(1,false,false,true,FloatPanel1,FloatPanel1->Name);
    ClientGroup->AddComponent(1,false,true,false,seMfchCode,seMfchCode->Name);
    ClientGroup->AddComponent(1,true,true,true,scMfchFmonth,scMfchFmonth->Name);

    ClientGroup->AddComponent(2,false,false,true,FloatPanel2,FloatPanel2->Name);
    ClientGroup->AddComponent(2,true,true,true,scMfcdState,scMfcdState->Name);
    ClientGroup->AddComponent(2,false,true,true,btnOK,btnOK->Name);
    ClientGroup->AddComponent(2,false,false,false,btnCancel,btnCancel->Name);

    FillComboBox(scMfcdExpense,"select Expensecode,ExpenseName from sdExpense order by ExpenseCode","ExpenseName","ExpenseCode");
    scMfcdState->ClearAll();
    scMfcdState->AddItems("1-手工","1");
    scMfcdState->AddItems("2-生成","2");
}
//---------------------------------------------------------------------------
void __fastcall TfrmMfch::ClearControl(int Section,bool BringToNext)
{
    if (Section == 1)
    {
       if (!BringToNext)
       {
           seMfchCode->Text ="";
           scMfchFmonth->Text =g_sdMMonth;
           deMfchDate->Text=g_sdCurDate;
           cbxMfchCheck->Checked =false;
           labMfchChecker->Caption   ="";
           labMfchUser->Caption   =g_sdUserCode;
           labMfchSysDate->Caption = "";
           memMfchDesc->Text ="";
           //新增单据,工具栏使能
           SetCheckToolbarStatus(false);
       }
       sgMfch->RowCount=1;
    }
    else if (Section==2)
    {
        if (!BringToNext)
        {
           seMfcdLine->Text =AnsiString(comServer->ItemCount+1);
           seMfcdWoCode->Text="";
           scMfcdExpense->ItemIndex=-1;
           scMfcdExpense->Text ="";
           seMfcdAmt->Text="";
           scMfcdState->ItemIndex=0;
           memMfcdDesc->Text="";
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::GetDataFromComObject(int Section)
{
    if (Section==1)
    {
       seMfchCode->Text =GetHeadValue(fiMfchCode);
       scMfchFmonth->Text =GetHeadValue(fiMfchFmonth);
       deMfchDate->Text=GetHeadValue(fiMfchDate);
       cbxMfchCheck->Checked =GetHeadValue(fiMfchCheck)=="1";
       labMfchChecker->Caption   =GetHeadValue(fiMfchChecker);
       labMfchUser->Caption   =GetHeadValue(fiMfchUser);
       labMfchSysDate->Caption =GetHeadValue(fiMfchSysDate);
       memMfchDesc->Text="";
       //根据审核、取消状态,设置工具栏
       if((GetHeadValue(fiMfchCheck)=="1"))
        SetCheckToolbarStatus(true);
       else
        SetCheckToolbarStatus(false);
    }
    else
    {
       seMfcdLine->Text=GetDetailValue(fiMfcdLine);
       seMfcdWoCode->Text=GetDetailValue(fiMfcdWoCode);
       scMfcdExpense->LocateKey(GetDetailValue(fiMfcdExpense));
       scMfcdState->LocateKey(GetDetailValue(fiMfcdState));
       seMfcdAmt->Text=GetDetailValue(fiMfcdAmt);
       memMfcdDesc->Text=GetDetailValue(fiMfcdDesc);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::SendDataToComObject(int Section)
{
    if (Section==1)
    {
        SetHeadValue(fiMfchCode,seMfchCode->Text);
        SetHeadValue(fiMfchFmonth,scMfchFmonth->Text);
        SetHeadValue(fiMfchDate,deMfchDate->Text);
        SetHeadValue(fiMfchUser,labMfchUser->Caption);
        SetHeadValue(fiMfchDesc,memMfchDesc->Text);
    }
    else
    {
        SetDetailValue(fiMfcdCode,seMfchCode->Text);
        SetDetailValue(fiMfcdLine,seMfcdLine->Text);
        SetDetailValue(fiMfcdWoCode,seMfcdWoCode->Text);
        SetDetailValue(fiMfcdExpense,scMfcdExpense->ItemData[1]);
        SetDetailValue(fiMfcdState,scMfcdState->ItemData[1]);
        SetDetailValue(fiMfcdAmt,seMfcdAmt->Text);
        SetDetailValue(fiMfcdDesc,memMfcdDesc->Text);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::WaitUserInput(int Section)
{
    if (Section ==1)
    {
     if(seMfchCode->Enabled)
      seMfchCode->SetFocus();
    }
    else
    {
      ChangeToBrowseState(false);
      if(seMfcdWoCode->Enabled)
        seMfcdWoCode->SetFocus();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMfch::RefreshGridData(int mAction)
{
    int i;
    AnsiString ItemStr=GetItemStringToGrid();
    switch(mAction)
    {
       case 0:
         sgMfch->AddItem(ItemStr);
         break;
       case 1:
         i = sgMfch->Row;
         sgMfch->ChangeItem(ItemStr,i);
         break;
       case 2:
         sgMfch->RemoveItem(sgMfch->Row);
         break;
    }
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmMfch::GetItemStringToGrid()
{
    AnsiString s_ItemStr;
    scMfcdExpense->LocateKey(GetDetailValue(fiMfcdExpense));
    s_ItemStr = GetDetailValue(fiMfcdLine)+
                "\t"+GetDetailValue(fiMfcdWoCode)+
                "\t"+scMfcdExpense->ItemData[0]+
                "\t"+GetDetailValue(fiMfcdAmt)+
                "\t"+GetDetailValue(fiMfcdDesc);
    return s_ItemStr;
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::DisplayBill()
{
    if(comServer->RecordCount<=0)
      return;
    GetDataFromComObject(1);
    FillGridWithData();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::GetBill(AnsiString BillID)
{
    bool iRow;
    iRow=comServer->Find("MfchCode='"+BillID+"'");
    if(iRow)      //FIND THIS BILL
    {
       DisplayBill();
    }
    else
       if (ShowMessageWindow("在数据库中没有查到记录:"+BillID+",要增加吗?",mwsConfirmation)==IDYES)
       {
           AddHeadRecord();
       }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::FillGridWithData()
{
    int i;
    AnsiString ItemStr;
    sgMfch->RowCount=1;
    if(comServer->RecordCount>0)
    {
      for (i=0;i<comServer->ItemCount;i++)
      {
          comServer->LocateItemByIndex(i);
          RefreshGridData(0);
      }
    }
}
//---------------------------------------------------------------------------

AnsiString __fastcall TfrmMfch::GetHeadValue(int Index)
{
     return ReadFieldValue(comServer,Index);
}
//---------------------------------------------------------------------------

AnsiString __fastcall TfrmMfch::GetDetailValue(int Index)
{
     return ReadItemValue(comServer,Index);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMfch::SetHeadValue(int Index,AnsiString Value)
{
    WriteFieldValue(comServer,Index,Value);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::SetDetailValue(int Index,AnsiString Value)
{
    WriteItemValue(comServer,Index,Value);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMfch::FormCreate(TObject *Sender)
{
//    FormIniFile="D:\Test.Ini";
//    SetGridWidth(Name,sgRpoh,FormIniFile);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    TGenBaseForm::FormClose(Sender,Action);
//    WriteGridWidth(Name,sgRpoh,FormIniFile);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::FormShow(TObject *Sender)
{
    InitEditControl();
    ClearControl(1,false);
    ClearControl(2,false);
    TGenBaseForm::MoveToFirst();
    ChangeToBrowseState();
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::sgMfchSelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
    if(ARow > 0)
    {
      comServer->LocateItemByKey(sgMfch->TextMatrix[ARow][0]);
    }
    if(!comServer->Eof)
    {
      GetDataFromComObject(2);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::sgMfchDblClick(TObject *Sender)
{
    int iRow;
    iRow=sgMfch->Row;
    if (iRow == 0)
    {
       return;
    }
    ChangeToBrowseState(false);
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::ChangeToBrowseState(bool agree)
{
    if(agree)
    {
       sgMfch->Visible=true;
       FloatPanel2->Visible=false;
       sgMfch->Align=alClient;
       FloatPanel2->Align=alNone;
    }
    else
    {
       sgMfch->Visible=false;
       FloatPanel2->Visible=true;
       sgMfch->Align=alNone;
       FloatPanel2->Align=alClient;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::btnOKClick(TObject *Sender)
{
    try{
      if(CurrentState==caAddDetail || CurrentState==caAddBill)
      {
         if(DetailState==caAddDetail)
            comServer->AddItem();
         SendDataToComObject(2);
         comServer->AddToObject();
         ClearControl(2,false);
         seMfcdWoCode->SetFocus();
      }
      else
         ChangeToBrowseState(false);
    }
    catch(Exception &e)
    {
        throw Exception(e.Message);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::btnCancelClick(TObject *Sender)
{
    CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMfch::RefreshUpdateData(int MsgSrc,int MsgType)
{
  switch(MsgSrc)
  {
   case euSdExpense:
    if(ShowUpdateMessage(MsgSrc,MsgType))
    {
     FillComboBox(scMfcdExpense,"select Expensecode,ExpenseName from sdExpense order by ExpenseCode","ExpenseName","ExpenseCode");
    }
    break;
   default:
    break;
  }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMfch::GenrateBill()
{
    int TempCount;
    TempCount = comServer->ItemCount;

    SetControlState(caAddBill);
    TfrmMfcd *p=new TfrmMfcd(this);
    p->GetComObject(comServer);
    try
    {
      p->ShowModal();
    }
    __finally
    {
       delete p;
    }
    ChangeToBrowseState(true);

    if (TempCount < comServer->ItemCount)
      TGenBaseForm::tbSaveClick(NULL);
    else
      CancelChange();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMfch::seMfchCodeExit(TObject *Sender)
{
    if(CurrentState==caNormal && seMfchCode->Text != GetHeadValue(fiMfchCode))
    {
      comServer->LocateByKey(WideString(seMfchCode->Text));
      DisplayBill();
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMfch::seMfcdWoCodeButtonClick(TObject *Sender)
{
  AnsiString SqlStr;
  SqlStr="005[工单号][日期][加工物料][物料名称][要求数量]";
  SqlStr+=" select wocode,wodate,wogoods,goodsname,woqty from sdwo,sdGoods ";
  SqlStr+=" where wogoods=GoodsCode and woCheck=1 order by wocode";
  TfrmWnQuery *p;
  try
  {
    StartWaitForm("正在查询,请稍候...");
    p=new TfrmWnQuery(this,"工单查询",SqlStr);
  }
  __finally
  {
    EndWaitForm();
  }
  if(p->ShowModal()==mrOk)
  {
    seMfcdWoCode->Text=p->ColData[1];
  }
  delete p;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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