/[projects]/dao/DelphiScanner/LabelPrint.pas
ViewVC logotype

Diff of /dao/DelphiScanner/LabelPrint.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3086 by torben, Mon Aug 15 12:44:21 2016 UTC revision 3129 by torben, Thu Oct 20 06:03:56 2016 UTC
# Line 4  interface Line 4  interface
4    
5  uses  uses
6    ParentForm,    ParentForm,
7    PakkeshopLabels,    LabelData,
8    Configuration,    Configuration,
9    StBarc;    StBarc;
10    
# Line 18  type Line 18  type
18    
19      procedure PrintLabel( Stregkode : String);      procedure PrintLabel( Stregkode : String);
20    
     procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
21    
22      procedure PrintFuldPakkeLabel( PakkeshopLabel : TPakkeshopLabel);      procedure PrintTestLabel();
23    
24    
25      procedure PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn : String) ;      function GetPrinterCount() : Integer;
26    
     procedure TestZpl();  
     procedure PrintZPL( ZplData : string);  
27    
     function GetPrinterCount() : Integer;  
28    
29    private    private
30      parentForm : IParentForm;      parentForm : IParentForm;
# Line 36  type Line 32  type
32      var Config: TConfiguration;      var Config: TConfiguration;
33    
34    
35        procedure PrintZPL( ZplData : string);
36    
37        procedure PrintLabelData( LabelData : TLabelData);
38        procedure PrintSimpelLabel( LabelData : TLabelData) ;
39    
40        procedure PrintFuldPakkeLabel( PakkeshopLabel : TLabelData);
41        procedure PrintFuldPakkeLabelLille( PakkeshopLabel : TLabelData);
42        procedure PrintFuldPakkeLabelStor( PakkeshopLabel : TLabelData);
43    
44        procedure SendTilPrinter_old(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
45        procedure PrintDaodirekteLabel_old( RuteNummer, Kommentar, BoghandlerNavn : String) ;
46    
47    
48    
49      function SavePChar(p: PChar): PChar;      function SavePChar(p: PChar): PChar;
50      function GetCurrentPrinterHandle(): THandle;      function GetCurrentPrinterHandle(): THandle;
51    
# Line 50  uses Line 60  uses
60    WinSpool,    WinSpool,
61    Windows,    Windows,
62    SysUtils, //Format    SysUtils, //Format
63    Math, // DegToRad() bruges i PrintPakkeshopLabel    Math, // DegToRad() bruges i PrinTLabelData
64    Forms,    Forms,
65    IdHTTP    IdHTTP,
66      Graphics,
67      XMLDoc
68    ;    ;
69    
70    
# Line 109  begin Line 121  begin
121  end;  end;
122    
123    
124  procedure TLabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn : String) ;  procedure TLabelPrint.PrintDaodirekteLabel_old( RuteNummer, Kommentar, BoghandlerNavn : String) ;
125  begin  begin
126    with Printer do    with Printer do
127        begin        begin
# Line 160  begin Line 172  begin
172  //            'Test'  skal vise alarmlinie, samt opdatere listbox1  //            'Test'  skal vise alarmlinie, samt opdatere listbox1
173  //            'Timer' skal kun vise alarmlinie  //            'Timer' skal kun vise alarmlinie
174    
175    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //  if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
176    begin  //  begin
177    //
178      parentForm.LogMessage( 'Der er fravalgt printer i dette program' );  //    parentForm.LogMessage( 'Der er fravalgt printer i dette program' );
179    end  //  end
180    else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //  else
181      if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then
182    begin    begin
183      parentForm.LogMessage( 'Der er ikke installeret en printer på denne PC' );      parentForm.LogMessage( 'Der er ikke installeret en printer på denne PC' );
184    end    end
# Line 246  var Line 259  var
259    
260    httpClient: TIdHTTP;    httpClient: TIdHTTP;
261    
262      XMLDocument1: TXMLDocument;
263    
264      LabelData: TLabelData;
265    
266    
267  begin  begin
268    url := Config.BaseURL + '/BogpakkeKontrol/PrintLabel.php?stregkode=' + Trim(Stregkode);  
269      url := Format(Config.URLPrintLabel, [Stregkode] );
270    
271    httpClient := TIdHTTP.Create();    httpClient := TIdHTTP.Create();
272    httpClient.ReadTimeout := 1000;//max 1 secound    httpClient.ReadTimeout := 1000;//max 1 secound
# Line 259  begin Line 276  begin
276    httpClient.Free();    httpClient.Free();
277    
278    
279      XMLDocument1 := parentForm.GetXMLDocument();
280    
281      XMLDocument1.LoadFromXML(response);
282    
283      LabelData := TLabelData.Create(XMLDocument1);
284      PrintLabelData(LabelData);
285      LabelData.Free();
286    
287    
288  end;  end;
289    
290  procedure TLabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  procedure TLabelPrint.PrintTestLabel();
291    var
292      LabelData : TLabelData;
293    begin
294      LabelData := TLabelData.Create(nil);
295      LabelData.LabelType := 'simpel';
296      LabelData.SimpelLinie1 := 'Test Label';
297      LabelData.SimpelLinie2 := 'Test Label';
298      LabelData.SimpelLinie3 := 'Test Label';
299    
300      PrintLabelData(Labeldata);
301    
302      LabelData.Free();
303    end;
304    
305    procedure TLabelPrint.PrintLabelData( LabelData : TLabelData);
306    begin
307      if LabelData.LabelType = 'zpl' then
308      begin
309        PrintZPL(LabelData.ZPL);
310      end
311      else if (LabelData.LabelType = 'simpel') then
312      begin
313        PrintSimpelLabel(LabelData);
314      end
315      else
316      begin
317        PrintFuldPakkeLabel(LabelData);
318      end;
319    end;
320    
321    
322    
323    procedure TLabelPrint.SendTilPrinter_old(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');
324  begin  begin
325      with Printer do      with Printer do
326      begin      begin
# Line 310  begin Line 367  begin
367  end;  end;
368    
369    
370    procedure TLabelPrint.PrintFuldPakkeLabel( PakkeshopLabel : TLabelData);
371    begin
372      if (Config.LabelStor = 1) then
373      begin
374        PrintFuldPakkeLabelStor(  PakkeshopLabel );
375    
376      end
377      else
378      begin
379        PrintFuldPakkeLabelLille(  PakkeshopLabel );
380    
381      end;
382    
383  // ToDo: PrintPakkeshopLabel()  end;
384  procedure TLabelPrint.PrintFuldPakkeLabel( PakkeshopLabel : TPakkeshopLabel);  
385    // Bruges til label der passer til 60x100
386    procedure TLabelPrint.PrintFuldPakkeLabelLille( PakkeshopLabel : TLabelData);
387  var  var
388    XForm, XFormOld: TXForm; //Bruges til rotate X-formation    XForm, XFormOld: TXForm; //Bruges til rotate X-formation
389    Angle: integer;    Angle: integer;
# Line 325  begin Line 396  begin
396        BeginDoc();        BeginDoc();
397    
398    
399        Canvas.Font.Size := 16;        Canvas.Font.Size := 15;
400        Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + '     '  + PakkeshopLabel.Overskrift);        Canvas.TextOut(15,10, 'Code: ' + PakkeshopLabel.Tjekkode + '     '  + PakkeshopLabel.Overskrift);
401    
402    
403    
404        Canvas.TextOut(25, 90, PakkeshopLabel.Navn );        Canvas.TextOut(25, 90, PakkeshopLabel.Navn );
405        Canvas.TextOut(25, 135, PakkeshopLabel.Vejnavn );        Canvas.TextOut(25, 140, PakkeshopLabel.Vejnavn );
406        Canvas.TextOut(25, 180, PakkeshopLabel.Postnr );        Canvas.TextOut(25, 190, PakkeshopLabel.Postnr );
407    
408    
409        Canvas.Font.Size := 9;        Canvas.Font.Size := 9;
# Line 435  begin Line 506  begin
506  end;  end;
507    
508    
509    // Bruges til label der passer til 100x150
510    procedure TLabelPrint.PrintFuldPakkeLabelStor( PakkeshopLabel : TLabelData);
511    var
512      XForm, XFormOld: TXForm; //Bruges til rotate X-formation
513      Angle: integer;
514      gMode: integer;
515      Dirigering: string;
516      BarcodeRect : TRect;
517    
518    begin
519        with Printer do
520        begin
521          BeginDoc();
522    
523    
524    
525          Canvas.Font.Style := [TFontStyle.fsBold];
526          Canvas.Font.Size := 16;
527          Canvas.TextOut(25,25, 'Code: ' + PakkeshopLabel.Tjekkode + '           '  + PakkeshopLabel.Overskrift);
528    
529    
530    
531          Canvas.TextOut(80, 220, PakkeshopLabel.Navn );
532          Canvas.TextOut(80, 270, PakkeshopLabel.Vejnavn );
533          Canvas.TextOut(80, 320, PakkeshopLabel.Postnr );
534    
535    
536          Canvas.Font.Size := 9;
537    
538    
539          // Skriv ikke 'Pakkeshop' overskrift hvis det er en shop2direkte
540          if (  PakkeshopLabel.PakkeshopNavn <> ''  ) then
541          begin
542            Canvas.TextOut(170, 460, 'Pakkeshop:');
543            Canvas.TextOut(170, 490, PakkeshopLabel.PakkeshopNavn);
544            Canvas.TextOut(170, 520, PakkeshopLabel.PakkeshopAddr);
545            Canvas.TextOut(170, 550, PakkeshopLabel.PakkeshopPostnr);
546    
547          end;
548    
549    
550    
551          Canvas.TextOut(550, 460, 'Afsender:');
552          Canvas.TextOut(550, 490, PakkeshopLabel.AfsenderNavn);
553          Canvas.TextOut(550, 520, PakkeshopLabel.AfsenderAdresse);
554          Canvas.TextOut(550, 550, PakkeshopLabel.AfsenderPostnr);
555    
556          Dirigering := PakkeshopLabel.PakkeshopSted + ' | ' + PakkeshopLabel.PakkeshopTurid + ' | ' + PakkeshopLabel.PakkeshopNr;
557          if ( PakkeshopLabel.Koreliste <> '') then
558          begin
559            Dirigering := Dirigering + ' > ' + PakkeshopLabel.Koreliste;
560          end;
561    
562    
563          Canvas.Font.Size := 12;
564          Canvas.TextOut(40, 680, Dirigering);
565    
566    
567    
568    
569    
570          //Tegn adskillelses linier
571          Canvas.Pen.Width := 2;
572          //Øverste linie
573          Canvas.MoveTo( 40, 180);
574          Canvas.LineTo(900, 180);
575    
576          // Midterste linie
577          Canvas.MoveTo( 40, 440);
578          Canvas.LineTo(900, 440);
579    
580          //Nederste linie
581          Canvas.MoveTo( 40, 640);
582          Canvas.LineTo(900, 640);
583    
584    
585          //Tegn skrå streger over afsender
586          Canvas.Pen.Width := 1;
587          Canvas.MoveTo(840, 450);
588          Canvas.LineTo(540, 590);
589          Canvas.MoveTo(840, 590);
590          Canvas.LineTo(540, 450);
591    
592    
593    
594          // Resten af rutinen vedr genering og placering af Barcode
595    
596          Barcode.Font.Size := 9;
597          Barcode.BarToSpaceRatio := 0.9;
598    
599    
600          BarCode.BarCodeType := bcCode128;
601          BarCode.Code128Subset := csCodeC;
602          BarCode.Code := PakkeshopLabel.Stregkode;
603          BarCode.Validate(True);
604    
605    
606    //      parentForm.Msg(       inttostr(            Barcode.Font.Size) );//Default 8
607    //      parentForm.Msg(       Double.ToString(      Barcode.BarNarrowToWideRatio) );//Default 2
608    //      parentForm.Msg(       Double.ToString(      Barcode.BarToSpaceRatio) );//Default 1
609    //      parentForm.Msg(  Double.ToString(BarCode.Width ) );//default 200
610    
611    
612          //Start X-formation
613          //ShowMessage( Format('%d %d', [PageWidth, PageHeight]) );
614          GetWorldTransform(Canvas.Handle, XFormOld);
615    
616          Angle := 270;
617          XForm.eM11 := Cos(DegToRad(Angle));
618          XForm.eM12 := Sin(DegToRad(Angle));
619          XForm.eM21 := -Sin(DegToRad(Angle));
620          XForm.eM22 := Cos(DegToRad(Angle));
621          XForm.eDx := 0;
622          XForm.eDy := 0;
623    
624          gMode := SetGraphicsMode(Canvas.Handle, GM_ADVANCED);
625          SetWorldTransform(Canvas.Handle, XForm);
626    
627          // PaintToCanvasSize arbejder i Inches
628          // Første pos argument bliver nu Y og skal være negativ for at rykke den ned
629          //Anden pos er X og skal være positiv for at justere ind fra venstre mod højre
630    
631          BarCode.PaintToCanvasSize(Printer.Canvas, -2.7, 4.8, 0.5);
632    
633    
634    
635    
636          SetWorldTransform(Canvas.Handle, XFormOld);
637          SetGraphicsMode(Canvas.Handle, gMode);
638    
639          EndDoc();
640        end;
641    
642    
643      Printers.SetPrinter( TPrinter.Create() ).Free();//Work around for KB3177725
644    end;
645    
646  function TLabelPrint.SavePChar(p: PChar): PChar;  function TLabelPrint.SavePChar(p: PChar): PChar;
647  const  const
648    error: PChar = 'Nil';    error: PChar = 'Nil';
# Line 446  begin Line 654  begin
654  end;  end;
655    
656  // Online zpl viewer  // 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  
   ;  
657    
   PrintZpl(zpl);  
 end;  
658    
659  procedure TLabelPrint.PrintZPL( ZplData : string);  procedure TLabelPrint.PrintZPL( ZplData : string);
660  var  var
# Line 544  begin Line 727  begin
727    
728  end;  end;
729    
730    procedure TLabelPrint.PrintSimpelLabel( LabelData : TLabelData) ;
731    begin
732      with Printer do
733          begin
734            BeginDoc;
735    
736            Canvas.Font.Size := 20;
737            Canvas.TextOut(10, 20, LabelData.SimpelLinie1);
738            Canvas.TextOut(10, 120, LabelData.SimpelLinie2);
739            Canvas.TextOut(10, 220, LabelData.SimpelLinie3);
740    
741            EndDoc;
742          end;
743    
744    
745    
746      Printers.SetPrinter( TPrinter.Create() ).Free();//Work around for KB3177725
747    
748    end;
749    
750    
751    
752  function TLabelPrint.GetPrinterCount() : Integer;  function TLabelPrint.GetPrinterCount() : Integer;
753  begin  begin

Legend:
Removed from v.3086  
changed lines
  Added in v.3129

  ViewVC Help
Powered by ViewVC 1.1.20