📄 u_setinitparam.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 + -