Тема: Назначение корневого классификатора для атрибута объекта

Ситуация такая. Есть объект, у ктоторого есть атрибут-классификатор "ATTR_Classif". Требуется, чтобы в зависимости от значений других атрибутов объекта изменялся корневой классификатор атрибута "ATTR_Classif". Однако, TDMSAttribute не предоставляет возможности указать иной корневой классификатор, нежели установленный в соответствующем ему TDMSAttributeDef.
ИМХО, было бы логично предоставить возможность выбора корневого классификатора для TDMSAttribute  :)

Re: Назначение корневого классификатора для атрибута объекта

То, что Вы предлагаете, это динамическое изменение AttributeDef-a.  Это решение - неправильное.

Предлагаю Вам решение: Поместите на форму ввода кнопку "Выбрать" и повесьте на неё скрипт SelectClassifierDlg, в котором указывайте любую корневую ноду классификатора.

Re: Назначение корневого классификатора для атрибута объекта

Нет, я не предлагал динамически менять TDMSAttributeDef  :) Я предлагаю добавить дополнительное свойство в TDMSAttribute, с помощью которого можно выбрать классификатор в рамках классификатора, указанного в TDMSAttributeDef. Это пожелание такое  :)
А делать это отдельной кнопкой с SelectClassifierDlg - так и приходится делать, других вариантов пока нет  :)

Re: Назначение корневого классификатора для атрибута объекта

Slava.Coder.Vrn пишет:

Я предлагаю добавить дополнительное свойство в TDMSAttribute, с помощью которого можно выбрать классификатор в рамках классификатора, указанного в TDMSAttributeDef. Это пожелание такое  :)

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

Возможно имеет смысл подумать над реализицией идеи аналогичной той, что реализована при работе с элементом управления атрибута типа ссылка на объект. По умолчанию - открывается диалог выбора классифкатора с корневой нодой, указанной в TDMSAttributeDef. Но элементу управления можно прикрепить выборку(?  :o ?), которая даст иной набор узлов (или хотя бы даст другой корень. Только не забывайте, что это все только для того, чтобы на форме была одна кнопка, а не две. Имхо, пока не интересно получается.)

Re: Назначение корневого классификатора для атрибута объекта

McZag пишет:

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

Просто нужно иметь возможность ограничить выбор из классификатора в зависимости от состояния конкретного объекта. Сейчас, при нажатии на кнопку выбора классификатора, вываливается диалог выбора классификатора с корнем, соответствующим заданному в TDMSAttributeDef.Classifier. Однако, хотелось бы иметь в TDMSAttribute свойство, скажем, RootClassifier, которое сожержит ссылку на корневой классификатор для конкретного атрибута конкретного объекта. Инициализироватся это свойство должно при создании объекта (и, ссотв, этого атрибута) значением из TDMSAttributeDef.Classifier. В дальнейшей "жизни" этого атрибута надо позволять устанавливать значение свойства RootClassifier на любой классификатор, расположенный в дереве ниже классификатора TDMSAttributeDef.Classifier. При попытке установить иной классификатор (не лежащий под классификатором TDMSAttributeDef.Classifier) оставлять свойство RootClassifier прежним. Соотв, при нажатии на кнопку выбора классификатора должен вываливаться диалог выбора классификатора с корнем, взятым именно из свойства RootClassifier. Как-то так.

McZag пишет:

Возможно имеет смысл подумать над реализицией идеи аналогичной той, что реализована при работе с элементом управления атрибута типа ссылка на объект. По умолчанию - открывается диалог выбора классифкатора с корневой нодой, указанной в TDMSAttributeDef. Но элементу управления можно прикрепить выборку(?  :o ?), которая даст иной набор узлов (или хотя бы даст другой корень. Только не забывайте, что это все только для того, чтобы на форме была одна кнопка, а не две. Имхо, пока не интересно получается.)

Выборку не надо. Тут задача проще, нежели при задании ссылки на объект. Это должно быть свойство, доступное исключительно из скрипта, иначе это теряет практический смысл или становится сложным в использовании.
Вам может и не интересно, а у нас в 2-ке все формы утыканы дополнительными кнопками для выбора объектов или классификаторов при том, что соответствующие им "штатные" поля для выбора значений атрибутов стоят в ReadOnly  :)  Некрасиво получается  :) Выходит, что программисты зря старались и писали особые элементы управления для выбора классификаторов и ссылок на объекты, потому как они используются в 10-20% случаев (самых простых).
В тройке проблем с выбором объектов практически никаких, а вот с выбором классификаторов все осталось по-прежнему.

Re: Назначение корневого классификатора для атрибута объекта

Slava.Coder.Vrn пишет:

Просто нужно иметь возможность ограничить выбор из классификатора в зависимости от состояния конкретного объекта.

Хотелось бы конкретный пример. Пока складывается ощущение, что объектная сущность заменена на классификатор