Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ООП можно ли это сделать? [D6]


Страницы:   1 2

Grrey ©   (2004-10-12 21:12:00) 

В TTreeView нужно добавить свойство ID:integer для каждого нода.
Можно ли это сделать не переписывая vcl исходников?
Единственный вариант - это обявить массив рядом, связать свойство Data с нужным нодом и при добавлении, удалении, изменении добавлять, удалять и изменять элементы масивчика. Но это же повторная работа. Этот код уже прописан в TTreeNodes. Вообще есть способ как-нибудь объявить потомки TTreeNode, TTreeNodes и TTreeView в соответствии с требованиями?


Amoeba   (2004-10-13 16:40:00) [21]

Совет

> Гаврила ©   (12.10.04 21:16) [1]

следует признать плохим. Незачем создавать новый класс, если есть стандартное решение, предложенное в
Defunct ©   (12.10.04 21:17) [2]

Integer(Node.Data) := IntValue;
или
Node.Data := Pointer(IntValue);

Простое преобразование типов и никакого жульничества.


Pentium133   (2004-10-13 16:28:00) [22]


> Grrey   (13.10.04 16:02) [3]

Повезло. Могли и послать куда.... Были уже такие вопросы :)


Grrey   (2004-10-13 16:02:00) [23]

Огромное спасибо, Гаврила. Это то, что нужно было. Не могу поверить, что я на этом форуме задал правильно вопрос и получил необходимый ответ.


Defunct   (2004-10-12 21:17:00) [24]

> Можно ли это сделать не переписывая vcl исходников?.
Да, можно назначать не только ID, но и большие структуры, смотреть AddObject

> Единственный вариант - это обявить массив рядом, связать свойство Data с нужным нодом и при добавлении, удалении, изменении добавлять, удалять и изменять элементы масивчика.

Зачем? прямо менять поле Data
Integer[...Data] := Id;


Гаврила   (2004-10-12 21:16:00) [25]

Можно. Для этого надо объявить потомка TTreeNode, и указать его класс в событии TTreeVew
как называется событие, не помню, что-то типа OnGetNodeClass (нет delphi под рукой)
Посмотри, событие Published и есть в инспекторе


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо