|
11 Кб. |
|
| Тут типа под заказ написал DLL экспорт объекта TreeView в Excel.
Просьба (кому интересно) потестировать. И высказать свое мнение, и пожелания
Пока есть 1 свойство и 2 метода
свойство FirstRow - строка с которой на листе Excel будет расположены корневые категории (по умолчанию 1)
Методы:
SetLevel - устанавливает параметры шрифта для уровня
.SetLevel (Номер уровня, Размер шрифта, Код цвета для Шрифта, Жирный, Наклонный)
например так
pr.SetLevel 5, 15, 8, True, True
|
Для пятого уровня выставляем шрифт размером 15, цвет красный, Жирный, наклонный.
можно не использовать по умолчанию шрифт 10, черный, простой
Метод PrintTree - собственно вывод в Excel в качестве параметра нужно указать Treeview например
pr.PrintTree Me.TreeVWGroup
|
Пример вызова:
Dim pr As clsPrintTree
Set pr = New clsPrintTree
pr.SetLevel 1, 12, 3, True ' выставляем шрифт для перовго уровня, остальные по умолчанию
pr.FirstRow = 10 ' в Excel расположить с 10-й строки
pr.PrintTree Me.TreeVWGroup ' собственно печать контрола TreeVWGroup
|
Для Новичков:
Естественно DLL предварительно нужно регистрить ( c:\WINDOWS\system32\regsvr32.exe TreeView2Excel.dll) и устаноить из ACCESS ссылку на 'Export TreeView control to Ms Excel"
ВАЖНО:
Пока не понятно с правами ... заказчик вроде хочет делать какой-то платный набор тулзов... в общем в этой версии названия веток обрезаются до 5 символов. А то вдруг платить откажутся | |
|
| |
|
|
|
| Работает Access2002 Excell тоже
для дальнейшего расширения:
1. Возможность задать шапку описания
2. Возможность оставить цвета самого дерева
3. Обратотка динамически создаваемы деревьев (ну у меня сделано добавлением фиктивного узла "ЖДИТЕ", при раскрытии он удаляется, а при распечатке есть нераскрытые узлы) | |
|
| |
|
|
|
| Спасибо.
1. С шапкой подумаю, надо переварить.
2. Что значит "цвета самого дерева", всмысле считать из контрола?
3. Это вряд-ли... для этого нужно будет получать источник данных этой ветки... в общем универсальность пропадает.
Да еще... вот думаю может сделать возможность отключать создание структуры в Excel...
(Excel поддерживает только 8 уровней группировки) | |
|
| |
|
|
|
| 1. Да простую шапку задать: "Вывод информации по структуре договоров"
2. У меня ветки дерева уже раскрашены, такую раскраску мне и надо оставить.
3. Да не нужно источник перелопачивать. Просто допустим раскрыты узлы до 3 уровня, но чтоб показать что дальше еще что-то есть добавляются "фальш" подъузлы. Вот их то и не надо выводить. Т.е. возможность задать алгоритм выбора фальш узлов. | |
|
| |
|
|
|
| ну как альтернативу могу задать уровень печати типа до 3-го уровня.... или может лучше "с" - "по"?
И еще .. типа у тебя что каздый уровень раскрашен? или для dctuj 3view задан шрифт?
А как ты ветки красишь? | |
|
| |
|
|
|
| не пойдет, т.к. в одной ветке можно остановится на 3 уровне, а в другой на 5 и т.д.
Хотя мож это только я так дерево строю кусками по запросу Но как по другому вывести 300 000 веток я не очень представляю (вернее представляю, но по времени это не устраивает ) | |
|
| |
|
|
|
| Ну не только ты...
Ну можно еще попытаться добавить фильтр для имен веток ... "Not Like "*Ждите*"
Но тут встают некоторые вопросы... вот отфильтровался узел... видимо НЕ нужно выводить и все дочерние.... В общем надо покрутить в голове... так как ты уровни красишь? что-то я не нашел стандартных свойств... | |
|
| |
|
|
|
|
Private Sub butObjColor_Click()
' задать цвет объекта
Dim SqlStr As String
Dim lColor As Long
On Error GoTo Err_Debug
Me.butObjColor.SpecialEffect = 2
lColor = ShowColorDialog(Me.hWnd, True, IIf(TvObject.LastNode.ForeColor > 0, 0, 255))
If lColor = -1 Then
GoTo Exit_Here
End If
TvObject.LastNode.ForeColor = lColor
SqlStr = "UPDATE STRATEGY.OPER_OBJECT_TREEVIEW "
SqlStr = SqlStr + " SET OBJ_COLOR = " & lColor
SqlStr = SqlStr + " WHERE (ID_OBJECT = '" & TvObject.LastNodeKey & "')"
Result = AdoServerRecordset(varText:=SqlStr, varConnect:=modConnect).Execute
Exit_Here:
Me.butObjColor.SpecialEffect = 1
Exit Sub
Err_Debug:
MsgBox Err.Description
Resume Exit_Here
End Sub
|
TvObject.LastNode - это свойство класса-обертки дерева которое выдает последний выбранный узел | |
|
| |
|
|
|
| ага. Спасибо. Я уще нашел, это свойство конкретной ноды... а я прочему-то уперся в уровни и искал в свойсвах 3view. Подумаю | |
|
| |