📄 u_exammanage.pas
字号:
unit U_ExamManage;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
HGrids, HDBGrids, TB97Tlbr, TB97Ctls, TB97, DBTables, Db, Menus,
ComCtrls, ExtCtrls, ImgList, HTitleDBGrid;
type
TFm_ExamManage = class(TForm)
MDS: TDataSource;
Dock: TDock97;
Tb97_Func: TToolbar97;
TbBtn_Add: TToolbarButton97;
TbBtn_Delete: TToolbarButton97;
TbBtn_Help: TToolbarButton97;
TbBtn_Exit: TToolbarButton97;
MQuery: TQuery;
MUpSQL: TUpdateSQL;
PPM: TPopupMenu;
PM_Add: TMenuItem;
PM_Delete: TMenuItem;
PM_Z01: TMenuItem;
PM_Help: TMenuItem;
PM_Exit: TMenuItem;
MTrView: TTreeView;
Spl_Main: TSplitter;
ToolbarSep971: TToolbarSep97;
ImageList: TImageList;
TbBtn_Edit: TToolbarButton97;
PM_Edit: TMenuItem;
TbBtn_TermMid: TToolbarButton97;
PM_TermMid: TMenuItem;
PM_TermEnd: TMenuItem;
PM_Z02: TMenuItem;
ToolbarSep972: TToolbarSep97;
TbBtn_TermEnd: TToolbarButton97;
MQueryI_KSHAO: TIntegerField;
MQueryS_XQHAO: TStringField;
MQuerySI_NJI: TSmallintField;
MQuerySI_KSCBIE: TSmallintField;
MQuerySI_KSLXING: TSmallintField;
MQueryS_KCDHAO: TStringField;
MQueryD_KSRQI: TDateField;
MQueryD_JSRQI: TDateField;
TbBtn_Fix: TToolbarButton97;
ToolbarSep973: TToolbarSep97;
TbBtn_Select: TToolbarButton97;
PM_Z03: TMenuItem;
PM_Select: TMenuItem;
PM_Fix: TMenuItem;
MQueryB_SFPDING: TStringField;
MQueryS_KSSMING: TStringField;
TbBtn_Print: TToolbarButton97;
TbSp01: TToolbarSep97;
PM_Z04: 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 QueryGetText(Sender: TField; var Text: string; DisplayText: Boolean);
procedure QuerySetText(Sender: TField; const Text: string);
procedure TbBtn_AddClick(Sender: TObject);
procedure TbBtn_EditClick(Sender: TObject);
procedure TbBtn_DeleteClick(Sender: TObject);
procedure TbBtn_HelpClick(Sender: TObject);
procedure TbBtn_TermMidClick(Sender: TObject);
procedure TbBtn_TermEndClick(Sender: TObject);
procedure MQueryB_SFPDINGGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure MQueryB_SFPDINGSetText(Sender: TField; const Text: string);
procedure MQueryAfterScroll(DataSet: TDataSet);
procedure TbBtn_FixClick(Sender: TObject);
procedure TbBtn_SelectClick(Sender: TObject);
procedure TbBtn_PrintClick(Sender: TObject);
private
public
end;
var
Fm_ExamManage: TFm_ExamManage;
procedure Show_ExamManage;
implementation
uses U_Main, U_GlobalProc, U_GlobalVar, U_DM, U_ExamManageAction, U_ExamMidAction,
U_ExamSelect, U_ExamMakeResult, U_Print;
{$R *.DFM}
procedure Show_ExamManage;
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_ExamManage') then
Fm_Main.MDIChildren[i].Close;
end;
if not Assigned(Fm_ExamManage) then
begin
Fm_ExamManage := TFm_ExamManage.Create(Application);
with Fm_ExamManage do
begin
MakeGradeTree(MTrView, 2, True);
MTrView.Items[0].Selected := True;
//MQuery.Open;
ReSetGridColumns(MGrid, 'KSSZ', QueryGetText, QuerySetText);
RefreshGridStyle(MGrid);
end;
aQuery := TQuery.Create(Application);
with aQuery do
begin
DatabaseName := DataDBase;
SQL.Text := 'SELECT * FROM kc';
Open;
aList := Fm_ExamManage.MGrid.Columns[5].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_ExamManage do
begin
if WindowState <> wsMaximized then
WindowState := wsMaximized;
Show;
SetFocus;
end;
end;
procedure TFm_ExamManage.TbBtn_ExitClick(Sender: TObject);
begin
Close;
end;
procedure TFm_ExamManage.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
MQuery.Close;
Action := caFree;
Fm_ExamManage := nil;
end;
procedure TFm_ExamManage.Spl_MainCanResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
begin
if NewSize < 8 then
Accept := False;
end;
procedure TFm_ExamManage.Spl_FuCanResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
begin
if NewSize < 8 then
Accept := False;
end;
procedure TFm_ExamManage.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_ExamManage.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_ExamManage.MTrViewChange(Sender: TObject;
Node: TTreeNode);
begin
with MQuery do
try
DisableControls;
Close;
if Node.Data = nil then
SQL.Text := 'SELECT * FROM kssz WHERE s_xqhao=:ps_xqhao'
else
begin
SQL.Text := 'SELECT * FROM kssz WHERE s_xqhao=:ps_xqhao AND si_nji=:psi_nji';
ParamByName('psi_nji').AsInteger := W_CurYear - Integer(Node.Data) + 1;
end;
ParamByName('ps_xqhao').AsString := S_CurTermCode;
Prepare;
Open;
if IsEmpty then
MQueryAfterScroll(nil);
finally
EnableControls;
end;
end;
procedure TFm_ExamManage.MQueryAfterOpen(DataSet: TDataSet);
begin
if MQuery.IsEmpty then
begin
TbBtn_Edit.Enabled := False;
TbBtn_Delete.Enabled := False;
PM_Edit.Enabled := False;
PM_Delete.Enabled := False;
end
else
begin
TbBtn_Edit.Enabled := True;
TbBtn_Delete.Enabled := True;
PM_Edit.Enabled := True;
PM_Delete.Enabled := True;
end;
end;
procedure TFm_ExamManage.MQueryS_KCDHAOGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
var
aList: TStrings;
i: integer;
begin
aList := MGrid.Columns[5].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_ExamManage.MQueryS_KCDHAOSetText(Sender: TField;
const Text: string);
var
aList: TStrings;
i: integer;
begin
aList := MGrid.Columns[5].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_ExamManage.QueryGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
begin
DataSetGetText(MGrid, Sender, Text, DisplayText);
end;
procedure TFm_ExamManage.QuerySetText(Sender: TField;
const Text: string);
begin
DataSetSetText(MGrid, Sender, Text);
end;
procedure TFm_ExamManage.TbBtn_AddClick(Sender: TObject);
var
pTermCode: string;
pGrade, pOrder, pType: integer;
pInfo, pSubjectCode: string;
pBeginDate, pEndDate: TDateRec;
tmBgDateStr, tmEdDateStr: string;
aQuery: TQuery;
tmNo: integer;
begin //
pTermCode := S_CurTermCode;
if MTrView.Selected.Data = nil then
pGrade := 0
else
pGrade := W_CurYear - Integer(MTrView.Selected.Data) + 1;
with pBeginDate do
begin
pYear := 0;
pMonth := 0;
pDay := 0;
end;
with pEndDate do
begin
pYear := 0;
pMonth := 0;
pDay := 0;
end;
pInfo := '';
if U_ExamManageAction.Show_ExamManageAction(pTermCode, pGrade, pOrder,
pType, pInfo, pSubjectCode, pBeginDate, pEndDate, 1) then
begin
aQuery := TQuery.Create(Application);
with aQuery do
try
DataBaseName := DataDBase;
SQL.Text := 'SELECT MAX(i_kshao) AS i_kshao FROM kssz';
Open;
if not IsEmpty then
tmNo := FieldByName('i_kshao').AsInteger + 1
else
tmNo := 1;
finally
Close;
Free;
end;
if pBeginDate.pYear = 0 then
tmBgDateStr := ''
else
tmBgDateStr := DateToStr(EnCodeDate(pBeginDate.pYear,
pBeginDate.pMonth, pBeginDate.pDay));
if pEndDate.pYear = 0 then
tmEdDateStr := ''
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -