名前がIndexOf
に渡されたデフォルトのプリンタを使用してに戻ります:
私はプリンタ名でプリンタを設定しようとしています働くためにPrinter.Printers
に。 正確なではない場合は、IndexOf
は-1
を返します。これは「デフォルトプリンタを使用する」を意味します。
IndexOf('hp laserjet')
を使用すると、実際のプリンタ名がHP LaserJet
またはhp laserjet 5
の場合は-1が返されます。
正確な名前を指定していない場合は、リストを反復して部分一致を実行できます。典型的なシステムではこれが効率的であるために利用可能なプリンタが多すぎることはほとんどありません。私たちは数十ダース持っており、それはいいです。
私たちのオフィスは3つの基本部門(財政、管理、カスタマーサービス)に分かれています。それぞれにはピンフィード(ドットマトリックス)ラベルを保持する別のプリンタがありますが、すべての部門で動作するアプリがあります。
function GetLabelPrinterIndex: Integer;
var
i: Integer;
begin
for i := 0 to Printer.Printers.Count - 1 do
if AnsiContainsText(Printer.Printers[i], `Labels`) then
begin
Exit(i);
end;
Result := -1;
end;
:私たちは、ループとの適切なプリンタを見つけることができるなど
Fiscal Labels
、
Admin Labels
、 - 代わりにアプリケーションがラベルプリンタを選択することで実行されていた部門を知ったのは、我々は言葉だけ
Labels
を含むプリンタ名を与えます
注:参考文献から接頭辞VCL
を削除します。プラットフォーム間でコードを使用できないことを意味します。 Printers
がuses句に含まれていることを確認した場合は、Printers.Printer
のみを使用し、ターゲットプラットフォーム(VCL Win32/64、FMX 32/64、OSX)を変更すると、ビルド構成に基づいてuses句が調整されます。