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

📄 main.pas

📁 GREATIS Print Suite Pro for Delphi (3-7,2005,2006,2007) and C++ Builder (3-6) Set of components for
💻 PAS
字号:
(*          GREATIS PRINT SUITE               *)
(*  Copyright (C) 2001-2007 Greatis Software  *)
(*      web: http://www.greatis.com           *)
(*  support: http://greatis.com/bteam.html    *)

unit Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Forms, Controls,
  PSJob, PSStatusBar, PSPreview, PSToolbar, Db, DBTables, ExtCtrls;

type
  TMainForm = class(TForm)
    PreviewToolbar: TPreviewToolbar;
    Preview: TPreview;
    PreviewStatusBar: TPreviewStatusBar;
    BioLifePrintJob: TPrintJob;
    BioLifeTable: TTable;
    procedure FormCreate(Sender: TObject);
    procedure BioLifePrintJobDraw(Sender: TObject; TheCanvas: TCanvas;
      PageIndex: Integer; Rect: TRect; Area: TDrawArea;
      Target: TDrawTarget);
    procedure BioLifePrintJobInitDraw(Sender: TObject; TheCanvas: TCanvas;
      Target: TDrawTarget);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.FormCreate(Sender: TObject);
begin
  BioLifePrintJob.PageCount:=BioLifeTable.RecordCount;
end;

procedure TMainForm.BioLifePrintJobDraw(Sender: TObject; TheCanvas: TCanvas;
  PageIndex: Integer; Rect: TRect; Area: TDrawArea; Target: TDrawTarget);

var
  R: TRect;
  Text: string;
  Y: Integer;
  Bitmap: TBitmap;

  procedure DrawFieldText(var Y: Integer; FieldName,FieldValue: string);
  begin
    with TheCanvas,Rect do
    begin
      TextOut(Left,Y,FieldName);
      Inc(Y,TextHeight(FieldName));
      TextOut(Left,Y,FieldValue);
      Inc(Y,2*Abs(Font.Height));
    end;
  end;

begin
  with Sender as TPrintJob,BioLifeTable,TheCanvas,Font,Rect do
  begin
    RecNo:=PageIndex;
    case Area of
      daHeader:
      begin
        Size:=28;
        Style:=[fsBold];
        TextOut(Left,Top,Fields[2].AsString);
        MoveTo(Left,Bottom);
        LineTo(Right,Bottom);
      end;
      daPage:
      begin
        Y:=Top+Round(InchToPix(1,dirVertical));
        Bitmap:=TBitmap.Create;
        try
          with Bitmap do
          begin
            Bitmap.Assign(Fields[7]);
            R:=
              Classes.Rect(
                (Left+Right) div 2,
                Y,
                Right,
                Y+Height*(Right-Left) div 2 div Width);
          end;
          DrawBitmap(TheCanvas,R,Bitmap,Target);
        finally
          Bitmap.Free;
        end;
        Size:=13;
        Style:=[fsBold];
        DrawFieldText(Y,'Category',Fields[1].AsString);
        DrawFieldText(Y,'Species name',Fields[3].AsString);
        DrawFieldText(Y,'Length',Format('%0.0f cm / %0.1f inches',[Fields[4].AsFloat,Fields[5].AsFloat]));
        Text:=Fields[6].AsString;
        Inc(Y,Round(InchToPix(1,dirVertical)));
        Style:=[];
        R:=Classes.Rect(Left,Y,Right,Bottom);
        DrawText(TheCanvas.Handle,PChar(Text),Length(Text),R,DT_WORDBREAK);
      end;
      daFooter:
      begin
        Size:=10;
        Style:=[];
        Text:='Greatis Print Suite Demo. Copyright 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -