📄 mainu.~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 + -