![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Класс, описывающий древовидную структуру.
Tormoz © (2004-08-24 10:38:00)Уважааемые Мастера!
Мне нужно написать класс, описывающий древовидную структуру, (идентичный TTreeView, т.е с подобными методами и свойствами), но без визуализации.
Если Кто знает ссылки по этой теме, буду признателен за информацию!
Спасибо!
VMcL (2004-08-27 09:53:00) [1]>> Василий (26.08.04 15:20) [8]
> а как мне определить, что щелчек был не на выделенном узле, а на пустом месте?
TTreeView.Selected
?
TUser (2004-08-26 19:42:00) [2]TTreeNode не подойдет?
Юрий Зотов (2004-08-26 16:46:00) [3]См. GetNodeAt, GetHitTestInfoAt.
Василий (2004-08-26 15:20:00) [4]Раз здесь собрались знатоки класса TTreeView подскажите решение.
Проблема вот в чем: у этого класса событие двойного щелчка не приписывается каждому элементу, а принадлежит всему дереву. В этом случае если я щелкаю на пустом месте, то оно срабатывает - а как мне определить, что щелчек был не на выделенном узле, а на пустом месте?
Amoeba (2004-08-26 12:00:00) [5]Как ни странно, такой компонент существует: это TrmTreeNonView из бесплатной библиотеки rmControls
http://www.mills-enterprise.ca/delphi.htm
Юрий Зотов (2004-08-24 16:22:00) [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;
Tormoz (2004-08-24 15:58:00) [7]To Inic
Полность согласен с NAlexey. Поэтому и пытаюсь "свой класс написать" : опыта маловато - охота посмотреть как умные люди делают.
To NAlexey
Сохранять себя в поток надо !!!. Но это вроде понятно как делать.
NAlexey (2004-08-24 14:50:00) [8]>inic © (24.08.04 14:28) [3]
запарится убирать, там полно всяческого барахла. Проще свой класс написать. Опять же для каких целей. Надо ли уметь сохранять себя в поток не надо ли и проч.
inic (2004-08-24 14:28:00) [9]наследуй от TCustomTreeView и убери все ненужное публичное в protected.
Tormoz (2004-08-24 13:19:00) [10]To Digitman
В настоящее время так и есть. Беда вот в чем: этот класс я использую как published свойство TDBGrid'a для описания иерархической структуры заголовков колонок (это пока, так сказать, в ходе эксперимента). Думаю, Ты согласишься, что сие есть корявость : TDBGrid и так несколько монстроидален, а тут еще такие "навесы"...
Другой разговор, что в редакторе свойств я использую TreeView.
Digitman (2004-08-24 12:47:00) [11]
> без визуализации
возьми обычный TTreeView, выключи у него св-во Visible - вот и всех делов ... или под "без визуализации" что-то иное подразумевается ?