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

📄 u_subjectmanage.pas

📁 一个简单的学籍管理软件
💻 PAS
字号:
unit U_SubjectManage;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  HGrids, HDBGrids, TB97Tlbr, TB97Ctls, TB97, DBTables, Db, Menus,
  HTitleDBGrid;

type
  TFm_SubjectManage = class(TForm)
    DDS: TDataSource;
    Dock: TDock97;
    Tb97_Func: TToolbar97;
    TbBtn_Edit: TToolbarButton97;
    TbBtn_Add: TToolbarButton97;
    TbBtn_Delete: TToolbarButton97;
    TbSep01: TToolbarSep97;
    TbBtn_Help: TToolbarButton97;
    TbBtn_Exit: TToolbarButton97;
    DQuery: TQuery;
    DUpSQL: TUpdateSQL;
    PPM: TPopupMenu;
    M_Add: TMenuItem;
    M_Edit: TMenuItem;
    M_Delete: TMenuItem;
    M_Z01: TMenuItem;
    M_Help: TMenuItem;
    M_Exit: TMenuItem;
    TbBtn_Save: TToolbarButton97;
    ToolbarSep971: TToolbarSep97;
    DQueryS_KCDHAO: TStringField;
    DQueryS_KCMCHENG: TStringField;
    DQueryS_KCXHAO: TStringField;
    DQuerySI_KCLXING: TSmallintField;
    TbBtn_Print: TToolbarButton97;
    TbSp01: TToolbarSep97;
    PM_Z01: TMenuItem;
    PM_Print: TMenuItem;
    MGrid: THTitleDBGrid;
    procedure TbBtn_ExitClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TbBtn_EditClick(Sender: TObject);
    procedure TbBtn_AddClick(Sender: TObject);
    procedure TbBtn_DeleteClick(Sender: TObject);
    procedure TbBtn_HelpClick(Sender: TObject);
    procedure QueryGetText(Sender: TField; var Text: String; DisplayText: Boolean);
    procedure QuerySetText(Sender: TField; const Text: string);
    procedure TbBtn_SaveClick(Sender: TObject);
    procedure DQueryBeforePost(DataSet: TDataSet);
    procedure DQueryAfterPost(DataSet: TDataSet);
    procedure MGridKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure MGridDblClick(Sender: TObject);
    procedure TbBtn_PrintClick(Sender: TObject);
  private
    procedure RefreshQuery;
  public
  end;

var
  Fm_SubjectManage: TFm_SubjectManage;

procedure Show_SubjectManage;

implementation

uses U_Main, U_GlobalProc, U_GlobalVar, U_DM, U_Print;

{$R *.DFM}

procedure Show_SubjectManage;
var
  i: integer;
begin
  for i := Fm_Main.MDIChildCount - 1 downto 0 do
  begin
    if (Fm_Main.MDIChildren[i].Name <> 'Fm_Wizard') and
      (Fm_Main.MDIChildren[i].Name <> 'Fm_SubjectManage') then
      Fm_Main.MDIChildren[i].Close;
  end;
  if not Assigned(Fm_SubjectManage) then
  begin
    Fm_SubjectManage := TFm_SubjectManage.Create(Application);
    with Fm_SubjectManage do
    begin
      DQuery.Open;
      ReSetGridColumns(MGrid, 'KC', QueryGetText, QuerySetText);
      if DQuery.IsEmpty then
      begin
        TbBtn_Edit.Enabled := False;
        TbBtn_Delete.Enabled := False;
        M_Edit.Enabled := False;
        M_Delete.Enabled := False;
      end;
    end;
    RefreshGridStyle(Fm_SubjectManage.MGrid);
  end;
  with Fm_SubjectManage do
  begin
    if WindowState <> wsMaximized then
      WindowState := wsMaximized;
    Show;
    SetFocus;
  end;
end;

procedure TFm_SubjectManage.RefreshQuery;
begin
  with DQuery do
  try
    DisableControls;
    Close;
    Open;
  finally
    EnableControls;
  end;
end;

procedure TFm_SubjectManage.TbBtn_ExitClick(Sender: TObject);
begin
  Close;
end;

procedure TFm_SubjectManage.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  if DQuery.State in [dsEdit, dsInsert] then
    DQuery.Post;
  DQuery.Close;
  Action := caFree;
  Fm_SubjectManage := nil;
end;

procedure TFm_SubjectManage.TbBtn_EditClick(Sender: TObject);
begin //
  MGrid.Options := MGrid.Options + [tgEditing];
  MGrid.Col := 2;
  DQuery.Edit;
end;

procedure TFm_SubjectManage.TbBtn_AddClick(Sender: TObject);
var
  pCode: string;
begin //
  pCode := '0001';
  try
    with DQuery do
    begin
      DisableControls;
      First;
      while not Eof do
      begin
        if pCode <> FieldByName('s_kcdhao').AsString then
          Break;
        pCode := IntFormatStr(StrToInt(pCode) + 1, 4);
        Next;
      end;
      if Eof then
        Append
      else
        Insert;
      FieldByName('s_kcdhao').AsString := pCode;
      MGrid.Options := MGrid.Options + [tgEditing];
      MGrid.Col := 2;
    end;
  finally
    DQuery.EnableControls;
  end;
end;

procedure TFm_SubjectManage.TbBtn_DeleteClick(Sender: TObject);
var
  tmQuery: TQuery;
  tmCode, tmName: string;
begin //
  tmCode := DQuery.FieldByName('s_kcdhao').AsString;
  tmName := DQuery.FieldByName('s_kcmcheng').AsString;
  tmQuery := TQuery.Create(Application);
  with tmQuery do
  try
    DataBaseName := DataDBase;
    //  成绩
    SQL.Text := 'SELECT * FROM "kscj.db" d1 WHERE d1.s_kcdhao=''' + tmCode + '''';
    Open;
    if not IsEmpty then
    begin
      U_GlobalProc.Show_ErrorMess('课程“' + tmName + '”已经使用并登记成绩了,不能删除。');
      Exit;
    end else
      if not U_GlobalProc.Show_ConfirmMess('真的删除课程“' + tmName + '”吗?') then
        Exit;
    {if not IsEmpty then  //  以前的处理
    begin
      if not U_GlobalProc.Show_ConfirmMess('课程“' + tmName + '”已经使用并登记成绩了,删除吗?') then
        Exit;
    end else
      if not U_GlobalProc.Show_ConfirmMess('真的删除课程“' + tmName + '”吗?') then
        Exit;}
    Close;
    DataBaseName := DataDBase;
    //  成绩
    SQL.Text := 'DELETE FROM "kscj.db" d1 WHERE d1.s_kcdhao=''' + tmCode + '''';
    ExecSQL;
    //  年级课程
    SQL.Text := 'DELETE FROM "xqkskc.db" d1 WHERE d1.s_kcdhao=''' + tmCode + '''';
    ExecSQL;
    //  课程
    SQL.Text := 'DELETE FROM "kc.db" d1 WHERE d1.s_kcdhao=''' + tmCode + '''';
    ExecSQL;
  finally
    Close;
    Free;
  end;
  RefreshQuery;
end;

procedure TFm_SubjectManage.TbBtn_HelpClick(Sender: TObject);
begin //

end;

procedure TFm_SubjectManage.QueryGetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  DataSetGetText(MGrid, Sender, Text, DisplayText);
end;

procedure TFm_SubjectManage.QuerySetText(Sender: TField;
  const Text: string);
begin
  DataSetSetText(MGrid, Sender, Text);
end;

procedure TFm_SubjectManage.TbBtn_SaveClick(Sender: TObject);
begin
  if DQuery.State in [dsEdit, dsInsert] then
    DQuery.Post;
end;

procedure TFm_SubjectManage.DQueryBeforePost(DataSet: TDataSet);
begin
  with DQuery do
  if Trim(FieldByName('s_kcmcheng').AsString) = '' then
  begin
    if (State = dsInsert) or ((State = dsEdit) and
        (not U_GlobalProc.Show_ConfirmMess(
          '课程名称被修改为空值,是否存盘?'))) then
    begin
      Cancel;
      if IsEmpty or (State = dsInsert) then
      begin
        MGrid.Options := MGrid.Options - [tgEditing];
        MGrid.Col := 1;
      end;
      Abort;
    end;
  end;
end;

procedure TFm_SubjectManage.DQueryAfterPost(DataSet: TDataSet);
begin
  if not DQuery.IsEmpty then
  begin
    TbBtn_Edit.Enabled := True;
    TbBtn_Delete.Enabled := True;
    M_Edit.Enabled := True;
    M_Delete.Enabled := True;
  end else
    MGrid.Options := MGrid.Options - [tgEditing];
  DQuery.ApplyUpdates;
end;

procedure TFm_SubjectManage.MGridKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  U_GlobalProc.GridKeyDown(Sender, Key, Shift);
end;

procedure TFm_SubjectManage.MGridDblClick(Sender: TObject);
begin
  U_GlobalProc.GridDblClick(Sender);
end;

procedure TFm_SubjectManage.TbBtn_PrintClick(Sender: TObject);
begin
  Show_Print(MGrid);
end;

end.

⌨️ 快捷键说明

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