vcl-dxspreadsheetreportdesigner-dot-tdxspreadsheetreportdesigner-422867a1.md
Enables you to provide multiple spreadsheet controls as report building destinations.
property OnNewDocument: TdxSpreadSheetReportDesignerNewDocumentEvent read; write;
This event is fired every time the Report Designer finishes building a previous section of the master-detail report, provided that the Options.ReportMode property is set to rmMultipleDocuments.
The Sender parameter specifies the Report Designer control that contains the master-detail report template.
Pass a new Spreadsheet control (a TdxCustomSpreadSheet descendant instance) in the OnNewDocument event handler as the destination document for building a detail section following the next master dataset row:
procedure TfrmMasterDetail.ReportDesignerNewDocument(Sender: TdxSpreadSheetReportDesigner; var ADestination: TdxCustomSpreadSheet);
var
APreview: TfrmPreview; // A report preview form
APreviewCaptionPrefix: string;
begin
APreview := TfrmPreview.Create(nil); // Create a new preview form
APreviewCaptionPrefix := 'Report Preview';
ADestination := APreview.ssResult; // The preview form class has a TdxSpreadSheet component
ADestination.ClearAll; // Remove all worksheets from the destination Spreadsheet control on a newly created report window
APreview.Caption := APreviewCaptionPrefix + ' : MasterRecordIndex = ' + IntToStr(Sender.DataBinding.DataController.FocusedRowIndex); // Add a master record index to each report preview window
APreview.Show; // Display a new report window
APreview.Left := APreview.Left + Sender.DataBinding.DataController.FocusedRowIndex * 30; // Shift each new report window right by 30 pixels
APreview.Top := APreview.Top + Sender.DataBinding.DataController.FocusedRowIndex * 30; // Shift each new report window down by 30 pixels
end;
void __fastcall TfrmMasterDetail::ReportDesignerNewDocument(TdxSpreadSheetReportDesigner *Sender, TdxCustomSpreadSheet *&ADestination)
{
TfrmPreview *APreview = new TfrmPreview(NULL); // Create a new preview form
UnicodeString ApreviewCaptionPrefix = "Report Preview";
ADestination = APreview->ssResult; // The preview form class has a TdxSpreadSheet component
ADestination->ClearAll(); // Remove all worksheets from the destination Spreadsheet control on a newly created report window
APreview.Caption := ApreviewCaptionPrefix + " : MasterRecordIndex = " + IntToStr(Sender->DataBinding->DataController->FocusedRowIndex); // Add a master record index to each report preview window
APreview->Show(); // Display a new report window
APreview->Left = APreview->Left + Sender->DataBinding->DataController->FocusedRowIndex * 30; // Shift each new report window right by 30 pixels
APreview->Top = APreview->Top + Sender->DataBinding->DataController->FocusedRowIndex * 30; // Shift each new report window down by 30 pixels
}
As a result, each detail section is displayed in its own Spreadsheet control on multiple forms:
Note
The first report document (whose master record index is 0 ) in rmMultipleDocuments mode is created as the result of calling the Build procedure, prior to the first OnNewDocument event occurrence.
See Also
TdxSpreadSheetReportDesigner Class