--- dao/DelphiScanner/LabelPrint.pas 2016/08/19 14:35:39 3094 +++ dao/DelphiScanner/LabelPrint.pas 2016/10/18 13:57:46 3123 @@ -17,18 +17,18 @@ procedure CheckPrintQue(tjektype : string; PrinterNavn : String); procedure PrintLabel( Stregkode : String); + procedure PrintLabelData( LabelData : TLabelData); + + procedure SendTilPrinter_old(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = ''); + + procedure PrintSimpelLabel( LabelData : TLabelData) ; - procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = ''); procedure PrintFuldPakkeLabel( PakkeshopLabel : TLabelData); - procedure PrintFuldPakkeLabelLille( PakkeshopLabel : TLabelData); - procedure PrintFuldPakkeLabelStor( PakkeshopLabel : TLabelData); - procedure PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn : String) ; + procedure PrintDaodirekteLabel_old( RuteNummer, Kommentar, BoghandlerNavn : String) ; - procedure TestZpl(); - procedure PrintZPL( ZplData : string); function GetPrinterCount() : Integer; @@ -38,6 +38,12 @@ var Config: TConfiguration; + procedure PrintZPL( ZplData : string); + + procedure PrintFuldPakkeLabelLille( PakkeshopLabel : TLabelData); + procedure PrintFuldPakkeLabelStor( PakkeshopLabel : TLabelData); + + function SavePChar(p: PChar): PChar; function GetCurrentPrinterHandle(): THandle; @@ -55,7 +61,8 @@ Math, // DegToRad() bruges i PrinTLabelData Forms, IdHTTP, - Graphics + Graphics, + XMLDoc ; @@ -112,7 +119,7 @@ end; -procedure TLabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn : String) ; +procedure TLabelPrint.PrintDaodirekteLabel_old( RuteNummer, Kommentar, BoghandlerNavn : String) ; begin with Printer do begin @@ -163,12 +170,13 @@ // 'Test' skal vise alarmlinie, samt opdatere listbox1 // 'Timer' skal kun vise alarmlinie - if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then - begin - - parentForm.LogMessage( 'Der er fravalgt printer i dette program' ); - end - else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then +// if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then +// begin +// +// parentForm.LogMessage( 'Der er fravalgt printer i dette program' ); +// end +// else + if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then begin parentForm.LogMessage( 'Der er ikke installeret en printer på denne PC' ); end @@ -249,6 +257,9 @@ httpClient: TIdHTTP; + XMLDocument1: TXMLDocument; + + LabelData: TLabelData; begin @@ -263,11 +274,36 @@ httpClient.Free(); + XMLDocument1 := parentForm.GetXMLDocument(); + + XMLDocument1.LoadFromXML(response); + LabelData := TLabelData.Create(XMLDocument1); + PrintLabelData(LabelData); + LabelData.Free(); + + +end; +procedure TLabelPrint.PrintLabelData( LabelData : TLabelData); +begin + if LabelData.LabelType = 'zpl' then + begin + PrintZPL(LabelData.ZPL); + end + else if (LabelData.LabelType = 'simpel') then + begin + PrintSimpelLabel(LabelData); + end + else + begin + PrintFuldPakkeLabel(LabelData); + end; end; -procedure TLabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = ''); + + +procedure TLabelPrint.SendTilPrinter_old(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = ''); begin with Printer do begin @@ -343,14 +379,14 @@ BeginDoc(); - Canvas.Font.Size := 16; + Canvas.Font.Size := 15; Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + ' ' + PakkeshopLabel.Overskrift); Canvas.TextOut(25, 90, PakkeshopLabel.Navn ); - Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn ); - Canvas.TextOut(25, 180, PakkeshopLabel.Postnr ); + Canvas.TextOut(25, 140, PakkeshopLabel.Vejnavn ); + Canvas.TextOut(25, 190, PakkeshopLabel.Postnr ); Canvas.Font.Size := 9; @@ -601,32 +637,7 @@ end; // Online zpl viewer -// http://labelary.com/viewer.html -procedure TLabelPrint.TestZpl(); -var - zpl: string; -begin - zpl := -'^XA'#13#10 + -'^PON'#13#10 + -'^FWN'#13#10 + - -'^FX Top section with company logo, name and address.'#13#10 + -'^CF0,60'#13#10 + -'^FO50,50^GB100,100,100^FS'#13#10+ -'^FO75,75^FR^GB100,100,100^FS'#13#10+ -'^FO88,88^GB50,50,50^FS'#13#10+ -'^FO220,50^FDInternational Shipping, Inc.^FS'#13#10+ -'^CF0,40'#13#10+ -'^FO220,100^FD1000 Shipping Lane^FS'#13#10+ -'^FO220,135^FDShelbyville TN 38102^FS'#13#10+ -'^FO220,170^FDUnited States (USA)^FS'#13#10+ -'^FO50,250^GB700,1,3^FS'#13#10 + -'^XZ'#13#10 - ; - PrintZpl(zpl); -end; procedure TLabelPrint.PrintZPL( ZplData : string); var @@ -699,6 +710,27 @@ end; +procedure TLabelPrint.PrintSimpelLabel( LabelData : TLabelData) ; +begin + with Printer do + begin + BeginDoc; + + Canvas.Font.Size := 20; + Canvas.TextOut(10, 20, LabelData.SimpelLinie1); + Canvas.TextOut(10, 120, LabelData.SimpelLinie2); + Canvas.TextOut(10, 220, LabelData.SimpelLinie3); + + EndDoc; + end; + + + + Printers.SetPrinter( TPrinter.Create() ).Free();//Work around for KB3177725 + +end; + + function TLabelPrint.GetPrinterCount() : Integer; begin