⑻ 编写“重新计算”按钮的OnClick事件,用于当用户修改了成绩占比后,所有总评成绩需要重新计算,相关代码如下:
procedure TFormAchievement.SBtnReCalcClick(Sender: TObject);
var
i : Integer;
begin
if Not CalculatePercent then Exit;
for i := 0 to ScrollBox.ControlCount-1 do
if (ScrollBox.Controls[i] Is TEdit) then begin
if (ScrollBox.Controls[i] as TEdit).Tag Mod 10=0 then
EditAchievementChange( ScrollBox.Controls[i] as TEdit );
end;
end;
⑼ 编写“保存”按钮的OnClick事件,用于保存输入的所有学生成绩。若成绩表中不存在该学生的该课程成绩,则添加一个记录,否则修改原有记录,相关代码如下:
procedure TFormAchievement.SBtnSaveClick(Sender: TObject);
var
i, j, iCol : Integer;
EditTemp : TEdit;
begin
i:=0;
while i<ScrollBox.ControlCount do begin
if (ScrollBox.Controls[i] Is TEdit) then begin
EditTemp := ScrollBox.Controls[i] As TEdit;
// 是学号,每个学生从学号开始
if (EditTemp.Tag Mod 10=0) then begin
with DMServerDB do begin
// 查询成绩表中是否有该记录
if ADODataSetAchievement.Locate('StudentID;AchievementTypeID'
,VarArrayOf([EditTemp.Text,AchievementTypeID]), []) then
ADODataSetAchievement.Edit // 存在,则修改原有记录
else begin // 不存在,则添加
ADODataSetAchievement.Append;
ADODataSetAchievement.FieldValues['StudentID']:=EditTemp.Text;
ADODataSetAchievement.FieldByName('AchievementTypeID').AsString:=AchievementTypeID;
ADODataSetAchievement.FieldByName('PlanCourseOrder').AsString :=
TreeList[SelectNode.AbsoluteIndex];
end;
for j := i+2 to i+5 do begin // 处理4个成绩
EditTemp := ScrollBox.Controls[j] As TEdit;
iCol := EditTemp.Tag Mod 10;
if iCol In [2..4] then // 保存平时、期中和期末三个成绩
|