Форум: "Основная";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];
ВнизТерятся ссылка на items[0] в TreeView... Найти похожие ветки
← →
Jolik © (2008-06-25 18:32) [0]Hi, All!
Столкнулся с такой проблемой...
В конструкторе некоего фрейма создаю дерево и сохраняю ссылку на корневой элемент:
FRootNode := MyTreeView.Items.Add(nil, "Корень");
MyTreeView.Items.Add(FRootNode, "Первый элемент");
MyTreeView.Items.Add(FRootNode, "Второй элемент");
...
При этом оказывается FRootNode = Items[0] вплоть до выхода из конструктора (проверял). Т.е. все ок.
Затем попадаю в некую процедуру этого фрейма, и там уже оказыается, что FRootNode <> Items[0]
Может кто сталкивался с таким явлением?
Заранее благодарен!
← →
Поросенок Винни-Пух © (2008-06-25 18:37) [1]Либо дерево перестраивается, либо FRootNode - локальная переменная конструктора
← →
Поросенок Винни-Пух © (2008-06-25 18:47) [2]Кстати, зачем тебе FRootNode за пределами процедуры постройки дерева?
← →
Jolik © (2008-06-25 19:20) [3]FRootNode переменная фрейма на котором лежит дерево - т.е не локальная.
> Кстати, зачем тебе FRootNode за пределами процедуры постройки дерева?
ну же могу еще насоздавать поддеревья, чтобы имеь ссылку на начальный элемент.
А что значит - перестраиватся дерево?
Получается ссылки на TreeNode могут оказаться битыми в какой то момент?
← →
Поросенок Винни-Пух © (2008-06-25 19:23) [4]Ну зачем тебе переменная, если ты хочешь, чтобы она была равна ссылке на корень дерева. Используй сам по себе корень дерева.
← →
Сергей М. © (2008-06-25 19:48) [5]
> FRootNode переменная фрейма
У фрейма нет никаких "переменных". У него есть поля класса/объекта.
Переменные есть в юнитах, процедурах/функциях (процедурных/функциональных методах). И все. Больше нигде никаких переменных нет.
← →
Jolik © (2008-06-25 21:34) [6]> Ну зачем тебе переменная, если ты хочешь, чтобы она была равна ссылке
> на корень дерева. Используй сам по себе корень дерева.
Ну например:
FCDRootNode := MyTreeView.Items.Add(nil, "CD");
FDVDRootNode := MyTreeView.Items.Add(nil, "DVD");
Теперь когда у меня появиться новый DVD я могу его внести как:
NewDVD := MyTreeView.Items.Add(FDVDRootNode, "DVD");
Вообщем то проблему я решил - сохраняю индекс итема. Проблема приобрела больше академический характер :)
← →
brother © (2008-06-26 10:27) [7]
> академический характер :)
а тут все академики ;)
← →
Сергей М. © (2008-06-26 10:55) [8]
> Jolik © (25.06.08 21:34) [6]
Ты вообще разницу между Items.Add и Items.AddChild понимаешь ?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c