📄 formscoremanage.pas
字号:
unit FormScoreManage;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBTables, StdCtrls, Grids, DBGrids, DBCtrls, ExtCtrls, Mask;
type
TfrmScoreManage = class(TForm)
GroupBox1: TGroupBox;
dbgScore: TDBGrid;
btnQuit: TButton;
tblCourse: TTable;
dbgCourse: TDBGrid;
qryCourseInfo: TQuery;
dsCourseInfo: TDataSource;
dbtClassID: TDBText;
dbtClassName: TDBText;
dbtBeginDate: TDBText;
dbtDepartName: TDBText;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
qryScore: TQuery;
dsScoreList: TDataSource;
dsCourse: TDataSource;
DBText2: TDBText;
Label8: TLabel;
dbgClass: TDBGrid;
dbeStudentID: TDBEdit;
Label5: TLabel;
dbnScore: TDBNavigator;
Label7: TLabel;
dbeScore: TDBEdit;
qryClass: TQuery;
dsClass: TDataSource;
Label2: TLabel;
tblScore: TTable;
dsScore: TDataSource;
qryValid: TQuery;
procedure tblCourseAfterScroll(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure btnQuitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure qryClassAfterScroll(DataSet: TDataSet);
procedure qryScoreAfterScroll(DataSet: TDataSet);
procedure tblScoreBeforePost(DataSet: TDataSet);
procedure tblScoreAfterPost(DataSet: TDataSet);
procedure qryClassAfterOpen(DataSet: TDataSet);
procedure qryScoreAfterOpen(DataSet: TDataSet);
procedure dbnScoreClick(Sender: TObject; Button: TNavigateBtn);
procedure tblScoreAfterScroll(DataSet: TDataSet);
procedure tblScoreBeforeDelete(DataSet: TDataSet);
procedure tblScoreAfterOpen(DataSet: TDataSet);
procedure tblScoreAfterDelete(DataSet: TDataSet);
procedure tblCourseAfterOpen(DataSet: TDataSet);
private
procedure ToggleMode;
public
{ Public declarations }
end;
var
frmScoreManage: TfrmScoreManage;
implementation
{$R *.dfm}
procedure TfrmScoreManage.FormShow(Sender: TObject);
begin
tblCourse.Active := true;
end;
procedure TfrmScoreManage.btnQuitClick(Sender: TObject);
begin
Close;
end;
procedure TfrmScoreManage.FormClose(Sender: TObject; var Action: TCloseAction);
begin
tblCourse.Active := false;
end;
{tblCourse}
procedure TfrmScoreManage.tblCourseAfterOpen(DataSet: TDataSet);
begin
qryCourseInfo.Active := false;
qryClass.Active := false;
end;
procedure TfrmScoreManage.tblCourseAfterScroll(DataSet: TDataSet);
begin
qryCourseInfo.Active := false;
qryCourseInfo.ParamByName('CourseID').AsString := tblCourse.FieldByName('CourseID').AsString;
qryCourseInfo.Active := true;
qryClass.Active := false;
qryClass.ParamByName('CourseID').AsString := tblCourse.FieldByName('CourseID').AsString;
qryClass.Active := true;
end;
{qryClass}
procedure TfrmScoreManage.qryClassAfterOpen(DataSet: TDataSet);
begin
tblScore.Active := false;
qryScore.Active := false;
end;
procedure TfrmScoreManage.qryClassAfterScroll(DataSet: TDataSet);
begin
qryScore.Active := false;
qryScore.ParamByName('CourseID').AsString := tblCourse.FieldByName('CourseID').AsString;
qryScore.ParamByName('classID').AsString := qryClass.FieldByName('ClassID').AsString;
qryScore.Active := true;
end;
{qryScore}
procedure TfrmScoreManage.qryScoreAfterOpen(DataSet: TDataSet);
begin
tblScore.Active := false;
if qryScore.Eof then
begin
tblScore.Filter := 'ID=-1';
tblScore.Filtered := true;
tblScore.Active := true;
end;
end;
procedure TfrmScoreManage.qryScoreAfterScroll(DataSet: TDataSet);
begin
tblScore.Active := false;
tblScore.Filter := 'ID=' + qryScore.FieldByName('ID').AsString + '';
tblScore.Filtered := true;
tblScore.Active := true;
end;
{tblScore}
procedure TfrmScoreManage.ToggleMode;
procedure EnableInput(Enabled: Boolean);
begin
dbgScore.Enabled := not Enabled;
dbeStudentID.Enabled := Enabled;
dbeScore.Enabled := Enabled;
end;
begin
case tblScore.State of
dsInsert, dsEdit:
begin
EnableInput(true);
dbnScore.VisibleButtons := [nbPost, nbCancel];
dbeStudentID.SetFocus;
end;
else
EnableInput(false);
dbnScore.VisibleButtons := [nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh];
end;
if tblScore.State = dsInsert then
begin
dbeStudentID.Text := qryClass.FieldByName('ClassID').AsString;
dbeStudentID.SelStart := Length(dbeStudentID.Text);
dbeStudentID.SetFocus;
end;
end;
procedure TfrmScoreManage.tblScoreAfterOpen(DataSet: TDataSet);
begin
ToggleMode;
end;
procedure TfrmScoreManage.tblScoreAfterScroll(DataSet: TDataSet);
begin
ToggleMode;
end;
procedure TfrmScoreManage.dbnScoreClick(Sender: TObject; Button: TNavigateBtn);
begin
ToggleMode;
end;
procedure TfrmScoreManage.tblScoreBeforeDelete(DataSet: TDataSet);
var
strMsg: string;
begin
strMsg := '是否确定要删除学生成绩?'#13;
strMsg := strMsg + Format(' 课程名称:%s'#13, [tblCourse['CourseName']]);
strMsg := strMsg + Format(' 学生姓名:%s'#13, [qryScore['Name']]);
strMsg := strMsg + Format(' 考试成绩:%s', [tblScore['Score']]);
if MessageDlg(strMsg, mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
Abort;
end;
procedure TfrmScoreManage.tblScoreAfterDelete(DataSet: TDataSet);
begin
qryScore.Active := false;
qryScore.Active := true;
end;
procedure TfrmScoreManage.tblScoreBeforePost(DataSet: TDataSet);
procedure CheckField(FieldName, FieldDesc: string; dbText: TCustomEdit);
begin
dbText.Text := Trim(dbText.Text);
dbText.Text := StringReplace(dbText.Text, '''', '', [rfReplaceAll]);
dbText.Text := StringReplace(dbText.Text, ' ', '', [rfReplaceAll]);
if dbText.Text = '' then
begin
ShowMessageFmt('“%s”不能为空,请输入足够的信息!', [FieldDesc]);
dbText.SetFocus;
Abort;
end
else
tblScore.FieldByName(FieldName).AsString := dbText.Text;
end;
begin
CheckField('StudentID', '学号', dbeStudentID);
CheckField('Score', '考试成绩', dbeScore);
qryValid.Active := false;
qryValid.SQL.Clear;
qryValid.SQL.Add('SELECT * FROM Student ');
qryValid.SQL.Add(' WHERE StudentID=''' + dbeStudentID.Text + '''');
qryValid.SQL.Add(' AND ClassID=''' + qryClass.FieldByName('ClassID').AsString + ''';');
qryValid.Active := true;
if qryValid.Eof then
begin
ShowMessage('该学生不属于这个班级!');
dbeStudentID.SetFocus;
Abort;
end;
qryValid.Active := false;
if dbeStudentID.Modified then
begin
qryValid.SQL.Clear;
qryValid.SQL.Add('SELECT * FROM Score ');
qryValid.SQL.Add(' WHERE StudentID=''' + dbeStudentID.Text + '''');
qryValid.SQL.Add(' AND CourseID=''' + tblCourse.FieldByName('CourseID').AsString + ''';');
qryValid.Active := true;
if not qryValid.Eof then
begin
ShowMessage('该学生的成绩已经存在!');
dbeStudentID.SetFocus;
Abort;
end;
qryValid.Active := false;
end;
tblScore.FieldByName('CourseID').AsString := tblCourse['CourseID'];
end;
procedure TfrmScoreManage.tblScoreAfterPost(DataSet: TDataSet);
begin
qryScore.Active := false;
qryScore.Active := true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -