Форум Сообщества Аналитиков

Общий раздел => Методологии => MDA => Тема начата: Galogen от 01 Июля 2008, 14:37:33

Название: Работа с BoldTreeView
Отправлено: Galogen от 01 Июля 2008, 14:37:33
Так обращаюсь с гуру по работе с BOLDом.

Задача: создать представление в виде иерахического дерева с изменяющимися иконками (в зависимости от тех или иных условий).

Условия для реализации. Модель: Факультет - Группа - Студент.

Что удалось сделать - удается сделать, если в качестве источника- дескриптора использую коллекцию Факультет - она отображается в гриде, а список групп и студентов уже отображается в дереве. А хочу чтобы все в дереве,
Название: Re: Работа с BoldTreeView
Отправлено: SaTim от 01 Июля 2008, 14:54:20
Надо подумать.
Я вот так сразу не соображу счас можеш исходники выслать?
Название: Re: Работа с BoldTreeView
Отправлено: Galogen от 01 Июля 2008, 15:05:32
Ну исходников нет, а чего их высылать? Помнишь модель деканат я тебе высылал.

Я не могу допетрить как сформировать верхний узел - Факультеты, дальше вроде все ясно понятно более или менее.

Т.е. процесс таков: создаешь listFaculty для которого рутхандлер - общее объектное пространство. OCL - Faculty.allinstanses

Далее уже делаешь тривью от этого хандлера, но там верхний узел - это группа, а как сделать чтобы факультет был - не могу понять
Название: Re: Работа с BoldTreeView
Отправлено: SaTim от 01 Июля 2008, 22:56:54
Посмотри в свойствах TreeView
Должно быть ShowRoot типа болиен
Название: Re: Работа с BoldTreeView
Отправлено: Galogen от 01 Июля 2008, 23:15:16
Посмотри в свойствах TreeView
Должно быть ShowRoot типа болиен
Тимур, ну так не пойдет - или объясняй подробно или не объясняй вообще, т.е. если не сложно сценарий. Я по книге Грибачева хотя и въехал как делать дерево при начально заданном listHandel, но говорю не пойму как начать от объектного пространства (ОП), посути от Root Handel. Как ты понимаешь в свойствах BoldTreeView следует указать дескриптор, но это не может быть Root Handel, если это ОП.
Я посмотрю конечно завтра еще поковыряюсь пока студенты пишут контрольный пример :)
Название: Re: Работа с BoldTreeView
Отправлено: Galogen от 03 Июля 2008, 13:28:56
Благодаря активной помощи yumata, я могу опубликовать сценарий решения поставленной мною же задачи.

Модель задачи такова:

(http://www.isuct.ru/~ivt/foruml2/VUSY.jpg)

Далее организуем объектное пространство и болдификацию модели (это процесс я опускаю, его изучить можно по примерам из статей Константина Грибачева (http://www.uml2.ru/index.php?option=com_content&task=view&id=160&Itemid=64).

Создадим форму.
Поместим на нее компонент TBoldTreeView с палитры BoldControls. Свойство Align=alClient (нравится мне так).
Поместим на нее же компонент listBoldHandler с палитры BoldHandlers. RootHandel =  TBoldSystemHandel1 и StaticSystemHadel - аналогично
В свойствах TBoldTreeView BoldHandel укажем listBoldHandler (с вашим именем конечно)
Далее открываем редактор Node Description Editor

Выделяем Root и добавлем add List Fragment. Выделим появившейся фрагмент и зададим такие свойства:
        ElementExpression = 'Faculty.allInstances'
        ControllerExpression =
          'oclType.asstring->union(oclType.allsupertypes.asString)->union('#39 +
          '<Default>'#39')'
        InterpretAsList = True
Добавляем Add Node Description
выделяем его и задаем свойства:
Name = Faculty
TextControler: Expresion = asString

Выделяем Faculty и добавлем add List Fragment. Выделим появившейся фрагмент и зададим такие свойства:
 ElementExpression = 'is_part_of'
        ControllerExpression =
          'oclType.asstring->union(oclType.allsupertypes.asString)->union('#39 +
          '<Default>'#39')'
        InterpretAsList = True
Добавляем Add Node Description
выделяем его и задаем свойства:
Name = Gruppa
TextControler: Expresion = 'Группа '+asString

Выделяем Gruppa и добавлем add List Fragment. Выделим появившейся фрагмент и зададим такие свойства:
 ElementExpression = 'has_students'
        ControllerExpression =
          'oclType.asstring->union(oclType.allsupertypes.asString)->union('#39 +
          '<Default>'#39')'
        InterpretAsList = True
Добавляем Add Node Description
выделяем его и задаем свойства:
Name = Student
TextControler: Expresion = fio+' '+birthDay.asString

Запускаем и радуемся.

Ну еще можно узлы ассоциировать с картинками
Название: Re: Работа с BoldTreeView
Отправлено: Drakena от 22 Декабря 2008, 12:54:31
Как связать выбранную позицию в дереве с данными?
Условия для реализации. Модель: Факультет - Группа - Студент.

Что удалось сделать - удается сделать, если в качестве источника- дескриптора использую коллекцию Факультет - она отображается в гриде, а список групп и студентов уже отображается в дереве. А хочу чтобы все в дереве,

А если немного поменять: Факультет  и список групп  уже отображается в дереве, а  студентов нужно отображать в отдельном гриде, причем только тех, чья группа  выбрана в дереве. Как связать выбраную группу в дереве с отображением студентов в гриде. При кликах на группах в дереве listBoldHandler для факультета и  listBoldHandler для групп не меняют свою навигацию.
Название: Re: Работа с BoldTreeView
Отправлено: Galogen от 22 Декабря 2008, 18:04:53
Как связать выбранную позицию в дереве с данными?
А если немного поменять: Факультет  и список групп  уже отображается в дереве, а  студентов нужно отображать в отдельном гриде, причем только тех, чья группа  выбрана в дереве. Как связать выбраную группу в дереве с отображением студентов в гриде. При кликах на группах в дереве listBoldHandler для факультета и  listBoldHandler для групп не меняют свою навигацию.
Ой так давно все было. Если честно пока не имею времени поразбираться, попрошу  yumata ответить на вопрос если что.
Название: Re: Работа с BoldTreeView
Отправлено: yumata от 23 Декабря 2008, 13:24:25
To Drakena:
По клику можно определить выбранный объект в дереве - TreeView.CurrentElement as TMyBoldObject;
Это значение можно присвоить ReferenceHandle, к которому прикреплен Grid!