Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Теоретическая часть
//сохраняем в файл:
TreeView1.SaveToFile('myfile.txt');
//читаем из файла:
TreeView1.LoadFromFile('myfile.txt');
Выполнение работы:
Подготовка проекта
TreeView1.Selected:= nil;
//создаем главный раздел (ветвь):
NewRazd:= TreeView1.Items.Add(TreeView1.Selected, s);
//Сразу же сохраняем его в базу:
tRazdels.Append; //добавляем запись
tRazdels['R_Parent']:= 0; //не имеет родителя
//присваиваем значение созданного раздела:
tRazdels['R_Name']:= NewRazd.Text;
//сохраняем изменения в базе:
tRazdels.Post;
end;
1. Заголовок окна.
2. Пояснительная строка.
3. Переменная, куда будет записан введенный пользователем текст.
Далее строкой
TreeView1.Selected:= nil;
снимаем выделение, если какой либо раздел был выделен, ведь в программе
создается главный раздел, не имеющий родителя. Свойство Selected
компонента TreeView указывает на выделенный узел и позволяет
производить с ним различные действия, например, получить текст узла:
7
TreeView1.Selected.Text;
Обратите внимание на то, что мы сохраняем ноль в поле "R_ Parent ", так как
это - главный раздел, не имеющий родителя. Свойство Text нового узла
NewRazd содержит название нового узла, которое присваиваем полю
"R_Name".
//вначале очистим s
s:= '';
//сформируем заголовок окна запроса:
z:= 'Раздел " + TreeView1.Selected.Text +
'";
//Получим в s имя нового раздела:
if not InputQuery(PChar(z), 'Введите заголовок подраздела:',s) then Exit;
//создаем подраздел:
NewRazd:= TreeView1.Items.AddChild(TreeView1.Selected, s);
{свернуть дерево}
TreeView1.FullCollapse;
{развернуть дерево}
TreeView1.FullExpand;
Очистить дерево
11
-
Заполнить дерево
Для очищения дерева нам требуется просто очистить его свойство Items,
делается это одной строкой:
TreeView1.Items.Clear;
{Заполнить дерево}
procedure TfMain.N10Click(Sender: TObject);
begin
//если таблица пуста, сразу выходим:
if tRazdels.IsEmpty then Exit;
//если в старом дереве есть узлы, очистим их:
TreeView1.Items.Clear;
//вначале запросим все главные узлы:
Q1.SQL.Clear;
Q1.SQL.Add('select * from Razdels where R_Parent=0');
Q1.Open;
if Q1.IsEmpty then Exit; //если НД пуст, выходим.
//теперь занесем их в дерево:
while not Q1.Eof do begin
TreeView1.Selected := nil;
TreeView1.Items.Add(TreeView1.Selected,
Q1.FieldByName('R_Name').AsString);
Q1.Next;
end; //while
Q1.Open;
if Q1.IsEmpty then Exit; //если нет вложенных узлов, выходим
Q1.First;
while not Q1.Eof do begin
TreeViewAddChild(Q1.Fields[0].AsString, Q1.Fields[1].AsString);
Q1.Next;
end; //while
//раскрываем дерево:
TreeView1.FullExpand;
end;
Q1.SQL.Clear;
Q1.SQL.Append('select r.R_Name, d.R_Name '+
'from Razdels r, Razdels d '+
'where r.R_Num=d.R_Parent');
Q1.Open;
if Q1.IsEmpty then Exit; //если нет вложенных узлов, выходим
Q1.First;
while not Q1.Eof do begin
TreeViewAddChild(Q1.Fields[0].AsString, Q1.Fields[1].AsString);
Q1.Next;
end; //while
private
{ Private declarations }
procedure TreeViewAddChild(rod, doch: String);
Здесь мы вначале циклом for обходим дерево, ища родительский узел. Если
узел найден, мы выделяем его в дереве и прерываем цикл. Теперь к
выделенному родительскому узлу мы добавляем подраздел:
TreeView1.Items.AddChild(TreeView1.Selected, doch);