📄 wsalary_work.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "WSalary_Work.h" //考勤管理窗体头文件
#include "DataModule.h" //数据模块窗体头文件
#include "Archives_Query.h" //数据记录查询窗体头文件
#include "Main.h" //考勤工资管理系统主窗体头文件
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "INHERIT"
#pragma link "Inherit"
#pragma link "CSPIN"
#pragma resource "*.dfm"
TF_Work *F_Work;
//---------------------------------------------------------------------------
__fastcall TF_Work::TF_Work(TComponent* Owner)
: TF_Inherit(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::FormCreate(TObject *Sender)
{ /*****考勤管理窗体创建事件*****/
ME_Work->Text = FormatDateTime("yyyy-mm-dd hh:nn",Now()); //取得当前日期和时间
DateTimePicker1->Date = Now().CurrentDate(); //取得当前日期
DateTimePicker3->Date = Now().CurrentDate(); //取得当前日期
ME_TStart->Text = ME_Work->Text; //初始化出差开始时间
ME_TEnd->Text = ME_Work->Text; //初始化出差结束时间
PageControl1Change(this); //初始化赋值导航条数据源
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::PageControl1Change(TObject *Sender)
{ /*****PageControl不同标签页切换事件*****/
switch(PageControl1->ActivePageIndex){ //判断PageControl现在切换到了那一页,对导航条控件数据源进行动态赋值,实现动态切换数据源的目的
case 0 : DBNavigator1->DataSource = DM->DS_Atten; //导航导数据源为出勤信息表
break;
case 1 : DBNavigator1->DataSource = DM->DS_OTime; //导航导数据源为加班信息表
break;
case 2 : DBNavigator1->DataSource = DM->DS_Evec; //导航导数据源为出差信息表
break;
case 3 : DBNavigator1->DataSource = DM->DS_Employee; //导航导数据源为请假信息表
break;
case 4 : DBNavigator1->DataSource = DM->DS_Stat; //导航导数据源为考勤统计信息表
}
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::BB_QueryClick(TObject *Sender)
{ /*****员工查找按钮单击事件*****/
TStringList *str1 = new TStringList();
TStringList *str2 = new TStringList();
F_Query->Q_Table = "Person_Employee"; //赋查找表名
str1->Add("员工工号"); //添加员工工号查找字段
str2->Add("Employee_ID"); //添加员工工员在数据表中的字段名
F_Query->T_Field[0] = 0; //添加部门字段类型代号,为整数类型
str1->Add("部门"); //添加部门查找字段
str2->Add("Employee_Branch");//添加部门在数据表中的字段名
F_Query->T_Field[1] = 0; //添加部门字段类型代号,为整数类型
str1->Add("员工姓名"); //添加员工姓名查找字段
str2->Add("Employee_Name"); //添加员工姓名在数据表中的字段名
F_Query->T_Field[2] = 1; //添加员工姓名字段类型代号,为字符串类型
F_Query->S_Field = str1; //查询窗体上S_Field公有变量赋值
F_Query->N_Field = str2; //查询窗体上N_Field公有变量赋值
F_Query->Query = DM->AQ_Employee; //设定查找数据集为员工信息表
F_Query->ShowModal(); //打开数据记录查询窗口
// DM->AQ_Employee = F_Query->Query;
delete str1,str2; //释放str1,str2对象
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::DBGrid1DblClick(TObject *Sender)
{ /*****DBGrid1数据记录项双击事件*****/
// if(DBGrid1->Fields[0]->Value.IsNull())
// return; //用户没有选择员工号记录
int Record;
switch(PageControl1->ActivePageIndex){ //判断PageControl现在切换到了那一页
case 0 :{
DM->AT_Count->Filter = "Count_Name='Atten'"; //设置过滤器,提取出勤信息表计数值
DM->AT_Count->Filtered = true; //开启过滤器
DM->AT_Count->Open(); //打开记录编号计数表
Record = DM->AT_CountCount_Value->Value; //提取计数值
DM->AQ_Atten->Open();
DM->AQ_Atten->Append(); //在出勤信息表中追加一条记录
DM->AQ_AttenAtten_PID->Value = DM->AQ_EmployeeEmployee_ID->Value; //员工工号赋值
DM->AQ_AttenAtten_In_Out->Value = RG_InOut->ItemIndex?"O":"I"; //赋出入情况值
DM->AQ_AttenAtten_Time->Value = StrToDateTime(ME_Work->Text); //赋出入时间值
DM->AQ_AttenAtten_ID->Value = Record+1; //赋记录编号值
DM->AQ_Atten->Post(); //提交追加数据记录
break; //直接跳出
}
case 1 :{
DM->AT_Count->Filter = "Count_Name='OTime'"; //设置过滤器,提取加班信息表计数值
DM->AT_Count->Filtered = true; //开启过滤器
DM->AT_Count->Open(); //打开记录编号计数表
Record = DM->AT_CountCount_Value->Value; //提取计数值
DM->AQ_OTime->Append(); //在出勤信息表中追加一条记录
DM->AQ_OTimeOTime_PID->Value = DM->AQ_EmployeeEmployee_ID->Value; //赋员工工号值
DM->AQ_OTimeOTime_Time->Value = CSE_Time->Text.ToInt(); //赋加班累计时间值
DM->AQ_OTimeOTime_Date->Value = DateTimePicker1->Date; //赋加班日期值
DM->AQ_OTimeOTime_ID->Value = Record+1; //赋记录编号值
DM->AQ_OTime->Post(); //提交追加数据记录
break;
}
case 2 :{
DM->AT_Count->Filter = "Count_Name='Evect'"; //设置过滤器,提取加班信息表计数值
DM->AT_Count->Filtered = true; //开启过滤器
DM->AT_Count->Open(); //打开记录编号计数表
Record = DM->AT_CountCount_Value->Value; //提取计数值
DM->AQ_Evec->Append(); //在出勤信息表中追加一条记录
DM->AQ_EvecEvection_PID->Value = DM->AQ_EmployeeEmployee_ID->Value; //赋员工工号值
DM->AQ_EvecEvection_TStart->Value = StrToDateTime(ME_TStart->Text); //赋出差开始时间值
DM->AQ_EvecEvection_TEnd->Value = StrToDateTime(ME_TEnd->Text); //赋出差结束时间值
DM->AQ_EvecEvection_Text->Value = Memo1->Text; //赋出差备注值
DM->AQ_EvecEvection_ID->Value = Record+1; //赋记录编号值
DM->AQ_Evec->Post(); //提交追加数据记录
break;
}
case 4 :{
try{
StrToDate(ME_MStat->Text+"-01");
}
catch(...){
Application->MessageBoxA("统计月份输入不正确,请重输","提示对话框",mrOk);
ME_MStat->SetFocus(); //焦点在统计月份输入框
return;
}
Record = WStatistic(); //用户自定义员工出勤、加班、出差、请假情况统计函数
}
}
DM->AT_Count->Edit(); //编辑记录号计数数据表
DM->AT_CountCount_Value->Value = Record+1; //记录号加1再赋值
DM->AT_Count->Post(); //提交编辑数据
DM->AT_Count->Close(); //关闭记录号计数数据表
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::CheckBox1Click(TObject *Sender)
{ /*****提取当前时间复选框单击事件*****/
if(CheckBox1->Checked||CheckBox2->Checked){ //选中
ME_Work->Text = FormatDateTime("yyyy-mm-dd hh:nn",Now()); //取得当前日期和时间
ME_TStart->Text = ME_Work->Text; //出差开始时间
ME_TEnd->Text = ME_Work->Text; //出差结束时间
Timer1->Enabled = true; //定时器
}
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::Timer1Timer(TObject *Sender)
{ /*****Timer1定时器响应事件函数*****/
CheckBox1->Checked = false; //置未选中
CheckBox2->Checked = false;
Timer1->Enabled = false; //关闭定时器
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton1Click(TObject *Sender)
{ /*****单个工具条快捷按钮单击事件*****/
DBGrid1DblClick(this); //增加员工列表中选中员工工号的对应
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton13Click(TObject *Sender)
{ /*****所列工具条快捷按钮单击事件*****/
DM->AQ_Employee->First(); //移动当前活动记录到第一条记录
F_Main->CGauge1->Progress = 0;//进度条回到零状态
for(int i=0;i<DM->AQ_Employee->RecordCount;i++){ //添加所有列表记录
DBGrid1DblClick(this); //增加当前活动记录员工工员对应的考勤记录
DM->AQ_Employee->Next(); //当前活动记录下移一条记录
F_Main->CGauge1->Progress = 100/DM->AQ_Employee->RecordCount; //进度条显示统计进度
}
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton2Click(TObject *Sender)
{ /*****编辑工具条快捷按钮单击事件*****/
DBNavigator1->BtnClick(nbEdit); //编辑当前数据表当前活动记录
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton3Click(TObject *Sender)
{ /*****删除工具条快捷按钮单击事件*****/
DBNavigator1->BtnClick(nbDelete); //删除当前数据表当前活动记录
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton4Click(TObject *Sender)
{ /*****提交工具条快捷按钮单击事件*****/
DBNavigator1->BtnClick(nbPost); //提交当前数据表操作
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton6Click(TObject *Sender)
{ /*****取消工具条快捷按钮单击事件*****/
DBNavigator1->BtnClick(nbCancel); //取消当前数据表操作
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton5Click(TObject *Sender)
{ /*****最前条工具条快捷按钮单击事件*****/
DBNavigator1->BtnClick(nbFirst); //移动当第一条记录
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton7Click(TObject *Sender)
{ /*****前一条工具条快捷按钮单击事件*****/
DBNavigator1->BtnClick(nbPrior); //上移第一条记录
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton8Click(TObject *Sender)
{ /*****后一条工具条快捷按钮单击事件*****/
DBNavigator1->BtnClick(nbNext); //下移一条记录
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton9Click(TObject *Sender)
{ /*****最后条工具条快捷按钮单击事件*****/
DBNavigator1->BtnClick(nbLast); //移动到最后一条记录
}
//---------------------------------------------------------------------------
void __fastcall TF_Work::ToolButton10Click(TObject *Sender)
{ /*****查找工具条快捷按钮单击事件*****/
TStringList *str1 = new TStringList();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -