16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:指定のプリンタでPrinterSetupDialog表"
この発言は #00611 Satobe さんの指定のプリンタでPrinterSetupDialog表示 に対するコメントです
◆解説
TPrinterSetupDialog で、指定のプリンタを初期値として表示させる。
【「通常使うプリンタ」でないプリンタ】(ややこしい(^^;)
の PrinterSetupDialogを表示できます。
※前回発言のコードで行っている、TPrinterSetupDialogの OnShow
イベント処理は「まったく不要である」ことが判明しました。(^^;
◆動作確認
Delphi3.1 + Win95a
Delphi3.1 + WinNT4.0(SP3) ←この動作も確認しました
◆例rinters を追加する
(2) Form1に ListBox1,Button1,PrinterSetupDialog1を置く
----- ここから -----
type
TForm1 = class(TForm)
...省略(前回発言の FPrinterNalementation
//Form1 OnCreateイベント
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.Assign(Printer.Printers);
//通常使うプリンタを選択
Printer.PrinterIndex := -1;
ListBox1.ItemIndex := Printer.PrinterIndex;
end;
//Button1 OnClickイベント
procedure TForm1.Button1Click(Sender: TObject);
var
Device, Driver, Port: array[0..79] of char;
DeviceMode: THandle;
bx1.ItemIndex < 0 then begin
ShowMessage('ListBoxで目的のプリンタを選択して下さい');
Exit;
end;
//ListBox1で選択されたプリンタの DEVMODE構造体を
//TPrinterオブジェクト内部で再取得させる
Printer.PrinterIndex := ListBox1.ItemIndex;
Printer.GetPrinter(Device, Driver, Port, DeviceMode); //(*1)
Printer.SetPrinter(Device, Driver, Port, 0); //(*2)
Printer.GetPrinter(, DeviceMode);
if DeviceMode = 0 then begin
ShowMessage('Printer.GetPrinter エラー'); Exit;
end;
PrinterSetupDialog1.Execute;
end;
----- ここまで -----
ListBoxで目的のプリンタを選択してから Buttonをクリックして
下さい。
VCLソースを読んだところ、TPrinterSetupDialogオブジェクトが
内部で Printer.GetPrinterを呼び出して、その結果得られた
DeviceModeでダイアログを表示していることが判明しました。
Printer.PrinterIndexプロパティを目的のプリンタに変更した後、
(*1)(*2)の2行を実行してから、PrinterSetupDialog1.Ex「わけです。
#カスタムコンポ化する必要なんてないですね。
#申し訳ありませんでした。m(_`_)m
Original document by Satobe 氏 ID:(JCG00336)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|