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

📄 u_setinitparam.pas

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

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, ComCtrls, HGrids, HDBGrids, Db, DBTables, Menus,
  Buttons, PgNavigator, Spin;

type
  TFm_SetInitParam = class(TForm)
    DQuery: TQuery;
    Btn_Ok: TButton;
    Btn_Cancel: TButton;
    Btn_Help: TButton;
    Bevel1: TBevel;
    GrpBox_Xn: TGroupBox;
    Label1: TLabel;
    Label3: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    CmbBox_BeginXqi: TComboBox;
    CmbBox_CurXqi: TComboBox;
    GrpBox_Classes: TGroupBox;
    Label5: TLabel;
    SpEdit_Grades: TSpinEdit;
    MGrid: THDBGrid;
    ChkBox_BeginUse: TCheckBox;
    Label6: TLabel;
    Ed_BeginYear2: TEdit;
    Label7: TLabel;
    Ed_CurYear2: TEdit;
    DDS: TDataSource;
    DUpSQL: TUpdateSQL;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    SpEd_BeginYear: TSpinEdit;
    SpEd_CurYear: TSpinEdit;
    procedure Btn_OkClick(Sender: TObject);
    procedure SpEdit_GradesExit(Sender: TObject);
    procedure SpEd_BeginYearChange(Sender: TObject);
    procedure SpEd_CurYearChange(Sender: TObject);
  private
  public
  end;

procedure Show_SetInitParam;
implementation

uses Math, IniFiles, U_GlobalVar, U_GlobalProc, U_Main;

{$R *.DFM}

type
  TControlCreak = class(TControl);

procedure Show_SetInitParam;
  procedure ControlsDisabled(aParent: TWinControl);
  var
    i: integer;
  begin
    with aParent do
    for i := 0 to ControlCount - 1 do
    begin
      if (Controls[i].Name = 'Btn_Cancel') or
        (Controls[i].Name = 'Btn_Help') then
        Continue;
      Controls[i].Enabled := False;
      TControlCreak(Controls[i]).Color := TControlCreak(aParent).Color;
      if Controls[i] is TWinControl then
        ControlsDisabled(TWinControl(Controls[i]));
    end;
  end;
var
  Fm_SetInitParam: TFm_SetInitParam;
  i, j: integer;
begin
  Fm_SetInitParam := TFm_SetInitParam.Create(Application);
  with Fm_SetInitParam do
  try
    //  系统  启用年份、启用学期
    if W_StartYear <> 0 then
    begin
      SpEd_BeginYear.Text := IntToStr(W_StartYear);
      Ed_BeginYear2.Text := IntToStr(W_StartYear + 1);
    end
    else
    begin
      SpEd_BeginYear.Text := FormatDateTime('YYYY', Date);
      Ed_BeginYear2.Text := IntToStr(SpEd_BeginYear.Value + 1);
    end;

    if W_StartTerm > 0 then
      CmbBox_BeginXqi.ItemIndex := W_StartTerm - 1
    else
      CmbBox_BeginXqi.ItemIndex := 0;

    //  当前学年、学期
    if W_CurYear <> 0 then
    begin
      SpEd_CurYear.Text := IntToStr(W_CurYear);
      Ed_CurYear2.Text := IntToStr(W_CurYear + 1);
    end else
    begin
      SpEd_CurYear.Text := FormatDateTime('YYYY', Date);
      Ed_CurYear2.Text := IntToStr(SpEd_CurYear.Value + 1);
    end;

    if W_StartTerm > 0 then
      CmbBox_CurXqi.ItemIndex := W_CurTerm - 1
    else
      CmbBox_CurXqi.ItemIndex := 0;

    DQuery.Open;
    //  总年级数、各年级班数
    if SI_GradeCount > 0 then
    begin
      SpEdit_Grades.Value := SI_GradeCount;
      for i := 0 to SI_GradeCount - 1 do
        DQuery.AppendRecord([GradeNames[i] + '年级', SI_Classes[i]]);
    end
    else
    begin
      SetLength(SI_Classes, 3);
      for i := 0 to 2 do
        DQuery.AppendRecord([GradeNames[i] + '年级', SI_Classes[i]]);
    end;
    DQuery.First;

    ChkBox_BeginUse.Checked := B_BeginUse;

    if B_BeginUse then
      ControlsDisabled(Fm_SetInitParam);

    if ShowModal = idOk then
    begin
      if B_BeginUse then
        Exit;
      with TIniFile.Create(S_SysPath + '\' + StudentIniFile) do
      try
        W_StartYear := SpEd_BeginYear.Value;
        W_StartTerm := CmbBox_BeginXqi.ItemIndex + 1;

        W_CurYear := SpEd_CurYear.Value;
        W_CurTerm := CmbBox_CurXqi.ItemIndex + 1;
        S_CurTermCode := IntToStr(W_CurYear) + IntToStr(W_CurTerm);
        SI_GradeCount := SpEdit_Grades.Value;

        //  系统  启用年份、启用学期
        WriteInteger('系统参数', '启用学年', W_StartYear);
        WriteInteger('系统参数', '启用学期', W_StartTerm);
        //  当前年份、月份
        WriteInteger('系统参数', '当前学年', W_CurYear);
        WriteInteger('系统参数', '当前学期', W_CurTerm);
        //  总年级数、各年级班数
        WriteInteger('系统参数', '总年级数', SI_GradeCount);

        SetLength(SI_Classes, SI_GradeCount);
        i := 0;
        DQuery.First;
        while not DQuery.Eof do
        begin
          WriteInteger('系统参数', DQuery.FieldByName('nji').AsString,
            DQuery.FieldByName('bshu').AsInteger);
          SI_Classes[i] := DQuery.FieldByName('bshu').AsInteger;
          Inc(i);
          DQuery.Next;
        end;
        if ChkBox_BeginUse.Checked then
        begin
          if U_GlobalProc.Show_ConfirmMess('真的开始启用吗?') then
          begin
            B_BeginUse := True;
            WriteBool('系统参数', '启用', B_BeginUse);
            with DQuery do
            begin
              Close;
              DatabaseName := DataDBase;
              for i := 1 to SI_GradeCount do
              begin
                SQL.Text := 'INSERT INTO nj (s_njhao, si_xsbjshu) VALUES(''' +
                            IntToStr(W_CurYear - i + 1) + '-' +
                            IntToStr(W_CurYear - i + 2) + ''', 0)';
                ExecSQL;
                SQL.Text := 'INSERT INTO xqszf (s_xqhao, si_nji) VALUES(''' +
                             S_CurTermCode + ''', ' + IntToStr(i) + ')';
                ExecSQL;
                for j := 0 to SI_Classes[i - 1] - 1 do
                begin
                  SQL.Text := 'INSERT INTO bj (s_bjhao, s_bjmcheng, si_dqnji) VALUES(''' +
                               S_SchoolCode + IntToStr(W_CurYear - i + 1) +
                               IntFormatStr(j + 1, 2) + ''', ''' + GradeNames[i - 1] +
                               GradeNames[j] + '班'', ' + IntToStr(i) + ')';
                  ExecSQL;
                end;
              end;
            end;
            Fm_Main.MainStateBar.Panels[2].Text := '当前学期:' +
              IntToStr(W_CurYear) + '-' + IntToStr(W_CurYear + 1) + '学年 ' +
              '  第' + IntToStr(W_CurTerm) + '学期';
            U_GlobalProc.Show_InfoMess('启用成功。');
          end;
        end;
      finally
        Free;
      end;
    end;
  finally
    Free;
  end;
end;

procedure TFm_SetInitParam.Btn_OkClick(Sender: TObject);
begin //
  if DQuery.State in [dsEdit, dsInsert] then
    DQuery.Post;
  DQuery.DisableControls;
  with DQuery do
  try
    First;
    while not Eof do
    begin
      if FieldByName('bshu').AsInteger = 0 then
      begin
        U_GlobalProc.Show_ErrorMess(FieldByName('nji').AsString + '班数不能为 0 。');
        Exit;
      end;
      Next;
    end;
    ModalResult := mrOk;
  finally
    First;
    EnAbleControls;
  end;
end;

procedure TFm_SetInitParam.SpEdit_GradesExit(Sender: TObject);
var
  c, s, i: integer;
begin //
  c := SpEdit_Grades.Value;
  s := 0;
  with DQuery do
  try
    First;
    while not Eof do
    begin
      Inc(s);
      Next;
    end;
    if c > s then
    begin
      SetLength(SI_Classes, c);
      for i := s to c - 1 do
      begin
        SI_Classes[i] := 1;
        AppendRecord([GradeNames[i] + '年级', SI_Classes[i]]);
      end;
    end
    else if c < s then
    begin
      for i := 1 to s - c do
      begin
        Last;
        Delete;
      end;
    end;
  finally
    First;
    while ControlsDisabled do
    EnAbleControls;
  end;
end;

procedure TFm_SetInitParam.SpEd_BeginYearChange(Sender: TObject);
begin //
  Ed_BeginYear2.Text := IntToStr(SpEd_BeginYear.Value + 1);
end;

procedure TFm_SetInitParam.SpEd_CurYearChange(Sender: TObject);
begin
  Ed_CurYear2.Text := IntToStr(SpEd_CurYear.Value + 1);
end;

end.

⌨️ 快捷键说明

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