Тема: Чем отличается Form.Attributes от Obj.Attributes?

В обработчике события Form_AttributeChange передаются параметрами объекты Obj и Form.
Я правильно понимаю, что отличие в том, что Form.Attributes содержит редактируемые значения атрибутов объекта, а Obj.Attributes содержит значения, которые имели атрибуты до начала редактирования?

Re: Чем отличается Form.Attributes от Obj.Attributes?

Нет.
Form.Attributes - коллекция атрибутов расположенных на форме ввода
Obj.Attributes - коллекция атрибутов определенная для типа объекта

Re: Чем отличается Form.Attributes от Obj.Attributes?

Я посмотрел на эти коллекции. Они содержат одинаковый набор атрибутов (все атрибуты, которые есть в объекте, даже если на форме не представлены не все атрибуты объекта) и значения у них одинаковые (со всем текущими неподтвержденными изменениями).
Т.е. разницы между ними не увидел никакой.

(изменено: Anatoly, 17 апреля 2007г. 11:59:18)

Re: Чем отличается Form.Attributes от Obj.Attributes?

Но ведь форму ввода можно  открыть и без объекта  :)
К примеру мне надо открыть форму ввода сложной информации (не inputbox)(к примеру, при выполнении отчёта мне надо ввести 2-е даты "от и до")- тогда я просто делаю кастомную форму ввода с 2-мя атрибутами и в скрипте, при вызове отчёта пишу:

ThisApplicatiojn.InputForms("SysId").Show

P.S.
На самом деле по-идее, obj.Attributes должен содержать атрибуты объекта перед открытием формы ввода, а форма ввода - содержать редактируемые значения атрибутов на ней.  Но как тогда быть с объектами, для которых не определена форма ввода - т.е. атрибуты правятся прям на самом объекте?

Или как тогда быть с конвертацией с 2-й на 3-ю версию? - получается несовместимость  :(

Re: Чем отличается Form.Attributes от Obj.Attributes?

Anatoly пишет:

Но ведь форму ввода можно  открыть и без объекта  :)
К примеру мне надо открыть форму ввода сложной информации (не inputbox)(к примеру, при выполнении отчёта мне надо ввести 2-е даты "от и до")- тогда я просто делаю кастомную форму ввода с 2-мя атрибутами и в скрипте, при вызове отчёта пишу:

ThisApplicatiojn.InputForms("SysId").Show


Полезная штука. Я давно подозревал, что так можно, но боялся попробовать  :)

Anatoly пишет:

На самом деле по-идее, obj.Attributes должен содержать атрибуты объекта перед открытием формы ввода, а форма ввода - содержать редактируемые значения атрибутов на ней.


Да, я так и подумал, что идея была именно в этом  :)

Anatoly пишет:

Но как тогда быть с объектами, для которых не определена форма ввода - т.е. атрибуты правятся прям на самом объекте?


Я бы ответил на этот вопрос, если бы знал, как организовано редактирование объектов в TDMS  :) Но вроде бы редактирование атрибутов объекта "напрямую" без использования форм разрешено только сисадмину. Да и представляется мне, что вкладка объекта "все атрибуты" для того и предназначена, чтобы атрибуты можно было править безо всяких возникающих вследствие этого событий  :)
Вообще говоря, с этим есть проблемка, которую я, пожалуй, выведу в отдельную тему

Anatoly пишет:

Или как тогда быть с конвертацией с 2-й на 3-ю версию? - получается несовместимость  :(


А что там за проблема? Скрипты могут перестать правильно работать если код скрипта просто перенести из 2-ки в 3-ку?

(изменено: Anatoly, 17 апреля 2007г. 13:26:21)

Re: Чем отличается Form.Attributes от Obj.Attributes?

А что там за проблема? Скрипты могут перестать правильно работать если код скрипта просто перенести из 2-ки в 3-ку?

Сейчас используется и та и та конструкция, а если поменять (пусть даже на правильную), то возможно придётся править скрипты, а это несовместимость с 2-йкой  :(

Re: Чем отличается Form.Attributes от Obj.Attributes?

Но ведь если в 2-ке эти коллекции идентичны, то можно смело править код скрипта при конвертации. Т.е. прямо в скрипте менять Form.Attributes на Obj.Attributes. Имхо  :)

Re: Чем отличается Form.Attributes от Obj.Attributes?

Вы имеете в виду при конвертации бежать по коду и заменять from на obj? А потом еще что-нибудь.....  :))))

Re: Чем отличается Form.Attributes от Obj.Attributes?

Anatoly пишет:

Вы имеете в виду при конвертации бежать по коду и заменять from на obj? А потом еще что-нибудь.....  :))))

Да. А что тут такого ужасного?
Уж всяко лучше, чем поступает Билли при переходе от версии к версии  :)
Я вот как-то неделю с небольшим сидел и переводил супер-пупер переносимый универсальный код С++ из-под Visual C++ 6 под Visual C++ 7!!!
А вообще, конечно, нужен инструмент для операций с настройками... Перенос, частичный перенос, слияние, почкование и так далее...
Только сначала нужно написать тулину для переноса объектов из одной настройки в другую

(изменено: Mishaf, 17 апреля 2007г. 16:45:47)

Re: Чем отличается Form.Attributes от Obj.Attributes?

А не проще воспользоваться дампером/лоадером скриптов?
Т.е. после обновления, выгрузить скрипты изменить/заменить в них все что надо и загрузить обратно в БД.

Просто апгрейд БД обновляет структуру БД т.е. только системную часть (таблицы и хранимые процедуры БД). Не очень было бы правильно если бы программа обновления меняла еще и скрипты...

Re: Чем отличается Form.Attributes от Obj.Attributes?

Mishaf пишет:

А не проще воспользоваться дампером/лоадером скриптов?

Конечно, проще. Но говорить о том, что КАЖДЫЙ пользователь при переходе с 2-ки на 3-ку должен воспользоваться дампером/лоадером скриптов, да еще произвести при этом какие-то осмысленные действия...  :)

(изменено: Mishaf, 17 апреля 2007г. 17:03:22)

Re: Чем отличается Form.Attributes от Obj.Attributes?

Вообще то ВСЕ действия Администратора TDMS должны быть осмысленными.....
Во вторых, процес перехода с 2 на 3 увеличится в разы, если помимо обновления структуры системы будут обновляться еще и содержание.

далеко не во всех настройках придется обновлять скрипты. В большинстве случаев придется обновлять не только по вышеописанной причине, но и по причине появления нового функционала и новых возможностей...  ;) Иначе зачем вообще обновлять систему, если и так все устраивает...  :))

(изменено: Slava.Coder.Vrn, 17 апреля 2007г. 18:15:25)

Re: Чем отличается Form.Attributes от Obj.Attributes?

Да я разве спорю?  ;) Мне лично вообще без разницы, автоматом скрипты конвертится будут, или надо будет использовать отдельную утилиту. Нот мне кажется, удобнее было бы все-таки автоматом конвертировать. Потому как в этом случае операция конвертации не будет разбиваться на этапы.
Ну, раз вопрос конвертации скриптов решен, то надо делать, как и договорились, коллекции Form.Attributes и Obj.Attributes правильными  :)

Re: Чем отличается Form.Attributes от Obj.Attributes?

Ну, раз вопрос конвертации скриптов решен, то надо делать, как и договорились,

Где решен и с кем договорились?

Re: Чем отличается Form.Attributes от Obj.Attributes?

Anatoly пишет:

Где решен и с кем договорились?

:D  :D  :D

(изменено: McZag, 18 апреля 2007г. 10:00:58)

Re: Чем отличается Form.Attributes от Obj.Attributes?

Slava.Coder.Vrn пишет:

В обработчике события Form_AttributeChange передаются параметрами объекты Obj и Form.

Так уж исторически вышло, что коллекции атрибутов этих двух коллекции совпали. Это баг-фича, но она совершенно не влияет на результат, особенно если при обработке событий объекта не пользоваться параметром form  ;) Anatoly пояснил для чего нужен этот параметр, и где его правильно использовать.

Event FormAttributeChange(pForm As TDMSInputForm, pObject As TDMSObject, pAttribute As TDMSAttribute, _
                          bCancel As Boolean, pOldAttribute As TDMSAttribute)

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

(изменено: Slava.Coder.Vrn, 18 апреля 2007г. 10:18:26)

Re: Чем отличается Form.Attributes от Obj.Attributes?

:)
Ок. Просто меня засмущало, что есть Obj.Attributes, а есть Form.Attributes. Ведь "если в первом акте на стене висит ружье..."  :) Вот и подумал, что это "Ж" не спроста  :)