mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-28 16:40:48 +02:00
improved Printer Setup dialog win32 from Olivier und Salvatore
git-svn-id: trunk@7052 -
This commit is contained in:
parent
434dff3b94
commit
73e0927f4b
@ -1,8 +1,7 @@
|
||||
{**************************************************************
|
||||
Implementation for winprinter
|
||||
***************************************************************}
|
||||
|
||||
Uses WinUtilPrn, InterfaceBase, Win32Int;
|
||||
Uses WinUtilPrn, InterfaceBase, Win32Int, LCLIntf;
|
||||
|
||||
Const
|
||||
Win32Orientations: array [TPrinterOrientation] of Integer = (
|
||||
@ -41,29 +40,7 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TWinPrinter.PrinterSetup: Boolean;
|
||||
Var NewDevMode : TDeviceMode;
|
||||
PDev : TPrinterDevice;
|
||||
begin
|
||||
if Printers.Count>0 then
|
||||
begin
|
||||
if fPrinterHandle=0 then
|
||||
SetPrinter(Printers.Strings[PrinterIndex]);
|
||||
|
||||
if fPrinterHandle=0 then
|
||||
raise EPrinter.Create('Printer handle not defined');
|
||||
|
||||
PDev:=TPrinterDevice(Printers.Objects[PrinterIndex]);
|
||||
FillChar(NewDevMode,SizeOf(NewDevMode),0);
|
||||
|
||||
Result:=(AdvancedDocumentProperties(0,fPrinterHandle,PChar(PDev.Name),@PDev.DevMode,@NewDevMode)<>0);
|
||||
|
||||
if Result then
|
||||
PDev.DevMode:=NewDevMode;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TWinPrinter.PrintDialog: Boolean;
|
||||
function TWinPrinter.BaseDialogs(aFlag : DWORD):boolean;
|
||||
var lpp : tagPD;
|
||||
PDev : TPrinterDevice;
|
||||
DevMode : PDeviceMode;
|
||||
@ -72,6 +49,7 @@ var lpp : tagPD;
|
||||
DevNames : PDevNames;
|
||||
St : PChar;
|
||||
begin
|
||||
Result:=False;
|
||||
if Printers.Count>0 then
|
||||
begin
|
||||
FillChar(lpp,SizeOf(lpp),0);
|
||||
@ -80,7 +58,7 @@ begin
|
||||
begin
|
||||
lStructSize:=SizeOf(lpp);
|
||||
hInstance:=LCLType.HInstance;
|
||||
Flags:=PD_COLLATE or PD_USEDEVMODECOPIES; //PD_PRINTSETUP ;
|
||||
Flags:=aFlag;
|
||||
hWndOwner:=TWin32WidgetSet(InterfaceObject).AppHandle;
|
||||
|
||||
PDev:=TPrinterDevice(Printers.Objects[PrinterIndex]);
|
||||
@ -112,6 +90,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
Result:=True;
|
||||
|
||||
if lpp.hDevMode<>0 then
|
||||
begin
|
||||
DevMode:=PDeviceMode(GlobalLock(lpp.hDevMode));
|
||||
@ -136,6 +116,36 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TWinPrinter.PrinterSetup: Boolean;
|
||||
begin
|
||||
Result:=BaseDialogs(PD_PRINTSETUP);
|
||||
end;
|
||||
|
||||
function TWinPrinter.PrintDialog: Boolean;
|
||||
begin
|
||||
Result:=BaseDialogs(PD_COLLATE or PD_USEDEVMODECOPIES);
|
||||
end;
|
||||
|
||||
function TWinPrinter.GetXDPI: Integer;
|
||||
begin
|
||||
Result:=72;
|
||||
if (Printers.Count>0) then
|
||||
begin
|
||||
SetDC;
|
||||
Result:=GetDeviceCaps(fDC, LOGPIXELSX);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TWinPrinter.GetYDPI: Integer;
|
||||
begin
|
||||
Result:=72;
|
||||
if (Printers.Count>0) then
|
||||
begin
|
||||
SetDC;
|
||||
Result:=GetDeviceCaps(fDC,LOGPIXELSY);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TWinPrinter.SetIC;
|
||||
var PDev : TPrinterDevice;
|
||||
begin
|
||||
@ -187,7 +197,9 @@ begin
|
||||
if fPrinterHandle=0 then
|
||||
raise EPrinter.Create('Printer handle not defined');
|
||||
|
||||
ClearDC;
|
||||
SetDC;
|
||||
Canvas.Handle:=fDC;
|
||||
Canvas.Refresh;
|
||||
|
||||
FillChar(Inf,SizeOf(Inf),0);
|
||||
@ -522,3 +534,6 @@ INITIALIZATION
|
||||
|
||||
{end.}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -37,6 +37,9 @@ Type
|
||||
procedure SetIC;
|
||||
procedure SetDC;
|
||||
procedure ClearDC;
|
||||
|
||||
function BaseDialogs(aFlag : DWORD):boolean;
|
||||
|
||||
protected
|
||||
procedure DoBeginDoc; override;
|
||||
procedure DoNewPage; override;
|
||||
@ -57,6 +60,9 @@ Type
|
||||
procedure DoSetCopies(aValue : Integer); override;
|
||||
function DoGetOrientation: TPrinterOrientation; override;
|
||||
procedure DoSetOrientation(aValue : TPrinterOrientation); override;
|
||||
|
||||
function GetXDPI: Integer; override;
|
||||
function GetYDPI: Integer; override;
|
||||
public
|
||||
constructor Create; override;
|
||||
destructor Destroy; override;
|
||||
|
@ -247,3 +247,4 @@
|
||||
PD_NONETWORKBUTTON = $00200000;
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user