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

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

Добавляю новый элемент в дерево вопросов with QuestionTreeView.Items.Add(nil, NewQuest.Name) do

Добавляю новый элемент в дерево вопросов with QuestionTreeView.Items.Add(nil, NewQuest.Name) do - раздел Информатика, Собственные программы ScreenSaver и закрепим максимум из пройдённого материала на полезных в реальной жизни примерах Begin Imageindex:=0; Data:=Newquest; ...

begin
ImageIndex:=0;
Data:=NewQuest;

end; end;

В самом начале я очищаю элементы управления окна EditQuestionForm. Потом я отображаю это окно, и если пользователь ввёл название вопроса и нажал ОК, то нужно обработать введённую информацию. Для начала выделяется память под переменную NewQuest. Эта переменная объявлена как PQuestion, а это указатель на структуру ТQuestion. Как ты знаешь, любые указатели создаются пустыми и чтобы они на что-то указывали, им надо выделять память. Я выделяю память с помощью функции New. Этой функции нужно передать в качестве параметра подо что нужно выделять память. Я указываю наш указатель PQuestion, по которому функция определит, сколько памяти надо выделить. Результат выполнения функции – указатель на выделенную память, который я сохраняю в переменной NewQuest.

Если нужно уничтожить выделенную память, то мы должны вызвать процедуру Dispose и передать ей переменную, которую нужно уничтожить, например Dispose(NewQuest). Но мне не надо уничтожать эту переменную, потому что она потом будет использоваться и я её добавляю в список QuestionList типа TList.

После того, как я выделил память для структуры NewQuest, я заполняю её поля в зависимости от введённой пользователем информации. Как только всё заполнено, я добавляю структуру в список:

QuestionList.Add(NewQuest);

После этого происходит самое интересное. Я должен создать новый элемент в дереве вопросов. Для этого выполняется следующий код:

with QuestionTreeView.Items.Add(nil, NewQuest.Name) do begin ImageIndex:=0; Data:=NewQuest; end;

Давай разберём этот код по частям. В первой строке я добавляю в дерево новый элемент с помощью вызова QuestionTreeView.Items.Add. В качестве параметров методу Add нужно передать указатель на родительский элемент в дереве и текст элемента. В качестве родительского элемента я передаю nilпотому что я буду создавать дерево без вложенных элементов. В качестве текста элемента я передаю текст вопроса.

Выполненный метод Add возвращает указатель на созданный элемент. И тут у меня стоит оператор with, который заставляет выполнять следующие действия с указанным объектом. Получается, что следующие действия между beginи endбудут выполняться с созданным элементом дерева вопросов. А у меня тут выполняется два действия:

ImageIndex:=0 – индексу иконки присваивается значение 0. Я бросил на форму список картинок ImageList, загрузил туда несколько картинок и указал этот список в свойстве Images нашего дерева. В этом коде я назначаю элементу первую картинку из созданного списка.

Data:=NewQuest – Свойство Data элемента дерева – это такое же свойство, как Tag у всех компонентов. Оно так же не влияет на работу компонента и его элементов и может использоваться в наших собственных целях. Это свойство имеет значение указателя, и мы можем в него вносить любые указатели. Я указываю здесь указатель на структуру NewQuest, которая связана с созданным элементом.

Теперь создадим обработчик события OnChange для нашего дерева:

procedure TQuestionResultForm.QuestionTreeViewChange(Sender: TObject; Node: TTreeNode); var i:Integer;

begin //Очищаю список ResultView.Items.Clear;


 

//Если не выделен элемент, то выход
if Node=nil then exit;

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

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

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

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

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Добавляю новый элемент в дерево вопросов with QuestionTreeView.Items.Add(nil, NewQuest.Name) do

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

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

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

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 на

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

Запускаю цикл, по которому заполняются данные списка 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
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги