Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 1
Регистрация: 30.05.2014
Сообщений: 35

Наследование от стандартных компонент

04.12.2015, 11:30. Показов 1358. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема заключается в том, что мне необходимо в узел TTreeNode добавить дополнительно данные, как пример строку и при этом я создаю новый класс который наследуется от вышесказанного:
C++
1
2
3
4
5
class TNode : public TTreeNode{
    public:
    virtual _fastcall TNode(TTreeNode* AOwner);
    UnicodeString dop_inf;
};
Далее мне необходимо данные узлы создавать в массиве узлов TTreeNodes, и я понимаю что необходимо создать также новый класс, но не могу понять как его сделать. Мне необходимо чтобы данные функции работали с моим созданным классом. Помогите пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class TNodes : public TTreeNodes{
public:
    TTreeNode* __fastcall AddChildFirst(TTreeNode* Parent, const System::UnicodeString S);
    TTreeNode* __fastcall AddChild(TTreeNode* Parent, const System::UnicodeString S);
    TTreeNode* __fastcall AddChildObjectFirst(TTreeNode* Parent, const System::UnicodeString S, void * Ptr);
    TTreeNode* __fastcall AddChildObject(TTreeNode* Parent, const System::UnicodeString S, void * Ptr);
    TTreeNode* __fastcall AddObjectFirst(TTreeNode* Sibling, const System::UnicodeString S, void * Ptr);
    TTreeNode* __fastcall AddObject(TTreeNode* Sibling, const System::UnicodeString S, void * Ptr);
    TTreeNode* __fastcall AddNode(TTreeNode* Node, TTreeNode* Relative, const System::UnicodeString S, void * Ptr, TNodeAttachMode Method);
    TTreeNode* __fastcall AddFirst(TTreeNode* Sibling, const System::UnicodeString S);
    TTreeNode* __fastcall Add(TTreeNode* Sibling, const System::UnicodeString S);
    virtual _fastcall TNodes(TTreeNodes* AOwner);
};
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.12.2015, 11:30
Ответы с готовыми решениями:

Наследование стандартных классов STL
Добрый день. Проблема такая: мне нужно создать свой класс, который будет наследоваться от класса multimap, определенного в стандартной...

Использование стандартных компонент в приложении вычисления функции
Создать приложение с заданным количеством страниц диалога (закладками). 1. Первая страница Вычислить значение функции, условие...

Сколькими способами можно отобрать 6 деталей из ящика, 7 стандартных и 3 не стандартных?
Помогите пожалуйста разораться с задачей по комбинаторике, спасибо заранее:)

3
 Аватар для Igor-84
28 / 27 / 11
Регистрация: 04.03.2010
Сообщений: 199
05.12.2015, 14:55
gravity48, а что конкретно не работает?
Вообще у класса TTreeNode есть свойство Data (http://docwiki.embarcadero.com... eNode.Data), в котором можно хранить любую информацию.
Поэтому если вам необходимо добавить только одно поле с данными, то можно сделать так:
C++
1
2
UnicodeString dop_inf = "text";
node->Data = (void*)dop_inf.c_str();
Если нужно добавить несколько новых полей, можно завести структуру и передать её в Data. Это было бы самым простым способом.
1
1 / 1 / 1
Регистрация: 30.05.2014
Сообщений: 35
09.12.2015, 11:18  [ТС]
Спасибо большое за ответ. Это именно то что было нужно. Единственное все же осталось не понятным как передать в поле данных структуру, когда передаешь ее в прямом виде то происходит ошибка
C++ (Qt)
1
2
3
Document_struc tek_doc;
tek_doc.imya_documenta = Edit1->Text;
TreeView1->Selected->Data = (void*) tek_doc;//ошибка не может конвертировать структуру в void
Добавлено через 29 минут
Все разобрался. Вместо структуры использовал класс, а считывая добавил конструктор копирования.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//запись в Data
tek_doc = new Document_struc();
tek_doc->imya_documenta = Edit1->Text;
TreeView1->Selected->Data = tek_doc;
Edit1->Text = "";
//Чтение из Data
tek_doc = new Document_struc((Document_struc *)Node->Data);
Edit1->Text = tek_doc->imya_documenta;
//Класс
class Document_struc {
     public:
     Document_struc (){};
     Document_struc (Document_struc *k){
              imya_documenta = k->imya_documenta;
     }
     UnicodeString imya_documenta;
};
0
 Аватар для Igor-84
28 / 27 / 11
Регистрация: 04.03.2010
Сообщений: 199
09.12.2015, 16:45
Цитата Сообщение от gravity48 Посмотреть сообщение
как передать в поле данных структуру, когда передаешь ее в прямом виде то происходит ошибка
так же, как вы сделали с классом: создать объект структуры, используя new, и в node->Data записывать полученный указатель.
C++
1
2
//Чтение из Data
tek_doc = new Document_struc((Document_struc *)Node->Data);
здесь не нужно использовать new - вы ведь уже выделили память по свою структуру. Для чтения достаточно сделать так:
C++
1
Document_struc *tek_doc = (Document_struc *)Node->Data;
А также в конце работы программы не забудьте удалить выделенную ранее память:
C++
1
delete ((Document_struc *)Node->Data);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.12.2015, 16:45
Помогаю со студенческими работами здесь

Наследование шаблоном шаблона (наследование конструктора)
Всем привет! Думаю, что эта тема хоть и касается общих вопросов программирования, но будет уместна в данном разделе т.к. у различных...

Заменить наследование классов на наследование интерфейсов
#include <iostream> #include <assert.h> using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Наследование интерфейса и наследование реализации
Начал читать книгу GoF и сразу же в предисловии попал в тупик. Чем отличается наследование интерфейса от наследования реализации? Что такое...

Условие в цикле if (существует компонент) либо if (выделено место под компонент)
условие в цикле if (существует компонент) либо if (выделено место под компонент) TListBox * lbx2; //обьявил локально ...

Записать в файл G наибольшее значение из первых 5 компонент, затем - следующих 5 компонент и т.д
Дан файл F, компоненты которого являются целыми числами. Записать в файл G наибольшее значение из первых 5 компонент, затем - следующих 5...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru