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

📄 mainu.~pas

📁 源代码竟供大家参考
💻 ~PAS
字号:
unit MainU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ComCtrls, StdCtrls, dbcgrids, DBCtrls, Mask, DB, ADODB,
  DBActns, ActnList;

type
  TFrmMain = class(TForm)
    Timer1: TTimer;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    Panel1: TPanel;
    DBCtrlGrid1: TDBCtrlGrid;
    DBCtrlGrid2: TDBCtrlGrid;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText3: TDBText;
    DBText4: TDBText;
    DBText5: TDBText;
    DBText6: TDBText;
    DBCheckBox1: TDBCheckBox;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DBCheckBox2: TDBCheckBox;
    DBText7: TDBText;
    DBCheckBox3: TDBCheckBox;
    DBCheckBox4: TDBCheckBox;
    DBCheckBox5: TDBCheckBox;
    DBText8: TDBText;
    DBText9: TDBText;
    DBText10: TDBText;
    DBText11: TDBText;
    DBText12: TDBText;
    DBCtrlGrid3: TDBCtrlGrid;
    DBText13: TDBText;
    Panel_SCComment: TPanel;
    Panel_MCComment: TPanel;
    Panel_JComment: TPanel;
    DBComboBox1: TDBComboBox;
    DBEdit1: TDBEdit;
    Label1: TLabel;
    Label7: TLabel;
    DBCheckBox7: TDBCheckBox;
    DBCheckBox8: TDBCheckBox;
    DBCheckBox9: TDBCheckBox;
    DBText17: TDBText;
    DBText18: TDBText;
    DBText19: TDBText;
    Label8: TLabel;
    DBText20: TDBText;
    Label9: TLabel;
    Label10: TLabel;
    DBText21: TDBText;
    DBText22: TDBText;
    Timer2: TTimer;
    StatusBar1: TStatusBar;
    BtnSubmit: TButton;
    BtnGrade: TButton;
    DBComboBox2: TDBComboBox;
    PanelSC: TPanel;
    Panel2: TPanel;
    DBText14: TDBText;
    Panel3: TPanel;
    DBText15: TDBText;
    DBText16: TDBText;
    DBText23: TDBText;
    DBText24: TDBText;
    DBText25: TDBText;
    DBText26: TDBText;
    DBText27: TDBText;
    DBText28: TDBText;
    DBRadioGroup1: TDBRadioGroup;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    ActionList1: TActionList;
    DataSetFirst1: TDataSetFirst;
    DataSetPrior1: TDataSetPrior;
    DataSetNext1: TDataSetNext;
    DataSetLast1: TDataSetLast;
    PanelMC: TPanel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    DBText29: TDBText;
    DBText30: TDBText;
    DBCheckBox6: TDBCheckBox;
    DBCheckBox10: TDBCheckBox;
    DBText31: TDBText;
    DBCheckBox11: TDBCheckBox;
    DBText32: TDBText;
    DBCheckBox12: TDBCheckBox;
    DBText33: TDBText;
    DBCheckBox13: TDBCheckBox;
    DBText34: TDBText;
    DBCheckBox14: TDBCheckBox;
    DBText35: TDBText;
    DBCheckBox15: TDBCheckBox;
    DBText36: TDBText;
    DBCheckBox16: TDBCheckBox;
    DBText37: TDBText;
    Panel4: TPanel;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    ActionList2: TActionList;
    DataSetFirst2: TDataSetFirst;
    DataSetPrior2: TDataSetPrior;
    DataSetNext2: TDataSetNext;
    DataSetLast2: TDataSetLast;
    PanelJ: TPanel;
    Panel5: TPanel;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    ActionList3: TActionList;
    DataSetFirst3: TDataSetFirst;
    DataSetPrior3: TDataSetPrior;
    DataSetNext3: TDataSetNext;
    DataSetLast3: TDataSetLast;
    DBEdit2: TDBEdit;
    Label11: TLabel;
    DBText38: TDBText;
    DBRadioGroup2: TDBRadioGroup;
    procedure FormResize(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure BtnSubmitClick(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure BtnGradeClick(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
  private
    { Private declarations }
    procedure Submit();
  public
    { Public declarations }
  end;

var
  FrmMain: TFrmMain;
  nTimeRemain: integer;

implementation

uses dmU, GlobalU, LockU;

{$R *.dfm}

procedure TFrmMain.FormResize(Sender: TObject);
begin
  case SysSetup.SCItemCnt of
    4: DBCtrlGrid1.RowCount := DBCtrlGrid1.Height div 105;
    5: DBCtrlGrid1.RowCount := DBCtrlGrid1.Height div 125;
    6: DBCtrlGrid1.RowCount := DBCtrlGrid1.Height div 145;
    7: DBCtrlGrid1.RowCount := DBCtrlGrid1.Height div 165;
    8: DBCtrlGrid1.RowCount := DBCtrlGrid1.Height div 187;
  end;
  case SysSetup.MCItemCnt of
    4: DBCtrlGrid2.RowCount := DBCtrlGrid1.Height div 105;
    5: DBCtrlGrid2.RowCount := DBCtrlGrid1.Height div 125;
    6: DBCtrlGrid2.RowCount := DBCtrlGrid1.Height div 145;
    7: DBCtrlGrid2.RowCount := DBCtrlGrid1.Height div 165;
    8: DBCtrlGrid2.RowCount := DBCtrlGrid1.Height div 187;
  end;
  DBCtrlGrid3.RowCount := DBCtrlGrid1.Height div 56;
end;

procedure TFrmMain.FormShow(Sender: TObject);
begin
  Resize;
end;

procedure TFrmMain.FormCreate(Sender: TObject);
var
  sqlstr: string;
begin
  case SysSetup.SCItemCnt of
    5: begin
         DBComboBox1.Items.Add('E');
         Label6.Visible := true;
         DBText6.Visible := true;

         DBRadioGroup1.Items.Add('E');
         DBRadioGroup1.Values.Add('E');

         DBRadioGroup1.Height := 162;
         Panel3.Height := 134;
       end;
    6: begin
         DBComboBox1.Items.Add('E');
         DBComboBox1.Items.Add('F');
         Label6.Visible := true;
         DBText6.Visible := true;
         Label8.Visible := true;
         DBText20.Visible := true;

         DBRadioGroup1.Items.Add('E');
         DBRadioGroup1.Items.Add('F');
         DBRadioGroup1.Values.Add('E');
         DBRadioGroup1.Values.Add('F');

         DBRadioGroup1.Height := 190;
         Panel3.Height := 162;
       end;
    7: begin
         DBComboBox1.Items.Add('E');
         DBComboBox1.Items.Add('F');
         DBComboBox1.Items.Add('G');
         Label6.Visible := true;
         DBText6.Visible := true;
         Label8.Visible := true;
         DBText20.Visible := true;
         Label9.Visible := true;
         DBText21.Visible := true;

         DBRadioGroup1.Items.Add('E');
         DBRadioGroup1.Items.Add('F');
         DBRadioGroup1.Items.Add('G');
         DBRadioGroup1.Values.Add('E');
         DBRadioGroup1.Values.Add('F');
         DBRadioGroup1.Values.Add('G');

         DBRadioGroup1.Height := 215;
         Panel3.Height := 185;
       end;
    8: begin
         DBComboBox1.Items.Add('E');
         DBComboBox1.Items.Add('F');
         DBComboBox1.Items.Add('G');
         DBComboBox1.Items.Add('H');
         Label6.Visible := true;
         DBText6.Visible := true;
         Label8.Visible := true;
         DBText20.Visible := true;
         Label9.Visible := true;
         DBText21.Visible := true;
         Label10.Visible := true;
         DBText22.Visible := true;

         DBRadioGroup1.Items.Add('E');
         DBRadioGroup1.Items.Add('F');
         DBRadioGroup1.Items.Add('G');
         DBRadioGroup1.Items.Add('H');
         DBRadioGroup1.Values.Add('E');
         DBRadioGroup1.Values.Add('F');
         DBRadioGroup1.Values.Add('G');
         DBRadioGroup1.Values.Add('H');

         DBRadioGroup1.Height := 241;
         Panel3.Height := 213;
       end;
  end;

  case SysSetup.MCItemCnt of
    5: begin
          DBCheckBox5.Visible := true;
          DBText12.Visible := true;
          
          DBCheckBox12.Visible := true;
          DBText34.Visible := true;
       end;
    6: begin
          DBCheckBox5.Visible := true;
          DBText12.Visible := true;
          DBCheckBox7.Visible := true;
          DBText17.Visible := true;

          DBCheckBox12.Visible := true;
          DBText34.Visible := true;
          DBCheckBox13.Visible := true;
          DBText35.Visible := true;
       end;
    7: begin
          DBCheckBox5.Visible := true;
          DBText12.Visible := true;
          DBCheckBox7.Visible := true;
          DBText17.Visible := true;
          DBCheckBox8.Visible := true;
          DBText18.Visible := true;

          DBCheckBox12.Visible := true;
          DBText34.Visible := true;
          DBCheckBox13.Visible := true;
          DBText35.Visible := true;
          DBCheckBox14.Visible := true;
          DBText36.Visible := true;
       end;
    8: begin
          DBCheckBox5.Visible := true;
          DBText12.Visible := true;
          DBCheckBox7.Visible := true;
          DBText17.Visible := true;
          DBCheckBox8.Visible := true;
          DBText18.Visible := true;
          DBCheckBox9.Visible := true;
          DBText19.Visible := true;

          DBCheckBox12.Visible := true;
          DBText34.Visible := true;
          DBCheckBox13.Visible := true;
          DBText35.Visible := true;
          DBCheckBox14.Visible := true;
          DBText36.Visible := true;
          DBCheckBox15.Visible := true;
          DBText37.Visible := true;
       end;
  end;

  self.Panel_SCComment.Caption := SysSetup.SCComment;
  self.Panel_MCComment.Caption := SysSetup.MCComment;
  self.Panel_JComment.Caption := SysSetup.JComment;

  PageControl1.ActivePageIndex := 0;

  PanelSC.BringToFront;
  PanelMC.BringToFront;
  PanelJ.BringToFront;

  StudentInfo.StartTime := Now;
  sqlstr := format('update 考试记录 set 开始时间=''%s'' where 考生学号=''%s''',
            [FormatDatetime('yyyy"-"mm"-"dd hh":"mm":"ss',StudentInfo.StartTime),StudentInfo.ID]) ;
  dmglobal.Query_Exec.Close;
  dmglobal.Query_Exec.SQL.Clear;
  dmglobal.Query_Exec.SQL.Add(sqlstr);
  dmglobal.Query_Exec.ExecSQL();
  dmglobal.Query_Exec.Close;
  dmglobal.Query_Exec.SQL.Clear;

  self.StatusBar1.Panels.Items[0].Text := '区队:'+StudentInfo.Team;
  self.StatusBar1.Panels.Items[1].Text := '姓名:'+StudentInfo.Name;
  self.StatusBar1.Panels.Items[2].Text := '学号:'+StudentInfo.ID;

  Timer1.Enabled := true;
end;

procedure TFrmMain.Timer1Timer(Sender: TObject);
begin
  self.StatusBar1.Panels.Items[3].Text := '当前时间:'+formatdatetime('yyyy-mm-dd hh:mm:ss',now);
  self.StatusBar1.Panels.Items[4].Text := '剩余时间:'+inttostr(StudentInfo.RemainTime div 60)+'分'+inttostr(StudentInfo.RemainTime mod 60)+'秒';
  if StudentInfo.RemainTime<=0 then
  begin
    submit();
  end;
  Dec(StudentInfo.RemainTime);
end;

procedure TFrmMain.BtnSubmitClick(Sender: TObject);
begin
  if MessageBox(Handle,pchar('确认现在卷吗?'),'提示',4+32+256)=7 then exit;
  Submit();
end;

procedure TFrmMain.Timer2Timer(Sender: TObject);
var
  sqlstr: string;
begin
  sqlstr := format('update 考试记录 set 剩余时间=%d where 考生学号=''%s''',
            [StudentInfo.RemainTime,StudentInfo.ID]) ;
  dmglobal.Query_Exec.Close;
  dmglobal.Query_Exec.SQL.Clear;
  dmglobal.Query_Exec.SQL.Add(sqlstr);
  dmglobal.Query_Exec.ExecSQL();
  dmglobal.Query_Exec.Close;
  dmglobal.Query_Exec.SQL.Clear;
end;

procedure TFrmMain.Submit;
var
  sqlstr: string;
begin
  self.Timer1.Enabled := false;
  self.Timer2.Enabled := false;
  self.BtnSubmit.Enabled := false;

  if dmglobal.ADOTable_SC.State in [dsEdit] then
    dmglobal.ADOTable_SC.Post;
  if dmglobal.ADOTable_MC.State in [dsEdit] then
    dmglobal.ADOTable_MC.Post;
  if dmglobal.ADOTable_J.State in [dsEdit] then
    dmglobal.ADOTable_J.Post;

  dmglobal.ADOTable_SC.Close;
  dmglobal.ADOTable_SC.ReadOnly := true;
  dmglobal.ADOTable_SC.Open;
  dmglobal.ADOTable_MC.close;
  dmglobal.ADOTable_MC.ReadOnly := true;
  dmglobal.ADOTable_MC.open;
  dmglobal.ADOTable_J.close;
  dmglobal.ADOTable_J.ReadOnly := true;
  dmglobal.ADOTable_J.open;
  self.BtnGrade.Enabled := true;    

  StudentInfo.RemainTime := 0;
  sqlstr := format('update 考试记录 set 剩余时间=%d,交卷时间=''%s'' where 考生学号=''%s''',
            [StudentInfo.RemainTime,FormatDatetime('yyyy"-"mm"-"dd hh":"mm":"ss',now),StudentInfo.ID]) ;
  dmglobal.Query_Exec.Close;
  dmglobal.Query_Exec.SQL.Clear;
  dmglobal.Query_Exec.SQL.Add(sqlstr);
  dmglobal.Query_Exec.ExecSQL();
  dmglobal.Query_Exec.Close;
  dmglobal.Query_Exec.SQL.Clear;

  with TFrmLock.Create(self) do
  try
    showmodal;
  finally
    free;
  end;
end;

procedure TFrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if BtnSubmit.Enabled then
  begin
    MessageBox(handle,'您还没有交卷!','提示',64);
    CanClose := false;
  end;
end;

procedure TFrmMain.BtnGradeClick(Sender: TObject);
var SCScore,MCScore,JScore,TotalScore: real;
    Msg: string;
begin
  if not GetScore(TotalScore,SCScore,MCScore,JScore) then exit;
  Msg := format('单选题得分:%10.2f'+#13+
                '复选题得分:%10.2f'+#13+
                '判断题得分:%10.2f'+#13+
                '总得分:%10.2f'+#13,
                [SCScore,MCScore,JScore,TotalScore]);
  MessageBox(handle,pchar(Msg),'提示',64);
end;

procedure TFrmMain.RadioButton1Click(Sender: TObject);
begin
  if RadioButton1.Checked then
  begin
    DBCtrlGrid1.BringToFront;
    DBCtrlGrid2.BringToFront;
    DBCtrlGrid3.BringToFront;
  end;
end;

procedure TFrmMain.RadioButton2Click(Sender: TObject);
begin
  if RadioButton2.Checked then
  begin
    PanelSC.BringToFront;
    PanelMC.BringToFront;
    PanelJ.BringToFront;
  end;
end;

end.

⌨️ 快捷键说明

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