Для русскоязычных пользователей Visio. Начинающих и профессионалов. Где взять, как сделать, что купить и т.д.

TreeView на листе бумаги

Туманов Г.Е.

Элемент TreeView, отображающий иерархическую структуру в виде дерева, уже давно стал привычным во многих приложениях. Чаще всего им пользуются для выбора нужной папки в "Проводнике", но как часто не хватает инструмента, чтобы отобразить то же самое на бумаге.

Разделаться, наконец, с этой задачей позволит небольшое Visio приложение, о котором здесь говорится.

Приложение состоит из рисунка-заготовки Visio и специального трафарета. Все свернуто в архив treeview.zip. Для установки нужно просто разархивировать файлы, рисунок D2.vsd положить в любое место, там где вы будете с ним работать, а трафарет Fold.vss лучше всего разместить в папке Solutions, там где лежат остальные трафареты Visio.

Когда понадобится нарисовать структуру каталогов вашего компьютера (или фрагмент этой структуры), открываете рисунок D2.vsd и видите пустой лист и трафарет Fold. В меню Tools/Macros должна быть видна папочка ThisDocument, а в ней два макроса - ttt и Branch.

Выполнив макрос ttt вы получите первую ветвь дерева - набор дисков вашего компьютера.
В выпадающем меню, которое раскрывается по щелчку правой кнопки мыши на любой из нарисованных папок, есть пункт "Раскрыть". Он раскрывает в качестве ветви дерева следующий уровень папок. Продолжая дальнейшее раскрытие, вы можете получить любой фрагмент полного дерева каталогов компьютера.

Несущественные папки можно удалить, размещение приходится поправлять в зависимости от длины имени отображаемой структуры. Изображение всех папок одинаковое.

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

Приложение не блещет оформлением, но делалось оно для себя, а мне этого оказалось достаточно. Если что-то понадобится усовершенствовать, то исходный код макросов открыт и доступен для доработки. Следует только помнить, что для доступа к каталогам компьютера используется объект FileSystemObject, поэтому к проекту должна быть подключена библиотечка Microsoft Scripting Runtime.

Макрос ttt

Создает экземпляр FileSystemObject, получает коллекцию дисков и сохраняет ее во временном массиве names. Затем, пользуясь мастер-шейпом Folder с трафарета Fold.vss, отображает на листе рисунка нужное число папок, смещая каждое следующее изображение на 10 мм (1/5.08 дюйма). Путь (для последующего доступа) сохраняется в пользовательском свойстве шейпа.

Макрос Branch

Вызывается через меню шейпа (это свойство отражено в мастер-шейпе). Через объект Selection вычисляет, какой шейп его вызвал, и сохраняет начальные координаты раскрывающейся ветви на 20 мм правее и 10 мм ниже вызывающего шейпа.

Создает FileSystemObject и получает из него список подпапок указанной папки. Полный путь папки-родителя берется из пользовательского свойства вызывающего шейпа.

Ветвь подпапок прорисовывается примерно так же, как и ветвь дисков в предыдущем макросе. Дополнительно первый шейп ветви соединяется универсальным коннектором с вызывающим шейпом.

Вот, собственно, и весь несложный механизм. Если понадобится помощь при модернизации, пишите.

Все исходные материалы можно взять для подробного рассмотрения в zip-архиве.


Контакты: Туманов Геннадий Евгеньевич   gCroc@yandex.ru