Учебная работа. Лабораторная работа: Создание 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 (по дефлоту это
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.
]]>