Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2008-04-01 00:13:39 ЛС | профиль | цитата
1) Ну мне представляется, что говорить про FTCG в этом аспекте пока преждевременно. Создание элемента имеет целью многократное использование кода - функциональные вызовы методов объекта. А мы пока не имеем этой технологии в FTCG

2) Исправить коды, чтобы порядок не имел значения - не представляется правильным решением.
Поразмысливши за рюмкой чая, прихожу к такому заключению: в природе существуют, видимо, два типа свойств.
Те, которые являются фактически аргументами конструктора, и без них немыслимо само создание объекта
И те, которые являются действительно свойствами, до создания объекта они бессмысленны, и действительно придают объекту некие новые качества
И тут мне представляется, что как раз нельзя поменять местами установку св-в именно этих разных типов
А о том, чтобы порядок не имел значения для однотипных - можно говорить, наверное

3) Логично было бы делать конструирование кодов в этом аспекте примерно так

#pas
Obj := THiObj.Create(Control, Arg1, Arg2);
Obj.prop1 := Prop1;
Obj.prop2 := Prop2;
Obj.prop3 := Prop3;
....
Но таковое вызывает трудности: необходим шаблон конструктора, а у нас есть договоренность, что среда ничего не знает о языковых особенностях компилятора.
Следовательно, не может предоставить эту информацию для CodeGen

Можно попробовать более универсальный подход, в котором конструктор нашего объекта создает лишь контейнер для аргументов, а "настоящий" конструктор сосредоточен в некотором методе Init

#pas
Obj := THiObj.Create;
Obj.Control := Control;
Obj.Arg1 := Arg1;
Obj.Arg1 := Arg2;
Init;
....
Obj.prop1 := Prop1;
Obj.prop2 := Prop2;
Obj.prop3 := Prop3;
....
Далее, код всей схемы может быть разбит на секции "конструирования", и "установки св-в".
Собственно, и "создание линков для всей схемы" можно присоединить к этой второй секции

И код для мультика можно сформировать так же: есть код конструктора, устанавливающий "аргументы" для всей схемы - первая секция, в которой "настоящие конструкторы" еще не запускались
Есть метод Init, который эти "настоящие конструкторы" запускает, и устанавливает все св-ва
Безусловно, присвоения тех аргументов или св-в, которые являются внешними - в кодах мультика опущены.
И тогда инициализацию мультика можно сделать по схеме, как и для штатного элемента, как показано выше.


Вот и возникает ясность с внесением изменений в интерфейс взаимодействия между средой и пакетом
Среда должна рассказать для CodeGen не только о значении интерфейсного св-ва, но и сообщить его некие атрибуты
  • Является данное св-во аргументом конструктора, или истинным св-вом
  • А не выключено ли данное св-во из списка установки
  • А не является ли оно необходимым только среде и не имеет никакого отношения к коду
    Почему я смешал первые два вопрос в одну кучку...
    Потому-что от второго не было бы никакого результата, без техники настоящего поста - мы все равно не смогли бы соблюсти идеологию KOL и получить 30К на пустую форму
    А если оставить только первую позицию - результат какой-то будет, только фиг кто его увидит, пока второй пункт не присовокупим

    P.S. На всякий случай, предвидя ссылки на всезнающий FTCG: ничего он не знает, если мы ему об этом не скажем.
    Если некий скрипт (типа pcontrol.hws из Дельфи-2) разбирается с сотней св-в контрола, то он и понятия не имеет об особенностях конкретного элемента: что хоть в св-ве и стоит какой-нибудь clRed, ничего не надо устанавливать
    Типа, мало ли чего на заборе пишут.

  • карма: 9

    0