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

📄 umain.pas

📁 delphi7.0 源码 学籍管理系统源码
💻 PAS
字号:
unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DBCtrls, Grids, DBGridEh, Mask, ExtCtrls,
  ComCtrls, ToolWin, XPMan, Menus, ActnList, ImgList, ExtDlgs, DB, FR_Class;

type
  TfrmMain = class(TForm)
    CoolBar: TCoolBar;
    ToolBar2: TToolBar;
    StatusBar: TStatusBar;
    pNav: TPanel;
    Splitter: TSplitter;
    pData: TPanel;
    pNavTitle: TPanel;
    tvGrade: TTreeView;
    pDetail: TPanel;
    pcDetail: TPageControl;
    TabSheet1: TTabSheet;
    Bevel1: TBevel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    dbeXH: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBMemo1: TDBMemo;
    DBComboBox1: TDBComboBox;
    DBEdit11: TDBEdit;
    TabSheet2: TTabSheet;
    GridFamily: TDBGridEh;
    TabSheet3: TTabSheet;
    DBGridEh2: TDBGridEh;
    TabSheet4: TTabSheet;
    GridEvents: TDBGridEh;
    TabSheet5: TTabSheet;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    DBMemo2: TDBMemo;
    GSPhoto: TDBImage;
    JHSPhoto: TDBImage;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    pDetailTitle: TPanel;
    sbCloseNav: TSpeedButton;
    sbCloseDetail: TSpeedButton;
    TabSheet6: TTabSheet;
    GridGraduate: TDBGridEh;
    pDataTitle: TPanel;
    ImageListH: TImageList;
    ImageList: TImageList;
    ImageListD: TImageList;
    ImageListM: TImageList;
    ActionList1: TActionList;
    MainMenu1: TMainMenu;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    F1: TMenuItem;
    N1: TMenuItem;
    V1: TMenuItem;
    T1: TMenuItem;
    H1: TMenuItem;
    aNew: TAction;
    aEdit: TAction;
    aDelete: TAction;
    aPrint: TAction;
    aExit: TAction;
    aAbout: TAction;
    aImport: TAction;
    aExport: TAction;
    N2: TMenuItem;
    P1: TMenuItem;
    N3: TMenuItem;
    X1: TMenuItem;
    E1: TMenuItem;
    D1: TMenuItem;
    I1: TMenuItem;
    O1: TMenuItem;
    A1: TMenuItem;
    aViewGrade: TAction;
    aViewCard: TAction;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    G1: TMenuItem;
    S1: TMenuItem;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    aClassSetup: TAction;
    N4: TMenuItem;
    N5: TMenuItem;
    aSchoolSetup: TAction;
    H2: TMenuItem;
    labClassName: TLabel;
    GridCard: TDBGridEh;
    pFilter: TPanel;
    sbOpenFilter: TSpeedButton;
    sbCloseFilter: TSpeedButton;
    cbField: TComboBox;
    cbValue: TComboBox;
    ToolButton13: TToolButton;
    aFilter: TAction;
    ToolButton14: TToolButton;
    labDatasetState: TLabel;
    aSave: TAction;
    ToolButton15: TToolButton;
    S2: TMenuItem;
    F2: TMenuItem;
    aDefaultValue: TAction;
    ToolButton16: TToolButton;
    aCancel: TAction;
    C1: TMenuItem;
    ToolButton17: TToolButton;
    SaveDialog: TSaveDialog;
    OpenDialog1: TOpenDialog;
    ToolButton18: TToolButton;
    aMoveClass: TAction;
    N6: TMenuItem;
    M1: TMenuItem;
    pmGrid: TPopupMenu;
    N7: TMenuItem;
    E2: TMenuItem;
    D2: TMenuItem;
    N8: TMenuItem;
    M2: TMenuItem;
    procedure aClassSetupExecute(Sender: TObject);
    procedure aSchoolSetupExecute(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure tvGradeClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure aViewGradeExecute(Sender: TObject);
    procedure aViewCardExecute(Sender: TObject);
    procedure sbCloseNavClick(Sender: TObject);
    procedure sbCloseDetailClick(Sender: TObject);
    procedure aNewExecute(Sender: TObject);
    procedure aEditExecute(Sender: TObject);
    procedure aDeleteExecute(Sender: TObject);
    procedure aExitExecute(Sender: TObject);
    procedure aNewUpdate(Sender: TObject);
    procedure cbFieldSelect(Sender: TObject);
    procedure aFilterExecute(Sender: TObject);
    procedure sbOpenFilterClick(Sender: TObject);
    procedure sbCloseFilterClick(Sender: TObject);
    procedure cbValueKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure aSaveExecute(Sender: TObject);
    procedure GridCardDblClick(Sender: TObject);
    procedure aDefaultValueExecute(Sender: TObject);
    procedure aCancelExecute(Sender: TObject);
    procedure aExportExecute(Sender: TObject);
    procedure aAboutExecute(Sender: TObject);
    procedure aImportExecute(Sender: TObject);
    procedure aMoveClassExecute(Sender: TObject);
    procedure aPrintExecute(Sender: TObject);
  private
    { Private declarations }
    FilterHint: string;
    procedure IniGradeTree;
    procedure FillFieldList;
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;
  FirstActivate: Boolean = True;

implementation

uses uGlobe, uDM, uSetGrade, uSetSchool, uFlash, uLoginPrompt,
  uSetDefaultValue, uAbout, uImportData, uSelectClass;

{$R *.dfm}

procedure TfrmMain.aClassSetupExecute(Sender: TObject);
begin
  SetGrade;
  IniGradeTree;
  DM.adSSCard.Close;
  CurClass := '';
  labClassName.Caption := CurClass;
end;

procedure TfrmMain.aSchoolSetupExecute(Sender: TObject);
begin
  SetSchool;
end;

procedure TfrmMain.FormActivate(Sender: TObject);
var  r : TRect;
begin
  if FirstActivate then begin
    SystemParametersInfo(SPI_GETWORKAREA,0,@r,0);
    self.Top := 0;
    self.Left := 0;
    self.Width := r.Right-r.Left;
    self.Height := r.Bottom-r.Top;
    Application.Title := self.Caption ;
    if not Login then Close;
    FirstActivate := False;

    IniGradeTree;
  end;
end;

procedure TfrmMain.IniGradeTree;
begin
  GetGradeTree;
  tvGrade.LoadFromFile(GradeTreeFileName);
  tvGrade.FullExpand;
end;

procedure TfrmMain.tvGradeClick(Sender: TObject);
  procedure SetEvents;
  begin
    GridEvents.Columns[0].PickList.Delimiter := gDelimiter;
    GridEvents.Columns[0].PickList.DelimitedText := SchoolInfo.Events;
  end;

  procedure SetCourse;
  begin
    if tvGrade.Selected.Text = UnknowClass then exit;
    GridGraduate.Columns[0].PickList.Delimiter := gDelimiter;
    if tvGrade.Selected.Parent.Parent.Text = '小学' then
      GridGraduate.Columns[0].PickList.DelimitedText := SchoolInfo.ElementaryCourse
    else
      GridGraduate.Columns[0].PickList.DelimitedText := SchoolInfo.JuniorCourse;
  end;

  procedure SetFamilyTitle;
  begin
    GridFamily.Columns[0].PickList.Delimiter := gDelimiter;
    GridFamily.Columns[0].PickList.DelimitedText := SchoolInfo.Family;;
  end;

begin
  if (tvGrade.Selected = nil) then exit;

  //未分班
  if tvGrade.Selected.Text = UnknowClass then begin
    CurClass := UnknowClass;
  end else begin
    if tvGrade.Selected.Level<2 then exit;
    CurClass := GetClassName(tvGrade.Selected);
  end;

  labClassName.Caption := CurClass;

  OpenClass(CurClass);

  FillFieldList;

  SetFamilyTitle;
  SetEvents;
  SetCourse;
end;

procedure TfrmMain.BitBtn1Click(Sender: TObject);
begin
  SetPhotoToField('GSPhoto', DM.adSSCard);
end;

procedure TfrmMain.BitBtn3Click(Sender: TObject);
begin
  SetPhotoToField('JHSPhoto', DM.adSSCard);
end;

procedure TfrmMain.BitBtn2Click(Sender: TObject);
begin
  ClearPhotoFromFeid('GSPhoto', DM.adSSCard);
end;

procedure TfrmMain.BitBtn4Click(Sender: TObject);
begin
  ClearPhotoFromFeid('JHSPhoto', DM.adSSCard);
end;

procedure TfrmMain.aViewGradeExecute(Sender: TObject);
begin
  aViewGrade.Checked := not aViewGrade.Checked;
  pNav.Visible := aViewGrade.Checked;
end;

procedure TfrmMain.aViewCardExecute(Sender: TObject);
begin
  aViewCard.Checked := not aViewCard.Checked;
  pDetail.Visible := aViewCard.Checked;
end;

procedure TfrmMain.sbCloseNavClick(Sender: TObject);
begin
  aViewGrade.Execute;
end;

procedure TfrmMain.sbCloseDetailClick(Sender: TObject);
begin
  aViewCard.Execute;
end;

procedure TfrmMain.aNewExecute(Sender: TObject);
begin
  if not aViewCard.Checked then
    aViewCard.Execute;
  pcDetail.ActivePageIndex := 0;
  dbeXH.SetFocus;

  DM.adSSCard.Append;
end;

procedure TfrmMain.aEditExecute(Sender: TObject);
begin
  if not aViewCard.Checked then
    aViewCard.Execute;

  DM.adSSCard.Edit;
end;

procedure TfrmMain.aDeleteExecute(Sender: TObject);
begin
  DM.adSSCard.Delete;
end;

procedure TfrmMain.aExitExecute(Sender: TObject);
begin
  if DM.adSSCard.Active then DM.adSSCard.Close;
  Close;
end;

procedure TfrmMain.aNewUpdate(Sender: TObject);
const
  DatasetStatue = '%s  %d/%d';
var
  NowDatasetStatue: string;
begin
  aNew.Enabled := DM.adSSCard.Active;
  aEdit.Enabled := DM.adSSCard.Active;
  aDelete.Enabled := DM.adSSCard.Active;
  aSave.Enabled := DM.adSSCard.Active and ((DM.adSSCard.State=dsEdit) or (DM.adSSCard.State=dsInsert));
  aPrint.Enabled := DM.adSSCard.Active;
  aImport.Enabled := DM.adSSCard.Active;
  aExport.Enabled := DM.adSSCard.Active;
  aFilter.Enabled := DM.adSSCard.Active;
  aCancel.Enabled := DM.adSSCard.Active and ((DM.adSSCard.State=dsEdit) or (DM.adSSCard.State=dsInsert));
  aMoveClass.Enabled := DM.adSSCard.Active and (GridCard.SelectedRows.Count>0);

  if (DM.adSSCard.Active) then begin
    if DM.adSSCard.Filtered then
      NowDatasetStatue :=
        format(DatasetStatue, ['( ' + FilterHint +' )', DM.adSSCard.RecNo, DM.adSSCard.RecordCount])
    else
      NowDatasetStatue :=
        format(DatasetStatue, ['', DM.adSSCard.RecNo, DM.adSSCard.RecordCount]);
    if labDatasetState.Caption <> NowDatasetStatue then
      labDatasetState.Caption := NowDatasetStatue;
  end;
end;

procedure TfrmMain.FillFieldList;
var i: integer;
begin
  if (not DM.adSSCard.Active) then exit;

  cbField.Items.Clear;
  for i:=0 to DM.adSSCard.FieldCount-1 do
    cbField.Items.Append(DM.adSSCard.Fields[i].DisplayLabel);

  if cbField.Items.Count>0 then cbfield.ItemIndex := 0;
end;

procedure TfrmMain.cbFieldSelect(Sender: TObject);
begin
  if (not DM.adSSCard.Active) or (cbField.ItemIndex < 0) then
    exit;

  cbValue.Text := '';
  cbValue.Items.Text := GetLocalValueList(DM.adSSCard, GetFieldName(DM.adSSCard, cbField.Text));;
end;

procedure TfrmMain.aFilterExecute(Sender: TObject);
begin
  if (not DM.adSSCard.Active) then exit;

  self.pFilter.Visible := not self.pFilter.Visible;
  aFilter.Checked := self.pFilter.Visible;

  if self.pFilter.Visible then begin
    self.FillFieldList;
    self.cbFieldSelect(Sender);
  end else
    DM.adSSCard.Filtered := False;
end;

procedure TfrmMain.sbOpenFilterClick(Sender: TObject);
const
  fFilterStr = '%s like ''%%%s%%''';
  fFilterHint = '%s=''%s''';
begin
  if (not DM.adSSCard.Active) then exit;
  if DM.adSSCard.Filtered then DM.adSSCard.Filtered := False;
  if (cbField.Text = '') or (cbValue.Text = '') then exit;

  DM.adSSCard.Filter := format(fFilterStr, [GetFieldName(DM.adSSCard, cbField.Text), cbValue.Text]);
  DM.adSSCard.Filtered := True;
  FilterHint := format(fFilterHint, [cbField.Text, cbValue.Text]);
end;

procedure TfrmMain.sbCloseFilterClick(Sender: TObject);
begin
  if (not DM.adSSCard.Active) then exit;
  if DM.adSSCard.Filtered then DM.adSSCard.Filtered := False;
end;

procedure TfrmMain.cbValueKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = vk_Return then
    sbOpenFilter.Click;
end;

procedure TfrmMain.aSaveExecute(Sender: TObject);
begin
  DM.adSSCard.Post;
end;

procedure TfrmMain.GridCardDblClick(Sender: TObject);
begin
  if (not DM.adSSCard.Active) then exit;

  if not aViewCard.Checked then
    aViewCard.Execute;
end;

procedure TfrmMain.aDefaultValueExecute(Sender: TObject);
begin
  SetDefalueValueForm;
end;

procedure TfrmMain.aCancelExecute(Sender: TObject);
begin
  DM.adSSCard.Cancel;
end;

procedure TfrmMain.aExportExecute(Sender: TObject);
begin
  SaveDialog.FileName := CurClass;
  if self.SaveDialog.Execute then
    ExportDataToExcel(CurClass, SaveDialog.FileName);
end;

procedure TfrmMain.aAboutExecute(Sender: TObject);
begin
  ShowAboutBox;
end;

procedure TfrmMain.aImportExecute(Sender: TObject);
begin
  ImportDataFromExcel(DM.adSSCard, CurClass);
end;

procedure TfrmMain.aMoveClassExecute(Sender: TObject);
const
  Hint_MoveClass = '所选学生已经转班到"%s"!';
var
  NewClassName: string;
begin
  if GridCard.SelectedRows.Count>0 then begin
    NewClassName := SelectClass;
    if (NewClassName <> '') and (NewClassName <> CurClass) then begin
      MoveClass(DM.adSSCard, GridCard.SelectedRows, NewClassName);
      showmessage(format(Hint_MoveClass, [NewClassName]));
    end;
  end;
end;

procedure TfrmMain.aPrintExecute(Sender: TObject);
begin
  if FileExists(ReportFileName) then begin
    frVariables['SchoolCity'] := SchoolInfo.City;
    frVariables['SchoolName'] := SchoolInfo.Name;
    DM.frReport.LoadFromFile(ReportFileName);
    DM.frReport.ShowReport;
  end;
end;

end.

⌨️ 快捷键说明

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