
{*****************************************}
{                                         }
{             FastReport v2.3             }
{              Print dialog               }
{                                         }
{  Copyright (c) 1998-99 by Tzyganenko A. }
{                                         }
{*****************************************}

unit LR_PrDlg;

interface

{$I LR_Vers.inc}

uses
  Types, Classes, SysUtils,
  // LCL
  LCLIntf, LResources,
  Forms, Controls, Graphics, Dialogs, Buttons, StdCtrls, ExtCtrls, Spin,
  // Printers
  PrintersDlgs;

type

  { TfrPrintForm }

  TfrPrintForm = class(TForm)
    cbCollate: TCheckBox;
    Label1: TLabel;
    GroupBox2: TGroupBox;
    RB1: TRadioButton;
    RB2: TRadioButton;
    RB3: TRadioButton;
    E2: TEdit;
    Label2: TLabel;
    OkButton: TButton;
    CancelButton: TButton;
    GroupBox1: TGroupBox;
    CB1: TComboBox;
    PropButton: TButton;
    PrinterSetupDialog1: TPrinterSetupDialog;
    Image1: TImage;
    E1: TSpinEdit;
    procedure CB1DrawItem({%H-}Control: TWinControl; Index: Integer;
      ARect: TRect; {%H-}State: TOwnerDrawState);
    procedure FormCreate(Sender: TObject);
    procedure PropButtonClick(Sender: TObject);
    procedure CB1Click(Sender: TObject);
    procedure E2Click(Sender: TObject);
    procedure RB3Click(Sender: TObject);
    procedure FormDeactivate(Sender: TObject);
  private
    { Private declarations }
    OldIndex: Integer;
  public
    { Public declarations }
  end;

var
  frPrintForm: TfrPrintForm;

implementation

{$R *.lfm}

uses LR_Const, LR_Prntr,Printers;

procedure TfrPrintForm.FormCreate(Sender: TObject);
begin
  CB1.Items.Assign(Printer.Printers);
  CB1.ItemIndex := Printer.PrinterIndex;
  OldIndex := Printer.PrinterIndex;

  Caption := sPrintFormPrint;
  GroupBox1.Caption := sPrintFormPrinter;
  PropButton.Caption := sPrintFormProp;
  Label1.Caption := sPrintFormCopy;
  GroupBox2.Caption := sPrintFormPgRange;
  RB1.Caption := sPrintFormAll;
  RB2.Caption := sPrintFormCurPg;
  RB3.Caption := sPrintFormNumber;
  Label2.Caption := sPrintFormInfo;
  OkButton.Caption := sOk;
  CancelButton.Caption := sCancel;
  cbCollate.Caption:=sPrintFormCollate;
  {$IFDEF PRINTDIALOG_DISABLE_PRINTER_PROPERTIES}
  propButton.Enabled := false;
  {$ENDIF}
end;

procedure TfrPrintForm.FormDeactivate(Sender: TObject);
begin
  if ModalResult <> mrOk then
    Prn.PrinterIndex := OldIndex;
end;

procedure TfrPrintForm.CB1DrawItem(Control: TWinControl; Index: Integer;
  ARect: TRect; State: TOwnerDrawState);
var
  r: TRect;
begin
  r := ARect;
  r.Right := r.Left + 18;
  r.Bottom := r.Top + 16;

  Types.OffsetRect(r, 2, (ARect.Bottom - ARect.Top) div 2 - 8);

  with CB1.Canvas do
  begin
    FillRect(ARect);
    BrushCopy(r, Image1.Picture.Bitmap, Rect(0, 0, 18, 16), clOlive);
    TextOut(ARect.Left + 24, ARect.Top + 1, CB1.Items[Index]);
  end;
end;

procedure TfrPrintForm.PropButtonClick(Sender: TObject);
begin
  PrinterSetupDialog1.Execute;
  CB1.ItemIndex := Printer.PrinterIndex;
end;

procedure TfrPrintForm.CB1Click(Sender: TObject);
begin
  Prn.PrinterIndex := CB1.ItemIndex;
end;

procedure TfrPrintForm.E2Click(Sender: TObject);
begin
  RB3.Checked := True;
end;

procedure TfrPrintForm.RB3Click(Sender: TObject);
begin
  E2.SetFocus;
end;

end.
