FS 1.4 - проблема с AddForm

отредактировано March 2004 Раздел: FastScript
Привет !

Попытаюсь в меру своих способностей объяснить суть проблемы.

Создаем динамически

1.

xpseudoform:=TDataModule.Create(nil);
xpseudoform.name:='mdata';

xfsScript:= TfsScript.Create(xpseudoform);
xfsScript.SyntaxType:='PascalScript';
xfsScript.Parent:=fsGlobalUnit;
xfsScript.AddedBy:=self; (self - главная форма)
компонент скрипта у меня создается динмически, но я думаю если он создан в DesignTime - проблема останется.


2.
затем в Runtime добавляю на модуль данных несколько компонентов
и делаю

xfsScript.AddForm(xpseudoform);

3. запускаю припомощи TfsScript скрипт который активно использует компоненты на модуле данных. Все работает.

4.
удаляю компоненты с формы
удаляю экземпляры клаcсов TDataModule и TfsScript
xfsScript.RemoveItems(self);
xfsScript.Clear;
xfsScript.AddedBy:=nil;
xfsScript.free;
xfsScript:=nil;

xpseudoform.free;
xpseudoform:=nil;

Все замечательно почищено :-)))
А вот если второй раз пройтись по цепочке, то появляется проблема.
На 2-ом шаге (AddForm) выясняется, что описания переменных на модуле данных так и остались сидеть в скриптовом движке, а именно в списке Fmembers объекта TfsClassVariable для моего модуля данных. При этом все компоненты при вызове AddForm добавляются повторно,
а при запуске скрипта движок пытается работать с удаленными на первой итерации компонентами датамодуля и вылетает с exception. Что делать ? Как заставить TfsClassVariable.FMembers очищаться :-)))

Комментарии

  • отредактировано 17:37
    Предполагалось, что AddForm будет делаться один раз, причем для fsGlobalUnit - ведь при этом модифицируется информация о классах.
  • отредактировано 17:37
    Жаль ;)
    В принципе можно еще перетерпеть , что форма в контексте FS->AddForm
    не может быть динамической, а вот с компонентами на форме сложнее.
    Думаю не только у меня в будущем возникнет желание их удалять,
    добавлять динамичекси вне FS, а ссылки уже на убитые объекты при этом будут оставаться в движке . ;) Все равно спасибо !

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.