Изучение компонента Delphy — TTreeView

  • Вид работы:
    Практическое задание
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    495,60 kb
  • Опубликовано:
    2012-01-11
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Изучение компонента Delphy — TTreeView

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ОДЕССКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ ХОЛОДА









Лабораторная работа

по РСАПР

Изучение компонента Delphy - TTreeView












Одесса, 2011

Задание

Цель: Получение навыков работы с TTreeView.

Задача

.Создать GUI-приложение.

Дерево имеет вид:

Город1

Ул.1

Дом1

Дом2

Ул.2

Ул.3

Город2

Обеспечить заполнение дерева, очистку, анализ, редакция элементов.

Заполнение:

городов не менее 5, улиц не менее 10 в каждом городе, домов не менее 3.

Анализ:

. Подсчитать общее количество домов

. Обходя дерево вывести в файл информацию вида:

ГОРОД -Х \ УЛИЦА -Х \ ДОМ -Х

Редакция:

Удаление элементов из PopUp меню с подтверждением.

Удалять ГОРОДА и УЛИЦЫ можно, если в них нет вложенных элементов.

Прочее:

Раскрытие и закрытие всех элементов из PopUp меню.

2. Краткое описание реализации каждого из пунктов задания и

листинги программ с комментариями и пояснениями принятых

решений

Данная программа выполняет следующие пункты задания: заполнение дерева, при этом дерево содержит не менее пяти городов, десяти улиц, в каждой из которых не менее трех домов, анализ, т.е. подсчет количества домов и вывод информации при обходе дерева. В программе также реализовано удаление элементов дерева из PopUp меню с подтверждением, при чем узел не должен содержать вложенные компоненты. Так же предусмотрена возможность раскрытия и закрытия всех элементов из PopUp меню.

Для автоматического заполнения дерева используется следующая процедура procedure TForm1.BitBtn2Click(Sender:TObject), описанная ниже:

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

 TreeView1.Items.Clear;           //очистка дерева

 TreeView1.Items.Add (nil,'Одесса'); //создание первого родительского узла

 TreeView1.Items.AddChild (TreeView1.Items.Item [0],'Тенистая'); //дочерний узел

 TreeView1.Items.AddChild (TreeView1.Items.Item [1],'дом1');

 TreeView1.Items.AddChild (TreeView1.Items.Item [1],'дом56');

 TreeView1.Items.AddChild (TreeView1.Items.Item [1],'дом4');

 TreeView1.Items.AddChild (TreeView1.Items.Item [0],'Солнечная');

 TreeView1.Items.AddChild (TreeView1.Items.Item [5],'дом9');

 TreeView1.Items.AddChild (TreeView1.Items.Item [5],'дом46');

 TreeView1.Items.AddChild (TreeView1.Items.Item [5],'дом67');

  TreeView1.Items.Add (TreeView1.Items.Item [0],'Киев');

 TreeView1.Items.AddChild (TreeView1.Items.Item [41],'Тенистая');

 TreeView1.Items.AddChild (TreeView1.Items.Item [42],'дом1');

 TreeView1.Items.AddChild (TreeView1.Items.Item [42],'дом56');

 TreeView1.Items.AddChild (TreeView1.Items.Item [42],'дом4');

 TreeView1.Items.AddChild (TreeView1.Items.Item [41],'Солнечная');

 TreeView1.Items.AddChild (TreeView1.Items.Item [46],'дом9');

 TreeView1.Items.AddChild (TreeView1.Items.Item [46],'дом46');

 TreeView1.Items.AddChild (TreeView1.Items.Item [46],'дом67');

 TreeView1.Items.AddChild (TreeView1.Items.Item [41],'Зеленая');

 TreeView1.Items.AddChild (TreeView1.Items.Item [50],'дом94');

 TreeView1.Items.AddChild (TreeView1.Items.Item [50],'дом1');

 TreeView1.Items.AddChild (TreeView1.Items.Item [50],'дом32');

 TreeView1.RightClickSelect:=true;;

Анализ дерева реализован в следующих ниже перечисленных процедурах, которые позволяют подсчитать общее количество домов, а также вывести информацию при обходе дерева.

procedure TForm1.Button1Click(Sender: TObject);k,n,g:integer;

  Memo1.Lines.Clear;   //очистить мемо

  g:=0;

  Anode:=TreeView1.Items.GetFirstNode; //выбор первого узла

  k:=0;

  while Anode<>nil do 

    begin

     If (Anode.Level=0) then

         for n:=0 to Anode.Count-1 do

          k:=k+Anode.Item[n].Count;  //подсчет домов

       end;

    Anode:=Anode.getNextSibling; //следующий узел

    g:=g+k;

    k:=0;

   end;

Memo1.Lines.Add('Общее количество домов'+IntToStr(g));  //вывод в мемо

end;;

Процедура, позволяющая вывести информацию при обходе дерева:

procedure TForm1.BitBtn3Click(Sender: TObject);j:integer;

begin

 Memo1.Lines.Clear;

 if Treeview1.Items.GetFirstNode = nil then abort; //дерево пустое - прервать процесс

 Anode:=Treeview1.Items.GetFirstNode;   //выбор родительского узла

 Anode1:=Anode.getFirstChild;          //выбор дочернего узла

 while Anode <> nil do

    begin

      while Anode1 <> nil do

       begin

        if (Anode1.Level=1) then

         begin

          for j:=0 to Anode1.Count-1 do .Lines.Add (Anode1.Parent.Text+'/'+Anode1.text+'/'+Anode1.Item[j].Text);

        end;

        Anode1:=Anode1.GetNext;

      end;

      Anode: =Anode.GetNext;

    end;

    Memo1.Lines.SaveToFile('Отчет.txt');  //сохранение в файл

end;

Ниже описаны процедуры, благодаря которым возможно удаление элементов дерева из PopUp меню с подтверждением об удалении, раскрытие и сворачивание элементов дерева.

Процедура удаления элемента:

TForm1.N1Click(Sender: TObject);

begin

if (Application.MessageBox('Вы действительно хотите удалить запись?',

  'Подтвердите удаление записи',

  MB_YESNO+MB_ICONQUESTION)<>IDNO)

 then

if TreeView1.Selected.getFirstChild=nil

   then TreeView1.Selected.delete

   else showmessage('Удаление невозможно, узел содержит элементы!');

end;

В данной процедуре описан метод, реализующий развертывание дерева:

procedure TForm1.N3Click(Sender: TObject);

TreeView1.FullExpand;;

В процедуре procedure TForm1.N4Click(Sender:TObject); реализуется свертывание элементов дерева:

TForm1.N4Click(Sender: TObject);

begin.FullCollapse;;

Для очистки дерева используется следующая процедура:

procedure TForm1.BitBtn6Click(Sender: TObject);.Items.Clear;;

2. Демонстрация работы, исходные данные и результаты

Для того, чтобы запустить приложение исходной программы необходимо запустить файл TreeView с расширением exe. После запуска данного файла перед пользователем появится главная форма программы.На ней представлено «Дерево» в «свернутом» виде, со всеми записями. ( см Рис1)

Рисунок 1. Главная форма

На форме расположены пять кнопок: «Создать дерево», «Удалить», «Отобразить элементы дерева» и «Рассчитать количество домов».

При нажатии на кнопку «Создать дерево» программным путем создается дерево. Ниже расположенная кнопка «Удалить» позволяет полностью удалить дерево.

При нажатии на кнопку «Отобразить элементы дерева» выводится информация о городе, улицах и домах, при этом информация дополнительно сохраняется в текстовом файле «Отчет». (см. Рис 2.)

Рисунок 2 Отображение элементов дерева

Нажав на кнопку «Рассчитать количество домов» пользователь рассчитает общее количество домов. (Рис3)

Рисунок 3 Расчет общего количества домов во всем дереве

Свернуть и развернуть дерево, а также удалить элементы дерева можно через PopUp меню, вызвав его правым кликом мышки на дереве (см Рис. 4).

Рисунок 4 Вызов PopUp меню.

Кнопка «Развернуть» и «Свернуть» позволяет соответственно развернуть или свернуть дерево. Выделив какой-либо узел дерева, и нажав кнопку «Удалить», пользователь увидит сообщение: «Вы действительно хотите удалить запись?» с вариантами  ответов: «Да» и «Нет». При подтверждении пользователем удаления записи, данная запись будет удалена из дерева. (Рис4)

Рис. 4

При нажатии на кнопку «Закрыть», пользователь выходит из приложения.

данные программа дерево


В ходе данной лабораторной работы я ознакомилась и научилась работать с Компонентом TTreeView, который служит для отображения иерархических данных в виде дерева, в котором пользователь может выбрать нужный ему узел или узлы. Он представляет собой окно для отображения иерархических данных в виде дерева, в котором пользователь может выбрать нужный ему узел или узлы. Иерархическая информация может быть самой разной: структура некоторого предприятия, структура документации учреждения, структура отчета и т.п. С каждым узлом дерева могут быть связаны некоторые данные.

Основным свойством TTreeView, содержащим информацию об узлах дерева, является индексированный список узлов Items. Каждый узел является объектом типа TTreeNodes, обладающим своими свойствами и методами.

Так же я узнала, что множество методов объектов типа TTreeNodes позволяет перестраивать дерево во время выполнения приложения. А свойство узла - StateIndex позволяет добавить вторую пиктограмму в данный узел, не зависящую от состояния узла. Подобная пиктограмма может просто служить дополнительной характеристикой узла. Индекс, указываемый как StateIndex, соответствует списку изображений, хранящихся в отдельном компоненте TImageList, указанном в свойстве StateImages компонента TTreeView.

Похожие работы на - Изучение компонента Delphy — TTreeView

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!