Club Delphi  
    Paypal   FTP   CCD     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

 
 
Herramientas Buscar en Tema Desplegado
  #6  
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
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
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
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 22:08:24.


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