> -- Alexander Shiryaev писал(а):
> Вот что я хочу сделать:Создать модуль для формы, реализовать его, связать с ним форму.Потом взять и сделать, чтобы таких форм на экране было несколько одновременно, чтобы выглядели они одинаково, чтобы реализация была одна и та же, но чтобы данные у каждой формы были свои.Потом, если я захочу изменить внешний вид или реализацию 1-й формы, то чтобы и у других форм внешний вид и реализация были такими же, как у 1-й, но при этом не хочу каждый раз копировать файлы Mod и Rsrc.Не хотите копировать руками --- копируйте программно, чтоInfo21Вам и предложил. Работа программиста и заключается в том, чтобы реализовывать алгоритмы, перекладывая их рутинное исполнение на машину; ничего костыльного в предложенном нет, всё делается штатными способами.

Копировать модуль A->B. Результат: кодовый файл модуля B --- копии A
v := Views.OldView(modALoc, modAName); ASSERT(v # NIL); ASSERT(v IS TextViews.View);
modText := Models.CopyOf(v(TextViews.View).ThisModel())(TextModels.Model) --- если не делать копию, то в случае открытости исходника A в ББ он будет (программно) правиться
Заменить в modText имя modAName на modBName
Скомпилировать: DevCompiler.CompileText(modText, 0, error); ASSERT(~error)

Копировать документ формы A->B. Результат: временная копия документа формы A
v := Views.OldView(formALoc, formAName); ASSERT(v # NIL); ASSERT(v IS FormViews.View);
form := Models.CopyOf(v(FormViews.View).ThisModel())(FormModels.Model) --- то же
Для всех контролов в form исправить соотв. свойства (link, guard, etc.) заменив в них modAName на modBName. (Корректно, если все интеракторы, охраны и проч. находятся в модуле A. Насколько понял условие задачи, это так.)
Для примера посмотрите реализацию UnicodeConv.FormViewsView, там аналогичная работа выполняется: PROCEDURE FormViewsView (src: FormViews.View): FormViews.View;

Открыть временную копию формы:
Views.OpenAux(FormViews.dir.New(form), title)