⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eerpagesetup.pas

📁 DBDesigner 4 is a database design system that integrates database design, modelling, creation and ma
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      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 + -