Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Вниз

Добавление новых членов класса в TTreeView   Найти похожие ветки 

 
Sergg   (2006-03-15 18:13) [0]

Уважаемые мастера!
Я хочу несколько расширить список атрибутов объектов TNode из TTreeView. Т.е. добавить несколько строковых переменных в объявлении класса TNode, чтобы кроме названия ветки объект нес еще кое-какую информацию. Например: название объекта TNode отображаемое в TTreeView описывает содержимое некоторого файла, а в добавленном атрибуте (скажем TNode.Path) хранится путь к этому файлу и по двойному щелчку на ветку открывается соответствующий файл.

Беда в том что я никогда ничего подобного не делал. И хотел бы услышать ваш совет:)

Я думаю делать так:
Скопировать отдельно файл ComCtrls.pas в папку проекта; обозвать его по-другому и включить в проект;
вычистить из ComCtrls.pas все не относящееся к TTreeView;
обозвать по другому TTreeView, скажем: TTreeViewMy;
добавить в объявление класса TNode нужные атрибуты;

Правильно ли это?:))


 
Джо ©   (2006-03-15 18:18) [1]

> Правильно ли это?:))

Нет :)
Смотри событие OnCreateNodeClass.


 
Джо ©   (2006-03-15 18:20) [2]

type

 // твой "расширенный" класс-наследник TTreeNode
 TExtendedTreeNode = class (TTreeNode)
 public
   // добавь новые свойства и т.п.
 end;

// обработчик OnCreateNodeClass
procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView;
 var NodeClass: TTreeNodeClass);
begin
 // возвращай ссылку на свой класс
 NodeClass := TExtendedTreeNode;
end;


 
Гаврила ©   (2006-03-15 23:34) [3]

Собственно, путей решения два
1. Как предлагает Джо
2. использовать свойство TTreeNode.Data для хранения доп информации, привязанной к узлу. Так как оно имеет тип Pointer, мы можем хранить тут свой объект, или укататель на структуру (Record)


 
Eraser ©   (2006-03-16 00:45) [4]


> Гаврила ©   (15.03.06 23:34) [3]

и опять же есть третий вариант - запуздырить хелпер :)
но будет работать только в D2006.


 
jack128 ©   (2006-03-16 00:51) [5]

Eraser ©   (16.03.06 0:45) [4]
и опять же есть третий вариант - запуздырить хелпер :)

хелпер не может содержать ДАННЫЕ. Только код. Соответственно про поля можешь забыть..


 
Eraser ©   (2006-03-16 01:11) [6]


> jack128 ©   (16.03.06 00:51) [5]

понятно... этот момент я не учёл.


 
TStas ©   (2006-03-16 11:39) [7]

Я хранил структуру, которая была привязана к узлу Data - указатель на нее, а в структуре - указатель на Node Все отлично собиралось, разбиралось, сохранчлось и, главное, новые NOdы добавлдялись ИМХО чем писать потомка нода, пусть уж лучше висят не просто данные, а структура (запись). Во всяком случае проще отладить.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.012 c
2-1144474928
bagos[XZ]
2006-04-08 09:42
2006.04.23
проблема с импортом


15-1143970869
antonn
2006-04-02 13:41
2006.04.23
Смешно


2-1144751826
Сергей И.
2006-04-11 14:37
2006.04.23
Помогите пожалуйста очень срочно нужно


3-1141299314
Alex2006
2006-03-02 14:35
2006.04.23
Выбор неверно заведённой информации


6-1136470903
AlexLines
2006-01-05 17:21
2006.04.23
Загрузка аудио из интернет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский