www.adept7.kiev.ua
| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
  http://tikitak.narod.ru ---- Главная страница сайта

Шаг 53 - Что такое CTreeCtrl

Создание проекта

Опять будем экспериментировать с диалоговым окном. Нам надо поместить на него элемент дерево просмотра и установить стиль, как на рисунке внизу.

step53_1.gif (3235 b)

step53_2.gif (2763 b)

Создание кода

Обьявить класс элемента управления
class CTestDlg : public CDialog
{
 	 ........
	 protected:
	 ........
			CTreeCtrl    m_Tree;
	 ........
};
Организовать обмен данными через DDX
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_TREE1, m_Tree);
}
Установка элементов в инициализации диалогового окна
BOOL CTestDlg::OnInitDialog()
{
	..........
	HTREEITEM  otdel=m_Tree.InsertItem("otdel");
	HTREEITEM  ayp=m_Tree.InsertItem("ayp",otdel);
	HTREEITEM  work=m_Tree.InsertItem("working",otdel);
	m_Tree.InsertItem("Petrov",ayp);
	m_Tree.InsertItem("Ivanow",ayp);
	m_Tree.InsertItem("Katj",work);
	m_Tree.InsertItem("Olj",work);
	m_Tree.InsertItem("Nastj",work);
   	return TRUE;
}

Описание

Элемент CTreeCtrl предназначен для работы со структурами имеющими древовидную структуру. Вобщем это является основой всех классификаций. Посмотрите на структуру предприятия: всё предприятие - отделы - отряды - люди. Это дерево. Или Государство. Государство - области - районы - поселки - улицы - дома. Практически все данные можно представить в виде иерархий того или иного плана.

Как всегда обьявляем класс и устанавливаем связь через DDX - это мы уже делаем не помню какой раз.

Для заполнения дерева нам необходимо использовать функцию InsertItem у этой функции много описаний и воспользуемся самым простым.

HTREEITEM InsertItem( LPTV_INSERTSTRUCT lpInsertStruct );
HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage, int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam, HTREEITEM hParent, HTREEITEM hInsertAfter );
HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST );
HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
Как видите в функции выделенной жирным шрифтом обязательным является только один параметр. Это строка. Второй параметр - это адрес ствола дерева. TVI_ROOT - это означает корень, то есть элемент самого верхнего уровня.

Итак при первом вызове функции я создал корень дерева с названием otdel. При выполнении функции возвращается идентификатор этого узла в виде переменной типа HTREEITEM. Мы её запоминаем, чтобы создать узлы меньшего уровня.

Посморите ниже по коду. Теперь используем эту переменную otdel, для того чтобы вставить два ответвления. И при их вставке запоминают место в переменных, для того чтобы вставить еще узлы меньшего ранга.

Запускайте. Вы увидите древовидный список, сможете окрывать, закрывать ветви.


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

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz