|
#1
|
|||
|
|||
TreeView :(
Всем привет.Пытаюсь сделать простую вещь:
for i:=0 to n do Begin for j:=0 to k do Memo1.Lines.Add( TreeView1.Items.Item[i].Item[j].Text ); End; В Memo1 вывести Text основных веток TreeView1...Выдает ошибку ETreeViewError with message 'List Index out of bounds (0)' Даже если просто сделать Memo1.Lines.Add( TreeView1.Items.Item[1].Item[1].Text ) - все равно ошибка, а вот если Memo1.Lines.Add( TreeView1.Items.Item[0].Item[любое чило].Text ) ,то прокатывает.... Подскажите в чем проблема, почему только к первой ветке можно обратиться? |
#2
|
|||
|
|||
Потому что это в принципе неправильное обращение.
Если тебе надо достать корневые ветки, то пройдись по коллекции Items и выбери тех, у кого Parent = Nil. Это самый понятный метод. Можно достать красивее, но для начала и так сойдет. Код:
procedure TForm1.Button1Click(Sender: TObject); var I : Integer; begin For I := 0 To TreeView1.Items.Count - 1 Do If TreeView1.Items[i].Parent = Nil Then Memo1.Lines.Add(TreeView1.Items[i].Text); end; |
#3
|
|||
|
|||
Понял.Спасибо!!!
|
#4
|
|||
|
|||
А как быть если нужно обратиться к конкретной корневой ветке и ее дочернему узлу...Например корневая ветка под номером 2,а ее дочерний узел 5
|
#5
|
|||
|
|||
1. TreeView хранит итемы в едином списке, доступном через свойство Items его самого.
2. Если тебе надо именно просомтреть чилды некоторого узла, то у него есть свой-со Item. |