![]() |
|
![]() ![]() ![]() |
|
tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
не могу найти функци - получить уровень выбранного потомка и позицию.
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Функции для определения уровня нет, но написать ее элементарно, коли надо.
Позиция в дереве - это что? Единственный ид-р элемента в дереве - HTREEITEM. -------------------- ... |
|||
|
||||
tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
позиция - позиция среди чайлдов.
поле1 уровень1 позиция2 поле1.1 уровень2 позиция1 поле1.2 уровень2 позиция2 поле1.3 уровень2 позиция3 поле2 уровень1 позиция2 мне, чтобы удалить чайлда, надо знать его уровень и позицию. как написать не поскажете? -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
C выражений мыслей у нас явная проблема. Ты имеешь в виду, линейный порядок элементов? Так кто же, кроме тебя знает, в каком они там у тебя порядке. А дерево не имеет линейного порядка, его обходить можно по-разному. Можно, конечно, считать, что порядок элементов в дереве == порядку, в котором ты их туда записывала, то это не всегда верно, зависит от флагов вставки, и лучше бы на это не полагаться. Если в твоих данных элементы хранятся в массиве и имеют какой-то порядковый номер, то проще всего запоминать его при добавлении элементов, в LPARAM. Если позиция - это номер именно в списке дочерних элементов конкретного узла, тогда записывай и уровень и позицию: MAKELONG (level, pos) - надеюсь 2 байтов тебе хватит для индексации? -------------------- ... |
|||
|
||||
dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 10 Всего: 25 |
Не совсем понятно, о чем речь. Дерево - это вариант графа, а в графе есть только 2 вещи - вершина и наличие связи между вершинами. Так, кажется я понял о чем речь, уровень - это удаленность от корня. А вот с позицией проблемы - это понятие не имеет смысла, разве что только для определенного способа обхода вершин, либо если предположить, что позиция определяется временем вставки, т.е чем позднее вставили, тем больше "позиция".
Тогда я бы сделал обход таким образом ГлубинаПозиция(Глубина, ИдентификаторТекущегоУзла, ИдентификаторИскомогоУзла) Позиция = 0 Для Всех Потомков Текущего Угла Если ИдентификаторТекущегоПотомка = ИдентификаторИскомогоУзла, то Вернуть {Глубина; Позиция} Иначе {Глубина1; Позиция1} = ГлубинаПозиция(Глубина + 1, ИдентификаторТекущегоПотомка, ИдентификаторИскомогоУзла) Если Корректно({Глубина1; Позиция1}), то Вернуть {Глубина1; Позиция1} КонецИначе Позиция = Позиция + 1 КонецДля Вернуть {НекорректнаяГлубина; НекорректнаяПозиция} Или есть второй вариант - как говорит Earnest, при заполнении дерева вести учет глубины и позиции и ассоциировать с вершиной эти значения с помощью CTreeCtrl::SetItemData. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Ну, я имела ввиду заносить данные прямо при вставке элемента, заполняя lparam, но и так можно. -------------------- ... |
|||
|
||||
tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
Господа, мне очень нужна ф-ия для отображения или не отображения плюсика.
мне нужно загружать всех чайлдов в дерево не сразу, а только при нажатии плюсика. Задание такое. Хто нить ф-ю такую знает? Плюс нажатие на плюсик тоже надо. Добавлено через 5 минут и 28 секунд инит диалог вызывается до дуМодал или после? Добавлено через 6 минут и 6 секунд TreeDlg TrDlg(0, root); TrDlg.myFlag = false; // вот это значение в инитедиалоге уже будет? TrDlg.DoModal(); -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
Уровень мне нужен: тк добавив потомка в дерево мне надо добавить его в дерево -структуру данных. для этого знать надо уровень. По данным не проверишь, они в разных ветках совпадать могут.
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
Добавлено @ 15:18 то есть как мне с ассоциировать узел в триконтроле с узлом в моем дереве. Это сообщение отредактировал(а) tonchitos - 18.3.2008, 16:09 -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: 1 Всего: 40 |
как я понимаю в данном случае только по данным можно найти. ну уровень я определила. рекурсия, ну опять тлудно сообразить...
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |