PDA

Ver la Versión Completa : como cambiar tipo de papel en la impresora ??


Raptor
08-11-2004, 16:52:07
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
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.