📄 main.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Main.h" //考勤工资管理系统主窗体头文件
#include "DataModule.h" //数据模块窗体头文件
#include "WSalary_Work.h" //考勤管理窗体头文件
#include "WSalary_Salary.h" //工资管理窗体头文件
#include "WSalary_Set.h" //考勤工资参数设置窗体头文件
#include "Archives_Config.h" //数据库服务器配置窗体头文件
//#include "Archives_Query.h" //数据记录查询窗体头文件
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGAUGES"
#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 = new TIniFile(ExtractFilePath(ParamStr(0))+"Config.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 = new TIniFile(ExtractFilePath(ParamStr(0))+"Config.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::FormCreate(TObject *Sender)
{ /*****主窗体创建事件*****/
CGauge1->Parent = StatusBar1; //将进度条CGauge1绑定到StatusBar1
CGauge1->Top = 3; //设置进度条在StatusBar里顶部的位置
CGauge1->Left = StatusBar1->Panels->Items[0]->Width+2; //设置进度条左边框位置
CGauge1->Height = StatusBar1->Height-2; //设置进度条高度
CGauge1->Width = StatusBar1->Panels->Items[1]->Width-4; //设置进度条宽度
TIniFile *ini; //申请一个TIniFile类对象
//打开考勤工资管理系统Config.INI配置文件,如果不存在则创建
ini = new TIniFile(ExtractFilePath(ParamStr(0))+"Config.INI"); //ExtractFilePath(ParamStr(0))取得当前工作路径
F_Main->Color = ini->ReadInteger("Form","Color",clAppWorkSpace); //从配置文件中读取颜色值
AnsiString str = ini->ReadString("Form","Picture",""); //从配置文件中读取主窗体背景图片文件
if(!str.IsEmpty()){ //用户没有选择了图片
try{
Image1->Picture->LoadFromFile(str); //更换主窗体背景图片
}
catch(...){
Image1->Picture->CleanupInstance(); //清除图片
Application->MessageBox("加载背景图时出错,没有找到图片文件", "错误!", MB_OK);
}
}
delete ini; //释放ini对象
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::StatusBar1DrawPanel(TStatusBar *StatusBar,
TStatusPanel *Panel, const TRect &Rect)
{ /*****StatusBar1状态栏OnDrawPanel事件*****/
if(Panel->ID == 2){ //只在第三个Panels上显示图标与文字
Graphics::TBitmap *Time = new Graphics::TBitmap(); //创建一个图像对象
ImageList1->GetBitmap(0,Time); //从图像列表ImageList1取得第1幅位图赋Time
StatusBar1->Canvas->Draw(Rect.Left,Rect.Top,Time); //在状态栏里显示图像
StatusBar1->Canvas->TextOutA(Rect.Left+24,Rect.Top+1,DateToStr(Now())); //显示当前日期
delete Time; //释放Time对象
}
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::WindowCloseAllExecute(TObject *Sender)
{ /*****操作列表控件ActionList1中WindowCloseAll操作执行事件*****/
int i;
for(i=0;i<MDIChildCount;i++) //MDIChildCount取得当前MDI子窗口的个数
MDIChildren[i]->Close(); //关闭所有MDI子窗口
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::WindowCloseAllUpdate(TObject *Sender)
{ /*****操作列表控件ActionList1中WindowCloseAll操作Update事件*****/
if(MDIChildCount>0) //是否有MDI子窗口创建判断
dynamic_cast <TAction *>(Sender)->Enabled = true; //关闭所有MDI子窗口菜单使能
else
dynamic_cast <TAction *>(Sender)->Enabled = false; //关闭所有MDI子窗口菜单非使能
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::M_StatClick(TObject *Sender)
{ /*****考勤统计菜单项单击事件*****/
if(CreateForm(F_Work) == false) //CreateForm调用判断考勤管理窗体是否存在自定义函数,后面讲到
F_Work = new TF_Work(Application); //动态创建考勤管理窗体
F_Work->PageControl1->ActivePage = F_Work->PageControl1->Pages[4]; //设定ActivePage为考勤统计属性页
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::M_AttenClick(TObject *Sender)
{ /*****出勤管理菜单项单击事件*****/
if(CreateForm(F_Work) == false) //CreateForm调用判断考勤管理窗体是否存在函数
F_Work = new TF_Work(Application); //动态创建考勤管理窗体
F_Work->PageControl1->ActivePage = F_Work->PageControl1->Pages[0]; //设定ActivePage为出勤管理属性页
}
//---------------------------------------------------------------------------
void __fastcall TF_Main::M_OTimeClick(TObject *Sender)
{ /*****加班管理菜单项单击事件*****/
if(CreateForm(F_Work) == false) //CreateForm调用判断考勤管理窗体是否存在函数
F_Work = new TF_Work(Application); //动态创建考勤管理窗体
F_Work->PageControl1->ActivePage = F_Work->PageControl1->Pages[1]; //设定ActivePage为加班管理属性页
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -