var
YPos, LineHeight, VerticalMargin, nro, ancho, posx, xdp, ydp, alto,imaal, imaan, nroi: Integer;
SuccessString, titulos, ftitulos, fcabecerapie, fcuerpo, cad, lin, impresora, scant, sdescr, sprec, nloca, nprov, ncodp: String;
fuente : tfont;
lineas : tstringlist;
ftamano, titulostamano, cabecerapietamano, cabecerapietamano2: LongInt;
enc: Boolean;
rectt, rectqr: TRect;
estilo : TTextStyle;
empresa: tempresa;
desc : real;
prec, ivaa: double;
begin
... more code ...
with Printer do
try
SetPrinter(impresora);
BeginDoc;
fuente:=TFont.Create;
fuente.Name:=ftitulos;
fuente.Color:=clBlack;
fuente.Size:=titulostamano;
fuente.Bold:=true;
canvas.Font:=fuente;
LineHeight := Round(1.2 * Abs(Canvas.TextHeight('I')));
ypos:=0;
canvas.TextOut(5,ypos,empresa.razsoc);
ypos:=ypos+1*LineHeight;
fuente.Name:=fcabecerapie;
fuente.Size:=cabecerapietamano;
fuente.Bold:=false;
canvas.Font:=fuente;
LineHeight := Round(1.2 * Abs(Canvas.TextHeight('I')));
lineas:=TStringList.Create;
cad:=listview1.items[listview1.ItemIndex].SubItems[2];
if (cad=factacte) or (cad=factacon) or (cad=factbcon) or (cad=factbcte) or (cad=factccon) or (cad=factccte) then
lineas.Add('---FACTURA---')
else if cad=remventa then
lineas.Add('---REMITO DE VENTA---')
else if cad=pedidoventa then
lineas.Add('---ORDEN DE PEDIDO---');
lineas.Add('CUIT:'+empresa.cuit+' ING.BR:'+empresa.ingbr);
lineas.Add('DRI:'+empresa.dri);
lineas.Add(empresa.domfiscal + ' - TEL:' + empresa.tel1);
... more code ...
cad:='{"ver":<p1>,"fecha":"<p2>","cuit":<p3>,"ptoVta":<p4>,"tipoCmp":<p5>,"nroCmp":<p6>,"importe":<p7>,"moneda":"<p8>","ctz":<p9>,"tipoDocRec":<p10>';
cad:=cad+',"nroDocRec":<p11>,"tipoCodAut":"<p12>","codAut":<p13>}';
cad:=StringReplace(cad,'<p1>','1',[]);
cad:=StringReplace(cad,'<p2>',fechajuntaaiso8601(listview1.items[listview1.ItemIndex].SubItems[7]),[]);
cad:=StringReplace(cad,'<p3>',empresa.cuit,[]);
cad:=StringReplace(cad,'<p4>',listview1.Items[listview1.ItemIndex].SubItems[2],[]);
cad:=StringReplace(cad,'<p5>','001',[]);
cad:=StringReplace(cad,'<p6>',listview1.Items[listview1.ItemIndex].SubItems[2],[]);
cad:=StringReplace(cad,'<p7>',listview1.Items[listview1.ItemIndex].SubItems[4],[]);
cad:=StringReplace(cad,'<p8>','PES',[]);
cad:=StringReplace(cad,'<p9>','1',[]);
cad:=StringReplace(cad,'<p10>','80',[]);
cad:=StringReplace(cad,'<p11>',listview1.Items[listview1.ItemIndex].SubItems[3],[]);
cad:=StringReplace(cad,'<p12>','E',[]);
cad:=StringReplace(cad,'<p13>',listview1.items[listview1.ItemIndex].SubItems[6],[]);
BarcodeQR1.Text:=cad;
xdp:=printer.XDPI;
ydp:=printer.YDPI;
imaal:=BarcodeQR1.Canvas.Height;
imaan:=BarcodeQR1.canvas.Width;
ancho:=printer.PaperSize.PaperRect.PhysicalRect.Width;
posx:=10;
alto:=ypos+10;
rectqr:=Rect(0,0,BarcodeQR1.Width-1,BarcodeQR1.Height - 1);
printer.Canvas.CopyRect(rectqr,BarcodeQR1.canvas,rectqr); <<< HERE ALWAYS GIVES ME THE BSOD
// canvas.CopyRect(Classes.Rect(posx,alto,posx+imaan,alto+imaal),BarcodeQR1.Canvas,classes.Rect(0,0, imaan, imaal));
finally
EndDoc;
end;
end;
end;