Eu fiz uma correção na impressão do evento do Cte na Trunk2.
Quando colocar as opções MostrarPreview e PrintDialog como false do componente ACBrCTeDACTeRL, que seria para não mostrar o relatório e imprimir ele sem mostrar o dialog da impressora, no evento mesmo assim mostra o dialog da impressora, funcionando apenas no relatório do cte.
Eu precisaria que essas alterações fossem adicionadas.
** A correção que eu fiz foi na classe ACBrCTeDAEventoRL adicionei o que esta em negrito nas linhas 98, 126, 153
public
class procedure Imprimir(AEventoCTe: TInfEventoCollectionItem; ALogo: string = '';
ANumCopias: integer = 1; ASistema: string = '';
AUsuario: string = ''; AMostrarPreview: boolean = True;
AMargemSuperior: double = 0.7; AMargemInferior: double = 0.7;
AMargemEsquerda: double = 0.7; AMargemDireita: double = 0.7;
AImpressora: string = ''; ACTe: TCTe = nil; APrintDialog: boolean = False);
class procedure TfrmCTeDAEventoRL.Imprimir(AEventoCTe: TInfEventoCollectionItem;
ALogo: string = '';
ANumCopias: integer = 1;
ASistema: string = '';
AUsuario: string = '';
AMostrarPreview: boolean = True;
AMargemSuperior: double = 0.7;
AMargemInferior: double = 0.7;
AMargemEsquerda: double = 0.7;
AMargemDireita: double = 0.7;
AImpressora: string = '';
ACTe: TCTe = nil;
APrintDialog: boolean = False);
begin
with Create(nil) do
try
FEventoCTe := AEventoCTe;
FLogo := ALogo;
FNumCopias := ANumCopias;
FSistema := ASistema;
FUsuario := AUsuario;
FMostrarPreview := AMostrarPreview;
FMargemSuperior := AMargemSuperior;
FMargemInferior := AMargemInferior;
FMargemEsquerda := AMargemEsquerda;
FMargemDireita := AMargemDireita;
FImpressora := AImpressora;
if ACTe <> nil then
FCTe := ACTe;
if FImpressora > '' then
RLPrinter.PrinterName := FImpressora;
if FNumCopias > 0 then
RLPrinter.Copies := FNumCopias
else
RLPrinter.Copies := 1;
RLCTeEvento.PrintDialog := APrintDialog;
if FMostrarPreview = True then
RLCTeEvento.PreviewModal
else
RLCTeEvento.Print;
finally
// RLCTeEvento.Free;
// RLCTeEvento := nil;
Free;
end;
end;
** Também mudei na classe que chama essa procedure que é a ACBrCTeDACTeRLClass adicionando na linha 288 o que esta em negrito
procedure TACBrCTeDACTeRL.ImprimirEVENTO(CTe: TCTe);
var
i, j: integer;
Impresso: boolean;
begin
frmCTeDAEventoRL := TfrmCTeDAEventoRLRetrato.Create(Self);
if TACBrCTe(ACBrCTe).Conhecimentos.Count > 0 then
begin
for i := 0 to (TACBrCTe(ACBrCTe).EventoCTe.Evento.Count - 1) do
begin
Impresso := False;
for j := 0 to (TACBrCTe(ACBrCTe).Conhecimentos.Count - 1) do
begin
if OnlyNumber(TACBrCTe(ACBrCTe).Conhecimentos.Items[j].CTe.infCTe.Id) = TACBrCTe(ACBrCTe).EventoCTe.Evento.Items.InfEvento.chCTe then begin frmCTeDAEventoRL.Imprimir(TACBrCTe(ACBrCTe).EventoCTe.Evento.Items, FLogo, FNumCopias, FSistema, FUsuario, FMostrarPreview, FMargemSuperior, FMargemInferior, FMargemEsquerda, FMargemDireita, FImpressora, TACBrCTe(ACBrCTe).Conhecimentos.Items[j].CTe, FPrintDialog); Impresso := True; Break; end; end;
Também em anexo as classes que eu alterei.
Att
Jonas Fronchetti
ACBrCTeDACTeRLClass.pas
ACBrCTeDAEventoRL.pas