--- dao/DelphiScanner/LabelPrint.pas 2016/08/15 14:14:14 3087 +++ dao/DelphiScanner/LabelPrint.pas 2016/08/15 15:56:50 3088 @@ -21,6 +21,8 @@ procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = ''); procedure PrintFuldPakkeLabel( PakkeshopLabel : TPakkeshopLabel); + procedure PrintFuldPakkeLabelLille( PakkeshopLabel : TPakkeshopLabel); + procedure PrintFuldPakkeLabelStor( PakkeshopLabel : TPakkeshopLabel); procedure PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn : String) ; @@ -52,7 +54,8 @@ SysUtils, //Format Math, // DegToRad() bruges i PrintPakkeshopLabel Forms, - IdHTTP + IdHTTP, + Graphics ; @@ -249,7 +252,8 @@ begin - url := Config.BaseURL + '/BogpakkeKontrol/PrintLabel.php?stregkode=' + Trim(Stregkode); + + url := Format(Config.URLPrintLabel, [Stregkode] ); httpClient := TIdHTTP.Create(); httpClient.ReadTimeout := 1000;//max 1 secound @@ -310,9 +314,14 @@ end; - -// ToDo: PrintPakkeshopLabel() procedure TLabelPrint.PrintFuldPakkeLabel( PakkeshopLabel : TPakkeshopLabel); +begin + PrintFuldPakkeLabelStor( PakkeshopLabel ); + +end; + +// Bruges til label der passer til 60x100 +procedure TLabelPrint.PrintFuldPakkeLabelLille( PakkeshopLabel : TPakkeshopLabel); var XForm, XFormOld: TXForm; //Bruges til rotate X-formation Angle: integer; @@ -435,6 +444,143 @@ end; +// Bruges til label der passer til 100x150 +procedure TLabelPrint.PrintFuldPakkeLabelStor( PakkeshopLabel : TPakkeshopLabel); +var + XForm, XFormOld: TXForm; //Bruges til rotate X-formation + Angle: integer; + gMode: integer; + Dirigering: string; + BarcodeRect : TRect; + +begin + with Printer do + begin + BeginDoc(); + + + + Canvas.Font.Style := [TFontStyle.fsBold]; + Canvas.Font.Size := 16; + Canvas.TextOut(25,25, 'Code: ' + PakkeshopLabel.Tjekkode + ' ' + PakkeshopLabel.Overskrift); + + + + Canvas.TextOut(80, 220, PakkeshopLabel.Navn ); + Canvas.TextOut(80, 270, PakkeshopLabel.Vejnavn ); + Canvas.TextOut(80, 320, PakkeshopLabel.Postnr ); + + + Canvas.Font.Size := 9; + + + // Skriv ikke 'Pakkeshop' overskrift hvis det er en shop2direkte + if ( PakkeshopLabel.PakkeshopNavn <> '' ) then + begin + Canvas.TextOut(170, 460, 'Pakkeshop:'); + Canvas.TextOut(170, 490, PakkeshopLabel.PakkeshopNavn); + Canvas.TextOut(170, 520, PakkeshopLabel.PakkeshopAddr); + Canvas.TextOut(170, 550, PakkeshopLabel.PakkeshopPostnr); + + end; + + + + Canvas.TextOut(550, 460, 'Afsender:'); + Canvas.TextOut(550, 490, PakkeshopLabel.AfsenderNavn); + Canvas.TextOut(550, 520, PakkeshopLabel.AfsenderAdresse); + Canvas.TextOut(550, 550, PakkeshopLabel.AfsenderPostnr); + + Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr; + if ( PakkeshopLabel.Koreliste <> '') then + begin + Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste; + end; + + + Canvas.Font.Size := 12; + Canvas.TextOut(40, 680, Dirigering); + + + + + + //Tegn adskillelses linier + Canvas.Pen.Width := 2; + //Øverste linie + Canvas.MoveTo( 40, 180); + Canvas.LineTo(900, 180); + + // Midterste linie + Canvas.MoveTo( 40, 440); + Canvas.LineTo(900, 440); + + //Nederste linie + Canvas.MoveTo( 40, 640); + Canvas.LineTo(900, 640); + + + //Tegn skrå streger over afsender + Canvas.Pen.Width := 1; + Canvas.MoveTo(840, 450); + Canvas.LineTo(540, 590); + Canvas.MoveTo(840, 590); + Canvas.LineTo(540, 450); + + + + // Resten af rutinen vedr genering og placering af Barcode + + Barcode.Font.Size := 9; + Barcode.BarToSpaceRatio := 0.9; + + + BarCode.BarCodeType := bcCode128; + BarCode.Code128Subset := csCodeC; + BarCode.Code := PakkeshopLabel.Stregkode; + BarCode.Validate(True); + + +// parentForm.Msg( inttostr( Barcode.Font.Size) );//Default 8 +// parentForm.Msg( Double.ToString( Barcode.BarNarrowToWideRatio) );//Default 2 +// parentForm.Msg( Double.ToString( Barcode.BarToSpaceRatio) );//Default 1 +// parentForm.Msg( Double.ToString(BarCode.Width ) );//default 200 + + + //Start X-formation + //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) ); + GetWorldTransform(Canvas.Handle, XFormOld); + + Angle := 270; + XForm.eM11 := Cos(DegToRad(Angle)); + XForm.eM12 := Sin(DegToRad(Angle)); + XForm.eM21 := -Sin(DegToRad(Angle)); + XForm.eM22 := Cos(DegToRad(Angle)); + XForm.eDx := 0; + XForm.eDy := 0; + + gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED); + SetWorldTransform(Canvas.Handle, XForm); + + // PaintToCanvasSize arbejder i Inches + // Første pos argument bliver nu Y og skal være negativ for at rykke den ned + //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre + + BarCode.PaintToCanvasSize(Printer.Canvas, -2.7, 4.8, 0.5); + + + + + SetWorldTransform(Canvas.Handle, XFormOld); + SetGraphicsMode(Canvas.Handle, gMode); + + EndDoc(); + end; + + + Printers.SetPrinter( TPrinter.Create() ).Free();//Work around for KB3177725 +end; + function TLabelPrint.SavePChar(p: PChar): PChar; const error: PChar = 'Nil';