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
public
end;
var
Form1: TForm1;
UserBinCode : integer;
UserCollateCode : integer;
implementation
uses printers;
{$R *.DFM}
/ como collate, print quality etc
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;
Compila el proyecto y ejecutalo con tu impresora. Apunta lso codigos de cada bandeja.
Saludos