Tecsitel_FactuGES2/Source/GUIBase/uEditorPreview.pas
2011-02-03 18:44:02 +00:00

501 lines
13 KiB
ObjectPascal

unit uEditorPreview;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorBase, ImgList, PngImageList, StdActns, ActnList, TBX,
TB2Item, TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane,
TB2ExtItems, TBXExtItems, uViewPreview, frxClass, ComCtrls, frxPreview,
JvFormAutoSize, JvAppStorage, JvAppRegistryStorage, JvFormPlacement,
pngimage, frxExportImage, frxExportPDF, frxDCtrl, frxDMPExport,
frxGradient, frxChBox, frxCross, frxRich, frxOLE, frxBarcode,
ExtCtrls, JvComponentBase, TBXStatusBars, JvExComCtrls, JvStatusBar,
frxExportMail, frxExportXLS, frxExportText, frxExportRTF, uControllerBase,
uIntegerListUtils;
type
IEditorPreview = interface(IEditorBase)
['{43934C3E-2776-4F9E-9292-FB0D7DE2E4DA}']
function GetReport: TfrxReport;
property Report: TfrxReport read GetReport;
procedure SetTitle(const Value: string);
function GetTitle: string;
property Title: string read GetTitle write SetTitle;
procedure LoadFromStream(AStream : TStream);
function ExportToFile : String;
procedure Print;
procedure Preview;
function GetController : IControllerBase;
procedure SetController (const Value : IControllerBase);
property Controller : IControllerBase read GetController
write SetController;
function GetListaID : TIntegerList;
procedure SetListaID (const Value : TIntegerList);
property ListaID : TIntegerList read GetListaID
write SetListaID;
end;
TfEditorPreview = class(TfEditorBase, IEditorPreview)
TBXToolbar1: TTBXToolbar;
TBXItem33: TTBXItem;
TBXItem34: TTBXItem;
TBXItem39: TTBXItem;
TBXSeparatorItem16: TTBXSeparatorItem;
cbZoom: TTBXComboBoxItem;
PreviewActionList: TActionList;
PreviewSmallImageList: TPngImageList;
PreviewLargeImageList: TPngImageList;
actPrimeraPagina: TAction;
actUltimaPagina: TAction;
actPaginaAnterior: TAction;
actPaginaSiguiente: TAction;
TBXItem36: TTBXItem;
actZoomIn: TAction;
actZoomOut: TAction;
actTodaPagina: TAction;
actAnchoPagina: TAction;
TBXSeparatorItem17: TTBXSeparatorItem;
TBXItem37: TTBXItem;
TBXItem40: TTBXItem;
TBXItem41: TTBXItem;
TBXItem42: TTBXItem;
frxReport1: TfrxReport;
actToolHand: TAction;
actToolZoom: TAction;
tbxZoom: TTBXItem;
tbxMano: TTBXItem;
TBXSeparatorItem18: TTBXSeparatorItem;
frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject;
frxRichObject1: TfrxRichObject;
frxCrossObject1: TfrxCrossObject;
frxCheckBoxObject1: TfrxCheckBoxObject;
frxGradientObject1: TfrxGradientObject;
frxDialogControls1: TfrxDialogControls;
frxTIFFExport1: TfrxTIFFExport;
frxPDFExport1: TfrxPDFExport;
frxBMPExport1: TfrxBMPExport;
TBXItem38: TTBXItem;
TBXSeparatorItem19: TTBXSeparatorItem;
TBXItem43: TTBXItem;
TBXItem44: TTBXItem;
TBXItem45: TTBXItem;
TBXItem46: TTBXItem;
TBXItem47: TTBXItem;
TBXSubmenuItem2: TTBXSubmenuItem;
TBXItem48: TTBXItem;
TBXSubmenuItem3: TTBXSubmenuItem;
TBXItem49: TTBXItem;
TBXItem50: TTBXItem;
TBXItem7: TTBXItem;
TBXItem35: TTBXItem;
actMiniaturas: TAction;
TBXSeparatorItem6: TTBXSeparatorItem;
TBXSeparatorItem14: TTBXSeparatorItem;
TBXItem51: TTBXItem;
TBXItem52: TTBXItem;
actExportarPDF: TAction;
TBXSubmenuItem8: TTBXSubmenuItem;
TBXItem53: TTBXItem;
TBXSeparatorItem20: TTBXSeparatorItem;
actExportarRTF: TAction;
frxXLSExport1: TfrxXLSExport;
frxMailExport1: TfrxMailExport;
actExportarExcel: TAction;
actExportarCorreo: TAction;
frxRTFExport: TfrxRTFExport;
frxSimpleTextExport1: TfrxSimpleTextExport;
actExportarTexto: TAction;
TBXItem54: TTBXItem;
TBXItem55: TTBXItem;
TBXItem56: TTBXItem;
TBXItem57: TTBXItem;
procedure FormShow(Sender: TObject);
procedure actPrimeraPaginaExecute(Sender: TObject);
procedure actUltimaPaginaExecute(Sender: TObject);
procedure actPaginaAnteriorExecute(Sender: TObject);
procedure actPaginaSiguienteExecute(Sender: TObject);
procedure actZoomInExecute(Sender: TObject);
procedure actTodaPaginaExecute(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure actImprimirExecute(Sender: TObject);
procedure actAnchoPaginaExecute(Sender: TObject);
procedure actZoomOutExecute(Sender: TObject);
procedure cbZoomItemClick(Sender: TObject);
procedure actToolHandExecute(Sender: TObject);
procedure actToolZoomExecute(Sender: TObject);
procedure actPaginaSiguienteUpdate(Sender: TObject);
procedure actUltimaPaginaUpdate(Sender: TObject);
procedure actPrimeraPaginaUpdate(Sender: TObject);
procedure actPaginaAnteriorUpdate(Sender: TObject);
procedure actMiniaturasExecute(Sender: TObject);
procedure actExportarPDFExecute(Sender: TObject);
procedure actConfPaginaExecute(Sender: TObject);
procedure actExportarExcelExecute(Sender: TObject);
procedure actExportarCorreoExecute(Sender: TObject);
procedure actExportarRTFExecute(Sender: TObject);
procedure actExportarTextoExecute(Sender: TObject);
private
FPreview : TfrViewPreview;
FTitle : TCaption;
FController : IControllerBase;
FListaID : TIntegerList;
procedure OnPageChanged(Sender: TfrxPreview; PageNo: Integer);
procedure UpdateZoom;
protected
function GetReport: TfrxReport; virtual;
procedure SetTitle(const Value: string);
function GetTitle: string;
procedure PonerTitulos(const ATitulo: String = ''); override;
function GetController : IControllerBase;
procedure SetController (const Value : IControllerBase); Virtual;
procedure SetListaID (const Value : TIntegerList);
function GetListaID : TIntegerList;
public
constructor Create(AOwner: TComponent); override;
property ListaID : TIntegerList read GetListaID
write SetListaID;
property Controller : IControllerBase read GetController
write SetController;
property Title: string read GetTitle write SetTitle;
property Report: TfrxReport read GetReport;
procedure Print;
procedure Preview;
procedure LoadFromStream(AStream : TStream);
function ExportToFile : String;
end;
implementation
uses
frxRes, frxUtils, frxPrinter,
uCustomEditor, uSistemaFunc;
{$R *.dfm}
{ TfEditorBase1 }
function TfEditorPreview.GetController: IControllerBase;
begin
Result := FController;
end;
function TfEditorPreview.GetListaID: TIntegerList;
begin
Result := FListaID;
end;
function TfEditorPreview.GetReport: TfrxReport;
begin
Result := frxReport1;
end;
function TfEditorPreview.GetTitle: string;
begin
Result := FTitle;
end;
procedure TfEditorPreview.FormShow(Sender: TObject);
begin
inherited;
UpdateZoom;
actPrimeraPagina.Execute;
FPreview.ShowEmbedded(Self);
Report.ShowPreparedReport;
actAnchoPagina.Execute;
end;
procedure TfEditorPreview.actPrimeraPaginaExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.First;
end;
procedure TfEditorPreview.actPrimeraPaginaUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (FPreview.Preview.PageNo > 1);
end;
procedure TfEditorPreview.actUltimaPaginaExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.Last;
end;
procedure TfEditorPreview.actUltimaPaginaUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (FPreview.Preview.PageNo < FPreview.Preview.PageCount);
end;
procedure TfEditorPreview.actPaginaAnteriorExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.Prior;
end;
procedure TfEditorPreview.actPaginaAnteriorUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (FPreview.Preview.PageNo > 1);
end;
procedure TfEditorPreview.actPaginaSiguienteExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.Next;
end;
procedure TfEditorPreview.actPaginaSiguienteUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (FPreview.Preview.PageNo < FPreview.Preview.PageCount);
end;
procedure TfEditorPreview.actZoomInExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.Zoom := FPreview.Preview.Zoom + 0.25;
UpdateZoom;
end;
procedure TfEditorPreview.UpdateZoom;
begin
cbZoom.Text := IntToStr(Round(FPreview.Preview.Zoom * 100)) + '%';
end;
procedure TfEditorPreview.actTodaPaginaExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.ZoomMode := zmWholePage;
UpdateZoom;
end;
procedure TfEditorPreview.FormDestroy(Sender: TObject);
begin
inherited;
FreeAndNil(FPreview);
end;
procedure TfEditorPreview.FormResize(Sender: TObject);
begin
inherited;
UpdateZoom;
end;
procedure TfEditorPreview.actConfPaginaExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.PageSetupDlg;
end;
procedure TfEditorPreview.actExportarCorreoExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.Export(frxMailExport1);
end;
procedure TfEditorPreview.actExportarExcelExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.Export(frxXLSExport1);
end;
procedure TfEditorPreview.actExportarPDFExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.Export(frxPDFExport1);
end;
procedure TfEditorPreview.actExportarRTFExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.Export(frxRTFExport);
end;
procedure TfEditorPreview.actExportarTextoExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.Export(frxSimpleTextExport1);
end;
procedure TfEditorPreview.actImprimirExecute(Sender: TObject);
begin
inherited;
Print;
end;
procedure TfEditorPreview.actMiniaturasExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.ThumbnailVisible := actMiniaturas.Checked;
end;
procedure TfEditorPreview.actAnchoPaginaExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.ZoomMode := zmPageWidth;
UpdateZoom;
end;
procedure TfEditorPreview.actZoomOutExecute(Sender: TObject);
begin
inherited;
FPreview.Preview.Zoom := FPreview.Preview.Zoom - 0.25;
UpdateZoom;
end;
procedure TfEditorPreview.cbZoomItemClick(Sender: TObject);
var
s: String;
begin
FPreview.Preview.SetFocus;
if cbZoom.ItemIndex = 6 then
actAnchoPagina.Execute
else if cbZoom.ItemIndex = 7 then
actTodaPagina.Execute
else
begin
s := cbZoom.Text;
if Pos('%', s) <> 0 then
s[Pos('%', s)] := ' ';
while Pos(' ', s) <> 0 do
Delete(s, Pos(' ', s), 1);
if s <> '' then
FPreview.Preview.Zoom := frxStrToFloat(s) / 100;
end;
UpdateZoom;
end;
procedure TfEditorPreview.actToolHandExecute(Sender: TObject);
begin
actToolHand.Checked := True;
FPreview.Preview.Tool := ptHand
end;
procedure TfEditorPreview.actToolZoomExecute(Sender: TObject);
begin
actToolZoom.Checked := True;
FPreview.Preview.Tool := ptZoom;
end;
procedure TfEditorPreview.OnPageChanged(Sender: TfrxPreview;
PageNo: Integer);
begin
StatusBar.Panels[0].Text := Format(frxResources.Get('clPageOf'),
[PageNo, Sender.PageCount]);
end;
constructor TfEditorPreview.Create(AOwner: TComponent);
begin
inherited;
with cbZoom.Strings do
begin
Clear;
Add('25%');
Add('50%');
Add('75%');
Add('100%');
Add('150%');
Add('200%');
Add(frxResources.Get('zmPageWidth'));
Add(frxResources.Get('zmWholePage'));
end;
FPreview := TfrViewPreview.Create(Self);
Report.Preview := FPreview.Preview;
FPreview.Preview.OnPageChanged := OnPageChanged;
end;
procedure TfEditorPreview.PonerTitulos(const ATitulo: String);
var
AText : String;
begin
AText := 'Previsualizar';
if (Length(ATitulo) > 0) then
AText := AText + ' - ' + ATitulo
else
AText := AText + ' - ' + FTitle;
JvNavPanelHeader.Caption := AText;
Caption := AText;
end;
procedure TfEditorPreview.Preview;
begin
Self.ShowModal;
end;
procedure TfEditorPreview.Print;
begin
if not frxPrinters.HasPhysicalPrinters then
frxErrorMsg(frxResources.Get('clNoPrinters'))
else
FPreview.Preview.Print;
Enabled := True;
end;
procedure TfEditorPreview.SetController(const Value: IControllerBase);
begin
FController := Value;
end;
procedure TfEditorPreview.SetListaID(const Value: TIntegerList);
begin
FListaID := Value;
end;
procedure TfEditorPreview.SetTitle(const Value: string);
begin
FTitle := Value;
PonerTitulos(FTitle);
end;
function TfEditorPreview.ExportToFile: String;
var
AFile : String;
begin
Result := '';
AFile := DarFicheroTIFFTemporal;
frxTIFFExport1.SeparateFiles := False;
frxTIFFExport1.DefaultPath := ExtractFilePath(AFile);
frxTIFFExport1.FileName := ExtractFileName(AFile);
try
if Report.Export(frxTIFFExport1) then
Result := AFile;
finally
frxTIFFExport1.DefaultPath := '';
frxTIFFExport1.FileName := '';
end;
end;
procedure TfEditorPreview.LoadFromStream(AStream: TStream);
begin
Report.PreviewPages.LoadFromStream(AStream);
end;
initialization
RegisterClass(TfEditorPreview);
finalization
UnRegisterClass(TfEditorPreview);
end.