![]() |
|
|
#1
|
|||
|
|||
|
Всем привет.Пытаюсь сделать простую вещь:
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. |