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

📄 defclassedit.cpp

📁 是我编写的一个考勤机管理系统,用于计算某员工某段时间以来的迟到与早退等情况.
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "DefClassEdit.h"
#include "Public.h"
#include "DM.h"
#include "DefClass.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
#pragma link "DBGridEh"
#pragma link "DBCtrlsEh"
#pragma resource "*.dfm"
TfrmDefClassEdit *frmDefClassEdit;
//---------------------------------------------------------------------------
__fastcall TfrmDefClassEdit::TfrmDefClassEdit(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TfrmDefClassEdit::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 TfrmDefClassEdit::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("ClassName")->IsNull)
        {
            Grid->DataSource->DataSet->Append();
            Grid->DataSource->DataSet->Post();
        }
    }
}

void __fastcall TfrmDefClassEdit::AddBill(void)
{
    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.CLASSID=0");
    EdtName->Clear();
    Memo->Clear();
    BtnState(1);
    mEdit=false;
    mChanged=true;
    mDefClassID=0;
}

void __fastcall TfrmDefClassEdit::ViewBill(int DefClassID)
{
    OpenSQL(QurFree,"select * from DefClass where DefClassID=" + IntToStr(DefClassID));
    if (QurFree->RecordCount==0)
    {
        Message("该单据已不存在!");
        return;
    }

    EdtName->Text = QurFree->FieldByName("DefClassName")->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 A.BEGINDATE,A.ENDDATE,A.TIMEMODE, "
        "A.BEGINTIME,A.ENDTIME,A.CLASSID AS CLASSNAME FROM DEFCLASS_D A WHERE A.DefCLASSID= " + IntToStr(DefClassID));

    BtnState(2);
    mEdit=true;
    mChanged=false;
    mDefClassID= DefClassID;
}

bool __fastcall TfrmDefClassEdit::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("ClassName")->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("ClassName")->IsNull)
        {
            Grid->SelectedIndex=5;
            Message("请选择班次名称!");
            return false;
        }

        QurGrid->Next();
    }

    if(mChanged==false) return false;

    if (!mEdit)
    {
        OpenSQL(QurFree,"select * from DefClass where DefClassName='" + Trim(EdtName->Text) + "'");
        if (QurFree->RecordCount>0 )
        {
            Message ("该默认排班名称已存在!");
            return false;
        }
        QurFree->Append();
        QurFree->FieldByName("DefClassName")->AsString=EdtName->Text ;
        QurFree->FieldByName("Memo1")->AsString=Memo->Text ;
        QurFree->UpdateBatch();
        OpenSQL(QurFree,"select * from DefClass where DefClassName='" + Trim(EdtName->Text) + "'");
        if (QurFree->RecordCount >0)
        {
            mDefClassID=QurFree->FieldByName("DefClassID")->AsInteger;
        }
        else
        {
            Message ("保存失败!");
            return false;
        }
    }
    else
    {
        OpenSQL(QurFree,"select * from DefClass where DefClassID=" + IntToStr(mDefClassID));
        if (QurFree->RecordCount==0 )
        {
            Message ("该班次已不存在!");
            return false;
        }
        QurFree->Edit() ;
        QurFree->FieldByName("DefClassName")->AsString=EdtName->Text ;
        QurFree->FieldByName("Memo1")->AsString=Memo->Text ;
        QurFree->UpdateBatch();
    }

    frmDM->Con->Execute("delete from DefClass_D where DefClassID=" + IntToStr(mDefClassID));

    AnsiString Sql;

    if (QurGrid->RecordCount>0)
    {
        QurGrid->First() ;
        for (int i=1;i<=QurGrid->RecordCount;i++)
        {
            Sql=" insert into DefClass_D(DefClassID,ItemNo,BeginDate,EndDate,"
                "TimeMode,BeginTime,EndTime,ClassID) Values("
                + IntToStr(mDefClassID) + "," + IntToStr(i) + ","
                + "'" + QurGrid->FieldByName("BeginDate")->AsString + "',"
                + "'" + QurGrid->FieldByName("EndDate")->AsString + "',"
                + "'" + QurGrid->FieldByName("TimeMode")->AsString + "',"
                + "'" + QurGrid->FieldByName("BeginTime")->AsString + "',"
                + "'" + QurGrid->FieldByName("EndTime")->AsString + "',"
                + QurGrid->FieldByName("ClassName")->AsString +")";
                
            //Message(Sql);
            frmDM->Con->Execute(Sql);

            QurGrid->Next() ;
        }
    }

    ViewBill(mDefClassID);
    if (frmDefClass!=NULL)
        frmDefClass->RefreshData() ;

    return true;
}

void __fastcall TfrmDefClassEdit::FormShow(TObject *Sender)
{
    Grid->Columns->Items[2]->PickList->Clear();
    Grid->Columns->Items[2]->PickList->CommaText = "每天,每周,每月";

    OpenSQL(QurFree,"select * from class");
    Grid->Columns->Items[5]->PickList->Clear();
    Grid->Columns->Items[5]->KeyList->Clear();
    QurFree->First();
    while (!QurFree->Eof)
    {
        Grid->Columns->Items[5]->PickList->Add(QurFree->FieldByName("ClassName")->AsString);
        Grid->Columns->Items[5]->KeyList->Add(QurFree->FieldByName("ClassID")->AsString);
        QurFree->Next();
    }
}

void __fastcall TfrmDefClassEdit::BtnPriorClick(TObject *Sender)
{
    frmDM->QurDefClass->Prior() ;
    ViewBill(frmDM->QurDefClass->FieldByName("DefClassID")->AsInteger);
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefClassEdit::BtnNextClick(TObject *Sender)
{
    frmDM->QurDefClass->Next();
    ViewBill(frmDM->QurDefClass->FieldByName("DefClassID")->AsInteger);
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefClassEdit::BtnAddClick(TObject *Sender)
{
    AddBill();
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefClassEdit::BtnEditClick(TObject *Sender)
{
    BtnState(3);
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefClassEdit::BtnSaveClick(TObject *Sender)
{
    SaveBill() ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmDefClassEdit::BtnExitClick(TObject *Sender)
{
    Close();
}

//---------------------------------------------------------------------------
void __fastcall TfrmDefClassEdit::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 TfrmDefClassEdit::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 TfrmDefClassEdit::GridColumns5NotInList(TObject *Sender,
      AnsiString NewText, bool &RecheckInList)
{
    Grid->Columns->Items[Grid->SelectedIndex]->Field->AsString =
        Grid->Columns->Items[Grid->SelectedIndex]->Field->AsString ;
}
//---------------------------------------------------------------------------

void __fastcall TfrmDefClassEdit::GridColumns5UpdateData(TObject *Sender,
      AnsiString &Text, Variant &Value, bool &UseText, bool &Handled)
{
    AddRecord();
    mChanged=true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmDefClassEdit::N1Click(TObject *Sender)
{
    QurGrid->Delete() ;
}
void __fastcall TfrmDefClassEdit::N2Click(TObject *Sender)
{
    Grid->DataSource->DataSet->Append();
    Grid->DataSource->DataSet->Post();
}
//---------------------------------------------------------------------------

void __fastcall TfrmDefClassEdit::FormClose(TObject *Sender,
      TCloseAction &Action)
{
    frmDefClassEdit=NULL;
    Action=caFree;
}

//---------------------------------------------------------------------------
void __fastcall TfrmDefClassEdit::GridKeyPress(TObject *Sender, char &Key)
{
    Key=0;
}
//---------------------------------------------------------------------------

void __fastcall TfrmDefClassEdit::EdtNameChange(TObject *Sender)
{
    mChanged=true;
}
//---------------------------------------------------------------------------




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -