1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
{
*****************************************************************************
This file is part of the Printer4Lazarus package
See the file COPYING.modifiedLGPL.txt, included in this distribution,
for details about the license.
*****************************************************************************
}
unit udlgpagesetup;
{$mode objfpc}{$H+}
interface
uses
// LCL
Classes, Forms, ExtCtrls, StdCtrls, Menus,
// Printers
Printers, framePageSetup;
type
{ TDlgPageSetup }
TDlgPageSetup = class(TForm)
btnCancel: TButton;
btnPrinter: TButton;
btnOk: TButton;
frmPageSetup: TframePageSetup;
PanelButtons: TPanel;
procedure btnPrinterClick(Sender: TObject);
private
FMenu: TPopupMenu;
procedure MenuPrinterClick(Sender: TObject);
public
procedure SetControls(AEnablePreview, AEnableMargins, AEnablePapers,
AEnableOrientation: boolean);
end;
var
dlgPageSetup: TDlgPageSetup;
implementation
{$R udlgpagesetup.lfm}
{ TDlgPageSetup }
procedure TDlgPageSetup.btnPrinterClick(Sender: TObject);
var
mi: TMenuItem;
pnt: TPoint;
i: integer;
begin
if not Assigned(FMenu) then
FMenu:= TPopupMenu.Create(Self);
FMenu.Items.Clear;
if Printer.Printers.Count=0 then exit;
for i:= 0 to Printer.Printers.Count-1 do
begin
mi:= TMenuItem.Create(Self);
mi.Caption:= Printer.Printers[i];
mi.Checked:= i=Printer.PrinterIndex;
mi.RadioItem:= true;
mi.OnClick:= @MenuPrinterClick;
FMenu.Items.Add(mi);
end;
pnt:= btnPrinter.ClientToScreen(Point(0, 0));
FMenu.PopUp(pnt.X, pnt.Y);
end;
procedure TDlgPageSetup.MenuPrinterClick(Sender: TObject);
begin
if Sender is TMenuItem then
begin
Printer.SetPrinter((Sender as TMenuItem).Caption);
frmPageSetup.Initialize(
frmPageSetup.EnablePreview,
frmPageSetup.EnableMargins,
frmPageSetup.EnablePapers,
frmPageSetup.EnableOrientation
);
frmPageSetup.UpdatePageSize;
end;
end;
procedure TDlgPageSetup.SetControls(AEnablePreview, AEnableMargins, AEnablePapers,
AEnableOrientation: boolean);
begin
frmPageSetup.Initialize(AEnablePreview, AEnableMargins, AEnablePapers, AEnableOrientation);
end;
end.
|