2014年05月19日
PrinterIndex := -1 時のバグ(Delphi XE6)
”通常使うプリンタ”にプリンタ設定する際使用する、
PrinterIndex := -1
についてエラーが出る不具合対応。
DelphiXE5までは、問題なし。
何でこんなバグがまぎれんねんという話はおいといて、対策。
http://qc.embarcadero.com/wc/qcmain.aspx?d=124532
Vcl.Printers.pas
---------------------------------------------------------------------------
procedure TPrinter.SetPrinterIndex(Value: Integer);
var
lDevice, lDriver, lPort : Array[0..255] of Char;
lDeviceMode : THandle;
begin
CheckPrinting(False);
if (Value < -1) or (Value >= Printers.Count) then
RaiseError(SPrinterIndexError);
if (Value = -1) or (PrinterIndex = -1) then //<-- この行条件変更
SetToDefaultPrinter;
if Value <> FPrinterIndex then
begin
if Value <> -1 then //<-- この行追加
FPrinterIndex := Value;
with TPrinterDevice(Printers.Objects[FPrinterIndex]) do
{$IF DEFINED (CLR)}
SetPrinter(Device, Driver, Port, 0);
{$ELSE}
Printer.GetPrinter(lDevice, lDriver, lPort, lDeviceMode);
GlobalUnlock(lDeviceMode);
GlobalFree(lDeviceMode);
lDeviceMode := 0;
Printer.SetPrinter(lDevice, lDriver, lPort, lDeviceMode);
{$ENDIF}
FreeFonts;
SetState(TPrinterState.psNoHandle);
end;
end;
---------------------------------------------------------------------------
ということらしい。
とりあえず試したらうまく行った。
*
(2014/6/19)
XE6 UPdate1で直ったみたい。
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/97012514
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/97012514
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック