你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 跟高手学编程
数据输入界面设计(十四)
 

编写“考试类型”对象ComboBoxAchievementTypeOnChange事件,用于输入不同考试类型的成绩。除正常考试外,其他的考试类型(如补考、重修等)必须是上一种考试类型不及格的学生。每个学生动态创建5TEdit对象,前两个用于显示学生学号和姓名,中间的三个用于每位学生平时、期中和期末成绩的输入,最后一个用于显示计算得到的总评成绩。计算成绩的工作由这些TEdit对象的OnChange事件完成,但程序设计时无法知道到底要动态创建多少个TEdit对象,因此无法在设计时为这些TEdit对象一一设计OnChange事件,所以必须在程序中为每个输入对象动态设置OnChange事件,相关代码如下:

procedure TFormAchievement.ComboBoxAchievementTypeChange(Sender: TObject);

var

  iPos, iAchievementTypeID, j :     Integer;

begin

// 若成绩占比部和不足100,则退出

if Not CalculatePercent then Exit;

 // 释放为输入前一班级学生成绩所创建输入框所占用的内存

 FreeEditAchievement();

 // 计算考试类型的ID

 iPos := pos(' ', ComboBoxAchievementType.Text);

 AchievementTypeID := Copy(ComboBoxAchievementType.Text,1,iPos-1);

 iAchievementTypeID := StrToInt(AchievementTypeID);

 with DMServerDB do begin

  ADODataSetStudent.Close;

  // 过滤出该班的学生

  case iAchievementTypeID of

   1: Begin // 正常考试

    strSQL:='Select StudentID, StudentName from Student Where ClassID=''';

    strSQL:=strSQL+TreeList[SelectNode.Parent.AbsoluteIndex]+'''';

    strSQL:=strSQL+' Order By StudentID';

      End;

   else Begin // 补考等

    strSQL:='Select A.StudentID, StudentName';

    strSQL:=strSQL+' FROM Achievement A INNER JOIN';

    strSQL:=strSQL+' Student Stu ON A.StudentID = Stu.StudentID';

    strSQL:=strSQL+' Where PlanCourseOrder='+TreeList[SelectNode.AbsoluteIndex];

    strSQL:=strSQL+' And Achievement<60 And AchievementTypeID='+IntToStr(iAchievementTypeID);

    strSQL:=strSQL+' And Stu.ClassID='''+TreeList[SelectNode.Parent.AbsoluteIndex]+'''';

    strSQL:=strSQL+' Order By A.StudentID';

      End;

  end;

  ADODataSetStudent.CommandText := strSQL;

  ADODataSetStudent.Open;

  // 学生的个数

  StatusBar.Panels[3].Text:=IntToStr(ADODataSetStudent.RecordCount);

  // 根据学生人数设置EditAchievement动态数据的大小

  SetLength(EditAchievement, ADODataSetStudent.RecordCount);

  // 从课程成绩表Achievement中取出该课程的学生成绩

  ADODataSetAchievement.Close;

  strSQL:='SELECT * FROM Achievement Where PlanCourseOrder='+TreeList[SelectNode.AbsoluteIndex];

  strSQL:=strSQL+' And AchievementTypeID='+AchievementTypeID+' And StudentID IN';

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089