📄 period.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Period.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "fpanel"
#pragma link "SDGrid"
#pragma link "SDEdit"
#pragma link "SDComboBox"
#pragma link "DateEdit"
#pragma resource "*.dfm"
TfrmPeriod *frmPeriod;
//---------------------------------------------------------------------------
__fastcall TfrmPeriod::TfrmPeriod(TComponent* Owner)
: TRecBaseForm(Owner,euSdPeriod,"")
{
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmPeriod::GetFieldValue(int FieldIndex)
{
WideString S;
S = ReadFieldValue(comServer,FieldIndex);
return(AnsiString(S));
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::SetFieldValue(int Index,AnsiString Value)
{
WriteFieldValue(comServer,Index,Value);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::ClearControl(bool BringToNext)
{
if(BringToNext)
{
return;
}
sePeriodNo->Text = "";
dePeriodBdate->Text = "";
dePeriodEdate->Text = "";
chkPeriodCheck->Checked = false;
sePeriodChecker->Text = "";
dePeriodCheckDate->Text = "";
labPeriodUser->Caption = g_sdUserCode;
labSystemDate->Caption = "";
//新增,工具栏使能
SetCheckToolbarStatus(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::GetDataFromComObject()
{
sePeriodNo->Text = GetFieldValue(fiPeriodNo);
sgPeriod->LocateGrid(1,GetFieldValue(fiPeriodNo));
dePeriodBdate->Text = GetFieldValue(fiPeriodBdate);
dePeriodEdate->Text = GetFieldValue(fiPeriodEdate);
chkPeriodCheck->Checked = GetFieldValue(fiPeriodCheck)=="1";
sePeriodChecker->Text = GetFieldValue(fiPeriodChecker);
dePeriodCheckDate->Text = GetFieldValue(fiPeriodCheckDate);
labPeriodUser->Caption = GetFieldValue(fiPeriodUser);
labSystemDate->Caption = GetFieldValue(fiPeriodSysDate);
//根据审核、取消状态,设置工具栏
if(GetFieldValue(fiPeriodCheck)=="1")
SetCheckToolbarStatus(true);
else
SetCheckToolbarStatus(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::SendDataToComObject()
{
SetFieldValue(fiPeriodYear,scPeriodYear->Text);
SetFieldValue(fiPeriodType,scPeriodYear->ItemIndex+1);
SetFieldValue(fiPeriodNo,sePeriodNo->Text);
SetFieldValue(fiPeriodBdate,dePeriodBdate->Text);
SetFieldValue(fiPeriodEdate,dePeriodEdate->Text);
SetFieldValue(fiPeriodUser,labPeriodUser->Caption);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::WaitUserInput()
{
if(sgPeriod->Row == sgPeriod->RowCount-1)
dePeriodEdate->Enabled=false;
else
dePeriodEdate->SetFocus();
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmPeriod::GetDataToGrid()
{
AnsiString s;
s = "\t" + GetFieldValue(fiPeriodNo);
s = s + "\t" + GetFieldValue(fiPeriodBdate);
s = s + "\t" + GetFieldValue(fiPeriodEdate);
s = s + "\t" + GetFieldValue(fiPeriodUser);
return(s);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::RefreshGridData(int mAction)
{
AnsiString ItemStr;
ItemStr = GetDataToGrid();
if (mAction == 0)
{
sgPeriod->AddItem(ItemStr);
}
else if(mAction == 1)
{
int i = sgPeriod->Row;
sgPeriod->ChangeItem(ItemStr,i);
}
else if(mAction == 2)
{
sgPeriod->RemoveItem(sgPeriod->Row);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::FillGridWithData()
{
AnsiString ItemStr;
comServer->MoveFirst();
sgPeriod->RowCount = 1;
while (comServer->Eof == 0)
{
ItemStr = GetDataToGrid();
sgPeriod->AddItem(ItemStr);
comServer->MoveNext();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::InitEditControl()
{
ClientGroup->AddComponent(2,true,true,false, sgPeriod,sgPeriod->Name);
ClientGroup->AddComponent(2,true,true,false, FloatPanel2,FloatPanel2->Name);
ClientGroup->AddComponent(2,false,true,true, FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(2,false,false,true,dePeriodEdate,dePeriodEdate->Name);
ClientGroup->AddComponent(2,false,true,false, sePeriodNo,sePeriodNo->Name);
ClientGroup->AddComponent(2,true,true,true, gbCheck,gbCheck->Name);
FillComboBox(scPeriodYear,"select FyYear from sdFy order by FyYear desc","FyYear");
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::FormClose(TObject *Sender, TCloseAction &Action)
{
TRecBaseForm::FormClose(Sender,Action);
//AnsiString FormIniFile = "D:\Test.Ini";
//WriteGridWidth(Name,sgPeriod,FormIniFile);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::FormCreate(TObject *Sender)
{
//AnsiString FormIniFile="D:\Test.Ini";
//SetGridWidth(Name,sgPeriod,FormIniFile);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::FormShow(TObject *Sender)
{
ClearControl(false);
if(scPeriodYear->Items->Count > 0)
{
scPeriodYear->Text=scPeriodYear->Items->Strings[0];
scPeriodYearClick(NULL);
}
sgPeriod->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::sgPeriodClick(TObject *Sender)
{
int ARow=sgPeriod->Row;
AnsiString KeyStr;
if (ARow > 0)
KeyStr = Trim(sgPeriod->TextMatrix[ARow][1]);
comServer->LocateByKey(WideString(scPeriodYear->Text+KeyStr));
if (!comServer->Eof)
GetDataFromComObject();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::sePeriodNoKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key==13 && CurrentState==caNormal)
{
comServer->LocateByKey(WideString(scPeriodYear->Text+sePeriodNo->Text));
GetDataFromComObject();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::scPeriodYearClick(TObject *Sender)
{
AnsiString s;
s = Trim(scPeriodYear->Text);
s = " PeriodYear = '" + s + "'";
comServer->FilterString = WideString(s);
comServer->Query();
FillGridWithData();
comServer->MoveFirst();
GetDataFromComObject();
if(comServer->RecordCount > 0)
{
scPeriodType->ItemIndex=StrToInt(GetFieldValue(fiPeriodType))-1;
if(GetFieldValue(fiPeriodCheck) == "1") //周期已审核
{
btnCheck->Caption="反审核周期";
scPeriodType->Enabled=false;
btnCreate->Enabled=false;
}
else
{
btnCheck->Caption="审核周期";
scPeriodType->Enabled=true;
btnCreate->Enabled=true;
}
}
else
{
scPeriodType->ItemIndex=-1;
btnCheck->Caption="审核周期";
scPeriodType->Enabled=true;
btnCreate->Enabled=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::btnCreateClick(TObject *Sender)
{
if(scPeriodYear->Text=="" || scPeriodYear->ItemIndex==-1)
return;
if(comServer->RecordCount>0) //当前计划年度已划分周期
{
if(Application->MessageBox("当前计划年度已划分周期,需要重新划分吗?",
"系统提示",MB_YESNO)==IDNO)
return;
}
if(scPeriodType->Text=="" || scPeriodType->ItemIndex==-1)
{
Application->MessageBox("请选择周期划分单位","系统提示",MB_OK);
return;
}
try
{
//调用存储过程生成计划周期
TComResultSet *RsQuery=NewResultSet();
AnsiString sSQL;
sSQL=" EXEC sdPeriod_AutoCreate '"+scPeriodYear->Text+"',"+IntToStr(scPeriodType->ItemIndex+1)+",'"+g_sdUserCode+"'";
RsQuery->Execute(sSQL);
scPeriodYearClick(NULL);
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::RefreshUpdateData(int MsgSrc,int MsgType)
{
switch(MsgSrc)
{
case euSdFy:
if(ShowUpdateMessage(MsgSrc,MsgType))
{
FillComboBox(scPeriodYear,"select FyYear from sdFy order by FyYear desc","FyYear");
scPeriodYearClick(NULL);
}
break;
default:
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::muSaveClick(TObject *Sender)
{
TRecBaseForm::muSaveClick(Sender);
scPeriodYearClick(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TfrmPeriod::btnCheckClick(TObject *Sender)
{
AnsiString sMsg;
if(scPeriodYear->Text=="" || scPeriodYear->ItemIndex==-1)
return;
if(comServer->RecordCount>0) //当前计划年度已划分周期
{
if(btnCheck->Caption == "审核周期")
sMsg="确定要将该年度的计划周期全部审核吗?";
else
sMsg="确定要将该年度的计划周期全部反审核吗?";
if(Application->MessageBox(sMsg.c_str(),"系统提示",MB_YESNO)==IDNO)
return;
}
else
return;
try
{
//调用存储过程审核计划周期
TComResultSet *RsQuery=NewResultSet();
AnsiString sSQL;
if(btnCheck->Caption == "审核周期")
sSQL=" EXEC sdPeriod_BatchCheck '"+scPeriodYear->Text+"',1,'"+g_sdUserCode+"'";
else
sSQL=" EXEC sdPeriod_BatchCheck '"+scPeriodYear->Text+"',0,''";
RsQuery->Execute(sSQL);
scPeriodYearClick(NULL);
}
catch(Exception &e)
{
throw Exception(e.Message);
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -