Скачать .docx |
Реферат: Создание treeview в Delphi
Форма:
Листинг программы :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, XPMan, SRColBtn, SRGrad, IniList, ImgList;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Memo1: TMemo;
TreeView1: TTreeView;
XPManifest1: TXPManifest;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button6: TButton;
Button10: TButton;
SRGradient1: TSRGradient;
ImageList1: TImageList;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
f:TextFile; s,c:String; i:integer;
implementation
uses Unit2;
{$R *.dfm}
//кнопка «Добавить элемент»
procedure TForm1.Button1Click(Sender: TObject);
var captionStr:string;
NewNode:TTreeNode;
Begin
//обнуляем строку, которая будет использоваться для хранения имени будущего элемента //дерева
CaptionStr:='';
//выводим на экран окно ввода. Если окно было закрыто не кнопкой OK, то происходит //выход из процедуры
if not InputQuery('Добавить элемент', 'Введите заголовок элемента', CaptionStr) then exit;
//добавляем новый элемент в наше дерево
NewNode:=Treeview1.Items.Add(Treeview1.Selected, CaptionStr);
//если компонент не является верхним в дереве, то изменяем значение ImageIndex //созданного нами элемента на 1 (по умолчанию это значение 0)
if newnode.Parent<>nil then newnode.ImageIndex:=1;
end;
//кнопка «Удалить »
procedure TForm1.Button2Click(Sender: TObject);
begin
//проверяю есть ли выделенный элемент в дереве
if treeview1.Selected<>nil then
begin
//если да, то выводим на экран сообщение
if MessageDlg('Вы действительно хотите удалить запись?', mtWarning,[mbYes,mbNo],0)=mrYes then
//удаляем элемент дерева
treeview1.items.delete(treeview1.selected);
end;
//очищаем memo1.
memo1.Text:='';
end;
//кнопка «Выход»
procedure TForm1.Button3Click(Sender: TObject);
begin
//выход из программы
close;
end;
//кнопка «Сохранить в файл»
procedure TForm1.Button4Click(Sender: TObject);
begin
//сохраняем изменения в файл tree. dat
TreeView1.SaveToFile(ExtractFilePath(Application.ExeName)+'tree.dat');
end;
//кнопка «Загрузить из файла»
procedure TForm1.Button5Click(Sender: TObject);
begin
//если файл с указанным именем существует, то загружаем его
if FileExists(ExtractFilePath(Application.ExeName)+'tree.dat') then
TreeView1.LoadFromFile(ExtractFilePath(Application.ExeName)+'tree.dat');
end;
//кнопка «Изменить заголовок»
procedure TForm1.Button6Click(Sender: TObject);
var captionStr:string;
begin
CaptionStr:='';
if not InputQuery('Изменение заголовка', 'Введите заголовок элемента', CaptionStr) then exit;
//чтобы изменить имя надо изменить свойство Text для выделенного элемента
treeview1.Selected.Text:=CaptionStr;
end;
//кнопка «О программе»
procedure TForm1.Button7Click(Sender: TObject);
begin
//выводим новое окно с сообщением о создателе программы
ShowMessage('Программу выполнила студентка гр. ВТиПО-42р.'+#13+'Ахметова Индира'+#13+'2010 год');
end;
//кнопка «Добавить подэлемент»
//здесь код практически такой же, что и для кнопки «Добавить элемент»
procedure TForm1.Button8Click(Sender: TObject);
var captionStr:string;
NewNode:TTreeNode;
begin
CaptionStr:='';
if not InputQuery('Добавить подэлемент', 'Введите заголовок подэлемента', CaptionStr) then exit;
//разница лишь в том, что при добавлении нового элемента мы используем метод // AddChild, т.е. добавляем дочерний элемент
NewNode:=Treeview1.Items.AddChild(Treeview1.Selected, CaptionStr);
if newnode.Parent<>nil then newnode.ImageIndex:=1;
end;
//при закрытии программы сделаем возможность сохранения данных дерева
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
treeview1.SaveToFile(ExtractFilePath(Application.ExeName)+'tree.dat');
end;
//при открытии программы сделаем возможность загрузки данных из дерева
procedure TForm1.FormShow(Sender: TObject);
begin
if FileExists(ExtractFilePath(Application.ExeName)+'tree.dat') then
TreeView1.LoadFromFile(ExtractFilePath(Application.ExeName)+'tree.dat');
end;
//при нажатии на элемент дерева
procedure TForm1.TreeView1Click(Sender: TObject);
begin
memo1.Clear;
//если файл существует, то данные добавляются в файл
if FileExists(IntToStr(TreeView1.Selected.AbsoluteIndex)) then
begin
AssignFile(f,inttostr(treeview1.Selected.AbsoluteIndex));
//открыть файл для чтения
reset(f);
while not EOF(f) do
Begin
//прочитать строку из файла
readln (f,s);
memo1.Lines.Add(s)end;
closefile(f) end else
//иначе, если файл не существует, то создаем новый
begin
memo1.Clear;
AssignFile(f,IntToStr(TreeView1.Selected.AbsoluteIndex));
Rewrite(f);
reset(f);
while not EOF(f) do
begin
readln (f,s);
memo1.Lines.Add(s)end ;
closefile(f) end;end;
//кнопка «Добавить описание»
procedure TForm1.Button9Click(Sender: TObject);
begin
memo1.SetFocus;
//в memo можно редактировать данные (информацию)
Memo1.ReadOnly:=false;
end;
//кнопка «Сохранить описание»
//сохраняем введенные в memoданные (информацию) в файл tree. dat
procedure TForm1.Button10Click(Sender: TObject);
begin
AssignFile(f,inttostr(treeview1.Selected.AbsoluteIndex));
rewrite(f);
for i:=0 to memo1.Lines.Count do
writeln(f, memo1.lines[i]); //записываем текст в него из МЕМО
closefile(f); //и закрываем
TreeView1.SaveToFile('tree.dat');
// memo доступен только для чтения
Memo1.ReadOnly:=true;
end;
end.