Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

Добавление новых членов класса в 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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.012 c
2-1144326365
RomanH
2006-04-06 16:26
2006.04.23
IBTable или Table


2-1144649364
Yojik
2006-04-10 10:09
2006.04.23
Не видны данные через Fields и FiledByName в DM


11-1118889227
DmiSb
2005-06-16 06:33
2006.04.23
Компонент - Object Inspector


9-1128528469
747
2005-10-05 20:07
2006.04.23
Текстовый квест - нужна помощь.


11-1124962544
shalex
2005-08-25 13:35
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский