667 lines
23 KiB
Plaintext
667 lines
23 KiB
Plaintext
(* ImageEn Build 7.0.0.06.2637 @ 7-4-17 14:58:42.679 *)
|
|
(*
|
|
Copyright (c) 1998-2017 by Carlotta Calandra. All rights reserved.
|
|
Copyright (c) 2011-2017 by Xequte Software.
|
|
|
|
This software comes without express or implied warranty.
|
|
In no case shall the author be liable for any damage or unwanted behavior of any
|
|
computer hardware and/or software.
|
|
|
|
Author grants you the right to include the component
|
|
in your application, whether COMMERCIAL, SHAREWARE, or FREEWARE.
|
|
|
|
ImageEn, IEvolution and ImageEn ActiveX may not be included in any
|
|
commercial, shareware or freeware libraries or components.
|
|
|
|
www.ImageEn.com
|
|
*)
|
|
|
|
(*
|
|
File version 1008
|
|
*)
|
|
|
|
unit ieprnform2;
|
|
|
|
{$R-}
|
|
{$Q-}
|
|
|
|
{$I ie.inc}
|
|
|
|
{$IFDEF IEINCLUDEPRINTDIALOGS}
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ImageEnView, ImageEnIO,
|
|
ieview, hyiedefs, ComCtrls, ImageEnProc, ievect, ExtCtrls, ImgList, hyieutils, iexBitmaps, iesettings, iexLayers,
|
|
iexRulers;
|
|
|
|
type
|
|
TfiePrnForm2 = class(TForm)
|
|
GroupBox1: TGroupBox;
|
|
Edit1: TEdit;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
Edit2: TEdit;
|
|
Label3: TLabel;
|
|
Edit3: TEdit;
|
|
Label4: TLabel;
|
|
Edit4: TEdit;
|
|
grpOther: TGroupBox;
|
|
edtGamma: TEdit;
|
|
lblGamma: TLabel;
|
|
grpPreview: TGroupBox;
|
|
ImageEnView1: TImageEnView;
|
|
UpDown1: TUpDown;
|
|
UpDown2: TUpDown;
|
|
UpDown3: TUpDown;
|
|
UpDown4: TUpDown;
|
|
updGamma: TUpDown;
|
|
PrinterSetupDialog1: TPrinterSetupDialog;
|
|
Image1: TImage;
|
|
grpSizeLocation: TGroupBox;
|
|
cmbPosition: TComboBox;
|
|
cmbPrintSize: TComboBox;
|
|
lblSize: TLabel;
|
|
lblPosition: TLabel;
|
|
edtWidth: TEdit;
|
|
updWidth: TUpDown;
|
|
edtHeight: TEdit;
|
|
updHeight: TUpDown;
|
|
lblWidth: TLabel;
|
|
lblHeight: TLabel;
|
|
lblWidthUnit: TLabel;
|
|
lblHeightUnit: TLabel;
|
|
lblMeasurement: TLabel;
|
|
ComboBox2: TComboBox;
|
|
pnlButtons: TPanel;
|
|
btnSetup: TBitBtn;
|
|
btnOK: TBitBtn;
|
|
btnCancel: TBitBtn;
|
|
lblPagesWide: TLabel;
|
|
edtPagesWide: TEdit;
|
|
updPagesWide: TUpDown;
|
|
lblPagesHigh: TLabel;
|
|
edtPagesHigh: TEdit;
|
|
updPagesHigh: TUpDown;
|
|
imlPositions: TImageList;
|
|
procedure cmbPrintSizeChange(Sender: TObject);
|
|
procedure btnOKClick(Sender: TObject);
|
|
procedure PrintPreview(Sender: TObject);
|
|
procedure FormActivate(Sender: TObject);
|
|
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
|
|
procedure UpDown2Click(Sender: TObject; Button: TUDBtnType);
|
|
procedure UpDown3Click(Sender: TObject; Button: TUDBtnType);
|
|
procedure UpDown4Click(Sender: TObject; Button: TUDBtnType);
|
|
procedure updGammaClick(Sender: TObject; Button: TUDBtnType);
|
|
procedure updWidthClick(Sender: TObject; Button: TUDBtnType);
|
|
procedure updHeightClick(Sender: TObject; Button: TUDBtnType);
|
|
procedure btnSetupClick(Sender: TObject);
|
|
procedure cmbPositionDrawItem(Control: TWinControl; Index: Integer; Rect:
|
|
TRect; State: TOwnerDrawState);
|
|
procedure ComboBox2Change(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure updPagesHighClick(Sender: TObject; Button: TUDBtnType);
|
|
procedure updPagesWideClick(Sender: TObject; Button: TUDBtnType);
|
|
private
|
|
{ Private declarations }
|
|
fHaveActivated: Boolean;
|
|
procedure IncDecMargins(text: TEdit; Button: TUDBtnType);
|
|
procedure IncDecValue(text: TEdit; Button: TUDBtnType);
|
|
procedure SetLanguage_units;
|
|
function UnitMult: double;
|
|
Procedure UpdateDialogSize;
|
|
procedure UpdatePrintSizeControls();
|
|
public
|
|
{ Public declarations }
|
|
io: TImageEnIO;
|
|
fDialogsMeasureUnit: TIEDialogsMeasureUnit;
|
|
fTaskName: string;
|
|
fPrintPreviewParams: TIOPrintPreviewParams;
|
|
PrintAnnotations: boolean;
|
|
activating: boolean;
|
|
procedure UpdateLanguage();
|
|
procedure LoadParameters;
|
|
procedure SaveParameters;
|
|
|
|
{$IFDEF UNIT_TESTING}
|
|
procedure SetNextLanguage;
|
|
{$ENDIF}
|
|
end;
|
|
|
|
|
|
implementation
|
|
|
|
uses
|
|
iexThemes, printers, iexCanvasUtils;
|
|
|
|
{$R *.DFM}
|
|
|
|
const
|
|
// Items of cmbPrintSize - MUST ALIGN WITH TIESize
|
|
_cmbPrintSize_Normal = 0;
|
|
_cmbPrintSize_FitToPage = 1;
|
|
_cmbPrintSize_StretchToPage = 2;
|
|
_cmbPrintSize_FillPage = 3;
|
|
_cmbPrintSize_SpecifiedSize = 4;
|
|
_cmbPrintSize_MultiplePages = 5;
|
|
|
|
|
|
{$IFDEF UNIT_TESTING}
|
|
procedure tfiePrnForm2.SetNextLanguage;
|
|
begin
|
|
Self.Tag := Self.Tag + 1;
|
|
if Self.tag >= ord( msUser ) then
|
|
Self.Tag := 0;
|
|
IEGlobalSettings().MsgLanguage := TMsgLanguage(Self.Tag);
|
|
UpdateLanguage();
|
|
end;
|
|
{$ENDIF}
|
|
|
|
function tfiePrnForm2.UnitMult: double;
|
|
begin
|
|
if (fDialogsMeasureUnit = ieduCm) or (fDialogsMeasureUnit = ieduSelectableDefCm) then
|
|
Result := CM_per_Inch
|
|
else
|
|
Result := 1;
|
|
end;
|
|
|
|
procedure tfiePrnForm2.LoadParameters;
|
|
begin
|
|
// get parameters from fPrintPreviewParams
|
|
Edit1.Text := FloatToStrF(fPrintPreviewParams.MarginTop, ffGeneral, 4, 4);
|
|
Edit2.Text := FloatToStrF(fPrintPreviewParams.MarginLeft, ffGeneral, 4, 4);
|
|
Edit3.Text := FloatToStrF(fPrintPreviewParams.MarginRight, ffGeneral, 4, 4);
|
|
Edit4.Text := FloatToStrF(fPrintPreviewParams.MarginBottom, ffGeneral, 4, 4);
|
|
cmbPosition.ItemIndex := ord(fPrintPreviewParams.Position);
|
|
cmbPrintSize.ItemIndex := integer(fPrintPreviewParams.Size);
|
|
UpdatePrintSizeControls();
|
|
|
|
if ( fPrintPreviewParams.Width > 0 ) and ( fPrintPreviewParams.Size <> psMultiplePages ) then
|
|
edtWidth.Text := FloatToStrF(fPrintPreviewParams.Width, ffGeneral, 4, 4)
|
|
else
|
|
edtWidth.Text := FloatToStrF( (io.fPrintBitmap.Width / io.Params.DpiX) * UnitMult , ffGeneral, 4, 4);
|
|
|
|
if ( fPrintPreviewParams.Height > 0 ) and ( fPrintPreviewParams.Size <> psMultiplePages ) then
|
|
edtHeight.Text := FloatToStrF(fPrintPreviewParams.Height, ffGeneral, 4, 4)
|
|
else
|
|
edtHeight.Text := FloatToStrF( (io.fPrintBitmap.Height / io.Params.DpiY) * UnitMult, ffGeneral, 4, 4);
|
|
|
|
if ( fPrintPreviewParams.Width > 0 ) and ( fPrintPreviewParams.Size = psMultiplePages ) then
|
|
edtPagesWide.Text := IntToStr( Trunc( fPrintPreviewParams.Width ));
|
|
if ( fPrintPreviewParams.Height > 0 ) and ( fPrintPreviewParams.Size = psMultiplePages ) then
|
|
edtPagesHigh.Text := IntToStr( Trunc( fPrintPreviewParams.Height ));
|
|
|
|
edtGamma.Text := FloatToStrF(fPrintPreviewParams.Gamma, ffGeneral, 4, 4);
|
|
end;
|
|
|
|
procedure tfiePrnForm2.SaveParameters;
|
|
begin
|
|
// Assign parameters to fPrintPreviewParams
|
|
fPrintPreviewParams.MarginTop := IEStrToFloatDefS(Edit1.Text, 1);
|
|
fPrintPreviewParams.MarginLeft := IEStrToFloatDefS(Edit2.Text, 1);
|
|
fPrintPreviewParams.MarginRight := IEStrToFloatDefS(Edit3.Text, 1);
|
|
fPrintPreviewParams.MarginBottom := IEStrToFloatDefS(Edit4.Text, 1);
|
|
fPrintPreviewParams.Position := TIOPrintPreviewPosition(cmbPosition.ItemIndex);
|
|
fPrintPreviewParams.Size := TIOPrintPreviewSize(cmbPrintSize.ItemIndex);
|
|
|
|
if fPrintPreviewParams.Size = psSpecifiedSize then
|
|
begin
|
|
fPrintPreviewParams.Width := IEStrToFloatDefS(edtWidth.Text, 6);
|
|
fPrintPreviewParams.Height := IEStrToFloatDefS(edtHeight.Text, 4);
|
|
end
|
|
else
|
|
if fPrintPreviewParams.Size = psMultiplePages then
|
|
begin
|
|
fPrintPreviewParams.Width := StrToIntDef( edtPagesWide.Text, 6 );
|
|
fPrintPreviewParams.Height := StrToIntDef( edtPagesHigh.Text, 4 );
|
|
end
|
|
else
|
|
begin
|
|
fPrintPreviewParams.Width := -1;
|
|
fPrintPreviewParams.Height := -1;
|
|
end;
|
|
|
|
fPrintPreviewParams.Gamma := IEStrToFloatDefS(edtGamma.Text, 1);
|
|
end;
|
|
|
|
procedure TfiePrnForm2.FormActivate(Sender: TObject);
|
|
var
|
|
bCanSetMeasureUnits: Boolean;
|
|
begin
|
|
// Prevent double calls to FormActivate
|
|
if fHaveActivated then
|
|
exit;
|
|
fHaveActivated := True;
|
|
|
|
Application.ProcessMessages; // first draws all controls (to avoid "Swiss Cheese")
|
|
activating := true;
|
|
|
|
if IEGlobalSettings().UseButtonGlyphsInDialogs = False then
|
|
begin
|
|
btnOK.Glyph := nil;
|
|
btnSetup.Glyph := nil;
|
|
btnCancel.Glyph := nil;
|
|
cmbPosition.Style := csDropDownList;
|
|
end;
|
|
LoadParameters;
|
|
if cmbPrintSize.ItemIndex < 0 then
|
|
cmbPrintSize.ItemIndex := 1;
|
|
bCanSetMeasureUnits := (fDialogsMeasureUnit = ieduSelectableDefInches) or (fDialogsMeasureUnit = ieduSelectableDefCm);
|
|
lblMeasurement .Visible := bCanSetMeasureUnits;
|
|
ComboBox2 .Visible := bCanSetMeasureUnits;
|
|
if (fDialogsMeasureUnit = ieduSelectableDefInches) then
|
|
ComboBox2.ItemIndex := 0
|
|
else
|
|
if (fDialogsMeasureUnit = ieduSelectableDefCm) then
|
|
ComboBox2.ItemIndex := 1;
|
|
activating := false;
|
|
UpdateDialogSize;
|
|
PrintPreview(Sender);
|
|
end;
|
|
|
|
// Change Size combobox
|
|
procedure TfiePrnForm2.cmbPrintSizeChange(Sender: TObject);
|
|
begin
|
|
UpdatePrintSizeControls();
|
|
PrintPreview(Sender);
|
|
end;
|
|
|
|
procedure TfiePrnForm2.UpdatePrintSizeControls();
|
|
var
|
|
bSpecifiedSize : Boolean;
|
|
bMultiplePages : Boolean;
|
|
begin
|
|
bSpecifiedSize := cmbPrintSize.ItemIndex = _cmbPrintSize_SpecifiedSize;
|
|
edtWidth .Enabled := bSpecifiedSize;
|
|
updWidth .Enabled := bSpecifiedSize;
|
|
edtHeight .Enabled := bSpecifiedSize;
|
|
updHeight .Enabled := bSpecifiedSize;
|
|
lblWidth .Enabled := bSpecifiedSize;
|
|
lblHeight .Enabled := bSpecifiedSize;
|
|
lblWidthUnit .Enabled := bSpecifiedSize;
|
|
lblHeightUnit .Enabled := bSpecifiedSize;
|
|
|
|
bMultiplePages := cmbPrintSize.ItemIndex = _cmbPrintSize_MultiplePages;
|
|
edtPagesWide .Visible := bMultiplePages;
|
|
edtPagesHigh .Visible := bMultiplePages;
|
|
updPagesWide .Visible := bMultiplePages;
|
|
updPagesHigh .Visible := bMultiplePages;
|
|
lblPagesWide .Visible := bMultiplePages;
|
|
lblPagesHigh .Visible := bMultiplePages;
|
|
|
|
edtWidth .Visible := not bMultiplePages;
|
|
updWidth .Visible := not bMultiplePages;
|
|
edtHeight .Visible := not bMultiplePages;
|
|
updHeight .Visible := not bMultiplePages;
|
|
lblWidth .Visible := not bMultiplePages;
|
|
lblHeight .Visible := not bMultiplePages;
|
|
lblWidthUnit .Visible := not bMultiplePages;
|
|
lblHeightUnit .Visible := not bMultiplePages;
|
|
end;
|
|
|
|
// OK (print)
|
|
procedure TfiePrnForm2.btnOKClick(Sender: TObject);
|
|
begin
|
|
SaveParameters;
|
|
PrintPreview(Sender);
|
|
end;
|
|
|
|
|
|
// Preview or print
|
|
procedure TfiePrnForm2.PrintPreview(Sender: TObject);
|
|
var
|
|
VerticalPos: TIEVerticalPos;
|
|
HorizontalPos: TIEHorizontalPos;
|
|
Size: TIESize;
|
|
MarginLeft, MarginTop, MarginRight, MarginBottom, SpecWidth, SpecHeight, GammaCorrection: double;
|
|
lc: TCursor;
|
|
begin
|
|
if activating then
|
|
exit;
|
|
|
|
VerticalPos := ievpCenter;
|
|
HorizontalPos := iehpCenter;
|
|
if TIOPrintPreviewPosition(cmbPosition.ItemIndex) in [ppTopLeft, ppTop, ppTopRight] then
|
|
VerticalPos := ievpTop;
|
|
if TIOPrintPreviewPosition(cmbPosition.ItemIndex) in [ppBottomLeft, ppBottom, ppBottomRight] then
|
|
VerticalPos := ievpBottom;
|
|
if TIOPrintPreviewPosition(cmbPosition.ItemIndex) in [ppTopLeft, ppLeft, ppBottomLeft] then
|
|
HorizontalPos := iehpLeft;
|
|
if TIOPrintPreviewPosition(cmbPosition.ItemIndex) in [ppTopRight, ppRight, ppBottomRight] then
|
|
HorizontalPos := iehpRight;
|
|
|
|
Size := iesFitToPage;
|
|
case cmbPrintSize.ItemIndex of
|
|
_cmbPrintSize_Normal : Size := iesNormal;
|
|
_cmbPrintSize_FitToPage : Size := iesFitToPage;
|
|
_cmbPrintSize_StretchToPage : Size := iesFitToPageStretch;
|
|
_cmbPrintSize_FillPage : Size := iesFillPage;
|
|
_cmbPrintSize_SpecifiedSize : Size := iesSpecifiedSize;
|
|
_cmbPrintSize_MultiplePages : Size := iesMultiplePages;
|
|
end;
|
|
|
|
MarginLeft := IEStrToFloatDefS(Edit2.Text, 0) / UnitMult;
|
|
MarginTop := IEStrToFloatDefS(Edit1.Text, 0) / UnitMult;
|
|
MarginRight := IEStrToFloatDefS(Edit3.Text, 0) / UnitMult;
|
|
MarginBottom := IEStrToFloatDefS(Edit4.text, 0) / UnitMult;
|
|
|
|
if Size = iesMultiplePages then
|
|
begin
|
|
SpecWidth := IEStrToFloatDefS( edtPagesWide.Text, 1 );
|
|
SpecHeight := IEStrToFloatDefS( edtPagesHigh.Text, 1 );
|
|
end
|
|
else
|
|
begin
|
|
SpecWidth := IEStrToFloatDefS(edtWidth.Text, 1) / UnitMult;
|
|
if SpecWidth = 0 then SpecWidth := 0.001;
|
|
SpecHeight := IEStrToFloatDefS(edtHeight.Text, 1) / UnitMult;
|
|
if SpecHeight = 0 then SpecHeight := 0.001;
|
|
end;
|
|
|
|
GammaCorrection := IEStrToFloatDefS(edtGamma.Text, 1);
|
|
lc := Screen.Cursor;
|
|
Screen.Cursor := crHourGlass;
|
|
if Sender = btnOK then
|
|
begin
|
|
// PRINT IMAGE
|
|
Printer.Title := fTaskName;
|
|
Printer.BeginDoc;
|
|
io.PrintImageEx( io.fPrintBitmap,
|
|
Printer.Canvas, -1, -1, -1, -1, MarginLeft, MarginTop, MarginRight, MarginBottom, VerticalPos, HorizontalPos,
|
|
Size, SpecWidth, SpecHeight, GammaCorrection);
|
|
Printer.EndDoc;
|
|
end
|
|
else
|
|
begin
|
|
// PREVIEW IMAGE ONLY
|
|
io.PreviewPrintImageEx( io.fPrintBitmap,
|
|
ImageEnView1.Bitmap, ImageEnView1.IdealImageWidth, ImageEnView1.IdealImageHeight, Printer, MarginLeft, MarginTop, MarginRight, MarginBottom, VerticalPos, HorizontalPos,
|
|
Size, SpecWidth, SpecHeight, GammaCorrection);
|
|
ImageEnView1.Update;
|
|
ImageEnView1.Fit;
|
|
end;
|
|
Screen.Cursor := lc;
|
|
end;
|
|
|
|
procedure tfiePrnForm2.SetLanguage_units;
|
|
begin
|
|
if (fDialogsMeasureUnit = ieduInches) or (fDialogsMeasureUnit = ieduSelectableDefInches) then
|
|
begin
|
|
// inches
|
|
GroupBox1.Caption := ' ' + iemsg(IEMSG_MARGINS) + ' (' + iemsg(IEMSG_INCHES) + ') ';
|
|
lblWidthUnit .Caption := iemsg(IEMSG_INCHES);
|
|
lblHeightUnit.Caption := iemsg(IEMSG_INCHES);
|
|
end
|
|
else
|
|
begin
|
|
// centimeters (Cm)
|
|
GroupBox1.Caption := ' ' + iemsg(IEMSG_MARGINS) + ' (' + IEGlobalSettings().MeasureUnits[ieuCENTIMETERS] + ') ';
|
|
lblWidthUnit .Caption := IEGlobalSettings().MeasureUnits[ieuCENTIMETERS];
|
|
lblHeightUnit.Caption := IEGlobalSettings().MeasureUnits[ieuCENTIMETERS];
|
|
end;
|
|
end;
|
|
|
|
procedure tfiePrnForm2.UpdateLanguage();
|
|
var
|
|
bEnglish : Boolean;
|
|
begin
|
|
bEnglish := (IEGlobalSettings().MsgLanguage = msEnglish) or
|
|
((IEGlobalSettings().MsgLanguage = msSystem) and (syslocale.PriLangID = LANG_ENGLISH));
|
|
Caption := iemsg(IEMSG_PRINT);
|
|
SetLanguage_units;
|
|
Label1.Caption := iemsg(IEMSG_TOP) + ':';
|
|
Label2.Caption := iemsg(IEMSG_LEFT) + ':';
|
|
Label3.Caption := iemsg(IEMSG_RIGHT) + ':';
|
|
Label4.Caption := iemsg(IEMSG_BOTTOM) + ':';
|
|
grpPreview.Caption := ' ' + iemsg(IEMSG_PREVIEW) + ' ';
|
|
cmbPrintSize.Items[ _cmbPrintSize_Normal ] := iemsg( IEMSG_NORMAL );
|
|
cmbPrintSize.Items[ _cmbPrintSize_FitToPage ] := iemsg( IEMSG_FITTOPAGE );
|
|
cmbPrintSize.Items[ _cmbPrintSize_StretchToPage ] := iemsg( IEMSG_STRETCHTOPAGE );
|
|
cmbPrintSize.Items[ _cmbPrintSize_FillPage ] := iemsg( IEMSG_FILLPAGE );
|
|
cmbPrintSize.Items[ _cmbPrintSize_SpecifiedSize ] := iemsg( IEMSG_SPECIFIEDSIZE );
|
|
cmbPrintSize.Items[ _cmbPrintSize_MultiplePages ] := iemsg( IEMSG_MULTIPLEPAGES );
|
|
btnOK.Caption := iemsg(IEMSG_OK);
|
|
btnCancel.Caption := iemsg(IEMSG_CANCEL);
|
|
btnSetup.Caption := iemsg(IEMSG_PRINTSETUP) + '...';
|
|
ComboBox2.Items[0] := iemsg(IEMSG_INCHES);
|
|
grpOther.Caption := ' ' + iemsg(IEMSG_OTHER) + ' ';
|
|
lblGamma.Caption := iemsg(IEMSG_GAMMACORRECTION) + ':';
|
|
lblWidth .Caption := iemsg(IEMSG_WIDTH) + ':';
|
|
lblHeight .Caption := iemsg(IEMSG_HEIGHT) + ':';
|
|
lblMeasurement.Caption := iemsg(IEMSG_MEASUREUNITS) + ':';
|
|
cmbPosition.Clear;
|
|
cmbPosition.Items.Add(iemsg(IEMSG_TOPLEFT));
|
|
cmbPosition.Items.Add(iemsg(IEMSG_TOPCENTER));
|
|
cmbPosition.Items.Add(iemsg(IEMSG_TOPRIGHT));
|
|
cmbPosition.Items.Add(iemsg(IEMSG_CENTERLEFT));
|
|
cmbPosition.Items.Add(iemsg(IEMSG_CENTER));
|
|
cmbPosition.Items.Add(iemsg(IEMSG_CENTERRIGHT));
|
|
cmbPosition.Items.Add(iemsg(IEMSG_BOTTOMLEFT));
|
|
cmbPosition.Items.Add(iemsg(IEMSG_BOTTOMCENTER));
|
|
cmbPosition.Items.Add(iemsg(IEMSG_BOTTOMRIGHT));
|
|
lblPagesWide.Caption := iemsg(IEMsg_PagesAcross) + ':';
|
|
lblPagesHigh.Caption := iemsg(IEMsg_PagesDown) + ':';
|
|
|
|
grpSizeLocation .Caption := ' ' + iemsg(IEMSG_LOCATIONSIZE) + ' ';
|
|
lblPosition .Caption := iemsg(IEMSG_POSITION) + ':';
|
|
if bEnglish then
|
|
lblSize.Caption := 'Print Size:' // English text too short
|
|
else
|
|
lblSize.Caption := iemsg(IEMSG_SIZE) + ':';
|
|
end;
|
|
|
|
procedure TfiePrnForm2.IncDecMargins(text: TEdit; Button: TUDBtnType);
|
|
begin
|
|
case Button of
|
|
btNext: text.Text := FloatToStrF(dmax(IEStrToFloatDefS(text.Text, 0) + IEGlobalSettings().PrintDialogMarginsIncrement, IEGlobalSettings().PrintDialogMarginsMinValue), ffGeneral, 4, 4);
|
|
btPrev: text.Text := FloatToStrF(dmax(IEStrToFloatDefS(text.Text, 0) - IEGlobalSettings().PrintDialogMarginsIncrement, IEGlobalSettings().PrintDialogMarginsMinValue), ffGeneral, 4, 4);
|
|
end;
|
|
end;
|
|
|
|
procedure TfiePrnForm2.IncDecValue(text: TEdit; Button: TUDBtnType);
|
|
begin
|
|
case Button of
|
|
btNext: text.Text := IntToStr( StrToIntDef(text.Text, 0) + 1 );
|
|
btPrev: text.Text := IntToStr( imax(1, StrToIntDef(text.Text, 0) - 1 ));
|
|
end;
|
|
end;
|
|
|
|
procedure TfiePrnForm2.UpDown1Click(Sender: TObject; Button: TUDBtnType);
|
|
begin
|
|
IncDecMargins(Edit1, Button);
|
|
end;
|
|
|
|
procedure TfiePrnForm2.UpDown2Click(Sender: TObject; Button: TUDBtnType);
|
|
begin
|
|
IncDecMargins(Edit2, Button);
|
|
end;
|
|
|
|
procedure TfiePrnForm2.UpDown3Click(Sender: TObject; Button: TUDBtnType);
|
|
begin
|
|
IncDecMargins(Edit3, Button);
|
|
end;
|
|
|
|
procedure TfiePrnForm2.UpDown4Click(Sender: TObject; Button: TUDBtnType);
|
|
begin
|
|
IncDecMargins(Edit4, Button);
|
|
end;
|
|
|
|
procedure TfiePrnForm2.updGammaClick(Sender: TObject; Button: TUDBtnType);
|
|
begin
|
|
case button of
|
|
btNext: edtGamma.Text := FloatToStrF(dmax(IEStrToFloatDefS(edtGamma.Text, 0) + 0.1, 0), ffGeneral, 4, 4);
|
|
btPrev: edtGamma.Text := FloatToStrF(dmax(IEStrToFloatDefS(edtGamma.Text, 0) - 0.1, 0), ffGeneral, 4, 4);
|
|
end;
|
|
end;
|
|
|
|
procedure TfiePrnForm2.updWidthClick(Sender: TObject; Button: TUDBtnType);
|
|
begin
|
|
IncDecMargins(edtWidth, Button);
|
|
end;
|
|
|
|
procedure TfiePrnForm2.updHeightClick(Sender: TObject; Button: TUDBtnType);
|
|
begin
|
|
IncDecMargins(edtHeight, Button);
|
|
end;
|
|
|
|
// Setup
|
|
procedure TfiePrnForm2.btnSetupClick(Sender: TObject);
|
|
begin
|
|
PrinterSetupDialog1.Execute;
|
|
PrintPreview(self);
|
|
end;
|
|
|
|
procedure TfiePrnForm2.cmbPositionDrawItem(Control: TWinControl; Index:
|
|
Integer; Rect: TRect; State: TOwnerDrawState);
|
|
var
|
|
iGlyph : Integer;
|
|
sText : string;
|
|
begin
|
|
iGlyph := Index;
|
|
sText := cmbPosition.Items[Index];
|
|
IEDrawComboListBoxItem( TCombobox(Control).Canvas, Rect, Control.Enabled, sText, imlPositions, iGlyph);
|
|
end;
|
|
|
|
// units
|
|
procedure TfiePrnForm2.ComboBox2Change(Sender: TObject);
|
|
var
|
|
pred: TIEDialogsMeasureUnit;
|
|
xmult: double;
|
|
begin
|
|
pred := fDialogsMeasureUnit;
|
|
if ComboBox2.ItemIndex = 0 then
|
|
fDialogsMeasureUnit := ieduSelectableDefInches
|
|
else
|
|
fDialogsMeasureUnit := ieduSelectableDefCm;
|
|
if pred <> fDialogsMeasureUnit then
|
|
begin
|
|
if pred = ieduSelectableDefCm then
|
|
xmult := 1 / CM_per_Inch
|
|
else
|
|
xmult := CM_per_Inch;
|
|
Edit1.Text := FloatToStrF(IEStrToFloatDefS(Edit1.Text, 0) * xmult, ffGeneral, 4, 4);
|
|
Edit2.Text := FloatToStrF(IEStrToFloatDefS(Edit2.Text, 0) * xmult, ffGeneral, 4, 4);
|
|
Edit3.Text := FloatToStrF(IEStrToFloatDefS(Edit3.Text, 0) * xmult, ffGeneral, 4, 4);
|
|
Edit4.Text := FloatToStrF(IEStrToFloatDefS(Edit4.Text, 0) * xmult, ffGeneral, 4, 4);
|
|
edtWidth.Text := FloatToStrF(IEStrToFloatDefS(edtWidth.Text, 0) * xmult, ffGeneral, 4, 4);
|
|
edtHeight.Text := FloatToStrF(IEStrToFloatDefS(edtHeight.Text, 0) * xmult, ffGeneral, 4, 4);
|
|
SetLanguage_units;
|
|
end;
|
|
end;
|
|
|
|
procedure TfiePrnForm2.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
// Save parameters if they print or close, but do not cancel
|
|
If ModalResult <> mrCancel then
|
|
SaveParameters;
|
|
end;
|
|
|
|
procedure TfiePrnForm2.FormCreate(Sender: TObject);
|
|
|
|
// Set an image as ImageEnView wallpaper aligned to a specific control so it appears continuous
|
|
procedure _AssignOffsetWallpaper(IEView: TImageEnView; ABitmap: TBitmap; OffSetToControl: TControl);
|
|
var
|
|
SourceRect, DestRect: TRect;
|
|
begin
|
|
SourceRect.Left := IEView.ClientOrigin.X - OffSetToControl.ClientOrigin.X;
|
|
SourceRect.Top := IEView.ClientOrigin.Y - OffSetToControl.ClientOrigin.Y;
|
|
|
|
// Use full width in case ImageEnView is enlarged
|
|
SourceRect.Right := SourceRect.Left + ABitmap.Width;
|
|
SourceRect.Bottom := SourceRect.Top + ABitmap.Height;
|
|
|
|
IEView.Wallpaper.Bitmap.Width := SourceRect.Right - SourceRect.Left;
|
|
IEView.Wallpaper.Bitmap.Height := SourceRect.Bottom - SourceRect.Top;
|
|
IEView.Wallpaper.Bitmap.PixelFormat := pf24bit;
|
|
|
|
DestRect := Rect( 0, 0, IEView.Wallpaper.Bitmap.Width, IEView.Wallpaper.Bitmap.Height );
|
|
|
|
IEView.Wallpaper.Bitmap.Canvas.CopyRect( DestRect, ABitmap.Canvas, SourceRect );
|
|
end;
|
|
|
|
begin
|
|
fHaveActivated := False;
|
|
IEInitializeComboBox( cmbPosition );
|
|
|
|
ImageEnView1.Background := IEGlobalSettings().PreviewImageBackgroundColor;
|
|
ImageEnView1.BackgroundStyle := IEGlobalSettings().PreviewImageBackgroundStyle;
|
|
|
|
if IEGlobalSettings().DialogBackgroundStyle <> iedbDefault then
|
|
begin
|
|
case IEGlobalSettings().DialogBackgroundStyle of
|
|
iedbPaper : begin
|
|
ImageEnView1.Background := clWhite;
|
|
IECreateOSXBackgroundPaper( Image1.Picture.Bitmap, Image1.Width, Image1.Height );
|
|
end;
|
|
iedbMetal : begin
|
|
ImageEnView1.Background := clSilver;
|
|
IECreateOSXBackgroundMetal( Image1.Picture.Bitmap, Image1.Width, Image1.Height );
|
|
end;
|
|
iedbCustom: begin
|
|
Image1.Picture.Bitmap.Width := Image1.Width;
|
|
Image1.Picture.Bitmap.Height := Image1.Height;
|
|
TileBitmapOntoCanvas( Image1.Picture.Bitmap.Canvas, Image1.Width, Image1.Height, IEGlobalSettings().DialogBackgroundImage );
|
|
end;
|
|
end;
|
|
Image1.Update;
|
|
_AssignOffsetWallpaper( ImageEnView1, Image1.Picture.Bitmap, Image1 );
|
|
end;
|
|
|
|
// Match background of panel
|
|
if ( ImageEnView1.BackgroundStyle = iebsSolid ) and ( ImageEnView1.Background = clBtnFace ) then
|
|
begin
|
|
ImageEnView1.Background := GetThemeColor( ietpPanel, clBtnFace );
|
|
if ImageEnView1.Background < 0 then
|
|
ImageEnView1.Background := GetSysColor( ImageEnView1.Background and $000000FF); // Normalize system colors so ImageEnView1 does not try to theme it
|
|
end;
|
|
|
|
// Move controls to display positions
|
|
edtPagesWide .Top := edtWidth.Top;
|
|
updPagesWide .Top := updWidth.Top;
|
|
edtPagesHigh .Top := edtHeight.Top;
|
|
updPagesHigh .Top := updHeight.Top;
|
|
lblPagesWide .Top := lblWidth.Top;
|
|
lblPagesHigh .Top := lblHeight.Top;
|
|
end;
|
|
|
|
|
|
Procedure TfiePrnForm2.UpdateDialogSize;
|
|
var
|
|
iBottomMargin: Integer;
|
|
begin
|
|
iBottomMargin := lblMeasurement.Left; // Suitable approximation
|
|
if ComboBox2.Visible then
|
|
grpOther.Height := ComboBox2.Top + ComboBox2.Height + iBottomMargin
|
|
else
|
|
grpOther.Height := edtGamma.Top + edtGamma.Height + iBottomMargin;
|
|
|
|
grpPreview.Height := grpOther.Top + grpOther.Height - grpPreview.Top;
|
|
ImageEnView1.Height := grpPreview.Height - (ImageEnView1.Top + 6);
|
|
|
|
pnlButtons.Top := grpPreview.Top + grpPreview.Height + 2;
|
|
ClientHeight := pnlButtons.Top + pnlButtons.height;
|
|
end;
|
|
|
|
procedure TfiePrnForm2.updPagesHighClick(Sender: TObject; Button: TUDBtnType);
|
|
begin
|
|
IncDecValue(edtPagesHigh, Button);
|
|
end;
|
|
|
|
procedure TfiePrnForm2.updPagesWideClick(Sender: TObject; Button: TUDBtnType);
|
|
begin
|
|
IncDecValue(edtPagesWide, Button);
|
|
end;
|
|
|
|
|
|
{$ELSE} // {$ifdef IEINCLUDEPRINTDIALOGS}
|
|
interface
|
|
implementation
|
|
{$ENDIF}
|
|
|
|
end.
|
|
|
|
|
|
|