📄 main.~pas
字号:
unit Main; //MDI主窗体项目
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, StdActns, ActnList, ImgList, Menus, StdCtrls,
Buttons, DB, ADODB;
type
TF_Main = class(TForm)
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
MainMenu1: TMainMenu;
M_Archives: 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;
SBdagl: TSpeedButton;
SBdaflgl: TSpeedButton;
SBdaggl: TSpeedButton;
SBdajy: TSpeedButton;
SBdbfhf: TSpeedButton;
SBdbfbf: TSpeedButton;
SBdagh: TSpeedButton;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
SBsys: TSpeedButton;
SBquit: TSpeedButton;
Label3: TLabel;
Label11: TLabel;
M_fuzhu: TMenuItem;
M_Class: TMenuItem;
M_Tank: TMenuItem;
M_quit: TMenuItem;
ActionList1: TActionList;
WindowCascade1: TWindowCascade;
WindowTileHorizontal1: TWindowTileHorizontal;
WindowTileVertical1: TWindowTileVertical;
WindowMinimizeAll1: TWindowMinimizeAll;
WindowsCloseAll: TAction;
AQ_Back_Restore1: TADOQuery;
ADOConnection1: TADOConnection;
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);
procedure SBdaglClick(Sender: TObject);
procedure SBdagglClick(Sender: TObject);
procedure SBdaflglClick(Sender: TObject);
procedure SBdbfbfClick(Sender: TObject);
procedure SBdbfhfClick(Sender: TObject);
procedure SBsysClick(Sender: TObject);
procedure SBdaghClick(Sender: TObject);
procedure SBdajyClick(Sender: TObject);
procedure M_quitClick(Sender: TObject);
procedure SBquitClick(Sender: TObject);
procedure WindowsCloseAllExecute(Sender: TObject);
procedure WindowsCloseAllUpdate(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语句
DM.AQ_Back_Restore.SQL.Add('use master');
//////////////////////
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
AQ_Back_Restore1.Close; //关闭数据库备份还原查询控件
AQ_Back_Restore1.SQL.Clear; //清除SQL语句
ADOConnection1.Connected := true; //启动与数据库服务器的连接
{ //////////////////////////
str :='select spid from master..sysprocesses where dbid=db_id(''archives'')';
DM.AQ_Back_Restore.SQL.Add(str);
DM.AQ_Back_Restore.open;
While DM.AQ_Back_Restore.eof = False do
begin
str:='kill 51';
DM.AQ_Back_Restore.SQL.Add(str);
DM.AQ_Back_Restore.ExecSQL;
DM.AQ_Back_Restore.MoveBy(1);
end;
///////////////////////////////
}
Restore := 'RESTORE DATABASE '; //生成数据库还原命令赋Restore字符串
//打开档案管理系统数据库INI配置文件
ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.INI' ));
str := ini.ReadString('Database','Initial Catalog','Archives'); //从配置文件读数据库名
Restore := Restore+str; //追加档案管理系统数据库名
AQ_Back_Restore1.SQL.Add(Restore); //增加还原数据库SQL命令语句
str := 'FROM DISK = '''; //生成还原数据库文件的路径和文件名字符串
str := str+filename;
str := str+'''';
AQ_Back_Restore1.SQL.Add(str); //增加还原数据库文件的路径和文件名字符串SQL语句
// AQ_Back_Restore1.SQL.Add(' WITH norecovery'); //还原数据库SQL语句WITH参数设定,完整还原数据库
AQ_Back_Restore1.SQL.Add(' WITH replace'); //还原数据库SQL语句WITH参数设定,完整还原数据库
try //捕捉异常
AQ_Back_Restore1.ExecSQL; //执行SQL语句,但不打开数据集
except //抛出异常
Application.MessageBox('数据库恢复出错', '错误!', MB_OK);
end;
{ ///
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;
///
}
{
begin
DM.AQ_Back_Restore.Close; //关闭数据库备份还原查询控件
DM.AQ_Back_Restore.SQL.Clear; //清除SQL语句
//////////////////////////
str :='select spid from master..sysprocesses where dbid=db_id(''archives'')';
DM.AQ_Back_Restore.SQL.Add(str);
DM.AQ_Back_Restore.open;
While DM.AQ_Back_Restore.eof = False do
begin
str:='kill 51';
DM.AQ_Back_Restore.SQL.Add(str);
DM.AQ_Back_Restore.ExecSQL;
DM.AQ_Back_Restore.MoveBy(1);
end;
///////////////////////////////
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参数设定,完整还原数据库
///
DM.ADOConnection.Connected := false; //启动与数据库服务器的连接
DM.ADOConnection.Close;
dm.AT_Class.Close;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -