Лабораторная работа: Создание treeview в Delphi
Название: Создание 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. |