unit mckPrintDialogs;

interface

uses
  KOL,KOLPrintDialogs,Windows, Classes,Graphics,
   mirror,mckObjs ;

type

  TKOLPrintDialog = class(TKOLObj)
  private
    ftagPD    : tagPD;
    fOptions  : TPrintDlgOptions;
    fAlwaysReset : Boolean;
  protected
    function  AdditionalUnits: string; override;
    procedure SetupFirst( SL: TStringList; const AName, AParent, Prefix: String ); override;
    procedure SetOptions(const Value : TPrintDlgOptions);
    procedure SetFromPage(const Value : WORD);
    procedure SetToPage(const Value : WORD);
    procedure SetMinPage(const Value : WORD);
    procedure SetMaxPage(const Value : WORD);
    procedure SetCopies(const Value : WORD);
    procedure SetAlwaysReset(const Value : Boolean);
  public
    constructor Create( AOwner: TComponent ); override;
  published
  property FromPage : WORD read ftagPD.nFromPage write SetFromPage;
  property ToPage   : WORD read ftagPD.nToPage write SetToPage;
  property MinPage  : WORD read ftagPD.nMinPage write SetMinPage;
  property MaxPage  : WORD read ftagPD.nMaxPage write SetMaxPage;
  property Copies   : WORD read ftagPD.nCopies write SetCopies;
  property Options : TPrintDlgOptions read fOptions write SetOptions;
  property AlwaysReset : Boolean read fAlwaysReset write SetAlwaysReset;
  end;


  procedure Register;

implementation

{$R *.dcr}




constructor TKOLPrintDialog.Create( AOwner: TComponent );
begin
inherited Create(Aowner);
fAlwaysReset := false;
FromPage := 1;
ToPage   := 1;
MinPage  := 1;
MaxPage  := 1;
Copies   := 1;
end;

procedure TKOLPrintDialog.SetAlwaysReset(const Value : Boolean);
begin
  fAlwaysReset := Value;
  Change;
end;

procedure TKOLPrintDialog.SetOptions(const Value : TPrintDlgOptions);
begin
    fOptions := Value;
    Change;
end;

procedure TKOLPrintDialog.SetFromPage(const Value : WORD);
begin
    ftagPD.nFromPage := Value;
    Change;
end;

procedure TKOLPrintDialog.SetToPage(const Value : WORD);
begin
    ftagPD.nToPage := Value;
    Change;
end;

procedure TKOLPrintDialog.SetMinPage(const Value : WORD);
begin
    ftagPD.nMinPage := Value;
    Change;
end;

procedure TKOLPrintDialog.SetMaxPage(const Value : WORD);
begin
    ftagPD.nMaxPage := Value;
    Change;
end;

procedure TKOLPrintDialog.SetCopies(const Value : WORD);
begin
    ftagPD.nCopies := Value;
    Change;
end;




function TKOLPrintDialog.AdditionalUnits;
begin
   Result := ', KOLPrintDialogs';
end;


procedure TKOLPrintDialog.SetupFirst(SL: TStringList; const AName,
  AParent, Prefix: String);
  var
  s : String;
  begin
    if (pdPrinterSetup in fOptions) then s := s + ',pdPrinterSetup';
    if (pdCollate in fOptions) then s := s + ',pdCollate';
    if (pdPrintToFile in fOptions) then s := s + ',pdPrintToFile';
    if (pdPageNums in fOptions) then s := s + ',pdPageNums';
    if (pdSelection in fOptions) then s := s + ',pdSelection';
    if (pdWarning in fOptions) then s := s + ',pdWarning';
    if (pdDeviceDepend in fOptions) then s := s + ',pdDeviceDepend';
    if (pdHelp in fOptions) then s := s + ',pdHelp';
    if (pdReturnDC in fOptions) then s:= s + ',pdReturnDC';
    if s <> '' then
    if s[1] = ',' then s[1] := Chr(32);
    SL.Add( Prefix + AName + ' := NewPrintDialog(' + AParent + ',[' + s + ']);');
    if fAlwaysReset then SL.Add(Prefix + AName + '.AlwaysReset := true;');
    SL.Add(Prefix + AName + '.FromPage :=' + Int2Str(Integer(ftagPD.nFromPage)) + ';');
    SL.Add(Prefix + AName + '.ToPage :=' + Int2Str(Integer(ftagPD.nToPage)) + ';');
    SL.Add(Prefix + AName + '.MinPage :=' + Int2Str(Integer(ftagPD.nMinPage)) + ';');
    SL.Add(Prefix + AName + '.MaxPage :=' + Int2Str(Integer(ftagPD.nMaxPage)) + ';');
    SL.Add(Prefix + AName + '.Copies :=' + Int2Str(Integer(ftagPD.nCopies)) + ';');
  end;




procedure Register;
begin
  RegisterComponents('KOLAddons', [TKOLPrintDialog]);
end;

end.

