Соединение MFC CListCtrl и CTreeCtrl позволяет получить представление обо всем дереве, а не только об одном узле за раз - PullRequest
1 голос
/ 26 мая 2010

Рассмотрите Windows Explorer (или regedit или подобное). С левой стороны - древовидная структура, а справа - список. Во всех известных мне случаях содержимое правого представления отражает атрибуты выбранного узла на левой панели. Это все хорошо, но не то, что я хочу.

Узлы дерева, которое я хочу отобразить, имеют очень мало атрибутов (2-3), связанных с каждым узлом - разумное количество для горизонтального отображения в виде строки в таблице. Вместо того, чтобы тратить все это пространство представления списка на одном узле с очень небольшим количеством свойств, я бы хотел, чтобы мое представление списка отображало таблицу свойств всего дерева (как части дерева, развернутой в настоящее время). Таким образом, n-я строка в левом представлении (дерево) будет напрямую соответствовать n-й строке в правом представлении (список / таблица), и я получу приличный обзор свойств моего дерева.

Кто-нибудь знает код, который это делает? Я предполагаю, что подчинение CListCtrl CTreeCtrl было бы подходящим способом и каким-то образом переопределяет функции вертикальной прокрутки, чтобы они были заблокированы вместе. Я просто не уверен, что можно так скрепить свитки ... между прочим! Все советы с благодарностью приветствуются: -)

Ответы [ 2 ]

3 голосов
/ 26 мая 2010

Вы, вероятно, ищете Управление деревом Кумна

0 голосов
/ 26 мая 2010

Если вы сделаете рисование для владельца списка, было бы тривиально объединить его с древовидным элементом управления. Однако у вас все еще есть проблема с двумя полосами прокрутки, которые нужно синхронизировать. Возможно, вы могли бы захватить события прокрутки в одном и скопировать их в другое.

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

...