Форум: "Компоненты";
Текущий архив: 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