📄 main.pas.~pas
字号:
unit Main; //MDI主窗体项目
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, StdActns, ActnList, ImgList, Menus;
type
TF_Main = class(TForm)
MainMenu1: TMainMenu;
S1: TMenuItem;
M_Archives: TMenuItem;
M_Class: TMenuItem;
M_Tank: TMenuItem;
N2: TMenuItem;
M_Manage: TMenuItem;
M_Borrow: TMenuItem;
M_Return: TMenuItem;
M_Database: TMenuItem;
M_Backup: TMenuItem;
M_Restore: TMenuItem;
M_Window: TMenuItem;
M_Win_Cascade: TMenuItem;
M_Win_Hor: TMenuItem;
M_Win_Ver: TMenuItem;
M_Win_Min: TMenuItem;
M_Win_Close: TMenuItem;
M_Help: TMenuItem;
ImageList1: TImageList;
ActionList1: TActionList;
WindowCascade1: TWindowCascade;
WindowTileHorizontal1: TWindowTileHorizontal;
WindowTileVertical1: TWindowTileVertical;
WindowMinimizeAll1: TWindowMinimizeAll;
WindowCloseAll: TAction;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
TB_Manage: TToolButton;
TB_Borrow: TToolButton;
TB__Return: TToolButton;
TB_Separator: TToolButton;
TB_Backup: TToolButton;
TB_Restore: TToolButton;
procedure WindowCloseAllExecute(Sender: TObject);
procedure WindowCloseAllUpdate(Sender: TObject);
procedure M_ClassClick(Sender: TObject);
procedure M_TankClick(Sender: TObject);
procedure M_ManageClick(Sender: TObject);
procedure M_BorrowClick(Sender: TObject);
procedure M_ReturnClick(Sender: TObject);
procedure M_BackupClick(Sender: TObject);
procedure M_RestoreClick(Sender: TObject);
procedure M_HelpClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function CreateForm(CForm:TForm):boolean; //用户自定义MDIChild子窗体存在判断函数
procedure BackupDatabase(FileName:AnsiString); //用户自定义备份SQL Server 2000数据库函数
procedure RestoreDatabase(FileName:AnsiString); //用户自定义还原SQL Server 2000数据库函数
end;
var
F_Main: TF_Main;
implementation
uses DataModule,Archives_Class,Archives_Tank,Archives_Manage,
Borrow_Return,Archives_AboutBox,IniFiles; //引用其它项目
{$R *.dfm}
function TF_Main.CreateForm(CForm:TForm):boolean;
var {*****用户自定义MDIChild子窗体存在判断函数*****}
No:integer;
FormExist:boolean;
begin
FormExist := false;
if (CForm = NiL) then //判断CForm是否为空
begin
CreateForm := false; //函数返回值赋false
exit; //退出本函数
end;
for No:=0 to Screen.FormCount-1 do //判断窗体是否已经被建立起来
begin
if Screen.Forms[No].ClassType = CForm.ClassType then //窗体存在判断
FormExist := true; //窗体已经创建,用户没看到可能是处于隐藏或者最小化
end;
if FormExist = false then //窗体没有创建,返回false
CreateForm := false;
if CForm.WindowState = wsMinimized then //窗体已经创建,但处于最小化状态
ShowWindow(CForm.Handle,SW_SHOWNORMAL) //显示窗体
else //窗体已经创建,但处于隐藏状态
ShowWindow(CForm.Handle,SW_SHOWNA); //显示窗体
if not CForm.Visible then
CForm.Visible := true;
CForm.BringToFront; //当前窗口显示在最面前
CForm.SetFocus; //把光标的焦点转移到刚才创建或显示的窗口上
CreateForm := true; //函数返回值赋true
end;
procedure TF_Main.BackupDatabase(filename:AnsiString);
var {*****用户自定义备份SQL Server 2000数据库函数*****}
Backup,str:AnsiString;
ini:TIniFile;
begin
DM.AQ_Back_Restore.Close; //关闭数据库备份还原查询控件
DM.AQ_Back_Restore.SQL.Clear; //清除SQL语句
Backup := 'BACKUP DATABASE '; //生成数据库备份命令赋Backup字符串
//打开档案管理系统数据库INI配置文件,如果不存在则创建
ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.INI'));
str := ini.ReadString('Database','Initial Catalog','Archives'); //从配置文件读数据库名
Backup := Backup+str; //追加档案管理系统数据库名,+1的目的是前面有个空格
DM.AQ_Back_Restore.SQL.Add(Backup); //增加备份数据库RESTORE命令SQL语句
str := 'TO DISK ='''; //生成备份数据库文件的路径和文件名字符串
str := str+filename;
str := 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语句,但不打开数据集
except //抛出异常
Application.MessageBox('数据库备份出错', '错误!', MB_OK);
end;
end;
procedure TF_Main.RestoreDatabase(filename:AnsiString);
var {*****用户自定义还原SQL Server 2000数据库函数*****}
Restore,str:AnsiString;
ini:TIniFile;
begin
DM.AQ_Back_Restore.Close; //关闭数据库备份还原查询控件
DM.AQ_Back_Restore.SQL.Clear; //清除SQL语句
Restore := 'RESTORE DATABASE '; //生成数据库还原命令赋Restore字符串
//打开档案管理系统数据库INI配置文件
ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.INI' ));
str := ini.ReadString('Database','Initial Catalog','Archives'); //从配置文件读数据库名
Restore := Restore+str; //追加档案管理系统数据库名
DM.AQ_Back_Restore.SQL.Add(Restore); //增加还原数据库SQL命令语句
str := 'FROM DISK = '''; //生成还原数据库文件的路径和文件名字符串
str := str+filename;
str := 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语句,但不打开数据集
except //抛出异常
Application.MessageBox('数据库恢复出错', '错误!', MB_OK);
end;
end;
procedure TF_Main.WindowCloseAllExecute(Sender: TObject);
var {*****操作列表控件ActionList1中WindowCloseAll操作执行事件*****}
i:integer;
begin
for i:=0 to MDIChildCount-1 do //MDIChildCount取得当前MDI子窗口的个数
MDIChildren[i].Close; //关闭所有MDI子窗口
end;
procedure TF_Main.WindowCloseAllUpdate(Sender: TObject);
begin {*****操作列表控件ActionList1中WindowCloseAll操作Updata事件*****}
if MDIChildCount>0 then //是否有MDI子窗口创建判断
(Sender as TAction).Enabled := true //关闭所有MDI子窗口菜单使能
else
(Sender as TAction).Enabled := false; //关闭所有MDI子窗口菜单非使能
end;
procedure TF_Main.M_ClassClick(Sender: TObject);
begin {*****档案分类管理菜单项单击事件*****}
if CreateForm(F_Class) = false then //CreateForm调用判断档案分类管理窗体是否存在函数
F_Class := TF_Class.Create(Application); //动态创建档案分类管理窗体
DM.DS_Class.Enabled := true; //档案分类资料数据源控件处于使能态,与提交、取消按钮数据感知控件建立关联关系
end;
procedure TF_Main.M_TankClick(Sender: TObject);
begin {*****档案柜资料管理菜单项单击事件*****}
if CreateForm(F_Tank) = false then //CreateForm调用判断档案柜资料管理窗体是否存在函数
F_Tank := TF_Tank.Create(Application); //动态创建档案柜资料管理窗体
DM.DS_Tank.Enabled := true; //档案柜资料数据源控件处于使能态,与提交、取消按钮数据感知控件建立关联关系
end;
procedure TF_Main.M_ManageClick(Sender: TObject);
begin {*****档案管理菜单项单击事件*****}
if CreateForm(F_Manage) = false then //CreateForm调用判断档案管理窗体是否存在函数
F_Manage := TF_Manage.Create(Application); //动态创建档案管理窗体
DM.DS_Manage.Enabled := true; //档案管理数据源控件处于使能态,与提交、取消按钮数据感知控件建立关联关系
end;
procedure TF_Main.M_BorrowClick(Sender: TObject);
begin {*****档案借用管理菜单项单击事件*****}
if CreateForm(F_BReturn) = false then //CreateForm调用判断档案借用管理窗体是否存在函数
F_BReturn := TF_BReturn.Create(Application); //动态创建档案借用管理窗体
F_BReturn.PageControl1.ActivePage := F_BReturn.PageControl1.Pages[0]; //设定ActivePage为借用档案管理标签页
DM.DS_Borrow.Enabled := true; //档案借用管理数据源控件处于使能态,与提交、取消、删除等按钮数据感知控件建立关联关系
end;
procedure TF_Main.M_ReturnClick(Sender: TObject);
begin {*****档案归还管理菜单项单击事件*****}
if CreateForm(F_BReturn) = false then //CreateForm调用判断档案归还管理窗体是否存在函数
F_BReturn := TF_BReturn.Create(Application); //动态创建档案归还管理窗体
F_BReturn.PageControl1.ActivePage := F_BReturn.PageControl1.Pages[1]; //设定ActivePage为归还档案管理标签页
DM.DS_Return.Enabled := true; //档案归还管理数据源控件处于使能态,与提交、取消、删除等按钮数据感知控件建立关联关系
end;
procedure TF_Main.M_BackupClick(Sender: TObject);
var
i:integer;
str:AnsiString;
begin {*****数据备份菜单项单击事件*****}
if SaveDialog1.Execute then //用户打开数据库备份对话框后选择了保存按钮
begin
if FileExists(SaveDialog1.FileName) then
begin
str := SaveDialog1.FileName+'文件已经存在,要替换它吗?';
i := MessageBox(NULL,pchar(str),'另存为',MB_OKCANCEL);
if i = mrOk then //用户确定了替换操作
begin
BackupDatabase(SaveDialog1.FileName); //BackupDatabase是用户自定义备份数据库函数
exit;
end
else //用户取消了替换操作
exit;
end;
BackupDatabase(SaveDialog1.FileName); //BackupDatabase是用户自定义备份数据库函数
end;
end;
procedure TF_Main.M_RestoreClick(Sender: TObject);
begin {*****数据还原菜单项单击事件*****}
if OpenDialog1.Execute then //用户打开数据库还原对话框后选择了打开按钮
RestoreDatabase(OpenDialog1.FileName); //RestoreDatabase是用户自定义还原数据库函数
end;
procedure TF_Main.M_HelpClick(Sender: TObject);
begin {*****帮助菜单项单击事件*****}
try
F_ABox := TF_ABox.Create(Application); //动态创建关于窗体
F_ABox.ShowModal; //显示关于窗口
except
on e: exception do
Application.ShowException(e); //弹出异常对话框
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -