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

📄 datamodule.~cpp

📁 档案管理系统源码
💻 ~CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "DataModule.h"      //数据模块窗体头文件
#include "Archives_Class.h"  //MDIChild档案分类管理窗体头文件
#include "Archives_Tank.h"   //MDIChild档案柜资料管理窗体头文件
#include "Archives_Manage.h" //档案管理MDI子窗体头文件
#include "Borrow_Return.h"   //档案借用和归还管理窗体头文件
#include "Archives_Config.h" //数据库服务器配置窗体头文件


//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TDM *DM;
//---------------------------------------------------------------------------
__fastcall TDM::TDM(TComponent* Owner)
        : TDataModule(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TDM::DataModuleCreate(TObject *Sender)
{   /*****数据模块窗体创建事件*****/
    TIniFile *ini;    //申请一个TIniFile类对象
    //打开INI文件,如果不存在则创建与应用程序同名,后缀名为.INI的ini配置文件
    ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ));
    bool State;
    State = ini->ReadBool("Database","Connection",false); //读取数据库连接是否成功标志,第一次读或者此项不存在时则返回默认值false赋State变量
    if(!State){  //数据库没有连接成功
      try{
        F_Config = new TF_Config(Application);  //动态数据库服务器配置窗体
        F_Config->ShowModal();                  //显示数据库服务器配置窗口
        delete F_Config;                        //释放F_Config对象
        F_Config = NULL;                        //编程技巧,以免重复释放时抛出异常
        }
      catch(Exception &exception){
        delete F_Config;                        //释放F_Config对象
        Application->ShowException(&exception); //弹出异常对话框
        }
//      F_Config->ShowModal();  //弹出数据库服务器配置窗口
      }
    char CString[100];
    StrCopy(CString,"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog="); //拷贝字符串到CString
    AnsiString  str,str1;
    str = ini->ReadString("Database","Initial Catalog","Archives"); //从配置文件读数据库名
    StrCat(CString,str.c_str());          //追加从配置文件读入的数据库名字符串
    str1 = ini->ReadString("Database","Data Source","FLYYCS\\YCS");  //从配置文件读数据库服务器名
    delete ini;    //释放ini对象
    StrCat(CString,";Data Source=");      //追加字符串到CString
    StrCat(CString,str1.c_str());          //追加从配置文件读入的数据库服务器名字符串
    DM->ADOConnection->Connected = false;
    DM->ADOConnection->ConnectionString = CString;  //数据库连接属性字符串赋新值
    try{            //捕捉异常
      DM->ADOConnection->Connected = true;  //启动与数据库服务器的连接
      DM->AT_Class->Active = true;          //激活各个数据表与服务器的连接
      DM->AT_Tank->Active = true;
      DM->AT_Borrow->Active = true;
      DM->AT_Return->Active = true;
      DM->AT_Count->Active = true;
      DM->AQ_Manage->Active = true;
//      DM->AQ_Back_Restore->Active = true;
      }
    catch(...){     //抛出异常
      MessageBox(NULL,"与数据库服务器连接未成功,请重新配置","警告对话框",MB_ICONWARNING);
      }
    TIniFile *iniW;  //申请一个TIniFile类对象
    //打开INI文件,如果不存在则创建与应用程序同名,后缀名为.INI的ini配置文件
    iniW = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ));
    State = DM->ADOConnection->Connected;            //取得数据库连接是否成功标志值
    iniW->WriteBool("Database","Connection",State);  //将数据库连接是否成功标志值写入配置文件
    delete iniW;    //释放iniW对象
    iniW = NULL;    //编程技巧,这样可以在下次不小心再delete ini一次时也不会抛出异常
}
//---------------------------------------------------------------------------

void __fastcall TDM::DS_ClassStateChange(TObject *Sender)
{   /*****档案分类管理数据源状态改变事件*****/
    //当档案分类资料数据源的状态处于编辑态或插入态时,提交和取消按钮处于使能态
    F_Class->ToolButton4->Enabled = (DS_Class->State == dsEdit||DS_Class->State == dsInsert);
    F_Class->ToolButton6->Enabled =F_Class->ToolButton4->Enabled;
}
//---------------------------------------------------------------------------

void __fastcall TDM::DS_ClassDataChange(TObject *Sender, TField *Field)
{   /*****档案分类资料数据源数据改变事件*****/
    //档案分类资料数据集中至少有一条记录时,档案分类管理数据源删除按钮处于使能态
    F_Class->ToolButton3->Enabled = AT_Class->RecordCount;
}
//---------------------------------------------------------------------------

void __fastcall TDM::DS_TankStateChange(TObject *Sender)
{   /*****档案柜资料数据源状态改变事件*****/
    //当档案柜资料数据源的状态处于编辑态或插入态时,提交和取消按钮处于使能态
    F_Tank->ToolButton4->Enabled = (DS_Tank->State == dsEdit||DS_Tank->State == dsInsert);
    F_Tank->ToolButton6->Enabled =F_Tank->ToolButton4->Enabled;
}
//---------------------------------------------------------------------------

void __fastcall TDM::DS_TankDataChange(TObject *Sender, TField *Field)
{   /*****档案柜资料数据源数据改变事件*****/
    //档案柜资料数据集中至少有一条记录时,档案分类管理数据源删除按钮处于使能态
    F_Tank->ToolButton3->Enabled = AT_Tank->RecordCount;
}
//---------------------------------------------------------------------------

void __fastcall TDM::DS_ManageStateChange(TObject *Sender)
{   /*****档案管理数据源状态改变事件*****/
    //当档案管理数据源的状态处于编辑态或插入态时,提交和取消按钮处于使能态
    F_Manage->ToolButton4->Enabled = (DS_Manage->State == dsEdit||DS_Manage->State == dsInsert);
    F_Manage->ToolButton6->Enabled =F_Manage->ToolButton4->Enabled;
}
//---------------------------------------------------------------------------

void __fastcall TDM::DS_ManageDataChange(TObject *Sender, TField *Field)
{   /*****档案管理数据源更新事件*****/
    //档案管理数据集中至少有一条记录时,档案分类管理数据源删除按钮处于使能态
    F_Manage->ToolButton3->Enabled = AQ_Manage->RecordCount;
    F_Manage->ToolButton5->Enabled = !AQ_Manage->Bof;  //数据集中当前活动记录不是首记录时,最前条按钮处于使能态
    F_Manage->ToolButton7->Enabled = F_Manage->ToolButton5->Enabled;
    F_Manage->ToolButton9->Enabled = !AQ_Manage->Eof;  //数据集中当前活动记录不是未记录时,最后条按钮处于使能态
    F_Manage->ToolButton8->Enabled = F_Manage->ToolButton9->Enabled;
}
//---------------------------------------------------------------------------


void __fastcall TDM::DS_BorrowStateChange(TObject *Sender)
{   /*****档案借用数据源状态改变事件*****/
    //当档案借用数据源的状态处于编辑态或插入态时,提交和取消按钮处于使能态
    F_BReturn->ToolButton4->Enabled = (DS_Borrow->State == dsEdit||DS_Borrow->State == dsInsert);
    F_BReturn->ToolButton6->Enabled = F_BReturn->ToolButton4->Enabled;
//    F_BReturn->ToolButton1->Enabled = !(DS_Borrow->State == dsEdit||DS_Borrow->State == dsInsert);
//    F_BReturn->ToolButton2->Enabled = F_BReturn->ToolButton1->Enabled;
//    F_BReturn->ToolButton3->Enabled = F_BReturn->ToolButton1->Enabled;
}
//---------------------------------------------------------------------------

void __fastcall TDM::DS_BorrowDataChange(TObject *Sender, TField *Field)
{   /*****档案借用数据源数据改变事件*****/
    //档案借用数据集中至少有一条记录时,档案借用数据源删除按钮处于使能态
    F_BReturn->ToolButton3->Enabled = AT_Borrow->RecordCount;
}
//---------------------------------------------------------------------------

void __fastcall TDM::DS_ReturnStateChange(TObject *Sender)
{   /*****档案归还数据源状态改变事件*****/
    //当档案归还数据源的状态处于编辑态或插入态时,提交和取消按钮处于使能态
    F_BReturn->ToolButton4->Enabled = (DS_Return->State == dsEdit||DS_Return->State == dsInsert);
    F_BReturn->ToolButton6->Enabled = F_BReturn->ToolButton4->Enabled;
//    F_BReturn->ToolButton1->Enabled = !(DS_Borrow->State == dsEdit||DS_Borrow->State == dsInsert);
//    F_BReturn->ToolButton2->Enabled = F_BReturn->ToolButton1->Enabled;
//    F_BReturn->ToolButton3->Enabled = F_BReturn->ToolButton1->Enabled;
}
//---------------------------------------------------------------------------

void __fastcall TDM::DS_ReturnDataChange(TObject *Sender, TField *Field)
{   /*****档案归还数据源数据改变事件*****/
    //档案归还数据集中至少有一条记录时,档案归还数据源删除按钮处于使能态
    F_BReturn->ToolButton3->Enabled = AT_Return->RecordCount;
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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