Форум — Ответы ( К темам )
? | Вася: TreeView (28-11-2002 18:02:07) |
Как из TreeView взять элементы (их названия), TreeView меняется время от времени пример: 1- -1а -1б 2- -2а мне надо добавить в ListBox элементы Level=1, из 1, т.е. 1а,1б. | |
Devnvd (29-11-2002 09:39:30) | |
TreeView очень вредный компонент. Он использует Windows'овский Tree-View Controls. У которого обязательно должен присутствовать корень(root). То есть ваше дерево должно выглядеть так: -0 -1 -1a -1b -2 -2a В этом случае: TTreeNode *root = TreeView1->Items->GetFirstNode(); AnsiString a1=root->Item[0]->Item[0]->Text; AnsiString b1=root->Item[0]->Item[1]->Text; AnsiString a2=root->Item[1]->Item[0]->Text; Memo1->Lines->Add(a1+" "+b1+" "+a2); | |
Владимир (29-11-2002 15:03:27) | |
Очень удобный компонент, особенно для отражения и изменения иерархической информации, например из базы данных, и работать с ним достаточно удобно.Компонент TTreeView имеет свойство Items — список узлов дерева. Все узлы нашего компонента TTreeView — это объекты типа TTreeNode, обладающие также своими свойставми и методами. Названия элементов определяются свойством Text. Итак выбираем из TreeView1 и загоняем их в ListBox1 ListBox1->Items->Clear(); AnsiString s; // получаем все узлы первого уровня TTreeNode *tn = TreeView1->Items->GetFirstNode(); while(tn){ ListBox1->Items->Add(tn->Text); tn = tn->getNextSibling(); // получить следующий узел текущего уровня } ListBox1->Items->Add("---"); // получаем все дочерние узлы от узла tg TTreeNode *tg = TreeView1->Items->GetFirstNode(); tn = tg->getFirstChild(); while(tn){ ListBox1->Items->Add(tn->Text); tn = tn->getNextSibling(); } // Разобрались ? Теперь можем написать получение, например, // всех узлов первого уровня и их подузлов ListBox1->Items->Add("--- All --- (Level1 + Level2)---"); tn = TreeView1->Items->GetFirstNode(); while(tn){ // получение узлов ListBox1->Items->Add(tn->Text); TTreeNode *tnsub = tn->getFirstChild(); while(tnsub){ // получение их подузлов ListBox1->Items->Add(tnsub->Text); tnsub = tnsub->getNextSibling(); } ListBox1->Items->Add(""); tn = tn->getNextSibling(); } //--- Есть удобные функции для сохранения — считывания дерева из файла: TreeView1->SaveToFile("tr.txt"); // сохранить в файл //--- TreeView1->LoadFromFile("tr.txt"); // считывем из файла TreeView1->FullExpand(); // раскрыть все узлы так что пробуйте, чего не понятно — спрашивайте... |