Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 11-05-2010
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 190
GerTorresM Va por buen camino
Como cambiar el tamaño del papel en win 7

Hola a todos:


La situación que se me presenta el día de hoy es la siguiente:

Tengo una aplicación que he desarrollado en delphi 6 y utiliza el Quick Report 3 para los reportes, la esencia de la situación es que utilizo tan solo algunos reportes en tamaño folio o en 8.5 x 13", y el el resto de los reportes en tamaño carta.

Conociendo a los usuarios de mi aplicación, puedo llegar a asegurar que éstos nunca iran al panel de control y en impresoras especificaran el tamaño del papel antes de cargar e imprimir el reporte, así que intente cambiar el tamaño del papel mediante de código y me halle con el siguiente código

Código Delphi [-]
procedure SetPaperSize(floatAlto, floatAncho: Double);
var
  ADevice, ADriver, APort : array [0..255] of Char;
  ADeviceMode : THandle;
  DevMode : PDevMode;
  PixelsInInchX, PixelsInInchY :Integer;
  MedidaAncho, MedidaAlto : Variant;
begin
  with Printer do
    begin
      GetPrinter (ADevice, ADriver, APort, ADeviceMode);
      SetPrinter (ADevice, ADriver, APort, 0);
      GetPrinter (ADevice, ADriver, APort, ADeviceMode);
      PixelsInInchX:=GetDeviceCaps(Printer.Handle,LOGPIXELSX);
      PixelsInInchY:=GetDeviceCaps(Printer.Handle, LOGPIXELSY);
      MedidaAncho:= PixelsInInchX * floatAncho;
      MedidaAlto:= PixelsInInchY * floatAlto;
      DevMode := GlobalLock(ADeviceMode);
      if not Assigned(DevMode) then
        ShowMessage('Ha entrado en -> if not Assigned(DevMode) ...')
      else
        begin
          with DevMode^ do
            begin
              dmFields := dmFields or DM_PAPERSIZE or DM_PAPERLength or DM_PAPERWidth;
              dmPaperSize:= DMPAPER_User;
              dmPaperLength := MedidaAlto;
              dmPaperWidth:= MedidaAncho;
            end;
            GlobalUnLock(ADeviceMode);
            SetPrinter(ADevice, ADriver, APort, ADeviceMode);
        end;
    end;
end;

Las pruebas son realizadas utilizando Windows 7 Ultimate de 64 y una impresora HP que utiliza el driver universal.

El código como tal corre, pero al finalizar no realiza el cambio el tamaño del papel.


Agradezco de antemano el tiempo que den a la respuesta




gertorresm
colombia

Última edición por GerTorresM fecha: 11-05-2010 a las 21:35:28. Razón: redacción
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
FastReport+Corte de papel+tamaño de papel Cheerpipe Impresión 3 25-03-2008 17:55:53
cambiar tamaño de papel wn windows xp juanarminio Impresión 4 30-10-2007 17:48:16
Cómo cambiar el tamaño de papel para imprimir Laura Roura Impresión 1 04-10-2006 22:03:16
Como asignar el tamaño de papel en QuickRep?? AndGaG Impresión 2 02-07-2006 21:51:12
Cambiar el tamaño del Papel en QR 3.6.2 EdwinFC Impresión 0 22-07-2005 19:51:14


La franja horaria es GMT +2. Ahora son las 09:35:56.


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