Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Доп. материалы / TreeView / TreeFormUnit
.pas unit TreeFormUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, TListUnit, TElementUnit, StdCtrls, ImgList;
const Count = 100;
type
TTreeForm = class(TForm)
TreeView: TTreeView;
AddButton: TButton;
DeleteButton: TButton;
ImageList: TImageList;
procedure DeleteButtonClick(Sender: TObject);
procedure AddButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
RandomList: TElementList; //Случайный список
procedure CreateRandomList; //Создание случайного списка
//Заполнение дерева из списка
procedure ReadToTreeView;
public
{ Public declarations }
end;
var
TreeForm: TTreeForm;
implementation
{$R *.dfm}
procedure TTreeForm.CreateRandomList;
var
Elem: TElement;
Parent, Child: string;
i: integer;
begin
randomize;
RandomList := TElementList.Create;
Parent := 'Родитель';
Child := 'Потомок';
for i := 0 to Count - 1 do
begin
if (random (10) < 2) then
Elem := TElement.Create(Parent)
else
Elem := TElement.Create(Child);
RandomList.Add (Elem);
end;
end;
procedure TTreeForm.ReadToTreeView;
var
RootNode, ParentNode, ChildNode: TTreeNode;
Value: string;
i, j, NodeIndex, ParentIndex: integer;
begin
RootNode := TreeView.Items.Item[0];
ParentNode := nil;
for i:= 0 to Count - 1 do
begin
Value := RandomList[i].Str;
if pos('Родитель', RandomList[i].Str) > 0 then
begin
ParentNode := TreeView.Items.AddChild(RootNode, Value);
ParentNode.StateIndex := 1;
end
else
if ParentNode = nil then
begin
ChildNode := TreeView.Items.AddChild(RootNode, Value);
ChildNode.StateIndex := 1;
end
else
begin
ChildNode := TreeView.Items.AddChild(ParentNode, Value);
ChildNode.StateIndex := 2;
end;
end;
end;
procedure TTreeForm.FormCreate(Sender: TObject);
begin
CreateRandomList;
TreeView.Items.Add(nil, 'Иерархия объектов').StateIndex := 0;
ReadToTreeView;
end;
procedure TTreeForm.AddButtonClick(Sender: TObject);
begin
if TreeView.Selected = nil then
TreeView.Items.Addchild(nil, 'Потомок').StateIndex := 3
else
begin
TreeView.Selected.Text := 'Родитель';
TreeView.Selected.StateIndex := 1;
TreeView.Items.Addchild(TreeView.Selected, 'Потомок').StateIndex := 3;
end;
end;
procedure TTreeForm.DeleteButtonClick(Sender: TObject);
begin
if TreeView.Selected <> nil then
TreeView.Items.Delete(TreeView.Selected);
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, TListUnit, TElementUnit, StdCtrls, ImgList;
const Count = 100;
type
TTreeForm = class(TForm)
TreeView: TTreeView;
AddButton: TButton;
DeleteButton: TButton;
ImageList: TImageList;
procedure DeleteButtonClick(Sender: TObject);
procedure AddButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
RandomList: TElementList; //Случайный список
procedure CreateRandomList; //Создание случайного списка
//Заполнение дерева из списка
procedure ReadToTreeView;
public
{ Public declarations }
end;
var
TreeForm: TTreeForm;
implementation
{$R *.dfm}
procedure TTreeForm.CreateRandomList;
var
Elem: TElement;
Parent, Child: string;
i: integer;
begin
randomize;
RandomList := TElementList.Create;
Parent := 'Родитель';
Child := 'Потомок';
for i := 0 to Count - 1 do
begin
if (random (10) < 2) then
Elem := TElement.Create(Parent)
else
Elem := TElement.Create(Child);
RandomList.Add (Elem);
end;
end;
procedure TTreeForm.ReadToTreeView;
var
RootNode, ParentNode, ChildNode: TTreeNode;
Value: string;
i, j, NodeIndex, ParentIndex: integer;
begin
RootNode := TreeView.Items.Item[0];
ParentNode := nil;
for i:= 0 to Count - 1 do
begin
Value := RandomList[i].Str;
if pos('Родитель', RandomList[i].Str) > 0 then
begin
ParentNode := TreeView.Items.AddChild(RootNode, Value);
ParentNode.StateIndex := 1;
end
else
if ParentNode = nil then
begin
ChildNode := TreeView.Items.AddChild(RootNode, Value);
ChildNode.StateIndex := 1;
end
else
begin
ChildNode := TreeView.Items.AddChild(ParentNode, Value);
ChildNode.StateIndex := 2;
end;
end;
end;
procedure TTreeForm.FormCreate(Sender: TObject);
begin
CreateRandomList;
TreeView.Items.Add(nil, 'Иерархия объектов').StateIndex := 0;
ReadToTreeView;
end;
procedure TTreeForm.AddButtonClick(Sender: TObject);
begin
if TreeView.Selected = nil then
TreeView.Items.Addchild(nil, 'Потомок').StateIndex := 3
else
begin
TreeView.Selected.Text := 'Родитель';
TreeView.Selected.StateIndex := 1;
TreeView.Items.Addchild(TreeView.Selected, 'Потомок').StateIndex := 3;
end;
end;
procedure TTreeForm.DeleteButtonClick(Sender: TObject);
begin
if TreeView.Selected <> nil then
TreeView.Items.Delete(TreeView.Selected);
end;
end.
Соседние файлы в папке TreeView