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

📄 u_exammanage.pas

📁 一个简单的学籍管理软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -