📄 datamodule.~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 + -