Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-09-2006
jlmelida jlmelida is offline
Miembro
 
Registrado: ene 2005
Ubicación: Alicante, España
Posts: 42
Poder: 0
jlmelida Va por buen camino
Añadamos una segunda unidad, que será un report para ver como funciona la elección de bandeja. Este report será lanzado por el segundo botón de la unidad principal. Así pues, lo primero es escribir algo en el caption del segundo boton: Pondremos 'Print' y el eventon on click se encargará de lanzar el report. En resumen, la unidad principal quedá así:



Código Delphi [-]
 
unit MainForm;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, StdCtrls;
type
  TForm1 = class(TForm)
    SpeedButton1: TSpeedButton;
    Setup1: TPrinterSetupDialog;
    Label1: TLabel;
    SpeedButton2: TSpeedButton;
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  UserBinCode : integer;
  UserCollateCode : integer;
implementation
uses printers, miReport; { MiReport es el originalisimo nombre de la segunda unidad}
{$R *.DFM}
 
function GetBinSelection: integer;
var
     hDevMode: THandle;
     Device,Driver,Port: array [0..1024] of Char;
     bin: integer;
     DevMode : PDevMode;
begin
  Printer.GetPrinter (Device,Driver,Port,hDevMode);
  bin := -1;
  if hDevMode <> 0 then
  begin
        DevMode := GlobalLock (hDevMode);
 
        bin := DevMode^.DMDEFAULTSOURCE;
        UserCollateCode := DevMode^.dmCollate;
        GlobalUnlock (hDevMode);
  end;
  result := bin;
end;
 
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
     setup1.Execute;
     UserBinCode := GetBinSelection;
     label1.Caption := 'Bin code : ' + inttostr( UserBinCode)+ ' Collate code ' + inttostr( UserCollateCode);
end;
 
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
      report1.quickrep1.print;
end;





La segunda unidad tendrá un quickreport. La propiedad bands de este será todas false menos HasDetail y HasPage Header

En la banda de cabecera pondremos un TQRLabel y en el caption algo descriptivo como: 'Prueba de selección de bandeja'
En la banda de detalles colocamos otro TQRLabel para que veamos como queda el report

El codigo quedará así


Código Delphi [-]
unit MiReport;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  QuickRpt, QRCtrls, ExtCtrls;
type
  Treport1 = class(TForm)
    QuickRep1: TQuickRep;
    PageHeaderBand1: TQRBand;
    DetailBand1: TQRBand;
    QRLabel1: TQRLabel;
    QRLabel2: TQRLabel;
    procedure QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
    procedure QuickRep1ApplyPrinterSettings(Sender: TObject;
      var Cancel: Boolean; DevMode: Pointer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  report1: Treport1;
  lineno : integer;
implementation
uses MainForm;
{$R *.DFM}
procedure Treport1.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
begin
   // Escribimos el interesantismo report        qrlabel1.caption := 'Linea ' + inttostr( Lineno);
      inc(lineno);
      MoreData := lineno < 30;
end;

procedure Treport1.QuickRep1ApplyPrinterSettings(Sender: TObject;
  var Cancel: Boolean; DevMode: Pointer);
begin
    // Sobreescribimos la función con nuestros parametros
    // Podemos alterar muchas cosas:
    //   DevMode^.dmPrintQuality := PrintQuality;
   // DevMode^.dmCollate := Collate;
   // DevMode^.dmColor := ColorOption;
   // Por supuesto la orientación, tamaño, etc.
  
       PDevMode(DevMode).dmDefaultSource := UserBinCode;
       PDevMode(DevMode).dmCollate := UserCollateCode;
end;
end.

En fin, espero haber respondido a lo que planteabas.
Saludos
Responder Con Cita
  #2  
Antiguo 04-09-2006
alapaco alapaco is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Buenos Aires
Posts: 287
Poder: 0
alapaco Va por buen camino
Te agradezco mucho el tiempo que te has tomado, pero a pesar de elegir la bandeja 3, el reporte sigue saliendo en la bandeja 2 (que es la que tiene el papel que tiene seteado el QR).

Alguna otra solución ?
Responder Con Cita
  #3  
Antiguo 04-09-2006
jlmelida jlmelida is offline
Miembro
 
Registrado: ene 2005
Ubicación: Alicante, España
Posts: 42
Poder: 0
jlmelida Va por buen camino
Cita:
Empezado por alapaco
Te agradezco mucho el tiempo que te has tomado, pero a pesar de elegir la bandeja 3, el reporte sigue saliendo en la bandeja 2 (que es la que tiene el papel que tiene seteado el QR).

Alguna otra solución ?
Puede ser, tratandose de una HP, que la tengas configurada por Menu para que haga precisamente eso. Lo digo porque en nuestro trabajo tenemos una LaserJect 3800 Color que nos dio bastante trabajo hasta que conseguimos que hiciese lo que tenía que hacer. Si no la configuramos adecuadamente, prevalece lo que le manda su configuración ignorando todo lo que le envíe el sofware.
Para comprobar si eso es asi, lo mejor es que imprimas dede el word, cambiando la bandeja a ver si obedece.

Por último decirte que lo anterior solo trabaja para las versiones de qreport
362. Si usas alguna anterior debes modificar el codigo de TPrinterSetting.ApplySetting en el QRPrntr.pas.

Si fuese así dímelo y te lo envío

Saludos.
Responder Con Cita
  #4  
Antiguo 04-09-2006
alapaco alapaco is offline
No confirmado
 
Registrado: jun 2003
Ubicación: Buenos Aires
Posts: 287
Poder: 0
alapaco Va por buen camino
Nuevamente muchas gracias, por a probarlo y te cuento como me fue.
Responder Con Cita
  #5  
Antiguo 06-11-2006
hogol hogol is offline
Miembro
 
Registrado: jul 2003
Posts: 62
Poder: 24
hogol Va por buen camino
Hola buenas

Quería preguntar si se podría conseguir el mismo resultado sin necesidad de tener instalado el quickrep pro.
He probado a instalarlo y el ejemplo funciona perfectamente, pero el quickrep me provoca errores de incompatiblidad con los componentes teechart y al final la cosa me causa más problemas que soluciones, de ahí mi pregunta.

En todo caso, gracias por la ayuda
Responder Con Cita
Respuesta



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
Como seleccionar campos de una tabla sin saber cuantos van a seleccionar david duarte SQL 7 05-04-2010 21:15:43
seleccionar bandeja de imprecion moy68 Impresión 0 11-06-2005 03:02:20
Seleccionar Impresora con QuickReport quade Varios 1 09-06-2004 10:38:48
seleccionar bandeja de entrada del papel en FastReport jhges Impresión 0 12-11-2003 16:16:26
Cerrar bandeja CDs JMGR Varios 6 27-07-2003 14:52:12


La franja horaria es GMT +2. Ahora son las 00:55:18.


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
Copyright 1996-2007 Club Delphi