WindFly |
Отправлено: 08.06.2005, 10:02 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 6
|
Я видел как люди при работе с TreeView в параметр Data записывали целые числа, а можно ли туда записывать и потом считывать строки? И если можно, то как это сделать? У меня так и не получилось...
|
|
Guest |
Отправлено: 08.06.2005, 10:45 |
|
Не зарегистрирован
|
Только указатели на строку.
В data можно загонять все, приводимое к int. |
|
Gedeon |
Отправлено: 08.06.2005, 10:58 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
CODE |
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TTreeNode *PARENT = TreeView1->Items->AddObject(NULL,"Parent",(void*)"Parent Text");
TreeView1->Items->AddChildObject(PARENT,"Child",(void*)"Child Text");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1Change(TObject *Sender, TTreeNode *Node)
{
Memo1->Lines->Add((char*)Node->Data);
}
//--------------------------------------------------------------------------- |
|
|
WindFly |
Отправлено: 08.06.2005, 11:37 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 6
|
Спасибо большое. С записью я и сам уже разобрался, вот вытащить обратно не получалось. Ещё раз thanks.
|
|
WindFly |
Отправлено: 08.06.2005, 12:19 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 6
|
Какя-то странная трабла — (Node->Data) возвращает значение последнего созданого узла независимо от того в который из них я тыкаю мышкой. Имена и индексы возвращаются нормально, а дата — нет.
|
|
Guest |
Отправлено: 08.06.2005, 12:54 |
|
Не зарегистрирован
|
Selected->Data ? |
|
WindFly |
Отправлено: 08.06.2005, 13:34 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 6
|
QUOTE (Guest @ 08/06/2005, 12:54) | Selected->Data ? |
Да нет. Всё происходит в обработчике TreeView1Changing.
Вот кусок кода
CODE |
void __fastcall TForm1::TreeView1Changing(TObject *Sender, TTreeNode *Node,
bool &AllowChange)
{
Memo1->Lines->Add(Node->Text);
Memo1->Lines->Add(AnsiString(Node->Index));
Memo1->Lines->Add((char*)(Node->Data));
}
|
вот первые две строки работают нормально, а третъя у меня выводит значение из последнего созданного узла. А если сделать в точности как Gedeon, то из родительского.
|
|
Guest |
Отправлено: 08.06.2005, 13:42 |
|
Не зарегистрирован
|
А вы обратили внимание, что Gedeon писал в дату константную строку. Скорее всего вам нужно под каждую строку выделять место и только потом заполнять дату. И не забывайте удалать строки. |
|
Konstantine |
Отправлено: 08.06.2005, 16:55 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
ИМХО лучше отвести массив строк (или TStringList) и в Дате запоминать номер строки...
|
|
WindFly |
Отправлено: 08.06.2005, 17:20 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 6
|
Поэкспериментировал и понял: в Data можно записать только число, строка не записывается, а записывается только указатель на неё.
Попробуйте приведённым способом записать в Data строку из строковой переменной, а перед возвратом содержимого Data эту переменную изменить.
Собственно, это и было высказано кем-то в самом начале
Отредактировано WindFly — 08/06/2005, 17:55
|
|