📄 eerpagesetup.pas
字号:
GetPageSizeStr:='Letter (8.5x11 inches, 216x279 mm)';
psTabloid:
GetPageSizeStr:='Tabloid (279 x 432 mm)';
else
GetPageSizeStr:='A4 (210x297 mm, 8.26x11.7 inches)';
end;
end;
function TEERPageSetupForm.GetPageSizeNr(s: string): TPageSize;
begin
GetPageSizeNr:=psNPageSize;
if(s='A0 (841 x 1189 mm)')then
GetPageSizeNr:=psA0;
if(s='A1 (594 x 841 mm)')then
GetPageSizeNr:=psA1;
if(s='A2 (420 x 594 mm)')then
GetPageSizeNr:=psA2;
if(s='A3 (297 x 420 mm)')then
GetPageSizeNr:=psA3;
if(s='A4 (210x297 mm, 8.26x11.7 inches)')then
GetPageSizeNr:=psA4;
if(s='A5 (148 x 210 mm)')then
GetPageSizeNr:=psA5;
if(s='A6 (105 x 148 mm)')then
GetPageSizeNr:=psA6;
if(s='A7 (74 x 105 mm)')then
GetPageSizeNr:=psA7;
if(s='A8 (52 x 74 mm)')then
GetPageSizeNr:=psA8;
if(s='A9 (37 x 52 mm)')then
GetPageSizeNr:=psA9;
if(s='B0 (1030 x 1456 mm)')then
GetPageSizeNr:=psB0;
if(s='B1 (728 x 1030 mm)')then
GetPageSizeNr:=psB1;
if(s='B10 (32 x 45 mm)')then
GetPageSizeNr:=psB10;
if(s='B2 (515 x 728 mm')then
GetPageSizeNr:=psB2;
if(s='B3 (364 x 515 mm)')then
GetPageSizeNr:=psB3;
if(s='B4 (257 x 364 mm)')then
GetPageSizeNr:=psB4;
if(s='B5 (182x257 mm, 7.17x10.13 inches)')then
GetPageSizeNr:=psB5;
if(s='B6 (128 x 182 mm)')then
GetPageSizeNr:=psB6;
if(s='B7 (91 x 128 mm)')then
GetPageSizeNr:=psB4;
if(s='B8 (64 x 91 mm)')then
GetPageSizeNr:=psB5;
if(s='B9 (45 x 64 mm)')then
GetPageSizeNr:=psB6;
if(s='B9 (45 x 64 mm)')then
GetPageSizeNr:=psB6;
if(s='C5E (163 x 229 mm)')then
GetPageSizeNr:=psC5E;
if(s='Comm10E (105 x 241 mm, US Common #10 Envelope)')then
GetPageSizeNr:=psComm10E;
if(s='DLE (110 x 220 mm)')then
GetPageSizeNr:=psDLE;
if(s='Executive (7.5x10 inches, 191x254 mm)')then
GetPageSizeNr:=psExecutive;
if(s='Folio (210 x 330 mm)')then
GetPageSizeNr:=psFolio;
if(s='Ledger (432 x 279 mm)')then
GetPageSizeNr:=psLedger;
if(s='Legal (8.5x14 inches, 216x356 mm)')then
GetPageSizeNr:=psLegal;
if(s='Letter (8.5x11 inches, 216x279 mm)')then
GetPageSizeNr:=psLetter;
if(s='Tabloid (279 x 432 mm)')then
GetPageSizeNr:=psTabloid;
end;
function TEERPageSetupForm.GetPageSize(s: string): TSize;
var oldsep: char;
begin
oldsep:=DecimalSeparator;
try
DecimalSeparator:='.';
s:=Copy(s, Pos('(', s)+1, Length(s));
try
//mm
GetPageSize.cx:=StrToInt(Trim(Copy(s, 1, Pos('x', s)-1)));
except
//Inch
GetPageSize.cx:=Round(StrToFloat(Trim(Copy(s, 1, Pos('x', s)-1)))*2.54*10);
end;
s:=Trim(Copy(s, Pos('x', s)+1, Length(s)));
if(Pos('m', s)<Pos('i', s))or(Pos('i', s)=0)then
begin
//mm
GetPageSize.cy:=StrToInt(Trim(Copy(s, 1, Pos(' ', s)-1)));
end
else
begin
//Inch
GetPageSize.cy:=Round(StrToFloat(Trim(Copy(s, 1, Pos(' ', s)-1)))*2.54*10);
end;
finally
DecimalSeparator:=oldsep;
end;
end;
procedure TEERPageSetupForm.PageSizeCBoxCloseUp(Sender: TObject);
begin
//If another Paper Format is selected
Printer.PrintAdapter.PageSize:=GetPageSizeNr(PageSizeCBox.Items[PageSizeCBox.ItemIndex]);
SetPrinterValues;
end;
procedure TEERPageSetupForm.PortraitRBtnClick(Sender: TObject);
begin
//if orientation has changed
if(PortraitRBtn.Checked)then
Printer.Orientation:=poPortrait
else
Printer.Orientation:=poLandscape;
SetPrinterValues;
end;
procedure TEERPageSetupForm.StartPrintBtnClick(Sender: TObject);
var i, j, SelCount: integer;
firstPage: Boolean;
PrintZoomFac: double;
CutMarksLength: integer;
begin
//Check if at least one page is selected
if(not(PrintAllPagesCBox.Checked))then
begin
SelCount:=0;
for i:=0 to Ceil(EERModel.HPageCount-0.01)-1 do
for j:=0 to Ceil(EERModel.VPageCount-0.01)-1 do
if(SelPages[i, j])then
inc(SelCount);
if(SelCount=0)then
begin
ShowMessage(DMMain.GetTranslatedMessage('You have to select at least one page.', 212));
Exit;
end;
end;
with Printer do
begin
Title:='EERModel '+EERModel.ModelFilename;
firstPage:=True;
PrintZoomFac:=(PageWidth-Margins.cx*2-1-2)/EERModel.PageSize.cx;
BeginDoc;
try
for j:=0 to Ceil(EERModel.VPageCount-0.01)-1 do
begin
for i:=0 to Ceil(EERModel.HPageCount-0.01)-1 do
begin
if(SelPages[i, j])or
(PrintAllPagesCBox.Checked)then
begin
//Check if this is not the first page to print and
//if it's not, create a new page
if(not(firstPage))then
NewPage;
firstPage:=False;
with Canvas do
begin
SetClipRect(Rect(1, 1, PageWidth-Margins.cx*2-1, PageHeight-Margins.cy*2-1));
EERModel.PaintModel(Printer.Canvas,
PrintZoomFac*100,
Round((EERModel.PageSize.cx*i+1)*PrintZoomFac),
Round((EERModel.PageSize.cy*j+1)*PrintZoomFac),
Round((EERModel.PageSize.cx*(i+1)+1)*PrintZoomFac),
Round((EERModel.PageSize.cy*(j+1)+1)*PrintZoomFac),
[EERNote, EERRegion, EERRelation, EERTable, EERImage],
XDPI);
Pen.Color:=clBlack;
Pen.Style:=psSolid;
CutMarksLength:=Round(10*(XDPI/72));
Pen.Width:=Round((XDPI/72));
//TopLeft
MoveTo(CutMarksLength, 0);
LineTo(0, 0);
LineTo(0, CutMarksLength);
//TopRight
MoveTo(PageWidth-Margins.cx*2-1-CutMarksLength, 0);
LineTo(PageWidth-Margins.cx*2-1, 0);
LineTo(PageWidth-Margins.cx*2-1, CutMarksLength);
//BottomRight
MoveTo(PageWidth-Margins.cx*2-1-CutMarksLength, PageHeight-Margins.cy*2-1);
LineTo(PageWidth-Margins.cx*2-1, PageHeight-Margins.cy*2-1);
LineTo(PageWidth-Margins.cx*2-1, PageHeight-Margins.cy*2-1-CutMarksLength);
//BottomLeft
MoveTo(CutMarksLength, PageHeight-Margins.cy*2-1);
LineTo(0, PageHeight-Margins.cy*2-1);
LineTo(0, PageHeight-Margins.cy*2-1-CutMarksLength);
Font.Height:=12;
TextOut(Round(4*(XDPI/72)),
Round(4*(XDPI/72)),
IntToStr(i+1+Ceil(EERModel.HPageCount-0.01)*j));
end;
end;
end;
end;
finally
EndDoc;
end;
end;
ModalResult:=mrOK;
end;
procedure TEERPageSetupForm.PaintBoxPaint(Sender: TObject);
var
i, j: integer;
w, h: double;
begin
with PaintBox.Canvas do
begin
Pen.Color:=clGray;
Brush.Color:=clWhite;
Brush.Style:=bsSolid;
Rectangle(Rect(0, 0, PaintBox.Width, PaintBox.Height));
Draw(2, 2, ModelBmp);
Pen.Color:=clNavy;
Brush.Style:=bsClear;
Pen.Style:=psSolid;
w:=EERModel.PageSize.cx*PreviewZoomFactor;
h:=EERModel.PageSize.cy*PreviewZoomFactor;
for i:=0 to Ceil(EERModel.HPageCount-0.01)-1 do
for j:=0 to Ceil(EERModel.VPageCount-0.01)-1 do
begin
Rectangle(Rect(2+Round(w*i),
2+Round(h*j),
2+Round(w*(i+1))+1,
2+Round(h*(j+1))+1));
TextOut(2+Round(w*i)+2,
2+Round(h*j)+2,
IntToStr(i+1+Ceil(EERModel.HPageCount-0.01)*j));
end;
for i:=0 to Ceil(EERModel.HPageCount-0.01)-1 do
for j:=0 to Ceil(EERModel.VPageCount-0.01)-1 do
if(SelPages[i, j])then
begin
Pen.Color:=clWhite;
Pen.Style:=psSolid;
Rectangle(Rect(2+Round(w*i),
2+Round(h*j),
2+Round(w*(i+1))+1,
2+Round(h*(j+1))+1));
Pen.Color:=clNavy;
Pen.Style:=psDot;
Rectangle(Rect(2+Round(w*i),
2+Round(h*j),
2+Round(w*(i+1))+1,
2+Round(h*(j+1))+1));
end;
Pen.Style:=psSolid;
end;
end;
procedure TEERPageSetupForm.PaintBoxMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var w, h: integer;
i, j: integer;
begin
w:=Round(EERModel.PageSize.cx*PreviewZoomFactor);
h:=Round(EERModel.PageSize.cy*PreviewZoomFactor);
if(not(ssCtrl in Shift))then
ResetSelPages;
if(not(ssShift in Shift))then
SelPages[X div w, Y div h]:=Not(SelPages[X div w, Y div h])
else
begin
for i:=lastPageX to X div w do
for j:=lastPageY to Y div h do
SelPages[i, j]:=True;
end;
lastPageX:=X div w;
lastPageY:=Y div h;
PaintBoxPaint(self);
PrintSelPagesCBox.Checked:=True;
end;
procedure TEERPageSetupForm.PrintAllPagesCBoxClick(Sender: TObject);
begin
ResetSelPages;
PaintBoxPaint(self);
end;
procedure TEERPageSetupForm.HPageSizeTBarChange(Sender: TObject);
begin
if(SizeTBarActive)then
begin
EERModel.PageSize.cx:=Round(HPageSizeTBar.Position/PreviewZoomFactor);
ResizeEERModelPages;
PaintBoxPaint(self);
end;
end;
procedure TEERPageSetupForm.HPagesSpinEditChanged(Sender: TObject;
NewValue: Integer);
begin
if(SpinEditActive)then
begin
EERModel.PageSize.cx:=Round(EERModel.EERModel_Width/HPagesSpinEdit.Value);
ResizeEERModelPages;
PaintBoxPaint(self);
end;
end;
procedure TEERPageSetupForm.VPagesSpinEditChanged(Sender: TObject;
NewValue: Integer);
begin
if(SpinEditActive)then
begin
if(EERModel.PageOrientation=poPortrait)then
EERModel.PageSize.cx:=Round((EERModel.Height/VPagesSpinEdit.Value)/EERModel.PageAspectRatio)
else
EERModel.PageSize.cx:=Round((EERModel.Height/VPagesSpinEdit.Value)*EERModel.PageAspectRatio);
ResizeEERModelPages;
PaintBoxPaint(self);
end;
end;
procedure TEERPageSetupForm.HideEdits;
begin
WidthLbl.Hide;
HPageSizeTBar.Hide;
WidthPnl.Height:=16;
PageSizeGroupBox.Hide;
OrientationGroupBox.Hide;
PrinterPnl.Height:=8;
PagesPnl.Hide;
PrintPnl.Show;
Caption:=DMMain.GetTranslatedMessage('Print', 213);
end;
procedure TEERPageSetupForm.ShowEdits;
begin
WidthLbl.Show;
HPageSizeTBar.Show;
WidthPnl.Height:=40;
PageSizeGroupBox.Show;
OrientationGroupBox.Show;
PrinterPnl.Height:=74;
PagesPnl.Show;
PrintPnl.Hide;
Caption:=DMMain.GetTranslatedMessage('Page Setup', 214);
end;
procedure TEERPageSetupForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
StoreSelPagesInModel;
if(Assigned(EERModel))then
EERModel.GridPaintBox.Refresh;
end;
procedure TEERPageSetupForm.PrintDlgBtnClick(Sender: TObject);
begin
HideEdits;
FormShow(self);
end;
procedure TEERPageSetupForm.PageSetupBtnClick(Sender: TObject);
begin
ShowEdits;
FormShow(self);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -