[TRUCO DELPHI] Listar los Formatos de Papel de la Impresora en uso.
delphi
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;
Ejemplo de uso:
delphi
GetPaperFormats(Memo1.Lines);
Saludos!