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

📄 unitmain.pas

📁 delphi数据库基本利用
💻 PAS
字号:
unit UnitMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ImgList, ComCtrls, ToolWin, DB, DBTables;

type
  TFormMain = class(TForm)
    MainMenu1: TMainMenu;
    MenuSystem: TMenuItem;
    Menulogout: TMenuItem;
    MenuClose: TMenuItem;
    MenuModule: TMenuItem;
    MenuStudentQuery: TMenuItem;
    MenuStudentManage: TMenuItem;
    MenuTeacherQuery: TMenuItem;
    MenuTeacherManage: TMenuItem;
    MenuScoreQuery: TMenuItem;
    ToolBar1: TToolBar;
    ToolButtonStudentQuery: TToolButton;
    ToolButtonStudentManage: TToolButton;
    ToolButtonTeacherQuery: TToolButton;
    ToolButtonTeacherManage: TToolButton;
    ToolButtonScoreQuery: TToolButton;
    ImageList1: TImageList;
    N1: TMenuItem;
    PopupMenu1: TPopupMenu;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    procedure MenuStudentQueryClick(Sender: TObject);
    procedure MenuStudentManageClick(Sender: TObject);
    procedure MenuTeacherQueryClick(Sender: TObject);
    procedure MenuTeacherManageClick(Sender: TObject);
    procedure MenuScoreQueryClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    //声明一个自定义函数,注册ODBC数据源
    function  RegisterODBC(DSN:string;
              AccessFile:string):Boolean;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FormMain: TFormMain;

implementation

uses UnitStudentQuery, UnitStudentManage, UnitTeacherQuery,
  UnitTeacherManage, UnitScoreQuery,Registry, UnitLogin;

{$R *.dfm}
//自定义函数:实现Access数据源的ODBC注册
function  TFormMain.RegisterODBC(DSN:string; AccessFile:string):Boolean;
var
Reg : TRegistry;  //注册表类,用来操作注册表, 需要添加Registry单元
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(函数名赋值为False)
    RegisterODBC:=false;
  end;
  //关闭注册类
  Reg.CloseKey();

  //注册ODBC的数据源(参数True表示当该键值不存在时,则创建它)
  if(Reg.OpenKey('Software\odbc\odbc.ini\'+DSN,true)=true) then
  begin
    //为Dir变量申请255个字符的空间
    GetMem(Dir,255);
    //获取Windows的系统目录
    GetWindowsDirectory(Dir,255);
    SysDir:=Dir+'\system32\odbcjt32.dll';
    //写入注册表
    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(函数名赋值为False)
    RegisterODBC:=false;
  end;
  //关闭注册类
  Reg.CloseKey();

  //函数返回True(函数名赋值为True)
  RegisterODBC:=True;
end;

//响应学生查询菜单
procedure TFormMain.MenuStudentQueryClick(Sender: TObject);
var
  i:integer;
begin
  //逐一查找所有子窗口,判断是否已经存在该窗口
  for i:=1 to FormMain.MDIChildCount do
    //判断每一个子窗口是否属于TFormStudentQuery
    if FormMain.MDIChildren[i-1].ClassType=TFormStudentQuery then
    begin
      //退出该函数
      exit;
    end;
  //如果没有找到TFormStudentQuery,则创建一个新的子窗口
  Application.CreateForm(TFormStudentQuery,FormStudentQuery);
  //选中菜单项
  MenuStudentQuery.Checked:=true;
  //工具条下压
  ToolButtonStudentQuery.Down:=true;
end;
//响应学生管理菜单
procedure TFormMain.MenuStudentManageClick(Sender: TObject);
var
  i:integer;
begin
  //逐一查找所有子窗口,判断是否已经存在该窗口
  for i:=1 to FormMain.MDIChildCount do
    //判断每一个子窗口是否属于TFormStudentQuery
    if FormMain.MDIChildren[i-1].ClassType=TFormStudentManage then
    begin
      //退出该函数
      exit;
    end;
  //如果没有找到TFormStudentQuery,则创建一个新的子窗口
  Application.CreateForm(TFormStudentManage, FormStudentManage);
  //选中菜单项
  MenuStudentManage.Checked:=true;
  //工具条下压
  ToolButtonStudentManage.Down:=true;
end;
//响应教师查询菜单
procedure TFormMain.MenuTeacherQueryClick(Sender: TObject);
var
  i:integer;
begin
  //逐一查找所有子窗口,判断是否已经存在该窗口
  for i:=1 to FormMain.MDIChildCount do
    //判断每一个子窗口是否属于TFormStudentQuery
    if FormMain.MDIChildren[i-1].ClassType=TFormTeacherQuery then
    begin
      //退出该函数
      exit;
    end;
  //如果没有找到TFormStudentQuery,则创建一个新的子窗口
  Application.CreateForm(TFormTeacherQuery, FormTeacherQuery);
  //选中菜单项
  MenuTeacherQuery.Checked:=true;
  //工具条下压
  ToolButtonTeacherQuery.Down:=true;
end;
//响应教师管理菜单
procedure TFormMain.MenuTeacherManageClick(Sender: TObject);
var
  i:integer;
begin
  //逐一查找所有子窗口,判断是否已经存在该窗口
  for i:=1 to FormMain.MDIChildCount do
    //判断每一个子窗口是否属于TFormStudentQuery
    if FormMain.MDIChildren[i-1].ClassType=TFormTeacherManage then
    begin
      //退出该函数
      exit;
    end;
  //如果没有找到TFormStudentQuery,则创建一个新的子窗口
  Application.CreateForm(TFormTeacherManage, FormTeacherManage);
  //选中菜单项
  MenuTeacherManage.Checked:=true;
  //工具条下压
  ToolButtonTeacherManage.Down:=true;
end;
//响应成绩查询菜单
procedure TFormMain.MenuScoreQueryClick(Sender: TObject);
var
  i:integer;
begin
  //逐一查找所有子窗口,判断是否已经存在该窗口
  for i:=1 to FormMain.MDIChildCount do
    //判断每一个子窗口是否属于TFormStudentQuery
    if FormMain.MDIChildren[i-1].ClassType=TFormScoreQuery then
    begin
      //退出该函数
      exit;
    end;
  //如果没有找到TFormStudentQuery,则创建一个新的子窗口
  Application.CreateForm(TFormScoreQuery, FormScoreQuery);
  //选中菜单项
  MenuScoreQuery.Checked:=true;
  //工具条下压
  ToolButtonScoreQuery.Down:=true;
end;

procedure TFormMain.FormShow(Sender: TObject);
begin
 RegisterODBC('school','school');
 FormLogin:=TFormLogin.Create(Self);
 FormLogin.ShowModal();
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -