Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   como cambiar tipo de papel en la impresora ?? (https://www.clubdelphi.com/foros/showthread.php?t=15874)

Raptor 08-11-2004 16:52:07

como cambiar tipo de papel en la impresora ??
 
hola a todos espero que esten muy bien..

bueno a lo que vinimos

Es posible cambiar el tipo de papel que tiene una impresora a travez de un programa echo en delphi.

por ejemplo.
la impresora tiene por default el tipo de papel A4, pero desde mi aplicacion quiero poner un papel definido por mi que se llama factura.

Esto lo necesito porque no quiero varias impresoras con papel diferentes.

desde ya muchas gracias... :rolleyes:

Raptor 17-11-2004 18:02:53

Hola a todos

No se si es que este tema no lo han visto oh sera que es tan dificil.

bueno pues lo planteo nuevamente a ver si alguien me da una manito.

Cuando se crea una impresora en windows esta tiene un conjunto de tipo de papel predefinido por windows ejemplo : A3,A4.Legal,Letter, etc;

generalmente el papel por default es A4 o Letter. Entonces mi pregunta es como puedo cambiar de A4 a Legal en delphi; alquien tiene una idea

gracias de antemano... :confused:

Raptor 28-11-2004 00:16:14

Chico disculpen ; solo estoy editando para que se muestre en la cabecera otravez .

Verdaderamente es muy dificil este tema eh... :D

marcoszorrilla 28-11-2004 22:09:40

Código Delphi [-]
  
  procedure SetPaperSize (intAlto,intAncho : Integer);
  {aqui se define el tamaño del papel}
  var
     ADevice, ADriver, APort : array [0..255] of Char;
     ADeviceMode : THandle;
     DevMode : PDevMode;
  begin
     with Printer do
        begin
           GetPrinter (ADevice, ADriver, APort, ADeviceMode);
           SetPrinter (ADevice, ADriver, APort, 0);
           GetPrinter (ADevice, ADriver, APort, ADeviceMode);
           DevMode := GlobalLock(ADeviceMode);
           if not Assigned(DevMode) then
              ShowMessage('Ha entrado en -> if not Assigned(DevMode) ...')
           else
              begin
                 with DevMode^ do
                    begin
                       dmPaperSize:= DMPAPER_User;
                       dmPaperLength := intAlto;
                       dmPaperWidth:= intAncho;
                       dmFields := dmFields or DM_PAPERSIZE or
  DM_PAPERLength or DM_PAPERWidth;
                    end;
                 GlobalUnLock(ADeviceMode);
                 SetPrinter(ADevice, ADriver, APort, ADeviceMode);
             end;
        end;
  end;

Raptor 02-12-2004 15:25:56

Marco : Muchisimas gracias por la ayuda pero este codigo ya lo he probado antes, no funciona para Tecnologia NT , solo me ha funcionado en win9x.

y otra cosa:

cuando dice dmPaperSize:= DMPAPER_User; supongo que es el papel custom que trae el tipo de papel. pero imaginate que en nt eh creado un formulario(papel en la impresora) que se llama factura , como le digo que es ese especificamente.

dmPaperSize:= DMPAPER_User;
dmPaperLength := intAlto;
dmPaperWidth:= intAncho;
dmFields := dmFields or DM_PAPERSIZE or
DM_PAPERLength or DM_PAPERWidth;

Como dije en el primer mensaje : Cuando le pongo el tipo de papel manualmente funciona muy bien. pero realmente lo quiero poner via programacion, ya que si el usuario quita el papel predefinido en la impresora entonces no funcionaria.

mi hermano de antemano muchas gracia por tu esfuerzo, yo se que por el poco conocimiento de parte mia no te puedo ayudar en mucho, pero cuando lo necesite aqui estamos.

Saludo desde Santo Domingo ; R.D.


La franja horaria es GMT +2. Ahora son las 01:48:57.

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