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

 
 
Herramientas Buscar en Tema Desplegado
  #5  
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
Para comprender mejor como funciona
la selección de la bandeja, vamos a
desarrollar una pequeña aplicación.
Cargas Delphi, e inicias un nuevo proyecto.
Le llamaremos Eligebandejas

Nuetro proyecto tendrá por ahora una sola unidad.
El nombre se lo pones a tu gusto, que sea algo
original y nunca visto antes,
como por ejemplo Mainform.

Nuestra unidad tendrá aparte del form,
dos speedbuttons, una etiqueta y un
PrinterSetupDialog. El caption del
primer boton será 'Printer Setup'.
El caption de la etiqueta será 'Bin Code'
( que es lo que queremos conocer).
El otro boton, de momento lo dejamos inutil.

Al terminar el codigo debe quedar así:



Código Delphi [-] Código Delphi [-]
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;
{$R *.DFM}
// Esta función devuelve el codigo de bandeja
// seleccionado por el usuaro.
// Puede adaptarse facilmente para conocer
// otros miembros de DevMode 
/ como  collate, print quality etc
// Se usan variables globales para 
//poder recuperar otros parámetros
// Ver  'UserCollateCode' .
 
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);
        //aqui podemos capturar los mienbros de DevMode
        bin := DevMode^.DMDEFAULTSOURCE;
        UserCollateCode := DevMode^.dmCollate;
        GlobalUnlock (hDevMode);
  end;
  result := bin;
end;
 
{ En el evento on click del primer boton
lanzamos el dialogo del driver de laimpresora. En este
elegimos la bandeja que queramos. 
Al cerrar el dialogo, llamamos a la funcion GetNinSelection
que nos devolverá el numero de la bandeja. Tambien usando variables globales, podemos devolver otros miembros de DevMode. Lo importante, es que sabremos
los numeros de la bandeja de  nuestra impresora y los podremos usar posteriormente }
 
 
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
     setup1.Execute;
     UserBinCode := GetBinSelection;
     label1.Caption := 'Bin code : ' + inttostr( UserBinCode)+ ' Collate code ' + inttostr( UserCollateCode);
end;





Compila el proyecto y ejecutalo con tu impresora. Apunta lso codigos de cada bandeja.
Saludos
Responder Con Cita
 



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 23:08:37.


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