📄 unitmain.~pas
字号:
unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ImgList, ComCtrls, ToolWin, DB, DBTables;
type
TMainWnd = class(TForm)
MainMenu1: TMainMenu;
MenuFunction: TMenuItem;
MenuStudentManage: TMenuItem;
MenuTeacherManage: TMenuItem;
ToolBar1: TToolBar;
ToolButtonStudentManage: TToolButton;
ToolButtonStudentQuery: TToolButton;
ImageList1: TImageList;
MenuStudentQuery: TMenuItem;
ToolButtonTeacherManage: TToolButton;
N1: TMenuItem;
MenuTeacherQuery: TMenuItem;
ToolButtonTeacherQuery: TToolButton;
Database1: TDatabase;
Query1: TQuery;
MenuSystem: TMenuItem;
MenuClear: TMenuItem;
MenuBackup: TMenuItem;
SaveDialog1: TSaveDialog;
ToolButtonSeparate: TToolButton;
ToolButtonClear: TToolButton;
ToolButtonBackup: TToolButton;
procedure MenuStudentManageClick(Sender: TObject);
procedure MenuTeacherManageClick(Sender: TObject);
procedure MenuStudentQueryClick(Sender: TObject);
procedure MenuTeacherQueryClick(Sender: TObject);
procedure MenuClearClick(Sender: TObject);
procedure MenuBackupClick(Sender: TObject);
function RegisterAccessODBC(DSN :string; AccessFile :string):boolean;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainWnd: TMainWnd;
implementation
uses UnitStudentManage, UnitStudentQuery, UnitTeacherManage,
UnitTeacherQuery, UnitLogin, Registry;
{$R *.dfm}
//窗口显示消息响应函数
procedure TMainWnd.FormShow(Sender: TObject);
begin
//创建用户登录框
Application.CreateForm(TFormLogin, FormLogin);
//显示用户登录框
FormLogin.ShowModal();
end;
//响应'学生管理'菜单
procedure TMainWnd.MenuStudentManageClick(Sender: TObject);
var
i:integer;
child:TForm;
begin
//逐一查找所有子窗口
for i:=1 to MainWnd.MDIChildCount do
//判断每一个子窗口是否属于TFormStudent
if MainWnd.MDIChildren[i-1].ClassType=TFormStudentManage then
begin
child:=MainWnd.MDIChildren[i-1];
//判断该子窗口是否处于最小化状态
if child.WindowState=wsMinimized then
child.WindowState:=wsNormal;
//把该子窗口显示在最前面
child.BringToFront();
child.SetFocus();
//退出该函数
exit;
end;
//如果没有找到 TFormStudent,则创建一个新的子窗口
Application.CreateForm(TFormStudentManage,FormStudentManage);
end;
//响应'学生查询'菜单
procedure TMainWnd.MenuStudentQueryClick(Sender: TObject);
var
i :integer;
Child:TForm;
begin
//逐一查找所有子窗口
for i:=1 to MainWnd.MDIChildCount do
//判断每一个子窗口是否属于TFormStudentQuery
if MainWnd.MDIChildren[i-1].ClassType=TFormStudentQuery then
begin
child:=MainWnd.MDIChildren[i-1];
//判断该子窗口是否处于最小化状态
if child.WindowState=wsMinimized then
child.WindowState:=wsNormal;
//把该子窗口显示在最前面
child.BringToFront();
child.SetFocus();
//退出该函数
exit;
end;
//如果没有找到 TFormStudentQuery,则创建一个新的子窗口
Application.CreateForm(TFormStudentQuery,FormStudentQuery);
end;
//响应'教师管理'菜单
procedure TMainWnd.MenuTeacherManageClick(Sender: TObject);
var
i :integer;
Child:TForm;
begin
//逐一查找所有子窗口
for i:=1 to MainWnd.MDIChildCount do
//判断每一个子窗口是否属于TFormTeacher
if MainWnd.MDIChildren[i-1].ClassType=TFormTeacherManage then
begin
child:=MainWnd.MDIChildren[i-1];
//判断该子窗口是否处于最小化状态
if child.WindowState=wsMinimized then
child.WindowState:=wsNormal;
//把该子窗口显示在最前面
child.BringToFront();
child.SetFocus();
//退出该函数
exit;
end;
//如果没有找到 TFormTeacher,则创建一个新的子窗口
Application.CreateForm(TFormTeacherManage,FormTeacherManage);
end;
//响应'教师查询'菜单
procedure TMainWnd.MenuTeacherQueryClick(Sender: TObject);
var
i :integer;
Child:TForm;
begin
//查找是否存在TFormTeacherQuery窗口
for i:=0 to MainWnd.MDIChildCount-1 do
if MainWnd.MDIChildren[i].ClassType=TFormTeacherQuery then
begin
//获取TFormStudent子窗口对象
Child:=MainWnd.MDIChildren[i];
//如果子窗口最下化,则显示该子窗口
if Child.WindowState=wsMinimized then
ShowWindow(Child.Handle,SW_SHOWNORMAL);
//如果该子窗口被隐藏,则显示该子窗口
if (not Child.Visible) then
Child.Visible:=true;
//把该子窗口在顶层显示
Child.BringToFront();
//给该子窗口设置焦点
Child.SetFocus();
exit;
end;
//如果没有找到 TFormTeacherQuery,则创建一个新的子窗口
Application.CreateForm(TFormTeacherQuery, FormTeacherQuery);
end;
//响应'清空数据'菜单
procedure TMainWnd.MenuClearClick(Sender: TObject);
begin
Try
//清空Query1的SQL内容
Query1.SQL.Clear();
//添加Query1的SQL内容
Query1.SQL.Add('Delete From Student');
//执行Query1的SQL语句
Query1.ExecSQL();
//清空Query1的SQL内容
Query1.SQL.Clear();
//添加Query1的SQL内容
Query1.SQL.Add('Delete From Teacher');
//执行Query1的SQL语句
Query1.ExecSQL();
//清空Query1的SQL内容
Query1.SQL.Clear();
//添加Query1的SQL内容
Query1.SQL.Add('Delete From Class');
//执行Query1的SQL语句
Query1.ExecSQL();
//清空Query1的SQL内容
Query1.SQL.Clear();
//添加Query1的SQL内容
Query1.SQL.Add('Delete From Course');
//执行Query1的SQL语句
Query1.ExecSQL();
//清空Query1的SQL内容
Query1.SQL.Clear();
//添加Query1的SQL内容
Query1.SQL.Add('Delete From Score');
//执行Query1的SQL语句
Query1.ExecSQL();
//显示提示信息
Application.MessageBox('清空数据成功。','提示',MB_OK or MB_ICONINFORMATION);
Except
//显示异常提示信息
Application.MessageBox('清空数据失败。','错误',MB_OK or MB_ICONERROR);
//关闭连接
Query1.Close();
end;
end;
//响应'备份数据'菜单
procedure TMainWnd.MenuBackupClick(Sender: TObject);
var
Reg:TRegistry;
SourceFile:String;
begin
//初始化注册类
Reg:=TRegistry.Create(KEY_READ);
//制定父键
Reg.RootKey:=HKEY_LOCAL_MACHINE;
//打开注册表
if Reg.OpenKey('SOFTWARE\ODBC\ODBC.INI\school',false)=true then
begin
//获取键值
SourceFile:=Reg.ReadString('DBQ');
//显示保存对话框
if SaveDialog1.Execute() then
begin
//拷贝文件到某一目录
CopyFile(pChar(SourceFile),pChar(SaveDialog1.filename),false);
Application.MessageBox('备份成功。','提示',MB_OK OR MB_ICONINFORMATION);
end
end
else
Application.MessageBox('备份失败。','错误',MB_OK OR MB_ICONERROR);
end;
//自定义函数:注册Access的ODBC数据源
function TMainWnd.RegisterAccessODBC(DSN :string; AccessFile :string): Boolean;
var
Reg :TRegistry;
Dir :PChar;
SysDir :string;
begin
//初始化注册类
Reg:=TRegistry.Create();
//制定父键
Reg.RootKey:=HKEY_LOCAL_MACHINE;
//注册DSN名称(参数true表示当该键值不存在时,则创建它)
if(Reg.OpenKey('SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources',true)) then
Reg.WriteString(DSN,'Microsoft Access Driver (*.mdb)')
else
begin
//显示提示信息
Application.MessageBox('ODBC数据源注册失败。','提示',MB_OK OR MB_ICONERROR);
//返回false
RegisterAccessODBC:=false;
end;
//关闭注册类
Reg.CloseKey;
//注册ODBC数据源(参数true表示当该键值不存在时,则创建它)
if(Reg.OpenKey('SOFTWARE\ODBC\ODBC.INI\'+DSN,true)=true) then
begin
//获取系统目录路径SysDir
GetMem(Dir,255);
GetWindowsDirectory(Dir,255);
SysDir:='\system32\odbcjt32.dll'+Dir;
//写入注册表
Reg.WriteString('DBQ',AccessFile);
Reg.WriteString('Driver',SysDir);
Reg.WriteString('DriverId','25');
Reg.WriteString('FIL','MS Access');
Reg.WriteString('UID','')
end
else
begin
//显示提示信息
Application.MessageBox('ODBC数据源注册失败。','提示',MB_OK OR MB_ICONERROR);
//返回false
RegisterAccessODBC:=false;
end;
//关闭注册类
Reg.CloseKey;
//返回True
RegisterAccessODBC:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -