Почему окно дизайнера отчета не модально?
У меня FastReport Professional 3.10, многооконное приложение с главной формой MDIForm.
Дизайнер автономного отчета вызывается в двумя способами:
а) кнопкой на форме, открытой модально;
б) кнопкой на форме MDIChild.
В случае а) дизайнер отчета открывается в модальном окне, чего я и хочу.
В случае б) дизайнер отчета открывается не модально, форма MDIChild остается доступной (хотя и не Enabled), как и главная форма программы, чего я не хочу. При переходе в них окно дизайнера пропадает (скрывается за ними), пользователь ничего понять не может. Тот же эффект наблюдается, если окно предварительного просмотра установлено свойство MDIChild, и пользователь при просмотре нажимает кнопку "Редактировать отчет".
Как сделать так, чтобы окно дизайнера отчета всегда открывалось модально?
Можно ли в unit frxClass в методах
TfrxReport.DesignReport;
TfrxReport.DesignReport(IDesigner: IUnknown; Editor: TObject);
function TfrxReport.DesignPreviewPage:
везде поставить "FDesigner.ShowModal;" вместо "FDesigner.Show;" или возникнут проблемы?
Дизайнер автономного отчета вызывается в двумя способами:
а) кнопкой на форме, открытой модально;
б) кнопкой на форме MDIChild.
В случае а) дизайнер отчета открывается в модальном окне, чего я и хочу.
В случае б) дизайнер отчета открывается не модально, форма MDIChild остается доступной (хотя и не Enabled), как и главная форма программы, чего я не хочу. При переходе в них окно дизайнера пропадает (скрывается за ними), пользователь ничего понять не может. Тот же эффект наблюдается, если окно предварительного просмотра установлено свойство MDIChild, и пользователь при просмотре нажимает кнопку "Редактировать отчет".
Как сделать так, чтобы окно дизайнера отчета всегда открывалось модально?
Можно ли в unit frxClass в методах
TfrxReport.DesignReport;
TfrxReport.DesignReport(IDesigner: IUnknown; Editor: TObject);
function TfrxReport.DesignPreviewPage:
везде поставить "FDesigner.ShowModal;" вместо "FDesigner.Show;" или возникнут проблемы?
Комментарии
Процедура открывает окно дизайнера с эффектом псевдомодальности. Правда, после закрытия его окно прыгает, так как делается попытка переключиться в другое приложение.
procedure FRXDesignReportAsModal(FRXReport:TFRXReport);
var F:TForm;
begin
try
F:=Screen.ActiveForm;
if F.FormStyle = fsMDIChild then Application.MainForm.Enabled:=false;
FRXReport.DesignReport;
finally
if not Application.MainForm.Enabled then
begin
Application.MainForm.Enabled:=true;
Application.MainForm.SetFocus;
if F <> nil then
begin
if (F.Visible and not F.Focused) then F.SetFocus;
end;
end;
end;
end;
Сергей Ковязин.