PDA

Ver la Versión Completa : Traer los tipos de papel de una impresora


ElCherchu
05-05-2005, 16:19:28
Hola amigos...

Tengo un sistema en el que configuro la impresora para algunos documentos y para eso uso un formulario de configuración de impresora, pero ahora me he visto en la necesidad de ademas de la impresora poder traer los tipos de papel cuando selecciono una impresora de un combo que me trae todas las impresoras instalada en la pc.

Como puedo traer los tipos de papel cuando selecciono una impresora?.

Cuento con ustedes...

ElCherchu...

marcoszorrilla
05-05-2005, 21:47:12
Pon un memo y mira este código:


unit Tipospapel;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,WinSpool,Printers;
procedure GetPapernames(sl: TStrings);
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
GetPapernames(memo1.Lines);
end;

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;

end.


Un Saludo.

ElCherchu
07-05-2005, 15:47:17
Hola a todos..

Quiero dar la gracia a marcoszorrilla por el código que envió al foro sobre los tipos de papel para una impresora.. esto funciona perfectamente...

Gracias..

ElCherchu...