adı IndexOf
geçirilen varsayılan yazıcı kullanarak geri döner:
Ben Yazıcı adına göre yazıcıyı ayarlama denedi çalışmak için Printer.Printers
. CASE dahil tam değilse, IndexOf
, "varsayılan yazıcıyı kullan" anlamına gelen -1
'u döndürecektir.
Belirli bir örnek için, gerçek yazıcı adı HP LaserJet
veya hp laserjet 5
ise, IndexOf('hp laserjet')
kullanarak -1 değerini döndürecektir.
Tam adı belirtmiyorsanız, listeyi yineleyerek kısmi bir eşleşme yapabilirsiniz. Tipik sistemin, verimli olabilmesi için çok fazla sayıda yazıcıya sahip olması pek olası değildir; Birkaç düzine sahibiz ve sorun değil.
İşte sahip olduğumuz durum: Ofisimiz üç temel bölüme ayrılmıştır (Mali, Yönetici ve Müşteri Hizmetleri). Her birinin pin beslemesi (nokta vuruşlu) etiketlerine sahip farklı bir yazıcı vardır, ancak tüm bölümlerde çalışan uygulamalarımız vardır.
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;
: Sonra bir döngü ile uygun yazıcıyı bulabilirsiniz vb
Fiscal Labels
,
Admin Labels
, - Yerine uygulama etiket yazıcı seçmek için çalıştırılıyor hangi departman biliyoruz sahip, sadece kelime
Labels
içeren yazıcılar isimleri ver
Bir not olarak: VCL
önekini referanslarınızdan kaldırırım; Bu, kodunuzun platformlar arasında mevcut olmayacağı anlamına gelir. Yalnızca Printers
'un kullanım tümcesinde olduğundan emin olursanız, yalnızca Printers.Printer
'u kullanabilir ve hedef platformunu (VCL Win32/64, FMX 32/64, OSX) değiştirdiğinizde, yapı yapılandırmasına göre kullanım deyiminiz ayarlanır.