lazarus/components/printers/unix/udlgpagesetup.pas

97 lines
2.2 KiB
ObjectPascal

{
*****************************************************************************
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.