рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Procedure TTestEditorForm.ShowHint(Sender: TObject); begin

Procedure TTestEditorForm.ShowHint(Sender: TObject); begin - раздел Информатика, Собственные программы ScreenSaver и закрепим максимум из пройдённого материала на полезных в реальной жизни примерах Statusbar.panels.items[0].text := Application.hint; End;...

StatusBar.Panels.Items[0].Text := Application.Hint; end;

Здесь я отображаю текст текущей подсказки, который находиться в свойстве Hint объекта Application на нулевой панели строки состояния. У меня строка состояния состоит из двух панелей.

Теперь сделай нашу главную форму многодокументной. Для этого в свойстве FormStyle нужно установить значение fsMDIForm.

Можешь сразу же создать окно «О программе». Я это не буду описывать, потому что тут фантазия у каждого работает по-разному, а моё окно ты сможешь увидеть на диске вместе с исходником. Можешь ещё сразу создать обработчик события OnClick для кнопки выхода и написать там вызов метода Close, чтобы по нажатию этой кнопки наша программа закрывалась. Потом, эту же процедуру обработчик нужно назначит пункту меню «Выход».

На этом первые приготовления закончены. Теперь двинемся дальше. Создай новую форму (я её назвал NewTestForm), которая будет отображаться по нажатию кнопки «Создать». В этом окне нужно расположить строку ввода имени теста и выпадающий список для выбора типа теста. Я разместил все компоненты так, как показано на рисунке

У выпадающего списка я изменил свойство Style на csDropDownList для того, чтобы пользователь мог только выбирать уже имеющееся значение в списке и не мог вводить новое. В свойстве Items (список элементов) у меня будет только одна строка – «Вопрос -варианты ответа». В принципе, можно было бы не делать этот выпадающий список, раз там только один элемент, но я его поставил, чтобы ты потом мог расширить возможности программы.

Для кнопок «Да» и «Нет» я установил только свойство ModalResult в значения mrOk

и mrCancel соответственно. У самой формы я изменил свойства: Position на poMainFormCenter, чтобы окно показывалось по центру главного окна. BorderStyle на bsSingle, чтобы пользователь не мог изменять размеры окна. Эти свойства я буду менять у всех форм, которые будут отображаться модально.

Кнопки «Да» и «Нет» у таких окон тоже всегда будут иметь указанные выше значения свойства ModalResult, поэтому я больше не буду останавливаться на этих вещах. Просто помни, это.

Теперь возвращаемся в главную форму и по событию OnClick для кнопки создать пишем код отображения окна NewTestForm. Это окно нужно отображать как модальное. На этом остановимся и сделаем промежуточную паузу.

На компакт диске, в директорииПримерыГлава 25Test1Редакторты можешь увидеть исходник уже написанного примера.

Теперь создадим окно создания нового теста вопросов ответов. Создай новую форму и установи у неё следующие свойства: Caption – «Тест "Вопрос -варианты ответов"»

FormStylefsMDIChild, это у нас будет дочернее окно. NameQuestionResultForm.

По событию OnClose пишем следующий код:

procedure TQuestionResultForm.FormClose(Sender: TObject; var Action: TCloseAction);

begin Action:=caFree; QuestionResultForm:=nil;

end;

Здесь, в первой строке я устанавливаю переменной Action (эту переменную мы получаем в качестве параметра) значение caFree, чтобы окно могло закрыться. Дочерние окна по умолчанию не закрываются, а сворачиваются. Во второй строке я обнуляю переменную QuestionResultForm, которая указывает на объект окна.

Дочерние окна при старте автоматически становятся видимыми и отображаются в окне главного окна. Нам это не надо, потому что это окно должно появляться только после того, как пользователь нажмёт кнопку создания нового теста и подтвердит его создание. Для того, чтобы отключить форму от автоматического создания, мы должны войти в свойства проекта (Project->Options) и в появившемся окне переместить имя формы QuestionResultForm из списка Auto-create forms в список Available forms (рисунок 25.3.4).

Вот теперь перейдём к дизайну формы создания теста. Мою форму ты можешь увидеть на рисунке 25.3.4. В центре окна у меня находиться компонент TreeView растянутый по левому краю и ListView растянутый по всему оставшемуся контуру (clClient).Сверху окна расположена панель ToolBar со следующими кнопками:

1. 1. Создание вопроса.

2. 2. Редактирование.

3. 3. Удаление.

4. 4. Выход.

 

Выдели компонент ListView и установи у него следующие свойства:

1. 1. GridLinestrue.

2. 2. ViewStylevsReport.

3. 3. Name -ResultView.

 

После этого дважды щёлкни по свойству Columns и в появившемся окне создай две колонки с именами «Верно» и «Вариант ответа». У второй колонки установи свойство AutoSize в значение true.

Теперь объявим в разделе typeследующую структуру:

PQuestion=^TQuestion;

TQuestion=record Name: String[255]; ResultCount:Integer; ResiltText: array[0..10] of String[255]; ResiltValue: array[0..10] of boolean;

end;

Я объявил структуру TQuestion со следующими полями:

Name – здесь будет храниться вопрос.

ResultCount -количество вариантов ответов.

ResiltText – массив из строк для десяти вариантов ответов.

ResiltValue – массив из булевых переменных, указывающих, какие ответы верные.

Тут же объявлена переменная PQuestion, которая является указателем на структуру TQuestion.

Теперь в разделе publicобъявим следующие переменные:

public { Public declarations } ProjectName:String[255]; QuestionList:TList;

В переменной ProjectName будем хранить имя проекта. Список QuestionList будет использоваться для хранения структур типа PQuestion. Этот список должен инициализироваться по событию OnShow и уничтожаться по событию OnClose. Как это делать ты уже должен знать.

Теперь создаём форму для редактирования элементов, которую мы будет отображать на экране по нажатию кнопки «Создать вопрос» и «Редактировать вопрос». Мою форму ты можешь увидеть на рисунке 25.3.5.

Здесь находиться строка TEdit, для ввода текста вопроса и TCheckListBox для ввода вариантов ответа. По нажатию кнопки «Добавить» я буду показывать окно ввода нового варианта ответа:

– Конец работы –

Эта тема принадлежит разделу:

Собственные программы ScreenSaver и закрепим максимум из пройдённого материала на полезных в реальной жизни примерах

Глава Сплошная практика...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Procedure TTestEditorForm.ShowHint(Sender: TObject); begin

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Procedure TForm1.FormCreate(Sender: TObject); begin BGbitmap:=TBitmap.Create;//Инициализация
// Выставляем размеры картинки как у экрана BGbitmap.Width := Screen.Width; BGbitmap.Height := Screen.Height; DC := GetDC (0); Backgr

Procedure TForm1.FormCreate(Sender: TObject); begin BGbitmap:=TBitmap.Create;//Инициализация
// Выставляем размеры картинки как у экрана BGbitmap.Width := Screen.Width; BGbitmap.Height := Screen.Height; DC := GetDC (0); Backgr

TempPanel.Width:=20; //Устанавливаю ширину TempPanel.Height:=20; //Устанавливаю высоту
//Далее устанавливаю обработчик нажатия на эту панель TempPanel.OnMouseDown:=PanelMouseDown; //Добавляю панель в контейнер CompList (CompList.Add) //

If Button=mbRight then
begin index:=TPanel(Sender).Tag; TPanel(CompList.Items[index]).Free; CompList.Delete(index); for i:=index to CompList.Count -1 do TPanel(Co

Procedure TTestEditorForm.ShowHint(Sender: TObject); begin
StatusBar.Panels.Items[0].Text := Application.Hint; end; Здесь я отображаю текст текущей подсказки, который находиться в свойстве Hint объекта Application на

Добавляю новый элемент в дерево вопросов with QuestionTreeView.Items.Add(nil, NewQuest.Name) do
begin ImageIndex:=0; Data:=NewQuest; end; end; В самом начале я очищаю элементы управления окна EditQuestionForm. Потом

Запускаю цикл, по которому заполняются данные списка for i:=0 to PQuestion(node.Data).ResultCount-1 do with ResultView.Items.Add do
begin Caption:=PQuestion(node.Data).ResiltText[i]; if PQuestion(node.Data).ResiltValue[i]=true then begin SubItems.Add('Да'); ImageInd

If NewTestForm.TestTypeBox.ItemIndex=0 then
begin QuestionResultForm:=TQuestionResultForm.Create(Owner); QuestionResultForm.ProjectName:=NewTestForm.TestNameEdit.Text; QuestionResultForm.Caption:=QuestionResultForm.Caption+' : '

PQuestion(QuestionList[QuestionTreeView.Selected.Index]).Name
Здесь я использую контейнер QuestionList. В квадратных скобках у него я указываю индекс элемента из контейнера, который мне нужен. Здесь я указываю индекс выделенного в дереве элемента Qu

Procedure TTestEditorForm.SaveAsMenuClick(Sender: TObject); begin if SaveDialog1.Execute then
begin TQuestionResultForm(ActiveMDIChild).FileName:=SaveDialog1.FileName; SaveButtonClick(nil); end; end; Здесь я отображаю окно выбора имени фай

Создаю новый элемент в дереве with QuestionResultForm.QuestionTreeView.Items.Add(nil, NewQuest.Name) do
begin ImageIndex:=0; Data:=NewQuest; end; end; finally //Закрываю файл fs.Free;

Private
{ Private declarations } QuestionList:TList; Question, QuestionNumber, FalseNumber:Integer; FileName:String; Разберём,

Procedure TTestForm.RunButtonClick(Sender: TObject); begin
LoadFile; QuestionNumber:=0; FalseNumber:=0; NextButton.Enabled:=true; NextQuestion;

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги