Материал: Автоматизация процесса контроля знаний учащихся ГОУ СОШ №21 г. Смоленск

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
83
frmStart.ADOBaseOsn.Open; Открываем базу.
end;
end;
end;
ПРОЦЕДУРА ВЫБОР МЕСЯЦА.
Эта процедура позволяет пользователю выбирать месяц обучения и
просматривать успеваемость. Изменение текущего месяца происходит с помощью
выпадающего списка (Combobox) и кнопок прокрутки.
procedure TfrmGlav.MesChange(Sender: TObject);
Потребуются следующие переменные:
n- текущий месяц
с - выбранный месяц
var
n,i:integer
begin;
c:=Mes.ItemIndex+1; В переменную c заносим значение индекса переменной
Mes и прибавляем 1.
Начинаем отображение столбцов через цикл.
for i:=3 to DBGrid1.Columns.Count-1 do
begin
n:=strtoint(copy(DBGrid1.Columns[i].FieldName,4,2)); Получаем в переменную n
имена столбцов (месяцы)
if n<>c then DBGrid1.Columns[i].Visible:=false Сравниваем две полученные
переменные, если условие выполняется то скрываем столбцы.
else
begin
DBGrid1.Columns[i].Visible:=True; Если не выполняется то отображаем.
DBGrid1.Columns[i].Title.Caption:=copy(DBGrid1.Columns[i].FieldName,1,2);
DBGrid1.Columns[i].Width:=20; Устанавливаем ширину столбцов.
end;
end;
end;
Переключение месяца клавишами.
На предыдущий.
Просто вычитаем из индекса месяца 1
procedure TfrmGlav.SpeedButton1Click(Sender: TObject);
begin
if Mes.ItemIndex<11 then
Mes.ItemIndex:=Mes.ItemIndex+1;
MesChange(Mes);
end;
На следующий.
84
Прибавляем 1
procedure TfrmGlav.SpeedButton2Click(Sender: TObject);
begin
if mes.ItemIndex>0 then
Mes.ItemIndex:=Mes.ItemIndex-1;
MesChange(Mes);
end;
ПРОЦЕДУРА ВВОД ОЦЕНКИ.
Позволяет вносить в базу оценки, предупреждая ошибки ввода.
procedure TfrmGlav.DBGrid1DblClick(Sender: TObject);
var
vvocenka,StrMessage:string; Введенная оценка
begin
При двойном клике по ячейке таблицы выдается окно ввода
if InputQuery('Ввод оценки', 'Введите оценку:', vvocenka) then
Если введенный текст не является цифрой от 1 до 5, появляется сообщение об
ошибке.
if (StrToInt(vvocenka) > 5) or (StrToInt(vvocenka)<0) then
begin
StrMessage:='Не правильно введена оценка';
MessageDlg( StrMessage, mterror, [mbOk], 0);
end
else
begin
85
ADOTable1.Edit; Разрешить редактирование базы
Если нет ошибки, то оценка записывается в базу
ADOTable1.FieldValues[copy(DBGrid1.Columns[DBGrid1.SelectedIndex].FieldNam
e,1,10)] := vvocenka;
Если оценка равна 0, то оценка удаляется
if vvocenka = '0' then
ADOTable1.FieldValues[copy(DBGrid1.Columns[DBGrid1.SelectedIndex].FieldName,1,10)]
:= null;
ADOTable1.Post; Происходит сохранение базы
end;
end;
ПРОЦЕДУРА ВСЕ ОЦЕНКИ.
Необходимо применять, когда необходимо отобразить все оценки одновременно.
procedure TfrmGlav.SpeedButton3Click(Sender: TObject);
var i:integer;
begin
for i:=3 to DBGrid1.Columns.Count-1 do
begin
DBGrid1.Columns[i].Visible:=true; Отображаем все столбцы.
DBGrid1.Columns[i].Width:=20; Устанавливаем ширину.
end;
end;
end.
ПРОЦЕДУРА ДОБАВЛЕНИЕ ГРУППЫ.
Выполняет добавление в базу таблицу новой группы.
procedure TfrmStud.SpeedButton2Click(Sender: TObject);
var
s - наименование новой группы.
s:string;
begin
if MessageBox(handle,'Вы действительно хотите добавить новую
группу?','...',MB_ICONQUESTION or MB_YESNO)=mrYes then
Выводится вопросительное сообщение.
86
begin
s:=InputBox('...','Введите номер группы:','');
Номер класса запоминается в переменной s.
if s<>'' then
frmStart.ADOTGroup.AppendRecord([nil,s]); Добавляется запись.
end;
end;
ПРОЦЕДУРА УДАЛЕНИЕ ГРУППЫ.
procedure TfrmStud.SpeedButton1Click(Sender: TObject);
begin
Выводится вопросительное сообщение.
if MessageBox(handle,PChar('Вы действительно хотите удалить группу
"'+grupp.text+'" ?'),'...',MB_ICONQUESTION or MB_YESNO)=mrYes then
begin
frmStart.ADOTGroup.Delete; Удаляется запись.
end;
end;
ПРОЦЕДУРА ДОБАВЛЕНИЕ, УДАЛЕНИЕ ЗАПИСИ.
procedure TfrmStud.SpeedButton4Click(Sender: TObject);
var
StrMessage:string;
begin
if Grupp.text = '' then
begin
87
StrMessage:='Не выбрана группа';
MessageDlg( StrMessage, mterror, [mbOk], 0);
end
else
begin
ADOStud.AppendRecord([nil,nil,Grupp.text,nil]); Добавляется запись
end;
end;
procedure TfrmStud.SpeedButton5Click(Sender: TObject);
begin
ADOStud.Delete();Удаляется запись
end;
ПРОЦЕДУРА ВЫБОР ОТКРЫВАЕМОЙ ТАБЛИЦЫ
procedure TfrmStart.BitBtn1Click(Sender: TObject);
var
_name:string;
st:TStrings;
i:integer;
tab1,tab2:boolean;
begin
if grup.Text='' then exit; Если группа не выбрана выйти
if Cmb_Predm.Text='' then exit; Если предмет не выбран выйти
tab1:=false;
tab2:=tab1;
frmGlav.ADOTable1.Close; Закрыть таблицу предмет
frmTema.ADOTema.Close; и тема занятий
Получим имя таблицы из таблицы «Предметы»
и добавим номер группы
_Name := ADOTPredm.Fields[2].AsString+
Grup.Text;
st := TStringList.Create; Создать класс массив строк получим список таблиц из
базы.
ADOBaseOsn.GetTableNames(st);
В цикле попытаемся найти нужные таблицы в базе
и если находим, то переходим на другую форму
for i:=0 to st.count-1 do
begin
if st[i]=_name then tab1:=true
else if st[i]='Тема занятия '+_name then tab2:=true;
Открываем эту таблицу
if (tab1) and (tab2) then
Источник: https://baza.diplomsite.ru/previewfile/2097