Реферат Курсовая Конспект
If NewTestForm.TestTypeBox.ItemIndex=0 then - раздел Информатика, Собственные программы ScreenSaver и закрепим максимум из пройдённого материала на полезных в реальной жизни примерах Begin Questionresultform:=Tquestionresultform.create(Owner); Question...
|
begin QuestionResultForm:=TQuestionResultForm.Create(Owner); QuestionResultForm.ProjectName:=NewTestForm.TestNameEdit.Text; QuestionResultForm.Caption:=QuestionResultForm.Caption+' : '
+QuestionResultForm.ProjectName; end; end;
Здесь в первой строке я показываю окно создания нового проекта. Если пользователь выбрал первый тип теста «Вопрос -варианты ответа» (в моей книге он будет описан как единственный), то создаётся окно, в котором мы создаём вопросы. Потом я сохраняю имя выбранного проекта и изменяю заголовок окна.
Обработчики события кнопок «Редактировать» и «Удалить» вопросы я расписывать не буду, а только приведу их код с комментариями. Ты уже должен разобраться с этим кодом:
procedure TQuestionResultForm.EditButtonClick(Sender: TObject); var i:Integer;
begin //Здесь QuestionTreeView.Selected указывает на выделенный элемент //в дереве. Если он равен nil, то ничего не выделено, и нужно выйти if QuestionTreeView.Selected=nil then exit;
//Заполняю компонент QuestionEdit в окне редактирования вопросов
EditQuestionForm.QuestionEdit.Text:=PQuestion(QuestionTreeView.Selected.Data).Name;
//Очищаю список вариантов ответов в окне редактирования вопросов
EditQuestionForm.ResultListBox.Clear;
for i:=0 to PQuestion(QuestionTreeView.Selected.Data).ResultCount-1 do
begin
//Заполняю список вариантов ответов в окне редактирования вопросов
EditQuestionForm.ResultListBox.Items.Add(
PQuestion(QuestionTreeView.Selected.Data).ResiltText[i]);
//Если ответ верный, то ставлю галочку
if PQuestion(QuestionTreeView.Selected.Data).ResiltValue[i]=true then
EditQuestionForm.ResultListBox.Checked[i]:=true;
end;
//Отображаю окно редактирования вопроса
EditQuestionForm.ShowModal;
if EditQuestionForm.ModalResult<>mrOK then exit;
//Записываю информацию обратно в структуру PQuestion(QuestionTreeView.Selected.Data).Name:=EditQuestionForm.QuestionEdit.Text; PQuestion(QuestionTreeView.Selected.Data).ResultCount:=
EditQuestionForm.ResultListBox.Items.Count; for i:= 0 to PQuestion(QuestionTreeView.Selected.Data).ResultCount-1 do begin PQuestion(QuestionTreeView.Selected.Data).ResiltText[i]:= EditQuestionForm.ResultListBox.Items.Strings[i]; PQuestion(QuestionTreeView.Selected.Data).ResiltValue[i]:=
EditQuestionForm.ResultListBox.Checked[i];
end;
//Вызываю процедуру QuestionTreeViewChange, которая должна обновить //информацию в ResultView. Первый параметр нас не интересует, а второй //мы обязаны указать, потому что внутри процедуры QuestionTreeViewChange //мы используем его. Я указываю выделенный элемент. QuestionTreeViewChange(nil, QuestionTreeView.Selected);
end;
Единственное, что я здесь хочу отметить, так это то, что здесь я обращаюсь к структуре связанной с элементом через свойство Data выделенного элемента. Как я уже говорил, там храниться указатель на структуру. То же самое можно было бы делать, обращаясь через контейнер, просто в данном случае это будет не так удобно. Но всё же это возможно и на всякий случай я приведу пример, как можно обратиться к свойству Name:
– Конец работы –
Эта тема принадлежит разделу:
Глава Сплошная практика...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: If NewTestForm.TestTypeBox.ItemIndex=0 then
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов