C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 66 - Компонент TTreeView. Продолжение / С++ Builder 5 / Borland C++

Шаг 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)

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


| |
Автор Аванесов Самвел.
[AD]