|
|
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
хочу добавлять узлы примерно так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2006, 18:30 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
Дьякхочу добавлять узлы примерно так: Код: plaintext HTREEITEM - это структура, а CString - это класс, причем не содержащий в себе необходимых данных для сохранения информации о узле, как Вы себе это представляете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 08:06 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
а каких типов должны быть usel и parent? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 08:15 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
я исходил из чего: код типа этого отлично работает: Код: plaintext 1. 2. 3. 4. 5. сформировал в виде типа CString, а оно не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 08:23 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
Дьяка каких типов должны быть usel и parent? HTREEITEM - описатель узла дерева, MSDN рулит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 08:28 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
Дьякя исходил из чего: код типа этого отлично работает: Код: plaintext 1. 2. 3. 4. 5. сформировал в виде типа CString, а оно не работает логично ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 08:29 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
В том примере, который я приводил, аналогично и в этом, делается так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. у меня то заранее неизвестно СКОЛЬКО будет узлов и по сколько узлов из них ещё будет исходить. то есть каждый раз мне нужно вместо hPA и hWA формировать свои уникальные значения. напрашивается сделать безразмерный массив. подскажите если знаете как его объявить? (если можно конкретный пример) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 15:00 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
не вижу смысла. Есть конкретные не изменяемые (Root) узлы, формирование которых возложено на программу? Если да, то достаточно просто иметь их описатели (HTREEITEM) и рулить child-узлами через них. Если же нет, то придется создавать класс (или не класс) для хранения информации о дереве. Но я бы посоветовал класс-контейнер от CObject, т.к. это удобно и можно записывать на диск через Serialize. -------------------------------------------------------------- Don't worry - wear Huggies ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 15:24 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
Да, есть один узел корневой. вложенность то может быть разной. а как рулить child-узлами через корневой узел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 15:29 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
ДьякДа, есть один узел корневой. вложенность то может быть разной. а как рулить child-узлами через корневой узел? здесь все завист от логики программы, например можно посчитать их, найти последний или первый из них, узнать если у них свои child-ы, много всего.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 15:32 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
вот возьмем например первый пример. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 15:33 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
Дьяквот возьмем например первый пример. Код: plaintext 1. 2. 3. 4. 5. Код: plaintext ты же не собираешся добавлять хаотично и куда бог пошлет, у программы должна быть логик, а иначе ты не сможешь управлять деревом. Эти описатели носят временный характер, они нужны, чтобы вставить узел и все, солить их не надо, а дальше управление child-узлами логично переложить на их parent-узел, который будет, в силу логики программы, опять же, их контроллировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 15:41 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
теперь о логике программы.... логика такая. есть CComboBox, CEdit, CTreeCtrl. сделаем так: b |_ b1 |_b12 в TreeCtrl на первоначальном этапе есть только корневой узел ("b"). (в комбобокс этот "b" тоже есть) в комбобокс будем выбирать узел ИЗ которого исходит добавляемый. вобщем вводим в эдит какую-то запись (b1). выбираем пока единственный возможный выриант в комбо:"b". жмем кнопку ДОБАВИТЬ, и строка из эдита ("b1") добавляется в комбо и в дерево (из корневого узла "b"). Далее нам надо добавить узел, исходящий уже из b1. вводим "b12", выбираем в комбо "b1", жмем ДОБАВИТЬ и b12 встает на нужное место и добавляется в комбо..... вот и вся логика. что бы добавить b12, надо знать это самое а2: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 15:51 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
некрасиво сместился рисунок... нарисую так: b - b1 - b12 (b12 исходит не из b, а из b1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 15:53 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
Дьяктеперь о логике программы.... логика такая. есть CComboBox, CEdit, CTreeCtrl. сделаем так: b |_ b1 |_b12 в TreeCtrl на первоначальном этапе есть только корневой узел ("b"). (в комбобокс этот "b" тоже есть) в комбобокс будем выбирать узел ИЗ которого исходит добавляемый. вобщем вводим в эдит какую-то запись (b1). выбираем пока единственный возможный выриант в комбо:"b". жмем кнопку ДОБАВИТЬ, и строка из эдита ("b1") добавляется в комбо и в дерево (из корневого узла "b"). Далее нам надо добавить узел, исходящий уже из b1. вводим "b12", выбираем в комбо "b1", жмем ДОБАВИТЬ и b12 встает на нужное место и добавляется в комбо..... вот и вся логика. что бы добавить b12, надо знать это самое а2: Код: plaintext не корень, а родительский root, а их перечень у тебя в CComboBox'e (если я правильно понял), судя по тому что они все содержат child-item'ы, можно простым перебором пройти все узлы у которых есть child'ы и имена (+ последовательность, как вариант, если нет сортировки) совпадают с item'ом из CComboBox'а - это достаточное условие что бы считать item дерева - root item'ом его child'ов. Так же можно придумать и вносить в ItemData для каждого из узлов и не-узлов спец. коды которые будут определять их принадлежность к тому или иному виду или используюя картинки, как вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 15:59 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
вначале мы указываем а1 явно: Код: plaintext а как в остальных случаях быть? например когда вводим b1, в ComboBox добавляем это b1, строку из эдита тоже без проблемм переносим в дерево, но как нам а2 то получить??? как я напишу подобную строку, где вместо usel подставлю a2 ??? Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 16:17 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
Cerebrumне корень, а родительский root, а их перечень у тебя в CComboBox'e (если я правильно понял), судя по тому что они все содержат child-item'ы, можно простым перебором пройти все узлы у которых есть child'ы и имена (+ последовательность, как вариант, если нет сортировки) совпадают с item'ом из CComboBox'а - это достаточное условие что бы считать item дерева - root item'ом его child'ов. Так же можно придумать и вносить в ItemData для каждого из узлов и не-узлов спец. коды которые будут определять их принадлежность к тому или иному виду или используюя картинки, как вариант это всё так и есть, но эти уникальные значения то всё равно нужны! (я про а2, а2 и т.д.) может хранить в комбо 2 столбца?..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 16:29 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
Дьяк Cerebrumне корень, а родительский root, а их перечень у тебя в CComboBox'e (если я правильно понял), судя по тому что они все содержат child-item'ы, можно простым перебором пройти все узлы у которых есть child'ы и имена (+ последовательность, как вариант, если нет сортировки) совпадают с item'ом из CComboBox'а - это достаточное условие что бы считать item дерева - root item'ом его child'ов. Так же можно придумать и вносить в ItemData для каждого из узлов и не-узлов спец. коды которые будут определять их принадлежность к тому или иному виду или используюя картинки, как вариант это всё так и есть, но эти уникальные значения то всё равно нужны! (я про а2, а2 и т.д.) может хранить в комбо 2 столбца?..... не вижу смысла, лишняя нагрузка на графику, уж лучше класс-контейнер описателей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 16:33 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
то есть создать контейнер, в который бросать эти уникальные значения? а как ещё это можно сделать? (в смысле без контейнера) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 16:38 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
кстати сказать, а как создать контейнер со значениями типа HTREEITEM ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 16:41 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
Дьяккстати сказать, а как создать контейнер со значениями типа HTREEITEM ? класс-контейнер производить лучше от СObject, например Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 16:54 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
ааааа, а точно эта проблемма проще не решается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 17:02 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
в смысле только через контейнер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 17:08 |
|
||
|
вскользь о CTreeCtrl в VC
|
|||
|---|---|---|---|
|
#18+
Дьякааааа, а точно эта проблемма проще не решается? я не настаиваю, но столько преимуществ в обмен на немного кода, имхо, нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2006, 17:08 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33795968&tid=2030963]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
154ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 431ms |

| 0 / 0 |
