Проблема с диалоговой формой

отредактировано February 2005 Раздел: FastReport 3.0
Очень хочется иметь возможность встраивать диалоговую форму FastReport в свою форму в программе.

С самой встройкой проблем не возникает:
frxDialogPage.DialogForm.Parent := любая панель на форме
frxDialogPage.BorderStyle := bsNone;
frxDialogPageDialogForm.Align := alClient;

и все, все показывается, но ничего не работает.
смотрим функцию:

function TfrxEngine.RunDialogs: Boolean;
var
i: Integer;
p: TfrxDialogPage;
begin

.....
p.DialogForm.BorderStyle := p.BorderStyle;

if p.DialogForm.ControlCount <> 0 then
begin

if Assigned(OnRunDialog) then
OnRunDialog(p) else
p.ShowModal;

if p.DialogForm.ModalResult = mrCancel then
begin
Result := False;
break;
end;
end;
....
end;

так как форма модальная, приложение оказывается полностью не работоспособным. Пробовал использовать OnRunDialog и управлять показом формы самостоятельно, но тут возникает проблема. Необходимо приостанавливать работу отчета до возврата из события. Более менее корректно это получается сделать если использовать второй поток.
Сам метод RunDialog переписывать не имею права. А очень бы хотелось получить возможность работать не только с модальной формой.

Комментарии

  • отредактировано 16:46
    Ну что я могу сказать. FR не для этого разрабатывался, меняйте метод под себя.

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

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