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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
4-1120039713
Maxk
2005-06-29 14:08
2005.08.21
как получить и название видюхи, материнки и т. д.


14-1122063364
Vlad Oshin
2005-07-23 00:16
2005.08.21
Задача по физике.


4-1120221767
Silence
2005-07-01 16:42
2005.08.21
Надо получить позицию символа в мемо при движении мышки...


6-1115955780
Delphi forever
2005-05-13 07:43
2005.08.21
Прием и отправка почты (с прикрепленными файлами)


4-1120199652
Aldi
2005-07-01 10:34
2005.08.21
Как в Делфи получить список запущенных процессов?