powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / вскользь о CTreeCtrl в VC
59 сообщений из 59, показаны все 3 страниц
вскользь о CTreeCtrl в VC
    #33793989
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хочу добавлять узлы примерно так:
Код: plaintext
HTREEITEM  usel=m_tree.InsertItem(m_edit, parent);
где usel, parent в настоящее время типа CString. как сделать приведение типов от CString к HTREEITEM ?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33794431
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьякхочу добавлять узлы примерно так:
Код: plaintext
HTREEITEM  usel=m_tree.InsertItem(m_edit, parent);
где usel, parent в настоящее время типа CString. как сделать приведение типов от CString к HTREEITEM ?
HTREEITEM - это структура, а CString - это класс, причем не содержащий в себе необходимых данных для сохранения информации о узле, как Вы себе это представляете?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33794438
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а каких типов должны быть usel и parent?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33794446
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я исходил из чего:
код типа этого отлично работает:
Код: plaintext
1.
2.
3.
4.
5.
HTREEITEM  a1=m_tree.InsertItem("b");
HTREEITEM  a2=m_tree.InsertItem("b1",a1);
HTREEITEM  a3=m_tree.InsertItem("b2",a1);
HTREEITEM  a4=m_tree.InsertItem("b12",a2);
HTREEITEM  a5=m_tree.InsertItem("b13",a2);
вот я и решил формировать самостоятельно a1, а2 и т.д.
сформировал в виде типа CString, а оно не работает
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33794454
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяка каких типов должны быть usel и parent?
HTREEITEM - описатель узла дерева, MSDN рулит
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33794456
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьякя исходил из чего:
код типа этого отлично работает:
Код: plaintext
1.
2.
3.
4.
5.
HTREEITEM  a1=m_tree.InsertItem("b");
HTREEITEM  a2=m_tree.InsertItem("b1",a1);
HTREEITEM  a3=m_tree.InsertItem("b2",a1);
HTREEITEM  a4=m_tree.InsertItem("b12",a2);
HTREEITEM  a5=m_tree.InsertItem("b13",a2);
вот я и решил формировать самостоятельно a1, а2 и т.д.
сформировал в виде типа CString, а оно не работает
логично
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33795873
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том примере, который я приводил, аналогично и в этом, делается так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
TVINSERTSTRUCT tvInsert;
HTREEITEM hPA;
HTREEITEM hWA;
tvInsert.hParent = NULL;
tvInsert.hInsertAfter = NULL;
tvInsert.item.mask = TVIF_TEXT;
tvInsert.item.pszText = _T("Задача");

HTREEITEM hCountry = m_tree.InsertItem(&tvInsert);

hPA = m_tree.InsertItem(TVIF_TEXT,_T("Справочники"),  0 ,  0 ,  0 ,  0 ,  0 , hCountry, NULL);
hWA = m_tree.InsertItem(_T("Документы"), 0 ,  0 , hCountry, hPA);

m_tree.InsertItem(_T("Контрагенты"), hPA, TVI_SORT);
m_tree.InsertItem(_T("Номенклатура"), hPA, TVI_SORT);

m_tree.InsertItem(_T("Счет"), hWA, TVI_SORT);
m_tree.InsertItem(_T("Реализация"), hWA, TVI_SORT);
Все это конечно замечательно, но здесь заранее установлено, что из первого узла будет исходить ещё 2, а из каждого из них ещё по 2 узла.

у меня то заранее неизвестно СКОЛЬКО будет узлов и по сколько узлов из них ещё будет исходить. то есть каждый раз мне нужно вместо hPA и hWA формировать свои уникальные значения. напрашивается сделать безразмерный массив. подскажите если знаете как его объявить? (если можно конкретный пример)
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33795968
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не вижу смысла.
Есть конкретные не изменяемые (Root) узлы, формирование которых возложено на программу?
Если да, то достаточно просто иметь их описатели (HTREEITEM) и рулить child-узлами через них.
Если же нет, то придется создавать класс (или не класс) для хранения информации о дереве. Но я бы посоветовал класс-контейнер от CObject, т.к. это удобно и можно записывать на диск через Serialize.
--------------------------------------------------------------
Don't worry - wear Huggies
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33795982
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, есть один узел корневой. вложенность то может быть разной.
а как рулить child-узлами через корневой узел?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796000
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДьякДа, есть один узел корневой. вложенность то может быть разной.
а как рулить child-узлами через корневой узел?
здесь все завист от логики программы, например можно посчитать их, найти последний или первый из них, узнать если у них свои child-ы, много всего....
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796005
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот возьмем например первый пример.
Код: plaintext
1.
2.
3.
4.
5.
HTREEITEM  a1=m_tree.InsertItem("b");
HTREEITEM  a2=m_tree.InsertItem("b1",a1);
HTREEITEM  a3=m_tree.InsertItem("b2",a1);
HTREEITEM  a4=m_tree.InsertItem("b12",a2);
HTREEITEM  a5=m_tree.InsertItem("b13",a2);
Код: plaintext
HTREEITEM  a1=m_tree.InsertItem("b");
- это корень. мы знаем его HTREEITEM. если мы не знаем a2, a3 и т.д., то как мы добавим "b12", "b13"?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796038
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяквот возьмем например первый пример.
Код: plaintext
1.
2.
3.
4.
5.
HTREEITEM  a1=m_tree.InsertItem("b");
HTREEITEM  a2=m_tree.InsertItem("b1",a1);
HTREEITEM  a3=m_tree.InsertItem("b2",a1);
HTREEITEM  a4=m_tree.InsertItem("b12",a2);
HTREEITEM  a5=m_tree.InsertItem("b13",a2);
Код: plaintext
HTREEITEM  a1=m_tree.InsertItem("b");
- это корень. мы знаем его HTREEITEM. если мы не знаем a2, a3 и т.д., то как мы добавим "b12", "b13"?
ты же не собираешся добавлять хаотично и куда бог пошлет, у программы должна быть логик, а иначе ты не сможешь управлять деревом. Эти описатели носят временный характер, они нужны, чтобы вставить узел и все, солить их не надо, а дальше управление child-узлами логично переложить на их parent-узел, который будет, в силу логики программы, опять же, их контроллировать.
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796087
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
теперь о логике программы.... логика такая.
есть CComboBox, CEdit, CTreeCtrl.
сделаем так:
b
|_ b1
|_b12

в TreeCtrl на первоначальном этапе есть только корневой узел ("b"). (в комбобокс этот "b" тоже есть) в комбобокс будем выбирать узел ИЗ которого исходит добавляемый.
вобщем вводим в эдит какую-то запись (b1). выбираем пока единственный возможный выриант в комбо:"b". жмем кнопку ДОБАВИТЬ, и строка из эдита ("b1") добавляется в комбо и в дерево (из корневого узла "b").
Далее нам надо добавить узел, исходящий уже из b1.
вводим "b12", выбираем в комбо "b1", жмем ДОБАВИТЬ и b12 встает на нужное место и добавляется в комбо..... вот и вся логика.
что бы добавить b12, надо знать это самое а2:
Код: plaintext
HTREEITEM  a2=m_tree.InsertItem("b1",a1);
как это сделать зная только корень?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796097
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
некрасиво сместился рисунок...
нарисую так: b - b1 - b12 (b12 исходит не из b, а из b1)
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796119
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяктеперь о логике программы.... логика такая.
есть CComboBox, CEdit, CTreeCtrl.
сделаем так:
b
|_ b1
|_b12

в TreeCtrl на первоначальном этапе есть только корневой узел ("b"). (в комбобокс этот "b" тоже есть) в комбобокс будем выбирать узел ИЗ которого исходит добавляемый.
вобщем вводим в эдит какую-то запись (b1). выбираем пока единственный возможный выриант в комбо:"b". жмем кнопку ДОБАВИТЬ, и строка из эдита ("b1") добавляется в комбо и в дерево (из корневого узла "b").
Далее нам надо добавить узел, исходящий уже из b1.
вводим "b12", выбираем в комбо "b1", жмем ДОБАВИТЬ и b12 встает на нужное место и добавляется в комбо..... вот и вся логика.
что бы добавить b12, надо знать это самое а2:
Код: plaintext
HTREEITEM  a2=m_tree.InsertItem("b1",a1);
как это сделать зная только корень?
не корень, а родительский root, а их перечень у тебя в CComboBox'e (если я правильно понял), судя по тому что они все содержат child-item'ы, можно простым перебором пройти все узлы у которых есть child'ы и имена (+ последовательность, как вариант, если нет сортировки) совпадают с item'ом из CComboBox'а - это достаточное условие что бы считать item дерева - root item'ом его child'ов. Так же можно придумать и вносить в ItemData для каждого из узлов и не-узлов спец. коды которые будут определять их принадлежность к тому или иному виду или используюя картинки, как вариант.
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796198
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вначале мы указываем а1 явно:
Код: plaintext
HTREEITEM  a1=m_tree.InsertItem("b");
.
а как в остальных случаях быть? например когда вводим b1, в ComboBox добавляем это b1, строку из эдита тоже без проблемм переносим в дерево, но как нам а2 то получить??? как я напишу подобную строку, где вместо usel подставлю a2 ???
Код: plaintext
HTREEITEM  usel=m_tree.InsertItem("b1",a1);
как указать это
Код: plaintext
HTREEITEM  a2
??? я могу получить "а2", а указать что оно является HTREEITEM не мсогу потому что не знаю как... вот и подошли к первоначальному вопросу :-)
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796259
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cerebrumне корень, а родительский root, а их перечень у тебя в CComboBox'e (если я правильно понял), судя по тому что они все содержат child-item'ы, можно простым перебором пройти все узлы у которых есть child'ы и имена (+ последовательность, как вариант, если нет сортировки) совпадают с item'ом из CComboBox'а - это достаточное условие что бы считать item дерева - root item'ом его child'ов. Так же можно придумать и вносить в ItemData для каждого из узлов и не-узлов спец. коды которые будут определять их принадлежность к тому или иному виду или используюя картинки, как вариант это всё так и есть, но эти уникальные значения то всё равно нужны! (я про а2, а2 и т.д.) может хранить в комбо 2 столбца?.....
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796274
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяк Cerebrumне корень, а родительский root, а их перечень у тебя в CComboBox'e (если я правильно понял), судя по тому что они все содержат child-item'ы, можно простым перебором пройти все узлы у которых есть child'ы и имена (+ последовательность, как вариант, если нет сортировки) совпадают с item'ом из CComboBox'а - это достаточное условие что бы считать item дерева - root item'ом его child'ов. Так же можно придумать и вносить в ItemData для каждого из узлов и не-узлов спец. коды которые будут определять их принадлежность к тому или иному виду или используюя картинки, как вариант это всё так и есть, но эти уникальные значения то всё равно нужны! (я про а2, а2 и т.д.) может хранить в комбо 2 столбца?.....
не вижу смысла, лишняя нагрузка на графику, уж лучше класс-контейнер описателей
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796300
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то есть создать контейнер, в который бросать эти уникальные значения? а как ещё это можно сделать? (в смысле без контейнера)
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796311
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кстати сказать, а как создать контейнер со значениями типа HTREEITEM ?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796369
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяккстати сказать, а как создать контейнер со значениями типа HTREEITEM ?
класс-контейнер производить лучше от СObject, например

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
clas CMyTreeItemHolder :: public CObject
{
	DECLARE_SERIAL(CMyTreeItemHolder)
public://-------------------------------------структура данных CMyTreeItemHolder
        HTREEITEM ht;
        int             nIndex; - номер записи в комбобоксе связаной с этим описателем
  /*и т.д. все что тебе нужно, не забудь про конструкторы копирования и 
   лучше переопределить такие операторы как new и delete*/
};

//--------псевдо класс-шаблон указателей на класс CMyTreeItemHolder
typedef CTypedPtrList<CObList, CMyTreeItemHolder*> CMyItems;
Все, а дальше используя СMyItems можно добавлять и уничтожать, подсчитывать, сохранять на диск и восстанавливать с диска использую сериализацию и прочая с элементарными объектами CMyTreeItemHolder, которые входят все в массив CMyItems
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796398
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ааааа, а точно эта проблемма проще не решается?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796423
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в смысле только через контейнер?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796424
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьякааааа, а точно эта проблемма проще не решается?
я не настаиваю, но столько преимуществ в обмен на немного кода, имхо, нет
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796426
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а я вот тут хитрую вещь видел:
Код: plaintext
HTREEITEM AddString ( LPCTSTR lpszString);
Что вы об этом думаете? это не то что мне нужно?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796441
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяка я вот тут хитрую вещь видел:
Код: plaintext
HTREEITEM AddString ( LPCTSTR lpszString);
Что вы об этом думаете? это не то что мне нужно?
это у кого такой метод, у CTreeCtrl? или это что-то самопальное, в производном классе
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33796695
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
When accessing the control, call the ComboTree functions directly instead of sending messges. The following access functions which emulate their CComboBox equivalents are supported.

void SetWindowText (LPCTSTR Text);
CString GetWindowText ();
int GetLBText (HTREEITEM hItem, CString& rText);

HTREEITEM AddString ( LPCTSTR lpszString);
HTREEITEM FindString ( LPCTSTR lpszString,
                       HTREEITEM hParent = NULL);
HTREEITEM SelectString( LPCTSTR lpszString,
                        HTREEITEM hParent = NULL);
HTREEITEM GetCurSel ();
просто я подумал что этот метод можно как то применить для добавления этого уникального значения...
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33797125
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а приведите, пожалуйста, конкретный пример добавления этих уникальных значений!
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33797162
Alexey-M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяк, для начала:
www.yandex.ru/yandsearch?rpt=rad&text=HTREEITEM
www.doc.mpv.ru/steps/mfc/steps/53.html
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33797185
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
про HTREEITEM в яндексе я читал ещё в самом начале, только не нашел ответ на свой вопрос. поэтому обратился в этот форум. а что касается второй ссылки, она у меня не открывается, пишет невозможно отобразить страницу.
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33797543
Alexey-M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяк, вот тут то, что тебе надо:
http://www.codeproject.com/string/cstringmgmt.asp
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33798160
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как объявить TVINSERTITEMSTRUCT ? ругается что не знает такого
Код: plaintext
1.
2.
3.
4.
5.
6.
TVINSERTITEMSTRUCT tvi;
CString s;
// ... assign something to s
tvi.item.pszText = s; // Compiler yells at you here
// ... other stuff
HTREEITEM ti = m_tree.InsertItem(&tvi);		
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33798169
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подобный текст конечно ошибок не выдает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
UpdateData(true);
TVINSERTSTRUCT tvi;
CString s;
LPTSTR pszText;
s="eeee";
tvi.item.pszText = (LPTSTR)(LPCTSTR)s;
HTREEITEM ti = m_tree.InsertItem(&tvi);
// operator dobavleniya ostal'nyh uzlov
UpdateData(false);
а что изменилось то от этого. я как раньше не мог получать из стрингового типа уникальное имя (напр. тоже hWA), что щас не могу... или я что то не так понял?
Код: plaintext
1.
hWA = m_tree.InsertItem(_T(m_edit), 0 ,  0 , ti, hPA);
как вот мне например написать вместо этого hWA (или ещё чего то в этом роде) например так:
Код: plaintext
ssssss = m_tree.InsertItem(_T(m_edit), 0 ,  0 , ti, hPA);
, где вместо ssssss подставится уникальный набор символов, который я сформировал предварительно в виде строки?
Искренне не понимаю как это сделать. догадываюсь что это легко, только пока решения проблеммы не вижу.....может все таки сможет ктонибудь четко написать как вообще это сделать?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33798800
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну а как вы вообще древовидный список создаете? из заранее известных узлов что ли?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33798870
Alexey-M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как обычно , из таблицы какой нить БД со структурой Parent, Child. У тебя не должно быть проблем. Nodes "сы ты правильно определешь.
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33799180
Alexey-M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> как объявить TVINSERTITEMSTRUCT
#include <commctrl.h> и будет Вам счастье.
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33799627
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неа, всё-равно на этой строке выдает ошибку:
Код: plaintext
TVINSERTITEMSTRUCT tvi;   // 'TVINSERTITEMSTRUCT' : undeclared identifier
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33799846
Alexey-M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А MFC вы вообще объявили или как ?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33799945
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
#include "stdafx.h"
#include "afxwin.h"
#include "commctrl.h"
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33799947
Alexey-M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже не смешно.
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33799994
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне тоже не смешно. или я какую-то глупость несу?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33799999
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
#include "afxwin.h" у меня подключен
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33800102
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
объясните что я не так сделал!
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33800901
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
значит Вы не знаете почему у меня не работает? или я спорол какую-то глупость? ну хоть как-нибудь отреагируйте, а то, честное слово - не знаю что и думать!
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33800945
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подтолкните в нужном направлении! плиззз!!!!! эта затянувшаяся тема уже порядком достала, но и отступиться от неё не могу пока она не решится...
ну неужели здесь нет человека который бы это знал???!
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33801013
Alexey-M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты уже раз 20 сам ответил на свои вопросы. Может стоить собраться, а не заниматься моральным онанизмом.
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33801075
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НУ ДЫК ПРОГРАММА ТО НЕ РАБОТАЕТ! Ё-МОЁ!!! ЧЕ С НЕЙ ДЕЛАТЬ ТО????
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33801094
AlexSar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
М-дя :)
Дьяк, а как ты предполагаешь, что у тебя будет храниться все строками, они что, повторяющимися не могут быть?
Я рекомендую завести массив типа такого:
class CInfoTables
{
CString TableName;
LONG Code; // или что там в качестве индекса?
LONG CodeParent;
HTREEITEM Item;
}

Далее, когда ты делаешь InsertItem, не поленись записать в массив идентификатор итема, а в SetItemData - индекс этого массива.
И у тебя будет однозначная связь между строками и итемами, причем не по совпадению строки, а по ее индеску в БД. Вариант, сразу скажу, несколько корявый, поскольку CArray жрет много памяти. Но сама идея состоит в том, что связи эти тебе так или иначе придется построить.
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33801095
AlexSar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл написать:

CArray<CInfoTables> m_arr;

m_arr .Item = m_tree.InsertItem("лалала", parent);
m_tree.SetItemData(m_arr.Item, i);

Пробуй!
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33801098
AlexSar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Круто здесь тэги работают )))
m_arr[k].Item = m_tree.InsertItem("лалала", parent);
m_tree.SetItemData(m_arr[k].Item, k);

Раньше было написано с i, а вместо индеска наклонный шрифт получился
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33803147
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мысль понял, спасибо!
а что это кстати за строчка:
Код: plaintext
CArray<CInfoTables> m_arr;
на неё компилятор страшно ругается восемью ошибками.
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33803299
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьякмысль понял, спасибо!
а что это кстати за строчка:
Код: plaintext
CArray<CInfoTables> m_arr;
на неё компилятор страшно ругается восемью ошибками.
добавь в stdafx.h
#include "afxtempl.h"
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33803328
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
теперь на эту же строчку выдается две ошибки
Код: plaintext
1.
2.
error C2976: 'CArray' : too few template arguments
error C2079: 'm_arr' uses undefined class 'CArray<class CMyTree>'
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33803337
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(класс объявлен как CMyTree)
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33803366
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дьяк(класс объявлен как CMyTree)
а там где ты объявляшь этот array, виден твой CMyTree
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33803392
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, объявлены в одном файле
Код: plaintext
1.
2.
3.
4.
5.
//----- MTree.h ---------
class CMyTree
{....};

CArray<CMyTree> m_arr;
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33803645
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может быть есть способ объявить m_arr как то иначе?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33804190
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как можно исправить эти ошибки или обойти их?
...
Рейтинг: 0 / 0
вскользь о CTreeCtrl в VC
    #33807669
Дьяк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так как мне то быть с этой странной ошибкой?
...
Рейтинг: 0 / 0
59 сообщений из 59, показаны все 3 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / вскользь о CTreeCtrl в VC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]