![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ООП можно ли это сделать? [D6]
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 и есть в инспекторе