|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"LightReport2給紙と用紙サイズの指定方法"
LightReport2 で給紙方法と用紙サイズを指定するための関数です。
ロジック中の LightRep.Printer を Printer に変更すれば TPrinter を使用し
た印刷にも対応すると思います。
--- 使用例
サンプル蔵「プリンターの給紙方法と用紙サイズを列挙」を使用してプリンター
固有の給紙方法と用紙サイズの番号を取得します。
TLightRep の OnSetPrinter イベントで以下のように使用します。
(PaperSizeプロパティを必ず psNone に指定してください)
// NEC MultiImpact 700XX でフロントトラクタフィーダを指定してA4縦
procedure TForm1.LightRep1SetPrinter(Sender: TObject);
const
BinNumber9x = 304; // Win98 での番号
PaperNumber9x = 9;
BinNumberNT = 272; // Win2000 での番号
PaperNumberNT = 9;
begin
inherited;
LRSetPrinter(LightRep1, BinNumber9x, PaperNumber9x,
BinNumberNT, PaperNumberNT, True);
end;
--- 以下が関数です uses に LightRep を追加してください。
// プリンターの給紙方法(BinNumber)と用紙サイズ(PaperNumber)を指定する
// BinNumber, PaperNumber とも変更しない場合は 0 をセット
// Win9x系列 と WinNT系列 それぞれに指定する
// Portrait: True = 縦方向(用紙), False = 横方向(用紙)
procedure LRSetPrinter(LightRep: TLightRep; BinNumber9x, PaperNumber9x,
BinNumberNT, PaperNumberNT: Integer; Portrait: Boolean);
var
PrinterName, DriverName, PortName:array[0..255] of Char;
DeviceMode: THandle;
DevModeW: ^TDevMode;
begin
StrPCopy(DriverName, 'WINSPOOL');
StrPCopy(PrinterName,
LightRep.Printer.Printers[LightRep.Printer.PrinterIndex]);
StrPCopy(PortName, '');
LightRep.Printer.GetPrinter(DriverName, PrinterName,
PortName, DeviceMode);
DevModeW := GlobalLock(DeviceMode);
if DevModeW = nil then
raise Exception.Create('用紙設定ができません!!');
case Win32Platform of
2: // WindowsNT, Windows2000
begin
DevModeW.dmPaperSize := PaperNumberNT; // 用紙サイズの指定
DevModeW.dmDefaultSource := BinNumberNT; // ビンの指定
end;
else // Windows95, Windows98
begin
DevModeW.dmPaperSize := PaperNumber9x; // 用紙サイズの指定
DevModeW.dmDefaultSource := BinNumber9x; // ビンの指定
end;
end;
if Portrait then
DevModeW.dmOrientation := DMORIENT_PORTRAIT
else
DevModeW.dmOrientation := DMORIENT_LANDSCAPE;
GlobalUnlock(DeviceMode);
LightRep.Printer.SetPrinter(DriverName, PrinterName,
PortName, DeviceMode);
end;
2002/03/06(水) 01:50pm Ohtaka(QZF12401)
Original document by Ohtaka 氏 ID:(QZF12401)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|