Componentes.Terceros.FastRe.../official/4.7.5/Demos/MDI Designer/MAIN.PAS
2008-10-20 09:06:40 +00:00

234 lines
6.5 KiB
Plaintext

unit MAIN;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus,
StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns,
ActnList, ToolWin, ImgList, frxClass, frxDesgn, frxExportODF,
frxExportTXT, frxExportMail, frxExportCSV, frxExportText, frxExportImage,
frxExportRTF, frxExportXML, frxExportXLS, frxExportHTML, frxExportPDF,
frxSDACComponents, frxODACComponents, frxIBDACComponents,
frxDACComponents, frxMYDACComponents, frxVCLZip, frxFunction,
frxAdvPicture, frxChart, frxCrypt, frxGZip, frxDCtrl, frxDMPExport,
frxGradient, frxChBox, frxCross, frxRich, frxOLE, frxBarcode;
type
TfrxReportList = class(TObject)
private
FReportList: TList;
function GetReport(Index: Integer): TfrxReport;
function GetCount: Integer;
public
constructor Create;
destructor Destroy; override;
procedure ClearList;
procedure Delete(Index: Integer);
function CreateNewReport: TfrxReport;
function IndexOf(Report: TfrxReport): Integer;
property Report [Index: Integer]: TfrxReport read GetReport;
property Count: Integer read GetCount;
end;
TMainForm = class(TForm)
StatusBar: TStatusBar;
ActionList1: TActionList;
FileNew1: TAction;
FileSave1: TAction;
FileExit1: TAction;
WindowCascade1: TWindowCascade;
WindowTileHorizontal1: TWindowTileHorizontal;
WindowArrangeAll1: TWindowArrange;
WindowMinimizeAll1: TWindowMinimizeAll;
WindowTileVertical1: TWindowTileVertical;
ToolBar2: TToolBar;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton9: TToolButton;
ToolButton8: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ImageList1: TImageList;
ToolButton1: TToolButton;
ToolButton5: TToolButton;
PreviewReport: TAction;
MainMenu1: TMainMenu;
frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject;
frxRichObject1: TfrxRichObject;
frxCrossObject1: TfrxCrossObject;
frxCheckBoxObject1: TfrxCheckBoxObject;
frxGradientObject1: TfrxGradientObject;
frxDotMatrixExport1: TfrxDotMatrixExport;
frxDialogControls1: TfrxDialogControls;
frxGZipCompressor1: TfrxGZipCompressor;
frxCrypt1: TfrxCrypt;
frxChartObject1: TfrxChartObject;
frxAdvPictureObject1: TfrxAdvPictureObject;
frxAddFunctionLibrary1: TfrxAddFunctionLibrary;
frxVCLZipCompressor1: TfrxVCLZipCompressor;
frxMYDACComponents1: TfrxMYDACComponents;
frxIBDACComponents1: TfrxIBDACComponents;
frxODACComponents1: TfrxODACComponents;
frxSDACComponents1: TfrxSDACComponents;
frxPDFExport1: TfrxPDFExport;
frxHTMLExport1: TfrxHTMLExport;
frxXLSExport1: TfrxXLSExport;
frxXMLExport1: TfrxXMLExport;
frxRTFExport1: TfrxRTFExport;
frxBMPExport1: TfrxBMPExport;
frxJPEGExport1: TfrxJPEGExport;
frxTIFFExport1: TfrxTIFFExport;
frxGIFExport1: TfrxGIFExport;
frxSimpleTextExport1: TfrxSimpleTextExport;
frxCSVExport1: TfrxCSVExport;
frxMailExport1: TfrxMailExport;
frxTXTExport1: TfrxTXTExport;
frxODSExport1: TfrxODSExport;
frxODTExport1: TfrxODTExport;
procedure FileNew1Execute(Sender: TObject);
procedure FileExit1Execute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure DestroyDesigner(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FileSave1Execute(Sender: TObject);
procedure PreviewReportExecute(Sender: TObject);
private
{ Private declarations }
FReportList: TfrxReportList;
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
{ TfrxReportList }
procedure TfrxReportList.ClearList;
begin
while FReportList.Count > 0 do
begin
TfrxReport(FReportList[0]).Free;
FReportList.Delete(0);
end;
end;
constructor TfrxReportList.Create;
begin
inherited;
FReportList := TList.Create;
end;
function TfrxReportList.CreateNewReport: TfrxReport;
begin
Result := TfrxReport.Create(nil);
Result.CreateUniqueName;
Result.PreviewOptions.MDIChild := True;
Result.PreviewOptions.Modal := False;
Result.EngineOptions.DestroyForms := False;
FReportList.Add(Result);
end;
procedure TfrxReportList.Delete(Index: Integer);
begin
if (Index < 0) or (Index >= FReportList.Count) then
exit;
TfrxReport(FReportList[Index]).Free;
FReportList.Delete(Index);
end;
destructor TfrxReportList.Destroy;
begin
ClearList;
FReportList.Free;
inherited;
end;
function TfrxReportList.GetCount: Integer;
begin
Result := FReportList.Count;
end;
function TfrxReportList.GetReport(Index: Integer): TfrxReport;
begin
if (Index < 0) or (Index >= FReportList.Count) then
Result := nil
else
Result := TfrxReport(FReportList[Index]);
end;
function TfrxReportList.IndexOf(Report: TfrxReport): Integer;
begin
Result := FReportList.IndexOf(Report);
end;
{Main Form}
procedure TMainForm.FileNew1Execute(Sender: TObject);
begin
with FReportList.CreateNewReport do
begin
DesignReport(False, True);
TfrxDesignerForm(Designer).OnDestroy := DestroyDesigner;
TfrxDesignerForm(Designer).Caption := 'Designer-' + IntToStr(FReportList.Count);
end;
end;
procedure TMainForm.FileExit1Execute(Sender: TObject);
begin
Close;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
FReportList := TfrxReportList.Create;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
FReportList.Free;
end;
procedure TMainForm.DestroyDesigner(Sender: TObject);
var
idx: Integer;
begin
idx := FReportList.IndexOf(TfrxDesignerForm(Sender).Report);
if FReportList.Report[idx].PreviewForm <> nil then
FReportList.Report[idx].PreviewForm.Close;
FReportList.Delete(idx);
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var
idx: Integer;
begin
for idx := 0 to FReportList.Count - 1 do
TfrxDesignerForm(FReportList.Report[idx].Designer).Close;
Action := caFree;
end;
procedure TMainForm.FileSave1Execute(Sender: TObject);
var
idx: Integer;
begin
for idx := 0 to FReportList.Count - 1 do
TfrxDesignerForm(FReportList.Report[idx].Designer).SaveCmd.Execute;
end;
procedure TMainForm.PreviewReportExecute(Sender: TObject);
var
idx: Integer;
begin
for idx := 0 to FReportList.Count - 1 do
FReportList.Report[idx].ShowReport;
end;
end.