It seems you tried to rebuild report with vertical bands. You should reload report template for refreshing report with vertical bands, because of changing object's position on the vertical bands during report's preparing.
Create a second TfrxReport instance, load same report template to it and reload report template before refreshing
procedure TForm1.frxReport1Preview(Sender: TObject);
var Button: TSpeedButton;
begin
Button := TSpeedButton.Create(TfrxPreviewForm(TfrxReport(Sender).PreviewForm).ToolBar);
TfrxPreviewForm(TfrxReport(Sender).PreviewForm).ToolBar.InsertControl(Button);
Button.Caption := 'Refresh';
Button.Width := 60;
Button.OnClick := RefreshReport;
end;
procedure TForm1.RefreshReport(Sender: TObject);
var
idx: Integer;
begin
for idx := 0 to frxReport1.PagesCount - 1 do
if frxReport1.Pages[idx] is TfrxReportPage then
begin
frxReport1.Pages[idx].Clear;
frxReport1.Pages[idx].AssignAll(frxReport2.Pages[idx], True);
end;
TfrxPreviewForm(TSpeedButton(Sender).Owner.Owner).Report.ShowReport;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
frxReport2.AssignAll(frxReport1, True);
frxReport1.EngineOptions.DestroyForms := False;
frxReport1.ShowReport();
end;