Как узнать все форматы бумаги, поддерживаемые принтером по умолчанию

Советы » Принтеры и Печать » Как узнать все форматы бумаги, поддерживаемые принтером по умолчанию

Ниже представлена процедура, которая имеет в качестве параметра любой объект StringList - Строки для Memo, Пункты Combo и т.д.

procedure

GetPaperFormats(aSL: TStringList); 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

); aSL.clear; for

i := 1 to

numPaperformats do

aSL.lines.add(pPaperformats^[i]); finally

FreeMem(pPaperformats); end

; end

; end

;

Использование:

GetPaperFormats(Memo1.Lines);

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com