(изменено: McZag, 29 апреля 2013г. 13:49:20)

Тема: Работа со вспомогательными деревьями TDMS

1. Описание

Данное решение позволяет отображать вспомогательное дерево,
аналогичное дереву объектов TDMS, определяя его корневой элемент
из кода. В окне состава отображается описание выбранного в дереве
объекта, имеется возможность сформировать контекстное меню (метод
*имя_контрола_формы *_ContextMenu).

Кнопку, отвечающую за состояние видимости объекта, можно
поместить на панель инструментов.

2. Основная часть

Для реализации этого компонента задействуется контрол
TDMSTreeCtrl. Корневые узлы добавляются в контрол командой InsertObject
–можно устанавливать корневым как объект TDMS, так и рабочий стол
(TDMSApplication.Desktop). В рамках данного решения в момент выбора
какого-либо узла дерева окно TDMS «Окно состава» заполняется по тем
же правилам, что и в случае выбора объекта в стандартном дереве TDMS.
Этого можно добиться командой TDMSApplication.Shell.ListInitialize,
предварительно создав виртуальную таблицу и добавив в неё содержимое
(ThisApplication.CreateSheet).

Контекстное меню

Для инициализации контекстного меню используется команда
ContextMenu – в сигнатуре содержится информация о координатах нажатия
правой кнопки, номер узла дерева, которому соответствует нажатие (0 –
если клик по пустому полю). Появление контекстного меню достигается
вызовом метода

result = menu.Show(xCoord, yCoord)

(здесь menu – объект
TDMSApplication.Dialogs.ContextMenu, а команды в него добавляются
строкой menu.AppendUserMenu №, «название кнопки», код_картинки).
Переменная result - номер выбранной пользователем команды из списка
меню.

3. Пример

Во вложении к данной публикации содержится бэкап базы Elaros, содержащий
описанный функционал (дерево открывается и закрывается по клику на команде
"Открыть вспомогательное дерево" панели задач).
Вспомогательное дерево формируется с узла "Внутренние проекты".
При клике на команде Files контекстного меню, если у объекта
есть вложенный файл, к этому объекту применяется команда "Окно просмотра" (CMD_VIEW).

4. Вывод

Данный функционал может использоваться для упрощения работы
отдельных специалистов, которым нужно показывать определенный срез
информации, как например:

• Работа со справочниками, где справочники показываются на
отдельной панели с возможностью отображать в окне состава
объекты, непосредственно связанные с выбранными элементами
справочника в дереве на панели
• Работа с подсистемой. Например, если в одной базе реализовано
несколько подсистем. Например, система Организационно-
распорядительного документооборота и система Технического
документооборота.
• Работа с личными подборками, которые также могут
отображаться на отдельной панели.
• Работа с текущими проектами\комплектами и т.д., для
упрощения поиска этих элементов в общем дереве.

Post's attachments

ELAR_FOR_PUBLICATION_TREE_.7z 34.69 Мб, 63 скачиваний с 2013-04-29 

You don't have the permssions to download the attachments of this post.

Re: Работа со вспомогательными деревьями TDMS

GeorgiyOvsyann пишет:

1. Описание

Данное решение позволяет отображать вспомогательное дерево,
аналогичное дереву объектов TDMS, определяя его корневой элемент
из кода. В окне состава отображается описание выбранного в дереве
объекта, имеется возможность сформировать контекстное меню (метод
*имя_контрола_формы *_ContextMenu).

...

Добрый день,
Не удалось восстановить бэкап базы:

[size=1]TITLE: Microsoft.SqlServer.Smo
------------------------------

System.Data.SqlClient.SqlError: The media family on device 'D:\projects\TDMSTest\TDMSTest\ELAR_FOR_PUBLICATION_TREE_\ELAR_FOR_PUBLICATION(TREE).bak' is incorrectly formed. SQL Server cannot process this media family.

For help, click: http://go.microsoft.com/fwlink?ProdName=Mi...mp;LinkId=20476

------------------------------
BUTTONS:

OK
------------------------------
[/size]
Может можно приложить экспорт структуры базы, если там нет важных объектов для этого примера

Re: Работа со вспомогательными деревьями TDMS

lenav пишет:

Добрый день,
Не удалось восстановить бэкап базы:

[size=1]TITLE: Microsoft.SqlServer.Smo
------------------------------

System.Data.SqlClient.SqlError: The media family on device 'D:\projects\TDMSTest\TDMSTest\ELAR_FOR_PUBLICATION_TREE_\ELAR_FOR_PUBLICATION(TREE).bak' is incorrectly formed. SQL Server cannot process this media family.

For help, click: http://go.microsoft.com/fwlink?ProdName=Mi...mp;LinkId=20476

------------------------------
BUTTONS:

OK
------------------------------
[/size]
Может можно приложить экспорт структуры базы, если там нет важных объектов для этого примера

Скачал базу, распаковал 7Zip и успешно восстановил бэкап.

Возможные причины:
1) не корректно распаковался архив (я распаковывал 7zip),
2) наличие "(" и ")" в названии бэкапа,
3) недостаточно прав на директорию, где расположен бэкап (перенести в другую директорию, например TEMP ).
4) версия СУБД отлична от MS SQL 2008 R2