Изучение компонента Delphy — TTreeView
Работа с компонентом TTreeView, служащим для отображения иерархических данных в виде дерева. Обеспечение заполнения дерева, очистка, анализ и редакция элементов. Процедура удаления элемента. Демонстрация работы программы, исходные данные и результаты.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 11.01.2012 |
Размер файла | 788,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ОДЕССКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ ХОЛОДА
Лабораторная работа
по РСАПР
Изучение компонента Delphy -- TTreeView
Одесса, 2011
Задание
Цель: Получение навыков работы с TTreeView.
Задача
1.Создать GUI-приложение.
Дерево имеет вид:
Город1
Ул.1
Дом1
Дом2
Ул.2
Ул.3
Город2
Обеспечить заполнение дерева, очистку, анализ, редакция элементов.
Заполнение:
городов не менее 5, улиц не менее 10 в каждом городе, домов не менее 3.
Анализ:
1. Подсчитать общее количество домов
2. Обходя дерево вывести в файл информацию вида:
ГОРОД -Х \ УЛИЦА -Х \ ДОМ -Х
Редакция:
Удаление элементов из 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;
end;
Анализ дерева реализован в следующих ниже перечисленных процедурах, которые позволяют подсчитать общее количество домов, а также вывести информацию при обходе дерева.
procedure TForm1.Button1Click(Sender: TObject);
var k,n,g:integer;
begin
Memo1.Lines.Clear; //очистить мемо
g:=0;
Anode:=TreeView1.Items.GetFirstNode; //выбор первого узла
k:=0;
while Anode<>nil do
begin
If (Anode.Level=0) then
begin
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);
var 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
Memo1.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 меню с подтверждением об удалении, раскрытие и сворачивание элементов дерева.
Процедура удаления элемента:
procedure 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);
begin
TreeView1.FullExpand;
end;
В процедуре procedure TForm1.N4Click(Sender:TObject); реализуется свертывание элементов дерева:
procedure TForm1.N4Click(Sender: TObject);
begin
TreeView1.FullCollapse;
end;
Для очистки дерева используется следующая процедура:
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
TreeView1.Items.Clear;
end;
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.
Размещено на Allbest.ru
Подобные документы
Разработка программы на языке С#, которая будет заниматься построением бинарного дерева для исходных данных и их редактированием, поиском информации о товарах по заданному ключу. Графические схемы алгоритмов поиска и удаления элемента бинарного дерева.
курсовая работа [796,9 K], добавлен 22.02.2016Рассмотрение нелинейных динамических структур данных в виде бинарного дерева. Построение дерева двоичного поиска. Реализация трех обходов дерева, выведение обходов на экран компьютера. Разработка текста программы. Симметричноправая прошивка дерева.
контрольная работа [81,6 K], добавлен 14.12.2011Анализ предметной области. Проектирование и разработка базы данных и интерфейса в виде набора Web-страниц для отображения, создания, удаления и редактирования записей базы данных. Аппаратное и программное обеспечение системы. Алгоритм работы программы.
курсовая работа [3,0 M], добавлен 12.01.2016Организация работы базы данных с помощью сбалансированных В-деревьев: принципы, методы добавления, поиска, удаления элементов из структуры. Процедуры, производящие балансировку и слияние записей в блоке. Реализация программы в Научной библиотеке ОрелГТУ.
курсовая работа [95,3 K], добавлен 12.08.2011Исследование особенностей основных файловых менеджеров, разработанных под операционную систему Windows. Изучение порядка заполнения элементов бинарного дерева. Обзор приложения, реализующего графический интерфейс доступа пользователя к папкам и файлам.
курсовая работа [2,9 M], добавлен 11.07.2012Описание процедуры выбора структуры хранения данных. Программная реализация одномерного неоднородного массива. Представление бинарного дерева в виде динамической структуры данных. Изучение способов поиска в упорядоченном дереве. Содержание базы данных.
практическая работа [850,0 K], добавлен 16.04.2015Организация бинарного дерева. Порядок размещения данных в нелинейных структурах. Организация пользовательского интерфейса. Симметричный обход дерева. Параллельная работа обработчиков исключений. Расширенный графический интерфейс и его возможности.
курсовая работа [426,0 K], добавлен 24.06.2013Общая характеристика организации массива в виде двоичного дерева. Особенности линейного и двоичного поиска заданного элемента массива. Методика упорядочения массива методом сортировки деревом. Инструкции и текст программы для нечисленной обработки данных.
курсовая работа [242,3 K], добавлен 12.11.2010Составление программной функции, которая вычисляет среднее арифметическое элементов непустого списка. Функция, которая находит наименьший элемент дерева. Нахождение искомых элементов, добавление элементов в дерево. Выведение состояния дерева на экран.
лабораторная работа [636,3 K], добавлен 02.04.2014Разработка программы для работы с множеством данных, перечень и работа ее модулей. Проверка работы программы. Реализация поиска элемента в файле по его номеру и добавление элементов в конец уже созданного НД. Возможности и особенности применения программы
курсовая работа [3,5 M], добавлен 22.06.2012