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

📄 wsalary_work.~cpp

📁 考勤工资管理系统
💻 ~CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#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 + -