FR3 и использование нескольких экземпляров форм
У меня при при создании формы все TDataset автоматечески регистрируются
Форма состоит из TfrxReport, TDataset, TDataSource, TDBGrid и кнопки "Печать"
В самом отчете я в Меню\Отчет\Данные указываю использовать Dataset
Нажимаю кнопку, отчет показывается нормально.
Далее я создаю второй экземпляр формы, не делая Free для первого экземпляра.
Нажимаю кнопку "печать" на второй форме и в отчете вижу данные формы 1
Далее закрываю форму 1
Опять нажимаю кнопку "печать" на второй форме и в отчете вижу уже данные формы 2.
Т.е. у меня Меню\Отчет\Данные есть несколько экземпляров с одним именем.
Раньше когда пользовался FR2, у меня на каждой форме был экземпляр TfrReport, и проблем с обращением к TDataset находящимися на текущей форме не было.
Вопрос: как отобразить содержимое TDataset текущей формы в FR3?
Если нужно могу дать тестовый проект.
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
frxDBDataset: TfrxDBDataset;
begin
for i:=0 to ComponentCount-1 do
begin
if Components[i] is TDataset then
begin
frxDBDataset:= TfrxDBDataset.Create(self);
frxDBDataset.DataSet := Components[i] as TDataSet;
frxDBDataset.UserName := Components[i].Name;
frxReport.DataSets.Add(frxDBDataset);
frxReport.EnabledDataSets.Add(frxDBDataset);
end;
end;
end;
Форма состоит из TfrxReport, TDataset, TDataSource, TDBGrid и кнопки "Печать"
procedure TForm1.Button1Click(Sender: TObject);
begin
frxReport.LoadFromFile('Test.fr3');
frxReport.ShowReport;
end;
В самом отчете я в Меню\Отчет\Данные указываю использовать Dataset
Нажимаю кнопку, отчет показывается нормально.
Далее я создаю второй экземпляр формы, не делая Free для первого экземпляра.
Нажимаю кнопку "печать" на второй форме и в отчете вижу данные формы 1
Далее закрываю форму 1
Опять нажимаю кнопку "печать" на второй форме и в отчете вижу уже данные формы 2.
Т.е. у меня Меню\Отчет\Данные есть несколько экземпляров с одним именем.
Раньше когда пользовался FR2, у меня на каждой форме был экземпляр TfrReport, и проблем с обращением к TDataset находящимися на текущей форме не было.
Вопрос: как отобразить содержимое TDataset текущей формы в FR3?
Если нужно могу дать тестовый проект.
Комментарии
Модифицировал код следующим образом Теперь в Меню\Отчет\Данные есть только по одмому экземпляру, но печатается так же как и раньше.
Поменять код: Если отчёты нужно показывать одновременно, то я не уверен, что это можно сделать вообще - отключить датасет для одного отчёта, одновременно показывая его в другом.
Господа нужно решение проблемы - можно конечно каждый COMобъект создавать в своём потоке, но должно же быть что-то проще?
gpi, fnvhope спасибо за помощь
Но это не помагает.
Мало того даже если перед печатью я делаю То все равно печатается не то что нужно
GlobalComponentName вам господа не помого по той причине, что все TfrxDataSet при создании регистрируются в неком глобальном списке (см. исходники TfrxDataSet.Create ), из которого птотм по UserName (обратите внимание, что это свойство заполнится автоматически, если вы его не заполните) через frxFindDataSet вынимается.
Пишу и вдруг подумалось: попробуй овнером TfrxDataSet сделать report - тогда эта frxFindDataSet будет отрабатывать правильно: