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

Вниз

Класс, описывающий древовидную структуру.   Найти похожие ветки 

 
Tormoz   (2004-08-24 10:38) [0]

Уважааемые Мастера!

Мне нужно написать класс, описывающий древовидную структуру, (идентичный TTreeView, т.е с подобными методами и свойствами), но без визуализации.
Если Кто знает ссылки по этой теме, буду признателен за информацию!

Спасибо!


 
Digitman ©   (2004-08-24 12:47) [1]


> без визуализации


возьми обычный TTreeView, выключи у него св-во Visible - вот и всех делов ... или под "без визуализации" что-то иное подразумевается ?


 
Tormoz   (2004-08-24 13:19) [2]

To Digitman

В настоящее время так и есть. Беда вот в чем: этот класс я использую как published свойство TDBGrid"a для описания иерархической структуры заголовков колонок (это пока, так сказать, в ходе эксперимента). Думаю, Ты согласишься, что сие есть корявость : TDBGrid и так несколько монстроидален, а тут еще такие "навесы"...
Другой разговор, что в редакторе свойств я использую TreeView.


 
inic ©   (2004-08-24 14:28) [3]

наследуй от TCustomTreeView и убери все ненужное публичное в protected.


 
NAlexey ©   (2004-08-24 14:50) [4]

>inic ©   (24.08.04 14:28) [3]
запарится убирать, там полно всяческого барахла. Проще свой класс написать. Опять же для каких целей. Надо ли уметь сохранять себя в поток не надо ли и проч.


 
Tormoz   (2004-08-24 15:58) [5]

To Inic

Полность согласен с NAlexey. Поэтому и пытаюсь "свой класс написать" : опыта маловато - охота посмотреть как умные люди делают.

To NAlexey

Сохранять себя в поток надо !!!. Но это вроде понятно как делать.


 
Юрий Зотов ©   (2004-08-24 16:22) [6]

> Tormoz (24.08.04 10:38)

type
 THeaderItem = class(TCollectionItem)
 private
   FParentItem: THeaderItem;
   ...
 end;

 THeaderItems = class(TCollection)
   ...
 end;

Собственно, для построения дерева этого уже достаточно. А для удобства и скорости работы можно еще ввести поле FChildItems - список ссылок на дочерние элементы (но возрастут затраты памяти).

type
 THeaderItems = class;
 THeaderItem = class(TCollectionItem)
 private
   FParentItem: THeaderItem;
   FChildItems: THeaderItems;
   ...
 end;

 THeaderItems = class(TCollection)
   ...
 end;


 
Amoeba ©   (2004-08-26 12:00) [7]

Как ни странно, такой компонент существует: это TrmTreeNonView из бесплатной библиотеки rmControls
http://www.mills-enterprise.ca/delphi.htm


 
Василий   (2004-08-26 15:20) [8]

Раз здесь собрались знатоки класса TTreeView подскажите решение.
Проблема вот в чем: у этого класса событие двойного щелчка не приписывается каждому элементу, а принадлежит всему дереву. В этом случае если я щелкаю на пустом месте, то оно срабатывает - а как мне определить, что щелчек был не на выделенном узле, а на пустом месте?


 
Юрий Зотов ©   (2004-08-26 16:46) [9]

См. GetNodeAt, GetHitTestInfoAt.


 
TUser ©   (2004-08-26 19:42) [10]

TTreeNode не подойдет?


 
VMcL ©   (2004-08-27 09:53) [11]

>>Василий  (26.08.04 15:20) [8]

>а как мне определить, что щелчек был не на выделенном узле, а на пустом месте?

TTreeView.Selected
?



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

Форум: "Компоненты";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
14-1122323478
mr. X
2005-07-26 00:31
2005.08.21
Вот Вы тут такие умные...


1-1122584384
Mameluke
2005-07-29 00:59
2005.08.21
Фокус ввода


8-1112792366
anat
2005-04-06 16:59
2005.08.21
OpenGL нужна помощь


3-1121244552
Fishka
2005-07-13 12:49
2005.08.21
DBGrid,ADODataSet и таблица с полями по умолчанию


4-1119960682
Ньюб
2005-06-28 16:11
2005.08.21
как выставить разрешения на папку с файлами в ntfs





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский