// 通过遍历将各TComboBox对象的Style属性设置为列表方式, 并清空列表
for iLoop := 0 to PnlParameter.ControlCount-1 do begin
if PnlParameter.Controls[iLoop] is TComboBox then begin
(PnlParameter.Controls[iLoop] As TComboBox).Style:=csDropDownList;
(PnlParameter.Controls[iLoop] As TComboBox).Items.Clear;
end;
end;
if BtnSearch.Tag =3 then // 补考
ADODataSet.Filtered := True;
with DMServerDB do begin
ADODataSet.Connection := ADOConnection; // 设置连接对象
// 调用CreateItems过程动态设置考试类型对象的Items属性
ADODataSetAchievementType.Open;
CreateItems(ADODataSetAchievementType, ComboBoxAchievementType.Items,'AchievementTypeID;AchievementTypeName');
ComboBoxAchievementType.ItemIndex := 0;
ADODataSetDepartment.Open; // 填充学院列表框
ComboBoxDepartment.ItemIndex :=
CreateItems(ADODataSetDepartment, ComboBoxDepartment.Items,'DepartmentID;DepartmentName',False,True,True);
end;
StatusBar.Panels[1].Text := '请先选择要查询的项目,项目之间为与关系';
ComboBoxDepartmentChange( ComboBoxDepartment );
// 学生不能查询其他班级的成绩
ComboBoxDepartment.Enabled := (UserType=1);
ComboBoxSpeciality.Enabled := ComboBoxDepartment.Enabled;
ComboBoxClass.Enabled := ComboBoxDepartment.Enabled;
SBtnStatistics.Enabled := False; // 先查询,再统计和打印
SBtnReportCard.Enabled := False;
end;
⑷ 编写ComboBoxDepartment(学院)、ComboBoxSpeciality(专业)和ComboBoxClass(班级)列表框的OnChange事件。因为这三个项目相互依赖性很强,所以将这三个列表框的OnChange事件设计成共享事件,通过其Tag属性加以识别,相关代码如下:
procedure TFormSearchAchievement.ComboBoxDepartmentChange(Sender: TObject);
var
iSearchItem : Integer;
SQLWhere : String;
// 定义动态生成学年信息XXXX-YYYY(1)的过程
procedure CreateTermItems(EntranceYear: SmallInt);
Var i : Integer;
|