Hola,
A mi se me ocurre otra opción para mi gusto más elegante. ¿ Por que cuando se le da a imprimir desde un preliminar personalizado en el click del botón preliminar no imprimir directamente en la impresora sino sacar el cuadro de diálogo de configuración de impresoras (donde se puede elegir impresora y la configuración de la misma) ? Al aparecer un cuadro de diálogo modal se garantiza que el usuario no pueda hacer doble click en el botón y además se permite al usuario por ejemplo elegir otra impresora.
Se que me direis que eso requiere de dos clicks para imprimir pero bueno, a mi no me parece trastorno. En el preview personalizado que tengo es como lo hago y me funciona bien (y por ahora nadie se ha quejado).
Os pongo el código del click del botón imprimir de mi preview personalizado para que lo probeis a ver que opinais.
Código Delphi
[-]
procedure TFPreview.tbImprimirClick(Sender: TObject);
begin
if QRPrinter.Master <> nil then begin
with TCustomQuickRep(QRPrinter.Master) do begin
PrinterSetup;
if Tag = 0 then
Print;
end;
end;
end;
En mi formulario de Preview Personalizado añado algo así:
Código Delphi
[-]
.......
private
FQRPrinter : TQRPrinter;
public
constructor CreatePreview(AOwner : TComponent; aQRPrinter : TQRPrinter);
property QRPrinter : TQRPrinter read FQRPrinter write FQRPrinter;
end;
Y el constructor es así:
Código Delphi
[-]
constructor TFPreview.CreatePreview(AOwner : TComponent; aQRPrinter : TQRPrinter);
begin
inherited Create(AOwner);
QRPrinter := aQRPrinter;
QRPreview.QRPrinter := aQRPrinter;
if (QRPrinter <> nil) and (QRPrinter.Title <> '') then Caption := QRPrinter.Title;
end;
Y el close del formulario sería:
Código Delphi
[-]
procedure TFPreview.FormClose(Sender: TObject; var Action: TCloseAction);
begin
QRPrinter.ClosePreview(Self);
Action := caFree;
end;
Espero vuestro comentarios...
Un saludo.