Delphi Programming / Object Pascal
[掲載 2004年02月14日] [更新 2016年04月20日] プリンタ設定コンポーネント |
プリンタ設定コンポーネント
テストプログラム PrinterList |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE(UP1) Pro |
PrinterList プロパティと PrinterName プロパティのテストプログラムで,実行時にプリンタを選択する際の参考プログラムです.この方法の利点は,必要でないプリンタ名をコンボボックスのリストから外すことによって,利用者の間違った選択を防止できることです. |
|
図1
設計時画面 |
|
図2
実行画面
- EPSON の文字があるプリンタ名だけがリストされる
|
unit PrinterListUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, plSetPrinter, Buttons;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
plSetPrinter1: TplSetPrinter;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
uses
Printers;
{$R *.DFM}
//=============================================================================
// コンボボックスにプリンタのリストを作成
// 'EPSON'(大文字小文字の区別なし)があるプリンタのみリストする
//=============================================================================
procedure TForm1.FormShow(Sender: TObject);
var
LPrinterNo : Integer;
LPrinterName : String;
begin
ComboBox1.Clear;
//コンボボックスは編集不可に
ComboBox1.Style := csDropDownList;
//上からABC順
ComboBox1.Sorted := True;
ComboBox1.Items.Assign(plSetPrinter1.PrinterList);
for LPrinterNo := ComboBox1.Items.Count - 1 downto 0 do begin
LPrinterName := AnsiUpperCase(ComboBox1.Items[LPrinterNo]);
if Pos('EPSON', LPrinterName) = 0 then ComboBox1.Items.Delete(LPrinterNo);
end;
//プリンタ名プロパティと同じのがあればそれを選択
//なければリスト先頭のプリンタを選択状態にする
LPrinterName := plSetPrinter1.PrinterName;
ComboBox1.ItemIndex := 0;
for LPrinterNo := 0 to ComboBox1.Items.Count - 1 do begin
if ComboBox1.Items[LPrinterNo] = LPrinterName then begin
ComboBox1.ItemIndex := LPrinterNo;
Break;
end;
end;
//以下のコードでも可
//ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(plSetPrinter1.PrinterName);
//if ComboBox1.ItemIndex = -1 then ComboBox1.ItemIndex := 0;
end;
//=============================================================================
// プリンタのプロパティダイアログを表示
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
//コンボボックスのテキストでプリンタ名をセット
plSetPrinter1.PrinterName := ComboBox1.Items[ComboBox1.ItemIndex];
plSetPrinter1.Orientation := poLandscape;
//設定確認のためにプロパティのダイアログを表示
//選択したプリンタの設定ダイアログとなっている
plSetPrinter1.ShowDialog;
end;
end.
|