📄 main.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Main.h" //MDI主窗体头文件
#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" //数据库服务器配置窗体头文件
#include "Archives_AboutBox.h" //软件关于窗体头文件
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TF_Main *F_Main;
//---------------------------------------------------------------------------
__fastcall TF_Main::TF_Main(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
bool TF_Main::CreateForm(TForm *CForm)
{ /*****用户自定义MDIChild子窗体存在判断函数*****/
int No;
bool FormExist = false;
if(CForm == NULL) //判断CForm是否为空
return false;
for(No=0;No<Screen->FormCount;No++){ //判断窗体是否已经被建立起来
if(Screen->Forms[No]->ClassType() == CForm->ClassType()){ //窗体存在判断
FormExist = true; //窗体已经创建,用户没看到可能是处于隐藏或者最小化
break;
}
}
if(FormExist == false) //窗体没有创建,返回false
return false;
if(CForm->WindowState == wsMinimized) //窗体已经创建,但处于最小化状态
ShowWindow(CForm->Handle,SW_SHOWNORMAL); //显示窗体
else //窗体已经创建,但处于隐藏状态
ShowWindow(CForm->Handle,SW_SHOWNA); //显示窗体
if(!CForm->Visible)
CForm->Visible = true;
CForm->BringToFront(); //当前窗口显示在最面前
CForm->SetFocus(); //把光标的焦点转移到刚才创建或显示的窗口上
return true;
}
//---------------------------------------------------------------------------
void TF_Main::BackupDatabase(AnsiString filename)
{ /*****用户自定义备份SQL Server 2000数据库函数*****/
DM->AQ_Back_Restore->Close(); //关闭数据库备份还原查询控件
DM->AQ_Back_Restore->SQL->Clear(); //清除SQL语句
// DM->AQ_Back_Restore->SQL->Add("USE Archives"); //增加备份数据库SQL语句
AnsiString Backup("BACKUP DATABASE "); //生成数据库备份命令赋Backup字符串
TIniFile *ini; //申请一个TIniFile类对象
//打开档案管理系统数据库INI配置文件
ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ));
AnsiString str;
str = ini->ReadString("Database","Initial Catalog","Archives"); //从配置文件读数据库名
Backup.Insert(str,Backup.Length()+1); //追加档案管理系统数据库名,+1的目的是前面有个空格
DM->AQ_Back_Restore->SQL->Add(Backup); //增加备份数据库RESTORE命令SQL语句
delete ini; //释放ini对象
// AnsiString str; //生成备份数据库生成文件的路径和文件名字符串
str="TO DISK ='"; //生成备份数据库文件的路径和文件名字符串
str+=filename;
str+="'";
DM->AQ_Back_Restore->SQL->Add(str); //增加备份数据库的路径和文件名字符串SQL语句
DM->AQ_Back_Restore->SQL->Add("WITH init"); //备份数据库SQL语句WITH参数设定,完整备份数据库
try{ //捕捉异常
DM->AQ_Back_Restore->ExecSQL(); //执行SQL语句,但不打开数据集
}
catch(...) //抛出异常
{
Application->MessageBox("数据库备份出错", "错误!", MB_OK);
}
}
//---------------------------------------------------------------------------
void TF_Main::RestoreDatabase(AnsiString filename)
{ /*****用户自定义还原SQL Server 2000数据库函数*****/
DM->AQ_Back_Restore->Close(); //关闭数据库备份还原查询控件
DM->AQ_Back_Restore->SQL->Clear(); //清除SQL语句
AnsiString Restore("RESTORE DATABASE "); //生成数据库还原命令赋Restore字符串
TIniFile *ini; //申请一个TIniFile类对象
//打开档案管理系统数据库INI配置文件
ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ));
AnsiString str;
str = ini->ReadString("Database","Initial Catalog","Archives"); //从配置文件读数据库名
Restore.Insert(str,Restore.Length()+1); //追加档案管理系统数据库名,+1的目的是前面有个空格
DM->AQ_Back_Restore->SQL->Add(str); //增加还原数据库SQL命令语句
delete ini; //释放ini对象
str="FROM DISK = '"; //生成还原数据库文件的路径和文件名字符串
str+=filename;
str+="'";
DM->AQ_Back_Restore->SQL->Add(str); //增加还原数据库文件的路径和文件名字符串SQL语句
DM->AQ_Back_Restore->SQL->Add("WITH norecovery"); //还原数据库SQL语句WITH参数设定,完整还原数据库
try{ //捕捉异常
DM->AQ_Back_Restore->ExecSQL(); //执行SQL语句,但不打开数据集
}
catch(...) //抛出异常
{
Application->MessageBox("数据库恢复出错", "错误!", MB_OK);
}
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::M_ClassClick(TObject *Sender)
{ /*****档案分类管理菜单项单击事件*****/
// DM->DS_Class->Enabled = false; //档案分类资料数据源控件处于非使能态,与提交、取消按钮数据感知控件失去关联关系
if(CreateForm(F_Class) == false) //CreateForm调用判断档案分类管理窗体是否存在函数
F_Class = new TF_Class(Application); //动态创建档案分类管理窗体
DM->DS_Class->Enabled = true; //档案分类资料数据源控件处于使能态,与提交、取消按钮数据感知控件建立关联关系
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::M_TankClick(TObject *Sender)
{ /*****档案柜资料管理菜单项单击事件*****/
// DM->DS_Tank->Enabled = false; //档案柜资料数据源控件处于非使能态,与提交、取消按钮数据感知控件失去关联关系
if(CreateForm(F_Tank) == false) //CreateForm调用判断档案柜资料管理窗体是否存在函数
F_Tank = new TF_Tank(Application); //动态创建档案柜资料管理窗体
DM->DS_Tank->Enabled = true; //档案柜资料数据源控件处于使能态,与提交、取消按钮数据感知控件建立关联关系
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::M_ManageClick(TObject *Sender)
{ /*****档案管理菜单项单击事件*****/
// DM->DS_Class->Enabled = false; //档案分类资料数据源控件处于非使能态,与提交、取消按钮数据感知控件失去关联关系
// DM->DS_Manage->Enabled = false; //档案管理数据源控件处于非使能态,与提交、取消按钮数据感知控件失去关联关系
if(CreateForm(F_Manage) == false) //CreateForm调用判断档案管理窗体是否存在函数
F_Manage = new TF_Manage(Application); //动态创建档案管理窗体
DM->DS_Manage->Enabled = true; //档案管理数据源控件处于使能态,与提交、取消按钮数据感知控件建立关联关系
// DM->DS_Class->Enabled = true; //档案分类资料数据源控件处于使能态,与提交、取消按钮数据感知控件建立关联关系
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::M_BorrowClick(TObject *Sender)
{ /*****档案借用管理菜单项单击事件*****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -