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

📄 u_matricsubject.pas

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

interface

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

type
  TFm_MatricSubject = 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;
    TbBtn_Power: TToolbarButton97;
    TbSep02: TToolbarSep97;
    MGrid: THDBGrid;
    DQuery: TQuery;
    DUpSQL: TUpdateSQL;
    PPM: TPopupMenu;
    M_Add: TMenuItem;
    M_Edit: TMenuItem;
    M_Delete: TMenuItem;
    M_Z01: TMenuItem;
    M_Copy: TMenuItem;
    M_Help: TMenuItem;
    M_Exit: TMenuItem;
    M_Z02: TMenuItem;
    DQuerys_kmhao: TStringField;
    DQuerys_rxkmu: TStringField;
    TbBtn_Print: TToolbarButton97;
    TbSp01: TToolbarSep97;
    PM_Print: TMenuItem;
    PM_Z03: TMenuItem;
    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_PowerClick(Sender: TObject);
    procedure TbBtn_HelpClick(Sender: TObject);
    procedure TbBtn_PrintClick(Sender: TObject);
  private
    procedure RefreshQuery;
  public
  end;

var
  Fm_MatricSubject: TFm_MatricSubject;

procedure Show_MatricSubject;

implementation

uses U_Main, U_GlobalProc, U_GlobalVar, U_DM, U_MatricSubjectAction, U_Print;

{$R *.DFM}

procedure Show_MatricSubject;
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_MatricSubject') then
      Fm_Main.MDIChildren[i].Close;
  end;
  if not Assigned(Fm_MatricSubject) then
  begin
    Fm_MatricSubject := TFm_MatricSubject.Create(Application);
    with Fm_MatricSubject do
    begin
      //  带"0" 格式化数字
      IntFormatStr(W_CurYear, 2);
      DQuery.ParamByName('ps_kmhao').AsString := IntFormatStr(W_CurYear, 2) + '%';
      DQuery.Open;
      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_MatricSubject.MGrid);
  end;
  with Fm_MatricSubject do
  begin
    if WindowState <> wsMaximized then
      WindowState := wsMaximized;
    Show;
    SetFocus;
  end;
end;

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

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

procedure TFm_MatricSubject.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  DQuery.Close;
  Action := caFree;
  Fm_MatricSubject := nil;
end;

procedure TFm_MatricSubject.TbBtn_EditClick(Sender: TObject);
var
  pCode, pName: string;
begin //
  with DQuery do
  begin
    pCode := FieldByName('s_kmhao').AsString;
    pName := FieldByName('s_rxkmu').AsString;
  end;
  if Show_MatricSubjectAction(pCode, pName, 2) then
  with DQuery do
  begin
    Edit;
    FieldByName('s_kmhao').AsString := pCode;
    FieldByName('s_rxkmu').AsString := pName;
    Post;
    ApplyUpdates;
  end;
end;

procedure TFm_MatricSubject.TbBtn_AddClick(Sender: TObject);
var
  pCode, pName: string;
begin //
  pCode := IntFormatStr(W_CurYear, 2) + '01';
  try
    with DQuery do
    begin
      DisableControls;
      First;
      while not Eof do
      begin
        if pCode <> FieldByName('s_kmhao').AsString then
          Break;
        pCode := IntFormatStr(StrToInt(pCode) + 1, 4);
        Next;
      end;
    end;
  finally
    DQuery.EnableControls;
  end;
  if Show_MatricSubjectAction(pCode, pName, 1) then
  begin
    with DQuery do
    begin
      Append;
      FieldByName('s_kmhao').AsString := pCode;
      FieldByName('s_rxkmu').AsString := pName;
      Post;
      ApplyUpdates;
      TbBtn_Edit.Enabled := True;
      TbBtn_Delete.Enabled := True;
      M_Edit.Enabled := True;
      M_Delete.Enabled := True;
    end;
  end;
end;

procedure TFm_MatricSubject.TbBtn_DeleteClick(Sender: TObject);
var
  tmQuery: TQuery;
  tmCode, tmName: string;
begin //
  tmCode := DQuery.FieldByName('s_kmhao').AsString;
  tmName := DQuery.FieldByName('s_rxkmu').AsString;
  if U_GlobalProc.Show_ConfirmMess('真的删除科目“' + tmName + '”吗?') then
  begin
    tmQuery := TQuery.Create(Application);
    with tmQuery do
    try
      DataBaseName := DataDBase;
      SQL.Text := 'DELETE FROM "xsrxkm.db" d1 WHERE d1.s_kmhao=''' + tmCode + '''';
      ExecSQL;
    finally
      Free;
    end;
  end;
  RefreshQuery;
end;

procedure TFm_MatricSubject.TbBtn_PowerClick(Sender: TObject);
var
  tmQuery: TQuery;
  tmS: string;
begin  //
  tmQuery := TQuery.Create(Application);
  with tmQuery do
  try
    DataBaseName := DataDBase;

    SQL.Text := 'SELECT * FROM xsrxkm WHERE s_kmhao LIKE :ps_kmhao';
    ParamByName('ps_kmhao').AsString := IntFormatStr(W_CurYear - 1, 2) + '%';
    Prepare;
    Open;
    if not IsEmpty then
    begin
      if (not DQuery.IsEmpty) and
         U_GlobalProc.Show_ConfirmMess('拷贝去年的科目将覆盖已经输入的科目。拷贝吗?') then
      begin
        DQuery.DisableControls;
        DQuery.First;
        while not DQuery.Eof do
          DQuery.Delete;
        DQuery.ApplyUpdates;
      end;
      First;
      tmS := IntFormatStr(W_CurYear, 2) + '01';
      while not Eof do
      begin
        DQuery.AppendRecord([tmS, FieldByName('s_rxkmu').AsString]);
        tmS := IntFormatStr(StrToInt(tmS) + 1, 4);
        Next;
      end;
    end else
    begin
      U_GlobalProc.Show_ErrorMess('没有发现去年的学生入学科目。');
      Exit;
    end;
  finally
    while DQuery.ControlsDisabled do
      DQuery.EnableControls;
    Free;
  end;
end;

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

end;

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

end.

⌨️ 快捷键说明

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