2013-11-29 24 views
5

Bir yazıcıya Delphi kullanarak bir yazdırma işi göndermek istiyorum. İdeal olarak, kullanıcının yazıcıyı bir baskı iletişim kutusundan seçmesine gerek kalmadan bunu yapmak istiyorum.Delphi'de varsayılan olmayan bir yazıcıya yazdırma

Windows varsayılan yazıcı dışındaki yazıcıları kullanmak istiyorum. olanla tam eşleşmelidir ben yazdırırken

Vcl.Printers.Printer.PrinterIndex := Vcl.Printers.Printer.Printers.IndexOf('My Printer Name'); 

Ancak

cevap

9

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.

İlgili konular