⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unitmain.~pas

📁 这个代码虽然还没有 全部写完
💻 ~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 + -