Как найти все форматы бумаги, поддерживаемые принтером? |
Previous Top Next |
Code: |
uses Printers, WinSpool;
procedure GetPapernames(sl: TStrings); type TPaperName = array [0..63] of Char; TPaperNameArray = array [1..High(Word) div SizeOf(TPaperName)] of TPaperName; PPapernameArray = ^TPaperNameArray; var Device, Driver, Port: array [0..255] of Char; hDevMode: THandle; i, numPaperformats: Integer; pPaperFormats: PPapernameArray; begin Printer.PrinterIndex := -1; // Standard printer Printer.GetPrinter(Device, Driver, Port, hDevmode); numPaperformats := WinSpool.DeviceCapabilities(Device, Port, DC_PAPERNAMES, nil, nil); if numPaperformats 0 then begin GetMem(pPaperformats, numPaperformats * SizeOf(TPapername)); try WinSpool.DeviceCapabilities(Device, Port, DC_PAPERNAMES, PChar(pPaperFormats), nil); sl.Clear; for i := 1 to numPaperformats do sl.Add(pPaperformats^[i]); finally FreeMem(pPaperformats); end; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin GetPapernames(memo1.Lines); end; |
©Drkb::03197
Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
Вот пример, выводящий список форматов бумаги для принтера, установленного по умолчанию:
Code: |
procedure TForm1.Button2Click(Sender: TObject); type
TPaperName = array[0..63] of Char; TPaperNameArray = array[1..High(Cardinal) div Sizeof(TPaperName)] of TPaperName; PPapernameArray = ^TPaperNameArray; var
Device, Driver, Port: array[0..255] of Char; hDevMode: THandle; i, numPaperformats: Integer; pPaperFormats: PPapernameArray; begin
Printer.PrinterIndex := -1; Printer.GetPrinter(Device, Driver, Port, hDevmode); numPaperformats := WinSpool.DeviceCapabilities(Device, Port, DC_PAPERNAMES, nil, nil); if numPaperformats > 0 then begin GetMem(pPaperformats, numPaperformats * Sizeof(TPapername)); try WinSpool.DeviceCapabilities(Device, Port, DC_PAPERNAMES, Pchar(pPaperFormats), nil); memo1.clear; for i := 1 to numPaperformats do memo1.lines.add(pPaperformats^[i]); finally FreeMem(pPaperformats); end; end; end; |
©Drkb::03198
Взято из Советов по Delphi от Валентина Озерова
Сборник Kuliba