В TTreeNode::Data записать и прочитать AnsiString
map<AnsiString, TTreeNode*>NodeMap2;
// это дя 1-го TreeView, для 2-го примерно так же
while (!sp->Eof)
{
NodeMap[sp->FieldByName("item")->AsString.Trim()] = TreeView1->Items->AddChildObject(NodeMap[sp->FieldByName("parent")->AsString.Trim()], sp->FieldByName("NAME_USER")->AsString.Trim(), (void*)(char*)sp->FieldByName("item")->AsString.Trim().c_str());
sp->Next();
}
затем пытаюсь прочитать TTreeNode::Data на TTreeView::OnClick:
TTreeNode *Node2 = TreeView2->Selected;
AnsiString kod_user = (char*) Node1->Data;
AnsiString kod_class = (char*)Node2->Data;
Label1->Caption = kod_user;
Label2->Caption = kod_class;
В результате в Label1/2 полная фигня.
Как правильно в TTreeNode::Data положить AnsiString, а затем его от туда достать.
ЗЫ: когда на форме было одно TreeView, вроде работало нормально
ЗЫЗЫ: с int такое дело работает на ура
И еще вопрос:
(void*)(char*)sp->FieldByName("item")->AsString.Trim().c_str() - зачем, ты преобразовываешь в char* ведь с_str() уже преобразовывает в char*.
И еще, почему ты читаешь Node1->Data, а не Node1->Text - который и так является AnsiString.
И еще, почему ты читаешь Node1->Data, а не Node1->Text - который и так является AnsiString.
1. текст не русский, даже если б он и русский был что из этого?
2. Node1->Text и Node1->Data совершенно разные вещи, мне надо именно Node1->Data (в Node1->Text инфа меня меньше всего интересует)
3. Решение нашлось введением дополнительной
хотя можно было бы и по другому организовать буффер а в Node->Data хранить ссылку на него, но это геморно, т.к. надо следить за его уничтожением
map<AnsiString, TTreeNode*>NodeMap2;
// это дя 1-го TreeView, для 2-го примерно так же
while (!sp->Eof)
{
NodeMap[sp->FieldByName("item")->AsString.Trim()] = TreeView1->Items->AddChildObject(NodeMap[sp->FieldByName("parent")->AsString.Trim()], sp->FieldByName("NAME_USER")->AsString.Trim(), (void*)(char*)sp->FieldByName("item")->AsString.Trim().c_str());
sp->Next();
}
затем пытаюсь прочитать TTreeNode::Data на TTreeView::OnClick:
TTreeNode *Node2 = TreeView2->Selected;
AnsiString kod_user = (char*) Node1->Data;
AnsiString kod_class = (char*)Node2->Data;
Label1->Caption = kod_user;
Label2->Caption = kod_class;
В результате в Label1/2 полная фигня.
Как правильно в TTreeNode::Data положить AnsiString, а затем его от туда достать.
ЗЫ: когда на форме было одно TreeView, вроде работало нормально
ЗЫЗЫ: с int такое дело работает на ура
Запись:
...
считывание:
...
...
я так понимаю при выходе из программы или перед удалением TTreeNode надо делать delete Node->Data, или автоматом будет чистится?
ЗЫ: в хелпе ВСВ6 я пример подходящий что то не нашел
Надо, Федя, надо! (с)
ЗЫ: в хелпе ВСВ6 я пример подходящий что то не нашел
По поводу чистить я так и не определился - надо или нет - с одной стороны - тринод - контейнер - и по идее должен чистить сам. С другой хз - вроде утечек памяти не наблюдалось.
[offtop]
хорошо, что меня не Федором зовут :D
[QUOTE=kot_] вроде утечек памяти не наблюдалось[/QUOTE]
[/offtop]