📄 mfch.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 + -