mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-10-01 04:49:26 +02:00
Printers, windows, do not open and setup printer if it's being destroyed, issue #23026
git-svn-id: trunk@43024 -
This commit is contained in:
parent
88a54c3916
commit
6d093a3d09
@ -38,6 +38,8 @@ end;
|
|||||||
|
|
||||||
destructor TWinPrinter.Destroy;
|
destructor TWinPrinter.Destroy;
|
||||||
begin
|
begin
|
||||||
|
fDestroying := true;
|
||||||
|
|
||||||
ClearDC;
|
ClearDC;
|
||||||
|
|
||||||
DoResetPrintersList;
|
DoResetPrintersList;
|
||||||
@ -84,7 +86,7 @@ end;
|
|||||||
|
|
||||||
procedure TWinPrinter.PrinterSelected;
|
procedure TWinPrinter.PrinterSelected;
|
||||||
begin
|
begin
|
||||||
if (PrinterIndex >= 0) and not RawMode then
|
if not fDestroying and (PrinterIndex >= 0) and not RawMode then
|
||||||
SetDC;
|
SetDC;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -805,22 +807,26 @@ begin
|
|||||||
if FPrinterHandle <> 0 then
|
if FPrinterHandle <> 0 then
|
||||||
ClosePrinter(FPrinterHandle);
|
ClosePrinter(FPrinterHandle);
|
||||||
|
|
||||||
PDev := TPrinterDevice(Printers.Objects[i]);
|
if fDestroying then
|
||||||
{$IFDEF USEUNICODE}
|
result := i
|
||||||
if not OpenPrinterW(PWideChar(UTF8Decode(PDev.Name)), @fPrinterHandle, nil) then
|
else begin
|
||||||
{$ELSE}
|
PDev := TPrinterDevice(Printers.Objects[i]);
|
||||||
if not OpenPrinter(PChar(PDev.Name), @fPrinterHandle, nil) then
|
{$IFDEF USEUNICODE}
|
||||||
{$ENDIF}
|
if not OpenPrinterW(PWideChar(UTF8Decode(PDev.Name)), @fPrinterHandle, nil) then
|
||||||
begin
|
{$ELSE}
|
||||||
FprinterHandle := 0;
|
if not OpenPrinter(PChar(PDev.Name), @fPrinterHandle, nil) then
|
||||||
raise EPrinter.CreateFmt('OpenPrinter exception : %s',
|
{$ENDIF}
|
||||||
[SysErrorMessage(GetlastError)]);
|
begin
|
||||||
end;
|
FprinterHandle := 0;
|
||||||
|
raise EPrinter.CreateFmt('OpenPrinter exception : %s',
|
||||||
|
[SysErrorMessage(GetlastError)]);
|
||||||
|
end;
|
||||||
|
|
||||||
if UpdateDevMode(i) then
|
if UpdateDevMode(i) then
|
||||||
Result := i
|
Result := i
|
||||||
else
|
else
|
||||||
Result := -1;
|
Result := -1;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ Type
|
|||||||
fLastHandleType : THandleType;
|
fLastHandleType : THandleType;
|
||||||
fDC : HDC;
|
fDC : HDC;
|
||||||
fPrinterHandle : THandle;
|
fPrinterHandle : THandle;
|
||||||
|
fDestroying : boolean;
|
||||||
procedure SetIC;
|
procedure SetIC;
|
||||||
procedure SetDC;
|
procedure SetDC;
|
||||||
procedure ClearDC;
|
procedure ClearDC;
|
||||||
|
Loading…
Reference in New Issue
Block a user