📄 defvacedit.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "DefVacEdit.h"
#include "Public.h"
#include "DM.h"
#include "DefVac.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "DBGridEh"
#pragma resource "*.dfm"
TfrmDefVacEdit *frmDefVacEdit;
//---------------------------------------------------------------------------
__fastcall TfrmDefVacEdit::TfrmDefVacEdit(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::BtnState(int State)
{
switch (State)
{
case 1 : //新增
//EdtName->Enabled=true;
EdtName->ReadOnly =false;
Memo->ReadOnly =false;
Grid->Enabled=true;
Grid->ReadOnly =false;
Grid->PopupMenu =mnuClassEdit;
break;
case 2 : //查看
//EdtName->Enabled=false;
EdtName->ReadOnly =true;
Memo->ReadOnly =true;
// Grid->Enabled=false;
Grid->ReadOnly =true;
Grid->PopupMenu =NULL;
break;
case 3 : //修改
//EdtName->Enabled=true;
EdtName->ReadOnly =false;
Memo->ReadOnly =false;
Grid->Enabled=true;
Grid->ReadOnly =false;
Grid->PopupMenu =mnuClassEdit;
break;
}
}
void __fastcall TfrmDefVacEdit::AddRecord(void)
{
if (Grid->ReadOnly) return;
if (QurGrid->RecNo == QurGrid->RecordCount)
{
if (!QurGrid->FieldByName("BeginDate")->IsNull && !QurGrid->FieldByName("EndDate")->IsNull
&& !QurGrid->FieldByName("TimeMode")->IsNull && !QurGrid->FieldByName("TimePos")->IsNull)
{
Grid->DataSource->DataSet->Append();
Grid->DataSource->DataSet->Post();
}
}
}
void __fastcall TfrmDefVacEdit::AddBill(void)
{
OpenSQL(QurGrid,"select * from DefVac_D where DefVacID=0");
EdtName->Clear();
Memo->Clear();
BtnState(1);
mEdit=false;
mChanged=true;
mDefVacID=0;
}
void __fastcall TfrmDefVacEdit::ViewBill(int DefVacID)
{
OpenSQL(QurFree,"select * from DefVac where DefVacID=" + IntToStr(DefVacID));
if (QurFree->RecordCount==0)
{
Message("该单据已不存在!");
return;
}
EdtName->Text = QurFree->FieldByName("DefVacName")->AsString;
Memo->Text = QurFree->FieldByName("Memo1")->AsString;
/* OpenSQL(QurGrid,"SELECT A.BEGINDATE,A.ENDDATE,A.TIMEMODE,"
"A.BEGINTIME,A.ENDTIME,A.CLASSID,B.CLASSNAME FROM DEFCLASS_D A "
"LEFT OUTER JOIN CLASS B ON A.CLASSID=B.CLASSID WHERE A.DefCLASSID=" + IntToStr(DefClassID)); */
OpenSQL(QurGrid,"select * from DefVac_D WHERE DefVacID= " + IntToStr(DefVacID));
BtnState(2);
mEdit=true;
mChanged=false;
mDefVacID= DefVacID;
}
bool __fastcall TfrmDefVacEdit::SaveBill(void)
{
if (EdtName->Text =="")
{
Message("请输入默认休假名称!");
return false;
}
QurGrid->Edit();
QurGrid->Post();
QurGrid->First();
while (!QurGrid->Eof)
{
if (QurGrid->FieldByName("BeginDate")->IsNull && QurGrid->FieldByName("EndDate")->IsNull
&& QurGrid->FieldByName("TimeMode")->IsNull && QurGrid->FieldByName("TimePos")->IsNull)
{
QurGrid->Delete();
if (QurGrid->IsEmpty() || QurGrid->RecordCount ==0 )
{
Message("明细不能为空!");
return false;
}
continue;
}
if (QurGrid->FieldByName("BeginDate")->IsNull)
{
Grid->SelectedIndex=0;
Message("请选择开始日期!");
return false;
}
if (QurGrid->FieldByName("EndDate")->IsNull)
{
Grid->SelectedIndex=1;
Message("请选择结束日期!");
return false;
}
if (QurGrid->FieldByName("TimeMode")->IsNull)
{
Grid->SelectedIndex=2;
Message("请选择时间模式!");
return false;
}
else
{
if (QurGrid->FieldByName("TimeMode")->AsString=="每周" ||
QurGrid->FieldByName("TimeMode")->AsString=="每月" )
{
if (QurGrid->FieldByName("BeginTime")->IsNull)
{
Grid->SelectedIndex=3;
Message("请选择开始时间!");
return false;
}
if (QurGrid->FieldByName("EndTime")->IsNull)
{
Grid->SelectedIndex=4;
Message("请选择结束时间!");
return false;
}
}
}
if (QurGrid->FieldByName("TimePos")->IsNull)
{
Grid->SelectedIndex=5;
Message("请选择时间段!");
return false;
}
QurGrid->Next();
}
if(mChanged==false) return false;
if (!mEdit)
{
OpenSQL(QurFree,"select * from DefVac where DefVacName='" + Trim(EdtName->Text) + "'");
if (QurFree->RecordCount>0 )
{
Message ("该默认休假名称已存在!");
return false;
}
QurFree->Append();
QurFree->FieldByName("DefVacName")->AsString=EdtName->Text ;
QurFree->FieldByName("Memo1")->AsString=Memo->Text ;
QurFree->UpdateBatch();
OpenSQL(QurFree,"select * from DefVac where DefVacName='" + Trim(EdtName->Text) + "'");
if (QurFree->RecordCount >0)
{
mDefVacID=QurFree->FieldByName("DefVacID")->AsInteger;
}
else
{
Message ("保存失败!");
return false;
}
}
else
{
OpenSQL(QurFree,"select * from DefVac where DefVacID=" + IntToStr(mDefVacID));
if (QurFree->RecordCount==0 )
{
Message ("该默认休假已不存在!");
return false;
}
QurFree->Edit() ;
QurFree->FieldByName("DefVacName")->AsString=EdtName->Text ;
QurFree->FieldByName("Memo1")->AsString=Memo->Text ;
QurFree->UpdateBatch();
}
frmDM->Con->Execute("delete from DefVac_D where DefVacID=" + IntToStr(mDefVacID));
AnsiString Sql;
if (QurGrid->RecordCount>0)
{
QurGrid->First() ;
for (int i=1;i<=QurGrid->RecordCount;i++)
{
Sql=" insert into DefVac_D(DefVacID,ItemNo,BeginDate,EndDate,"
"TimeMode,BeginTime,EndTime,TimePos) Values("
+ IntToStr(mDefVacID) + "," + IntToStr(i) + ","
+ "'" + QurGrid->FieldByName("BeginDate")->AsString + "',"
+ "'" + QurGrid->FieldByName("EndDate")->AsString + "',"
+ "'" + QurGrid->FieldByName("TimeMode")->AsString + "',"
+ "'" + QurGrid->FieldByName("BeginTime")->AsString + "',"
+ "'" + QurGrid->FieldByName("EndTime")->AsString + "',"
+ "'" + QurGrid->FieldByName("TimePos")->AsString + "')";
//Message(Sql);
frmDM->Con->Execute(Sql);
QurGrid->Next() ;
}
}
ViewBill(mDefVacID);
if (frmDefVac!=NULL)
frmDefVac->RefreshData() ;
return true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::BtnPriorClick(TObject *Sender)
{
frmDM->QurDefVac->Prior() ;
ViewBill(frmDM->QurDefVac->FieldByName("DefVacID")->AsInteger);
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::BtnNextClick(TObject *Sender)
{
frmDM->QurDefVac->Next();
ViewBill(frmDM->QurDefVac->FieldByName("DefVacID")->AsInteger);
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::BtnAddClick(TObject *Sender)
{
AddBill();
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::BtnEditClick(TObject *Sender)
{
BtnState(3);
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::BtnSaveClick(TObject *Sender)
{
SaveBill() ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::BtnExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::FormShow(TObject *Sender)
{
Grid->Columns->Items[2]->PickList->Clear();
Grid->Columns->Items[2]->PickList->CommaText = "每天,每周,每月";
int iTimePosCount;
iTimePosCount = GetTimePosCount();
Grid->Columns->Items[5]->PickList->Clear();
for(int i=1;i<=iTimePosCount;i++)
{
Grid->Columns->Items[5]->PickList->Add("时间段"+IntToStr(i));
}
Grid->Columns->Items[5]->PickList->Add("全天");
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::GridColumns2UpdateData(TObject *Sender,
AnsiString &Text, Variant &Value, bool &UseText, bool &Handled)
{
if (Text == "每天")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[3]->Field->AsString ="";
Grid->Columns->Items[4]->PickList->Clear();
Grid->Columns->Items[4]->Field->AsString ="";
}
if (Text == "每周")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[3]->Field->AsString ="1";
Grid->Columns->Items[4]->PickList->Clear();
Grid->Columns->Items[4]->Field->AsString ="1";
}
if (Text == "每月")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[3]->Field->AsString ="1";
Grid->Columns->Items[4]->PickList->Clear();
Grid->Columns->Items[4]->Field->AsString ="1";
}
mChanged=true;
AddRecord();
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::GridCellClick(TColumnEh *Column)
{
Grid->DataSource->DataSet->Edit();
switch (Grid->SelectedIndex)
{
case 3:
case 4:
if (Grid->Columns->Items[2]->Field->AsString == "每天")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[3]->Field->AsString ="";
Grid->Columns->Items[4]->PickList->Clear();
Grid->Columns->Items[4]->Field->AsString ="";
}
if (Grid->Columns->Items[2]->Field->AsString == "每周")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[3]->PickList->CommaText ="1,2,3,4,5,6,7";
Grid->Columns->Items[4]->PickList->Clear();
Grid->Columns->Items[4]->PickList->CommaText ="1,2,3,4,5,6,7";
}
if (Grid->Columns->Items[2]->Field->AsString == "每月")
{
Grid->Columns->Items[3]->PickList->Clear();
Grid->Columns->Items[4]->PickList->Clear();
for (int i=1; i<=31 ;i++)
{
Grid->Columns->Items[3]->PickList->Add(IntToStr(i));
Grid->Columns->Items[4]->PickList->Add(IntToStr(i));
}
}
break;
}
Grid->DataSource->DataSet->Post();
AddRecord();
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::GridKeyPress(TObject *Sender, char &Key)
{
Key=0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::FormClose(TObject *Sender,
TCloseAction &Action)
{
frmDefVacEdit=NULL;
Action=caFree;
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::GridColumns0NotInList(TObject *Sender,
AnsiString NewText, bool &RecheckInList)
{
Grid->Columns->Items[Grid->SelectedIndex]->Field->AsString =
Grid->Columns->Items[Grid->SelectedIndex]->Field->AsString ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::GridColumns0UpdateData(TObject *Sender,
AnsiString &Text, Variant &Value, bool &UseText, bool &Handled)
{
AddRecord();
mChanged=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::N1Click(TObject *Sender)
{
QurGrid->Delete() ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::N2Click(TObject *Sender)
{
Grid->DataSource->DataSet->Append();
Grid->DataSource->DataSet->Post();
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefVacEdit::EdtNameChange(TObject *Sender)
{
mChanged=true;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -