Поскольку вы сказали, что вам нужны отдельные экземпляры, тогда мое решение будет иметь переменную Datamodule в каждом объявлении формы:
TForm1 = class(TForm)
...
private
fDatamodule : TDatamodule1;
...
end;
procedure TForm1.FormCreate(Sender : TObject)
begin
fDatamodule := TDatamodule1.Create(self);
MyDatasource.Dataset := fDatamodule.MyDataset;
end;
(повторите для формы 2 и т. Д.)
У вас естьодин и тот же модуль данных, созданный дважды и, таким образом, полностью отделенный друг от друга, но использующий одну и ту же бизнес-логику в каждой форме.
Пока речь идет об объекте, убедитесь, что код модуля данных не содержит ссылки ни на одну из форм.Это плохая практика.