📄 u_gradesubject.pas
字号:
unit U_GradeSubject;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
HGrids, HDBGrids, TB97Tlbr, TB97Ctls, TB97, DBTables, Db, Menus,
ComCtrls, ExtCtrls, ImgList, HTitleDBGrid;
type
TFm_GradeSubject = class(TForm)
MDS: TDataSource;
Dock: TDock97;
Tb97_Func: TToolbar97;
TbBtn_Add: TToolbarButton97;
TbBtn_Delete: TToolbarButton97;
TbBtn_Help: TToolbarButton97;
TbBtn_Exit: TToolbarButton97;
TbSep02: TToolbarSep97;
MQuery: TQuery;
MUpSQL: TUpdateSQL;
PPM: TPopupMenu;
PM_Add: TMenuItem;
PM_Delete: TMenuItem;
PM_Z01: TMenuItem;
PM_Copy: TMenuItem;
PM_Help: TMenuItem;
PM_Exit: TMenuItem;
PM_Z02: TMenuItem;
MTrView: TTreeView;
Spl_Main: TSplitter;
TbBtn_Copy: TToolbarButton97;
ToolbarSep971: TToolbarSep97;
ImageList: TImageList;
MQueryS_XQHAO: TStringField;
MQuerySI_NJI: TSmallintField;
MQueryS_KCDHAO: TStringField;
TbBtn_Print: TToolbarButton97;
TbSp01: TToolbarSep97;
PM_Z03: TMenuItem;
PM_Print: TMenuItem;
MGrid: THTitleDBGrid;
procedure TbBtn_ExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Spl_MainCanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
procedure Spl_FuCanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
procedure MTrViewGetImageIndex(Sender: TObject; Node: TTreeNode);
procedure MTrViewGetSelectedIndex(Sender: TObject; Node: TTreeNode);
procedure MTrViewChange(Sender: TObject; Node: TTreeNode);
procedure MQueryAfterOpen(DataSet: TDataSet);
procedure MQueryS_KCDHAOGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure MQueryS_KCDHAOSetText(Sender: TField; const Text: String);
procedure TbBtn_AddClick(Sender: TObject);
procedure TbBtn_DeleteClick(Sender: TObject);
procedure TbBtn_CopyClick(Sender: TObject);
procedure TbBtn_HelpClick(Sender: TObject);
procedure TbBtn_PrintClick(Sender: TObject);
private
public
end;
var
Fm_GradeSubject: TFm_GradeSubject;
procedure Show_GradeSubject;
implementation
uses U_Main, U_GlobalProc, U_GlobalVar, U_DM, U_GradeSubjectAction,
U_Print;
{$R *.DFM}
procedure Show_GradeSubject;
var
i: integer;
aQuery: TQuery;
aList: TStrings;
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_GradeSubject') then
Fm_Main.MDIChildren[i].Close;
end;
if not Assigned(Fm_GradeSubject) then
begin
Fm_GradeSubject := TFm_GradeSubject.Create(Application);
with Fm_GradeSubject do
begin
MakeGradeTree(MTrView, 2, False);
MTrView.Items[0].Selected := True;
//MQuery.Open;
//ReSetGridColumns(MGrid, 'XQKSKC', nil, nil);
RefreshGridStyle(MGrid);
end;
aQuery := TQuery.Create(Application);
with aQuery do
begin
DatabaseName := DataDBase;
SQL.Text := 'SELECT * FROM kc';
Open;
aList := Fm_GradeSubject.MGrid.Columns[2].PickList;
aList.Clear;
while not Eof do
begin
aList.AddObject(FieldByName('s_kcmcheng').asString,
Pointer(FieldByName('s_kcdhao').AsInteger));
Next;
end;
end;
end;
with Fm_GradeSubject do
begin
if WindowState <> wsMaximized then
WindowState := wsMaximized;
Show;
SetFocus;
end;
end;
procedure TFm_GradeSubject.TbBtn_ExitClick(Sender: TObject);
begin
Close;
end;
procedure TFm_GradeSubject.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
MQuery.Close;
Action := caFree;
Fm_GradeSubject := nil;
end;
procedure TFm_GradeSubject.Spl_MainCanResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
begin
if NewSize < 8 then
Accept := False;
end;
procedure TFm_GradeSubject.Spl_FuCanResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
begin
if NewSize < 8 then
Accept := False;
end;
procedure TFm_GradeSubject.MTrViewGetImageIndex(Sender: TObject;
Node: TTreeNode);
begin //
if Node.HasChildren then
begin
if Node.Expanded then
Node.ImageIndex := 2
else
Node.ImageIndex := 1;
end
else
begin
if Node.Level = 0 then
Node.ImageIndex := 1
else
Node.ImageIndex := 0;
end;
end;
procedure TFm_GradeSubject.MTrViewGetSelectedIndex(Sender: TObject;
Node: TTreeNode);
begin
if Node.HasChildren then
begin
if Node.Expanded then
Node.SelectedIndex := 5
else
Node.SelectedIndex := 4;
end
else
begin
if Node.Level = 0 then
Node.SelectedIndex := 4
else
Node.SelectedIndex := 3;
end;
end;
procedure TFm_GradeSubject.MTrViewChange(Sender: TObject;
Node: TTreeNode);
begin
with MQuery do
try
DisableControls;
Close;
ParamByName('ps_xqhao').AsString := S_CurTermCode;
ParamByName('psi_nji').AsInteger := W_CurYear - Integer(Node.Data) + 1;
Prepare;
Open;
finally
EnableControls;
end;
end;
procedure TFm_GradeSubject.MQueryAfterOpen(DataSet: TDataSet);
begin
if MQuery.IsEmpty then
begin
TbBtn_Delete.Enabled := False;
PM_Delete.Enabled := False;
end
else
begin
TbBtn_Delete.Enabled := True;
PM_Delete.Enabled := True;
end;
end;
procedure TFm_GradeSubject.MQueryS_KCDHAOGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
var
aList: TStrings;
i: integer;
begin
aList := MGrid.Columns[2].PickList;
if Assigned(aList) then
begin
for i := 0 to aList.Count - 1 do
if Sender.AsString = IntFormatStr(Integer(aList.Objects[i]), 4) then
begin
Text := aList.Strings[i];
break;
end;
end;
end;
procedure TFm_GradeSubject.MQueryS_KCDHAOSetText(Sender: TField;
const Text: String);
var
aList: TStrings;
i: integer;
begin
aList := MGrid.Columns[2].PickList;
if Assigned(aList) then
begin
for i := 0 to aList.Count - 1 do
if Text = aList.Strings[i] then
begin
Sender.AsString := IntFormatStr(Integer(aList.Objects[i]), 4);
break;
end;
end;
end;
procedure TFm_GradeSubject.TbBtn_AddClick(Sender: TObject);
var
pCode: string;
begin //
if U_GradeSubjectAction.Show_GradeSubjectAction(pCode,
W_CurYear - Integer(MTrView.Selected.Data) + 1) then
begin
MQuery.AppendRecord([S_CurTermCode, W_CurYear - Integer(MTrView.Selected.Data) + 1, pCode]);
MQuery.ApplyUpdates;
end;
end;
procedure TFm_GradeSubject.TbBtn_DeleteClick(Sender: TObject);
var
tmQuery: TQuery;
tmCode, tmName: string;
i: integer;
begin //
tmCode := MQuery.FieldByName('s_kcdhao').AsString;
with MGrid.Columns[2].PickList do
for i := 0 to Count - 1 do
begin
if tmCode = IntFormatStr(Integer(Objects[i]), 4) then
begin
tmName := Strings[i];
break;
end;
end;
tmQuery := TQuery.Create(Application);
with tmQuery do
try
DataBaseName := DataDBase;
// 成绩
tmQuery.SQL.Text := 'SELECT * FROM kscj d1, kssz d2 WHERE d1.s_kcdhao=''' +
MQuery.FieldByName('s_kcdhao').AsString + ''' AND d1.i_kshao=d2.i_kshao ' +
'AND d2.s_xqhao=''' + S_CurTermCode + '''';
Open;
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 kscj WHERE s_kcdhao=''' + MQuery.FieldByName('s_kcdhao').AsString +
''' AND i_kshao IN (SELECT i_kshao FROM kssz WHERE s_xqhao=''' +
S_CurTermCode + ''')';
ExecSQL;
// 年级课程
MQuery.Delete;
MQuery.ApplyUpdates;
finally
Close;
Free;
end;
end;
procedure TFm_GradeSubject.TbBtn_CopyClick(Sender: TObject);
var
tmQuery: TQuery;
begin //
tmQuery := TQuery.Create(Application);
with tmQuery do
try
DataBaseName := DataDBase;
SQL.Text := 'SELECT * FROM xqkskc WHERE s_xqhao=:ps_xqhao';
ParamByName('ps_xqhao').AsString := IntToStr(W_CurYear - 1) + IntToStr(W_CurTerm);
Prepare;
Open;
if not IsEmpty then
begin
if (not MQuery.IsEmpty) and
U_GlobalProc.Show_ConfirmMess('拷贝去年的课程设置将覆盖已经输入的课程。拷贝吗?') then
begin
MQuery.DisableControls;
MQuery.First;
while not MQuery.Eof do
MQuery.Delete;
MQuery.ApplyUpdates;
end;
First;
while not Eof do
begin
MQuery.AppendRecord([S_CurTermCode, FieldByName('si_nji').AsString,
FieldByName('s_kcdhao').AsString]);
Next;
end;
MQuery.ApplyUpdates;
end else
begin
U_GlobalProc.Show_ErrorMess('没有发现去年的课程设置。');
Exit;
end;
finally
while MQuery.ControlsDisabled do
MQuery.EnableControls;
Free;
end;
end;
procedure TFm_GradeSubject.TbBtn_HelpClick(Sender: TObject);
begin//
end;
procedure TFm_GradeSubject.TbBtn_PrintClick(Sender: TObject);
begin
Show_Print(MGrid);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -