Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Ishodniki.Ru » Online книги » C++ Builder по шагам

Шаг 66 - Компонент TTreeView. Продолжение

В основном приходится работать с отдельными элементами древовидного списка - объектами класса TTreeNode. Об основных способах получения указателей на эти самые ноды я уже говорил. Теперь настало время рассмотреть методы и свойства самого TreeView.

Свойства

  • DropTarget
Содержит указатель на узел, являющийся областью сброса объекта (drop target). При операциях перетаскивания это свойство является довольно полезным. Кроме того, установка этого совйства автоматически изменяет статус узла на цель сброса.
  • HideSelection
    Аналогично TRichEdit::HideSelection определяет, остается ли видимым выделении элемента TreeView при отсуствии фокуса окна, например, при переключении на другое окно.
  • HotTrack
    "Горячая дорожка" - выделение нод дерева при прохождении над ними курсора мыши.
  • Images, StateImages
    Иконки для нод. Первое свойство определяет основные иконки, а второе - изображения состояния, state images, находящиеся слева от основной.
  • Indent
    Отступ каждой субноды от родительской, включая ноды высшего уровня.
  • Items
    Это уже было :) - элементы дерева.
  • ReadOnly
    Запрещает редактирование элемнтов дерева.
  • RightClickSelect
    Разрешает выбор нод правой клавишей а ля Windows Commander (или кто знает Norton Commander ^)).
  • RowSelect
    Выделяется ли ряд целиком. Маленькое пояснение. Выделяться может только надпись, или вся гризонтальная область, занятая под эту надпись.
  • Selected
    Указатель на выделенный узел.
  • ShowButtons, ShowLines, ShowRoot
    Видно ли соответственно - кнопки "+/-" раскрытия вложенных потомков; линий, проходящих от родителей к потомкам; корня дерева.
  • SortType
    Сортировка узлов дерева. Если stData, то при изменении свойства Data. Если stText, то при изменении свойства Text. Логично, что stBoth сортирует без разбора по обоим поводам :)). Дата - данные, укзатель соответствующий TreeNode а. Для сортировки по данным придется написать обработчик OnCompare, как, покажу...
  • ToolTips
    Логическое свойство, определяет, возникать ли Application::OnHint событию при проведении мыши над элементом дерева.
  • TopItem
    Указатель на самую верхнюю ноду.

    Во как! Теперь методы...

    • AlphaSort
    Рассортировывает элементы дерева по алфавиту.
  • CustomSort
    Описание:
    typedef int (CALLBACK *PFNTVCOMPARE)(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort); bool __fastcall CustomSort(PFNTVCOMPARE SortProc, int Data);
    Некотрый аналог OnCompare. Для каждого элемента одного уровня в TreeViewвызывается функция, описанная как PFNTVCOMPARE. Два первых параметра определяют два узла TreeView, а третий - Data. Ну например:
    int __fastcall CompareFunc(TTreeNode *Node1,TTreeNode *Node2, int Data)
    {
    if(...) 		//здесь происходит сравнение
    return -1;		//если Node1 должна идти впереди Node2
    if(...)
    return 1;	//наоборот
    if(...)
    return 0;	//если ноды равны
    }
  • FullCollapse, FullExpand
    Void функции и по retval и по параметрам. Соответственно полное сворачивание элементов дерева и их полное разворачивание.
  • GetHitTestInfoAt
    Описание:
    THitTests __fastcall GetHitTestInfoAt(int X, int Y);
    Получить сведения о какой-либо точке дерева. Прошу обратить вниммание, что точка должна быть задана не в глобальных координатах или координатах относительно формы, а локальных координатах данного TreeView. Возвращает множество THitTests, значения у которого могут быть следующие:
    • htAbove, htBelow
    Ниже или выше клиентской области.
  • htNowhere
    Внутри элемента управления, но ни на каком дочернем элементе.
  • htOnItem, htOnButton, htOnIcon
    Соответственно на элементе (ноде, элементе списка и т.д.), на кнопке BUTTON, или на иконке.
  • htOnIndent
    На области перед элементом - области отступа.
  • htOnLabel
    На подпись.
  • htOnRight
    С правой стороны ноды.
  • htOnStateIcon
    На иконке состояния.
  • htToLeft
    На левую часть клиентской области.
  • htToRight
    На правую часть.
  • GetNodeAt
    Возвращает указатель на ноду с координатами X и Y. Координаты относительно левого верхнего угла TreeView.
  • IsEditing
    Возвращает true если какой-либо узел подвергается редактированию. То есть его подпись нагло меняет юзер :). Напомню, что, чтобы такого не допустить, надо свойство ReadOnly установить в true.
  • LoadFromFile, LoadFromStream, SaveToFile, SaveToStream
    Соответственно загрузить или сохранить в файл или поток. Тут некоторые пояснения. Получающийся файл - текстовой ASCII-encoded со следующий иерархией - каждый потомок отстоит от родителя на TAB. Вобщем-то то же самое получается. Ну например:
    My top element
    	Child 1-1
    	Child 1-2
    		Child 1-2-1
    My second top element
    	Child 2-1
    	Child 2-2
    		Child 2-2-1
    			Child 2-2-1-1
    
    И так до бесконечности :). В данном случае получится вот что:

    gif/66_1.gif (1472 b)

    Вот и все. Там еще всякие разные события, но во-первых у них названия сами за себя говорят, во-вторых все равно мы позже на примере создания чего-нибудь вроде дерева каталогов рассматривать будеи, ну и в третьих - и так много места на него потратили :).

  •  

    Предыдущий шаг | Оглавление | Следующий шаг

    Рассылка новостей
    Рейтинги
    © 2007, Программирование Исходники.Ру