Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Traer los tipos de papel de una impresora (https://www.clubdelphi.com/foros/showthread.php?t=21074)

ElCherchu 05-05-2005 16:19:28

Traer los tipos de papel de una impresora
 
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:

Código Delphi [-]
 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...


La franja horaria es GMT +2. Ahora son las 15:45:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi