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

📄 u_studentmanage.pas

📁 一个简单的学籍管理软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit U_StudentManage;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  HGrids, HDBGrids, TB97Tlbr, TB97Ctls, TB97, DBTables, Db, Menus,
  ComCtrls, ExtCtrls, ImgList, HTitleDBGrid;

type
  TFm_StudentManage = class(TForm)
    MDS: TDataSource;
    Dock: TDock97;
    Tb97_Func: TToolbar97;
    TbBtn_Edit: TToolbarButton97;
    TbBtn_Add: TToolbarButton97;
    TbBtn_Delete: TToolbarButton97;
    TbBtn_Help: TToolbarButton97;
    TbBtn_Exit: TToolbarButton97;
    TbSep02: TToolbarSep97;
    MQuery: TQuery;
    MUpSQL: TUpdateSQL;
    PPM: TPopupMenu;
    PM_Add: TMenuItem;
    PM_Edit: TMenuItem;
    PM_Delete: TMenuItem;
    PM_Z01: TMenuItem;
    PM_BBan: TMenuItem;
    PM_Help: TMenuItem;
    PM_Exit: TMenuItem;
    PM_Z02: TMenuItem;
    MTrView: TTreeView;
    Spl_Main: TSplitter;
    Pnl_DAn: TPanel;
    Spl_Fu: TSplitter;
    TbCtrl_Detail: TTabControl;
    TbBtn_BBan: TToolbarButton97;
    ToolbarSep971: TToolbarSep97;
    DtQuery: TQuery;
    DtDS: TDataSource;
    DtGrid: THDBGrid;
    ImageList: TImageList;
    MQueryS_XHAO: TStringField;
    MQueryS_XMING: TStringField;
    MQuerySI_XBIE: TSmallintField;
    MQuerySI_MZU: TSmallintField;
    MQueryD_CSRQI: TDateField;
    MQueryS_ZPWJIAN: TStringField;
    MQueryS_JGUAN: TStringField;
    MQueryS_XXZZHI: TStringField;
    MQueryS_LXFSHI: TStringField;
    MQueryD_RDSJIAN: TDateField;
    MQueryD_RTSJIAN: TDateField;
    MQueryD_RXSJIAN: TDateField;
    MQueryS_BYXXIAO: TStringField;
    MQueryS_BJHAO: TStringField;
    UpQuery: TQuery;
    TbBtn_Print: TToolbarButton97;
    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 MQuerySI_XBIEGetText(Sender: TField; var Text: string;
      DisplayText: Boolean);
    procedure MQuerySI_XBIESetText(Sender: TField; const Text: string);
    procedure TbCtrl_DetailChange(Sender: TObject);
    procedure QueryGetText(Sender: TField; var Text: String; DisplayText: Boolean);
    procedure QuerySetText(Sender: TField; const Text: string);
    procedure MQueryAfterScroll(DataSet: TDataSet);
    procedure TbBtn_AddClick(Sender: TObject);
    procedure TbBtn_EditClick(Sender: TObject);
    procedure TbBtn_DeleteClick(Sender: TObject);
    procedure TbBtn_BBanClick(Sender: TObject);
    procedure TbBtn_HelpClick(Sender: TObject);
    procedure MQueryAfterOpen(DataSet: TDataSet);
    procedure MQueryBeforePost(DataSet: TDataSet);
    procedure MQueryAfterPost(DataSet: TDataSet);
    procedure MQueryD_CSRQIGetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    procedure TbBtn_PrintClick(Sender: TObject);
  private
    FEdState: TDataSetState;
  public
  end;

var
  Fm_StudentManage: TFm_StudentManage;

procedure Show_StudentManage;

implementation

uses U_Main, U_GlobalProc, U_GlobalVar, U_DM, U_StudentMangeAction, U_Print;

{$R *.DFM}

procedure Show_StudentManage;
var
  i: integer;
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_StudentManage') then
      Fm_Main.MDIChildren[i].Close;
  end;
  if not Assigned(Fm_StudentManage) then
  begin
    Fm_StudentManage := TFm_StudentManage.Create(Application);
    with Fm_StudentManage do
    begin
      MQuery.Open;
      ReSetGridColumns(MGrid, 'XSJBXX',
        MQuerySI_XBIEGetText, MQuerySI_XBIESetText);
      RefreshGridStyle(MGrid);
      RefreshGridStyle(DtGrid);
      MakeGradeTree(MTrView, 0, False);
      MTrView.Items[0].Selected := True;
      TbCtrl_Detail.TabIndex := 0;
      TbCtrl_DetailChange(nil);
    end;
  end;
  with Fm_StudentManage do
  begin
    if WindowState <> wsMaximized then
      WindowState := wsMaximized;
    Show;
    SetFocus;
  end;
end;

procedure TFm_StudentManage.TbBtn_ExitClick(Sender: TObject);
begin
  Close;
end;

procedure TFm_StudentManage.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  MQuery.Close;
  Action := caFree;
  Fm_StudentManage := nil;
end;

procedure TFm_StudentManage.Spl_MainCanResize(Sender: TObject;
  var NewSize: Integer; var Accept: Boolean);
begin
  if NewSize < 8 then
    Accept := False;
end;

procedure TFm_StudentManage.Spl_FuCanResize(Sender: TObject;
  var NewSize: Integer; var Accept: Boolean);
begin
  if NewSize < 8 then
    Accept := False;
end;

procedure TFm_StudentManage.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_StudentManage.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_StudentManage.MTrViewChange(Sender: TObject;
  Node: TTreeNode);
var
  tmS: string;
begin
  with MQuery do
  try
    DisableControls;
    Close;
    SQL.Text := 'SELECT * FROM xsjbxx';
    if Integer(Node.Data) < 9999 then
    begin //  年级
      tmS := S_SchoolCode + IntToStr(Integer(Node.Data)) + '%';
      SQL.Text := SQL.Text + 'WHERE s_xhao LIKE ''' + tmS + '''';
    end
    else
    begin //  班级
      tmS := IntFormatStr(Integer(Node.Data), 9);
      SQL.Text := SQL.Text + 'WHERE s_bjhao = ''' + tmS + '''';
    end;
    Open;
    if IsEmpty then
      MQueryAfterScroll(nil);
    if (Integer(Node.Data) = 1) and (w_curTerm = 1) and
      (not MQuery.IsEmpty) then
    begin
      TbBtn_BBan.Enabled := True;
      PM_BBan.Enabled := True;
    end
    else
    begin
      TbBtn_BBan.Enabled := False;
      PM_BBan.Enabled := False;
    end;

  finally
    EnableControls;
  end;
end;

procedure TFm_StudentManage.MQuerySI_XBIEGetText(Sender: TField;
  var Text: string; DisplayText: Boolean);
var
  aList: TStrings;
  i: integer;
begin
  aList := nil;
  for i := 0 to MGrid.Columns.Count - 1 do
  begin
    if MGrid.Columns[i].FieldName = Sender.FieldName then
    begin
      aList := MGrid.Columns[i].PickList;
      Break;
    end;
  end;
  if Assigned(aList) then
  begin
    for i := 0 to aList.Count - 1 do
      if Sender.AsInteger = Integer(aList.Objects[i]) then
      begin
        Text := aList.Strings[i];
        break;
      end;
  end;
end;

procedure TFm_StudentManage.MQuerySI_XBIESetText(Sender: TField;
  const Text: string);
var
  aList: TStrings;
  i: integer;
begin
  aList := nil;
  for i := 0 to MGrid.Columns.Count - 1 do
  begin
    if MGrid.Columns[i].FieldName = Sender.FieldName then
    begin
      aList := MGrid.Columns[i].PickList;
      Break;
    end;
  end;
  if Assigned(aList) then
  begin
    for i := 0 to aList.Count - 1 do
      if Text = aList.Strings[i] then

⌨️ 快捷键说明

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