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

Diff of /dao/DelphiScanner/Main.pas

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

revision 2700 by torben, Thu Sep 3 14:53:37 2015 UTC revision 3048 by torben, Mon Jun 13 09:12:26 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, ShellApi, ClipBrd, Buttons, wininet,    ShellApi, ClipBrd, Buttons, wininet,
22    UITypes,    UITypes,
23    PakkeshopLabels,    PakkeshopLabels,
24    StBarC,    Utils,
25    Math, // DegToRad() bruges i PrintPakkeshopLabel    ParentForm,
26    Utils    LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
31    ;    ;
32    
33  type  type
34    TMainForm = class(TForm)    TMainForm = class(TForm, IParentForm)
35      StregkodeST: TStaticText;      StregkodeST: TStaticText;
36      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
37      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 26  type Line 39  type
39      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
40      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
41      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
42      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
43      N1: TMenuItem;      N1: TMenuItem;
44      Pakkernormal1: TMenuItem;      Pakkernormal1: TMenuItem;
# Line 92  type Line 104  type
104      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
105      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
106      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
107        chkForstorTilDirekte: TCheckBox;
108        chkEmballageRepareret: TCheckBox;
109        KommentarST: TLabel;
110    
111    
112    
113    function getProddato() : TDate;    function getProddato() : TDate;
114    function getProddag() : String;    function getProddag() : String;
115    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
116    
117    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
118    procedure StartScreen();    procedure StartScreen();
# Line 174  type Line 189  type
189    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
190    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
191    procedure TjekkerUrls();    procedure TjekkerUrls();
192      procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
193    
194    procedure menuIndleveringClick(Sender: TObject);    procedure menuIndleveringClick(Sender: TObject);
195    
196    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
197    procedure CheckPrintQue(tjektype : string);  
198      //Nedarvet fra IParentForm
199      procedure Msg( msg : string);
200      procedure LogMessage( msg : string);
201      procedure SetPrinterstatusText( txt: string; alert: boolean);
202      function GetFormObject() : TForm;
203    
204    
205    
206    private    private
# Line 187  type Line 209  type
209      SkrivLog : String;      SkrivLog : String;
210      Sted : String;      Sted : String;
211      StedNavn : String;      StedNavn : String;
212      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
213  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
214                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
215    
216      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
217  // 20150330: slut  
218      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
219      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
220      ScanTjekkode : String;      ScanTjekkode : String;
221      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
222      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
223      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
224      LabelType : integer;            FarveIndlevering : String;
225    
226        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
227              TitelIndlevering : String;
228    
229      AlarmLyd : String;      AlarmLyd : String;
230      ScannetOkLyd : String;      ScannetOkLyd : String;
231      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
# Line 206  type Line 234  type
234    
235      PrinterNavn : String;      PrinterNavn : String;
236      TjekPrinter : String;      TjekPrinter : String;
237      XPosRute : integer;  
     YPosRute : integer;  
     FontSizeRute : integer;  
     FontSizeRuteLille : integer;  
     XPosKommentar : integer;  
     YPosKommentar : integer;  
     FontSizeKommentar : integer;  
     XPosBoghandler : integer;  
     YPosBoghandler : integer;  
     FontSizeBoghandler : integer;  
     XPosKoreliste : integer;  
     YPosKoreliste : integer;  
     FontSizeKoreliste : integer;  
     FontSizeKorelisteLille : integer;  
     XPosSorteringsfelt1 : integer;  
     YPosSorteringsfelt1 : integer;  
     FontSizeSorteringsfelt1 : integer;  
     XPosSorteringsfelt2 : integer;  
     YPosSorteringsfelt2 : integer;  
     FontSizeSorteringsfelt2 : integer;  
     XPosSmskode : integer;  
     YPosSmskode : integer;  
     FontSizeSmskode : integer;  
238      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
239      BladhusSted : Integer;      BladhusSted : Integer;
240      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 241  type Line 247  type
247      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
248      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
249      TjekUrls : String;      TjekUrls : String;
250        Config : TConfiguration;
251    
     Barcode : TStBarcode;  
252    
253        LabelPrint: TLabelPrint;
254    
255      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
256      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
257      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
258      procedure CheckCode();      procedure CheckCode();
259      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 256  type Line 263  type
263      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
264      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
265      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
266        function InjectURL(Url : String) : String;
267    
268    public    public
269      { Public declarations }      { Public declarations }
270    end;    end;
271    
       function GetPixelsPerInchX(): Integer;  
     function GetPixelsPerInchY(): Integer;  
272    
273  var  var
274    MainForm: TMainForm;    MainForm: TMainForm;
# Line 278  implementation Line 284  implementation
284  {$R *.dfm}  {$R *.dfm}
285    
286    
287    //FormCreate kaldes før InitForm
288    
289  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
290  begin  begin
291    
292  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
293        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
294    
295    
296    
297    
298      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
 // 20150309: slut  
299    
     Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component  
300    
301      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
302      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 357  begin Line 368  begin
368        else if (Sted = 'BR') then        else if (Sted = 'BR') then
369          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
370        else if (Sted = 'BK') then        else if (Sted = 'BK') then
371          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
372          else if (Sted = 'TK') then
373            begin StedNavn := 'BK/Trykkompagniet: '; end
374        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
375          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
376        else if (Sted = '1') then        else if (Sted = '1') then
377          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
378        else if (Sted = '2') then        else if (Sted = '2') then
# Line 454  begin Line 467  begin
467        end;        end;
468      end;      end;
469    
470    
471  end;  end;
472    
473  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 499  begin Line 513  begin
513       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
514  end;  end;
515    
516    function TMainForm.InjectURL(Url : String) : String;
517    begin
518    
519      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
520      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
521      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
522    
523      Result := Url;
524    end;
525    
526    //InitForm kaldes før FormCreate
527  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
528  const  const
529    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
530  var  var
   printerInd : integer;  
531    gemScanningtype : String;    gemScanningtype : String;
532    
533  begin  begin
534    
535    
536    // Initierer nogle variabler    // Initierer nogle variabler
537    BladhusSted := 00;    BladhusSted := 00;
538    Application.ShowHint := True;    Application.ShowHint := True;
# Line 534  begin Line 560  begin
560    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
561    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
562    
563      Config := TConfiguration.Create();
564      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
565      Config.Sted := Sted;
566    
567    // Læser parametre fra ini filen    // Læser parametre fra ini filen
568    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
569    try    try
570    
571    
572      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
573      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
574      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
575    
576      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
577        UrlFindPakketype := InjectURL(UrlFindPakketype);
578    
579      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
580        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
581    
582      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
583        UrlNormal := InjectURL(UrlNormal);
584    
585      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
586        UrlReturDAO := InjectURL(UrlReturDAO);
587    
588      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
589        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
590    
591      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
592        UrlBudlevering := InjectURL(UrlBudlevering);
593    
594      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
595        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
596    
597      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
598        UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
599    
600      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
601        UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
602    
603      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
604        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
605    
606      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
607        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
608    
609      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
610      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
611    
612        UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
613        UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
614    
615      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');      UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
616        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
617    
618      UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');      UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
619        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
620    
621        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
622        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
623    
624    
625    
     LabelType := ReadInteger('Settings','LabelType',1);  
626      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
627      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
628      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 621  begin Line 681  begin
681        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
682      end;      end;
683    
684      if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
685    
686      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
687      begin      begin
# Line 745  begin Line 737  begin
737  {$IfDef STED_BK}  {$IfDef STED_BK}
738      SpecialVersionSted := 'BK';      SpecialVersionSted := 'BK';
739  {$EndIf}  {$EndIf}
740    {$IfDef STED_TK}
741        SpecialVersionSted := 'TK';// BK-Trykkompagniet
742    {$EndIf}
743  {$IfDef STED_DBK}  {$IfDef STED_DBK}
744      SpecialVersionSted := 'DBK';      SpecialVersionSted := 'DBK';
745  {$EndIf}  {$EndIf}
# Line 755  begin Line 750  begin
750      SpecialVersionSted := 'NS';      SpecialVersionSted := 'NS';
751  {$EndIf}  {$EndIf}
752    
   
753      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
754      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
755      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 773  begin Line 767  begin
767    
768      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
769      begin      begin
770         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
771         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
772    
773          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
774          Sted := SpecialVersionSted;
775         // her skal vi også disable de knapper BK ikke kan bruge
776          PanelValg2.Enabled := false;
777          PanelValg2.Font.Color := clInactiveCaption;
778          PanelValg3.Enabled := false;
779          PanelValg3.Font.Color := clInactiveCaption;
780          //PanelValg6.Enabled := false;
781          //PanelValg6.Font.Color := clInactiveCaption;
782    
783         // her skal vi også disable de menupunkter FD ikke kan bruge
784          ReturpakkerfraDAO1.Enabled := false;
785          Returpakkerfraboghandler1.Enabled := false;
786    
787          //Returpakkerfrapakkeshop1.Enabled := false;
788      end;      end;
789    
790      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
791      begin      begin
792         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
793         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
794    
795    
796          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
797          Sted := SpecialVersionSted;
798         // her skal vi også disable de knapper BK ikke kan bruge
799          PanelValg2.Enabled := false;
800          PanelValg2.Font.Color := clInactiveCaption;
801          PanelValg3.Enabled := false;
802          PanelValg3.Font.Color := clInactiveCaption;
803          //PanelValg6.Enabled := false;
804          //PanelValg6.Font.Color := clInactiveCaption;
805    
806         // her skal vi også disable de menupunkter FD ikke kan bruge
807          ReturpakkerfraDAO1.Enabled := false;
808          Returpakkerfraboghandler1.Enabled := false;
809    
810          //Returpakkerfrapakkeshop1.Enabled := false;
811    
812      end;      end;
813    
814      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
815      begin      begin
816        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
817        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 791  begin Line 820  begin
820        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
821        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
822        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
823        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
824        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
825    
826       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
827        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
828        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
829        Returpakkerfrapakkeshop1.Enabled := false;  
830          //Returpakkerfrapakkeshop1.Enabled := false;
831    
832        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
833        begin        begin
834           Scanningtype := '1';           Scanningtype := '1';
# Line 820  begin Line 852  begin
852        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
853        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
854        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
855        PanelValg7.Enabled := false;  
       PanelValg7.Font.Color := clInactiveCaption;  
856    
857       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
858        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
# Line 1051  begin Line 1082  begin
1082      end;      end;
1083    
1084    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1085    
1086      CheckPrintQue('Opstart');  
1087        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1088        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1089    
1090    finally    finally
1091      Free;      Free;
# Line 1182  begin Line 1209  begin
1209      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1210      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1211      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1212        or (NumberString = 'DAO PAKKESHOP')
1213        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1214            or (LowerCase(NumberString) = 'for stor daodirekte' )
1215      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1216    
1217      begin      begin
# Line 1192  begin Line 1222  begin
1222      begin      begin
1223        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1224      end;      end;
1225    end;    end;  // Slut ctrl-v
1226    
1227    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1228    begin    begin
1229      if (Length(Trim(Stregkode)) = 0) then  
1230        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1231        Stregkode := Trim(Stregkode);
1232    
1233        if (Length(Stregkode) = 0) then
1234      begin      begin
1235        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1236    
# Line 1246  begin Line 1280  begin
1280         exit;         exit;
1281      end;      end;
1282    
1283        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1284        begin
1285          if chkForstorTilDirekte.Enabled then
1286          begin
1287            chkForstorTilDirekte.Checked := true;
1288          end
1289          else
1290          begin
1291             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1292          end;
1293          Stregkode := '';
1294          StregkodeST.Caption := StregKode;
1295          exit;
1296        end;
1297    
1298    
1299      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1300      begin      begin
1301         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1443  begin Line 1493  begin
1493        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1494      end;      end;
1495    
1496      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1497          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1498          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1499          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1500          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1501          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1502      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1503          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1504    
1505         exit;         exit;
1506      end;      end;
1507    
1508      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1509      begin      begin
1510        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1511        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1484  begin Line 1534  begin
1534                InitPakkeshoplevering();                InitPakkeshoplevering();
1535              end;              end;
1536            end            end
1537        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1538              begin
1539                if Scanningtype <> '6' then
1540                begin
1541                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1542    
1543                 exit;
1544                end;
1545              end
1546    
1547    
1548        else        else
1549            begin            begin
1550            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1551              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1552                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1553    
1554               exit;               exit;
1555            end;            end;
# Line 1600  begin Line 1660  begin
1660    
1661      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1662      begin      begin
1663    
1664         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1665            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1666         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
# Line 1674  begin Line 1735  begin
1735            begin            begin
1736              VisAlarmSkaerm('');              VisAlarmSkaerm('');
1737            end;            end;
1738    
1739           if not btnNulstil.Visible then           if not btnNulstil.Visible then
1740            begin            begin
1741    
# Line 1723  begin Line 1785  begin
1785    
1786    Key := #0;    Key := #0;
1787    
1788    
1789    
1790    
1791    
1792    
1793  end; //End of OnKeyPress  end; //End of OnKeyPress
1794    
1795    
1796    
1797  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1798  const  const
1799    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1766  var Line 1835  var
1835    
1836    
1837  begin  begin
1838      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked or menuIndlevering.Checked then
1839      begin      begin
1840        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1841          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
# Line 1885  begin Line 1954  begin
1954                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1955              end;              end;
1956            end;            end;
1957  // 20150310: slut  
1958            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1959          end;          end;
1960      end;      end;
# Line 1921  begin Line 1990  begin
1990    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1991    ListBox1.Visible := true;    ListBox1.Visible := true;
1992  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1993  // 20150317: start  
 (*  
   if TestFunktionen = '1' then  
     begin  
       Testforbindelsen1.Visible := true;  
       Testprinter1.Visible := true;  
       Testlyd1.Visible := true;  
       Testlyd2.Visible := true;  
     end  
   else if TestFunktionen = '2' then  
     begin  
       Testforbindelsen1.Enabled := false;  
       Testprinter1.Enabled := false;  
       Testlyd1.Enabled := false;  
       Testlyd2.Enabled := false;  
     end  
   else  
     begin  
       Testforbindelsen1.Visible := false;  
       Testprinter1.Visible := false;  
       Testlyd1.Visible := false;  
       Testlyd2.Visible := false;  
     end;  
   Testprinter1.Visible := false;  
   AlarmLyd := 'Sounds\Alarm.wav';  
   if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   ScannetOkLyd := 'Sounds\Ok.wav';  
   if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
   ScannetOkStorLyd := 'Sounds\Ok_stor.wav';  
   if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
 *)  
 // 20150317: slut  
1994    if Budlevering1.Checked then    if Budlevering1.Checked then
1995    begin    begin
1996      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2094  begin Line 2123  begin
2123    begin    begin
2124      exit;      exit;
2125    end;    end;
2126    
2127      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2128      begin
2129        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2130      end;
2131    
2132    try    try
2133      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2134      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2115  begin Line 2150  begin
2150          end;          end;
2151      end;      end;
2152    end;    end;
2153    
2154    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2155    try    try
2156      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2138  begin Line 2174  begin
2174          end;          end;
2175        end;        end;
2176       end       end
2177      else if menuIndlevering.Checked then      else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2178      begin      begin
2179    
2180    
# Line 2149  begin Line 2185  begin
2185       begin       begin
2186         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2187         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2188         RuteNummer := PakkeshopLabel.Koreliste;         RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2189           Stregkode := PakkeshopLabel.Stregkode;
2190    
2191         PrintPakkeshopLabel( PakkeshopLabel );         LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2192           chkForstorTilDirekte.Checked := false;
2193    
2194       end;       end;
2195    
# Line 2283  begin Line 2321  begin
2321        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2322      end;      end;
2323    end;    end;
2324      if menuIndlevering.Checked then
2325      begin
2326        List1Msg := Stregkode;
2327      end;
2328    
2329    
2330    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2331    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2332    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
# Line 2423  begin Line 2467  begin
2467               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2468  // 20150304: slut  // 20150304: slut
2469                begin                begin
2470                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2471                end;                end;
2472              end;              end;
2473        01 :  begin;        01 :  begin;
# Line 2431  begin Line 2475  begin
2475                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2476                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2477                begin                begin
2478                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2479                end;                end;
2480              end;              end;
2481        02 :  begin;        02 :  begin;
2482                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2483                begin                begin
2484                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2485                end;                end;
2486              end;              end;
2487        03 :  begin;        03 :  begin;
# Line 2445  begin Line 2489  begin
2489                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2490                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2491               begin               begin
2492                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2493               end;               end;
2494              end;              end;
2495        04 :  begin;        04 :  begin;
2496                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2497                begin                begin
2498                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2499                end;                end;
2500              end;              end;
2501        else        else
# Line 2487  begin Line 2531  begin
2531        end;        end;
2532        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2533        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2534        with Printer do  
2535        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2536          BeginDoc;        
         Canvas.Font.Size := FontSizeRute;  
         if (Length(RuteNummer) > 7) then  
         begin  
           Canvas.Font.Size := FontSizeRuteLille;  
         end;  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
         Canvas.Font.Size := FontSizeKommentar;  
         Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
         if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then  
         begin  
           Kommentar := '';  
         end;  
         if (BoghandlerNavn = 'PAKKE ER SCANNET') then  
         begin  
           BoghandlerNavn := '';  
         end;  
         Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
         Canvas.Font.Size := FontSizeBoghandler;  
         Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
         EndDoc;  
       end;  
2537      end;      end;
2538    end;    end;
2539    
2540  end;  end;
2541    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
   
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
   
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
     end;  
 end;  
2542    
2543    
2544  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
# Line 2644  begin Line 2628  begin
2628    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2629    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2630    
2631          // Tjekker urls    try
2632          logTekst := 'Tjekker urls.';      // Tjekker urls
2633          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2634          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2635        SkrivScanningLogFil(logTekst);
2636    
         // Tjekker UrlNormal  
         if PanelValg1.Enabled = true then  
         begin  
           if TUtils.CheckUrl(UrlNormal) then  
           begin  
             logTekst := 'UrlNormal accepteret: ' + UrlNormal;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               TjekUrls := '-';   // markerer at der var fejl  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2637    
         // Tjekker UrlReturDAO  
         if PanelValg2.Enabled = true then  
         begin  
           if TUtils.CheckUrl(UrlReturDAO) then  
           begin  
             logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2638    
2639          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2640          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2641          begin      begin
2642            if TUtils.CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2643            begin      end;
             logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2644    
2645          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2646          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2647          begin      begin
2648            if TUtils.CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2649            begin      end;
             logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2650    
2651          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2652          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2653          begin      begin
2654            if TUtils.CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2655            begin      end;
             logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2656    
2657          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2658          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2659          begin      begin
2660            if TUtils.CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2661            begin      end;
             logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2662    
2663          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2664          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2665          or (PanelValg4.Enabled = true) then      begin
2666          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2667            if TUtils.CheckUrl(UrlManglendeScanninger) then      end;
           begin  
             logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2668    
2669          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2670          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2671          begin      begin
2672            if TUtils.CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2673            begin      end;
             logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2674    
2675          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2676          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2677          begin      begin
2678            if TUtils.CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2679            begin      end;
             logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2680    
2681         // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger      // Tjekker UrlPakkeshopManglendeScanninger
2682          if PanelValg7.Enabled = true then      if PanelValg5.Enabled = true then
2683          begin      begin
2684            if TUtils.CheckUrl(UrlIndleveringsPakke) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2685            begin      end;
             logTekst := 'UrlIndleveringsPakke accepteret: ' + UrlIndleveringsPakke;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlIndleveringsPakke svarer ikke: ' + UrlIndleveringsPakke;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
2686    
2687            if TUtils.CheckUrl(UrlIndleveringsPakkeManglendeScanninger) then      // Tjekker UrlPakkeshopManglendeReturScanninger
2688            begin      if PanelValg6.Enabled = true then
2689              logTekst := 'UrlIndleveringsPakkeManglendeScanninger accepteret: ' + UrlIndleveringsPakkeManglendeScanninger;      begin
2690              SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2691            end      end;
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlIndleveringsPakkeManglendeScanninger svarer ikke: ' + UrlIndleveringsPakkeManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2692    
2693          // Tjekker UrlEKLoverforsel     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2694          if PanelValg1.Enabled = true then      if PanelValg7.Enabled = true then
2695          begin      begin
2696            if TUtils.CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2697            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2698              logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;      end;
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforsel svarer ikke: ' + UrlEKLoverforsel;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2699    
2700        // Tjekker UrlEKLoverforsel
2701        if PanelValg1.Enabled = true then
2702        begin
2703          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2704        end;
2705    
         // Tjekker UrlEKLoverforselPakkeshop  
         if PanelValg5.Enabled = true then  
         begin  
           if TUtils.CheckUrl(UrlEKLoverforselPakkeshop) then  
           begin  
             logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2706    
2707        // Tjekker UrlEKLoverforselPakkeshop
2708        if PanelValg5.Enabled = true then
2709        begin
2710          TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2711        end;
2712    
         // Tjekker UrlFindPakketype  
         if TUtils.CheckUrl(UrlFindPakketype) then  
         begin  
           logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;  
           SkrivScanningLogFil(logTekst);  
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2713    
2714          // Tjekker UrlSendPrograminfo      // Tjekker UrlFindPakketype
2715          if TUtils.CheckUrl(UrlSendPrograminfo) then      TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2716          begin  
2717            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;      // Tjekker UrlSendPrograminfo
2718            SkrivScanningLogFil(logTekst);      TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2719    
2720          if urlFejl > 0 then  
2721          begin  
2722            TjekUrls := '-';   // markerer at der var fejl      logTekst := 'urls er ok';
2723          end      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2724          else      SkrivScanningLogFil(logTekst);
2725          begin  
2726            logTekst := 'urls er ok';    Except
2727            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      TjekUrls := '-';   // markerer at der var fejl
2728            SkrivScanningLogFil(logTekst);  
2729          end;    end;
2730    end;
2731    
2732    procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2733    const
2734      crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
2735    begin
2736      if TUtils.CheckUrl(Url) then
2737    
2738      begin
2739        logTekst := UrlNavn + ' accepteret: ' + Url;
2740        SkrivScanningLogFil(logTekst);
2741      end
2742      else
2743      begin
2744        inc(urlFejl);   // Optæller antal fejl
2745        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2746        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2747        if TjekUrls = '1' then
2748        begin
2749          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2750        end;
2751    
2752        SkrivScanningLogFil(logTekst);
2753    
2754        if TjekUrls = '1' then
2755        begin
2756          ShowMessage(logTekst);
2757          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2758          Application.Terminate;
2759    
2760          raise Exception.Create('UrlFejl');
2761    
2762        end;
2763      end;
2764    
2765  end;  end;
2766    
2767    
2768    
2769  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2770  var  var
2771    SR: TSearchRec;    SR: TSearchRec;
# Line 3155  begin Line 2845  begin
2845    if Farve <> '' then    if Farve <> '' then
2846    begin    begin
2847       MainForm.Color := TUtils.HexToTColor(Farve);       MainForm.Color := TUtils.HexToTColor(Farve);
 // 20150312: start  
 (*  
   end  
   else  
   begin  
      ShowMessage('Programmet afbrydes...');  
      UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
      Application.Terminate;  
 *)  
 // 20150312: slut  
2848    end;    end;
2849    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2850    begin    begin
# Line 3308  begin Line 2988  begin
2988    Falsk := False;    Falsk := False;
2989    
2990    
2991    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2992    begin    begin
2993      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2994    end    end
# Line 3322  begin Line 3002  begin
3002      SmsKode := '999999';      SmsKode := '999999';
3003      DBKbane := '999';      DBKbane := '999';
3004      Leveringssted := 'XXX';      Leveringssted := 'XXX';
3005      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      LabelPrint.TestZpl();
3006      CheckPrintQue('Test');      //PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3007        LabelPrint.CheckPrintQue('Test', PrinterNavn);
3008    end;    end;
3009    FocusControl(StregkodeST);    FocusControl(StregkodeST);
3010  end;  end;
# Line 3332  procedure TMainForm.Timer1Timer(Sender: Line 3013  procedure TMainForm.Timer1Timer(Sender:
3013  begin  begin
3014    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
3015    begin    begin
3016      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
3017    end    end
3018    else    else
3019    begin    begin
# Line 3393  begin Line 3074  begin
3074    
3075  end;  end;
3076    
3077    
3078  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3079    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3080  var  var
# Line 3546  begin Line 3228  begin
3228        BtnEKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3229        InitLillePakke();        InitLillePakke();
3230        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3231    
3232          chkForstorTilDirekte.Checked := false;
3233          chkForstorTilDirekte.Enabled := false;
3234    
3235        if BladhusSted = 0 then        if BladhusSted = 0 then
3236        begin        begin
3237          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3577  begin Line 3263  begin
3263        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3264        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3265        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3266    
3267          chkForstorTilDirekte.Checked := false;
3268          chkForstorTilDirekte.Enabled := false;
3269    
3270        InitLillePakke();        InitLillePakke();
3271  end;  end;
3272    
# Line 3603  begin Line 3293  begin
3293        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3294        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3295        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3296    
3297          chkForstorTilDirekte.Checked := false;
3298          chkForstorTilDirekte.Enabled := false;
3299    
3300        InitLillePakke();        InitLillePakke();
3301  end;  end;
3302    
# Line 3634  begin Line 3328  begin
3328        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3329        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3330        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3331    
3332          chkForstorTilDirekte.Checked := false;
3333          chkForstorTilDirekte.Enabled := true;
3334    
3335        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3336        begin        begin
3337            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3669  begin Line 3367  begin
3367    
3368        BtnEKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3369    
3370          chkForstorTilDirekte.Checked := false;
3371          chkForstorTilDirekte.Enabled := true;
3372    
3373        InitLillePakke();        InitLillePakke();
3374        IndlesScanningLogFil();        IndlesScanningLogFil();
3375        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3704  begin Line 3405  begin
3405        BtnDownloadKontrolfil.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3406        BtnOpdaterListen.Enabled := true;        BtnOpdaterListen.Enabled := true;
3407        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3408    
3409          chkForstorTilDirekte.Checked := false;
3410          chkForstorTilDirekte.Enabled := false;
3411    
3412    
3413        InitLillePakke();        InitLillePakke();
3414        IndlesScanningLogFil();        IndlesScanningLogFil();
3415        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3751  begin Line 3457  begin
3457        BtnDownloadKontrolfil.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3458        BtnOpdaterListen.Enabled := true;        BtnOpdaterListen.Enabled := true;
3459        BtnEKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3460    
3461          chkForstorTilDirekte.Checked := false;
3462          chkForstorTilDirekte.Enabled := false;
3463    
3464    
3465        InitLillePakke();        InitLillePakke();
3466        IndlesScanningLogFil();        IndlesScanningLogFil();
3467        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3876  begin Line 3587  begin
3587      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3588      StedKode := Sted;      StedKode := Sted;
3589      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3590  // 20150330: start  
3591      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3592      begin      begin
3593        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3594      end;      end;
3595  // 20150330: slut  
3596    
3597      try      try
3598      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4483  begin Line 4194  begin
4194  end;  end;
4195    
4196    
 // ToDo: PrintPakkeshopLabel()  
 procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
 var  
   XForm, XFormOld: TXForm; //Bruges til rotate X-formation  
   Angle: integer;  
   gMode: integer;  
   Dirigering: string;  
   
 begin  
     with Printer do  
     begin  
       BeginDoc();  
   
   
       Canvas.Font.Size := 16;  
       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.Font.Size := 9;  
       Canvas.TextOut(110, 240, 'Pakkeshop:');  
       Canvas.TextOut(110, 270, PakkeshopLabel.PakkeshopNavn);  
       Canvas.TextOut(110, 300, PakkeshopLabel.PakkeshopAddr);  
       Canvas.TextOut(110, 330, PakkeshopLabel.PakkeshopPostnr);  
   
       Canvas.TextOut(350, 240, 'Afsender:');  
       Canvas.TextOut(350, 270, PakkeshopLabel.AfsenderNavn);  
       Canvas.TextOut(350, 300, PakkeshopLabel.AfsenderAdresse);  
       Canvas.TextOut(350, 330, 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(15, 370, Dirigering);  
   
   
   
   
   
       //Tegn adskillelses linier  
       Canvas.Pen.Width := 2;  
       //Øverste linie  
       Canvas.MoveTo(20,80);  
       Canvas.LineTo(600,80);  
   
       // Midterste linie  
       Canvas.MoveTo( 20, 240);  
       Canvas.LineTo(600, 240);  
   
       //Nederste linie  
       Canvas.MoveTo( 20, 370);  
       Canvas.LineTo(600, 370);  
   
   
       //Tegn skrå streger over afsender  
       Canvas.Pen.Width := 1;  
       Canvas.MoveTo(600, 250);  
       Canvas.LineTo(350, 360);  
       Canvas.MoveTo(600, 360);  
       Canvas.LineTo(350, 250);  
   
   
   
   
       // Resten af rutinen vedr genering og placering af Barcode  
   
       BarCode.BarCodeType := bcCode128;  
       BarCode.Code128Subset := csCodeC;  
       BarCode.Code := PakkeshopLabel.Stregkode;  
       BarCode.Validate(True);  
   
       //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, -1.8, 3.3, 0.4);  
   
   
       SetWorldTransform(Canvas.Handle, XFormOld);  
       SetGraphicsMode(Canvas.Handle, gMode);  
   
       EndDoc();  
     end;  
   
   
 end;  
   
 function GetPixelsPerInchX(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSX)  
 end;  
   
 function GetPixelsPerInchY(): Integer;  
 begin  
   Result := GetDeviceCaps(Printer.Handle, LOGPIXELSY)  
 end;  
   
4197    
4198  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4199  var  var
# Line 4616  var Line 4205  var
4205    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4206    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4207    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4208    pakketyper : TStrings;    //pakketyper : TStrings;
4209      pakketyper : TDictionary<String, Integer>;
4210      tmpAntal : Integer;
4211    
4212    
4213    
4214    antlin : Integer;    antlin : Integer;
4215    
4216    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4217    
4218    XmlFelter : TStrings;    //XmlFelter : TStrings;
4219      XmlFelter : TDictionary<String, Integer>;
4220    
4221   begin   begin
4222      XmlFelter := TStringList.Create;  
4223      pakketyper := TStringList.Create;  
4224        XmlFelter := TDictionary<String, Integer>.Create;
4225        pakketyper := TDictionary<String, Integer>.Create;
4226    
4227      linienr := 0;      linienr := 0;
4228      ListBox2.Clear;      ListBox2.Clear;
4229      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
# Line 4640  var Line 4238  var
4238          StedKode := Sted;          StedKode := Sted;
4239        end;        end;
4240    
4241          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4242    
4243    
4244    
4245      if (Scanningtype = '7') then      if (Scanningtype = '7') then
# Line 4677  var Line 4277  var
4277        begin        begin
4278          // Her skal vi ikke gøre noget - men vi skal forespørge igen          // Her skal vi ikke gøre noget - men vi skal forespørge igen
4279          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4280    
4281    
4282    
4283        end;        end;
4284        on e:exception do        on e:exception do
4285        begin        begin
# Line 4699  var Line 4302  var
4302            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4303              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4304              begin              begin
4305                 antlin := antlin + 1;                 Inc(antlin);
4306                 // 20150306: start                 // 20150306: start
4307                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4308                begin                begin
4309                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4310                   begin                   begin
4311                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4312                   end                   end
4313                   else                   else
4314                   begin                   begin
4315                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4316                   end;                   end;
4317                end;                end;
4318                 // 20150306: slut                 // 20150306: slut
4319              end;              end;
4320            end;            end;
4321            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4322                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4323                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4324                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4325                  end
4326                else                else
4327                  XmlFelter.values[Node.NodeName] := '1';                begin
4328                    XmlFelter.Add(Node.NodeName, 1);
4329                  end;
4330    
4331        end;        end;
4332        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4726  var Line 4334  var
4334        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4335        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4336    
4337    
4338          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4339    
4340        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4341        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4342        begin        begin
# Line 4734  var Line 4345  var
4345        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4346    
4347        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4348    
4349    
4350        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4351            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4352            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4741  var Line 4354  var
4354                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4355                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4356                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4357              end;              end
4358              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4359                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4360                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4361                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4362              end;              end
4363              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4364                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4365                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4366                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4367              end;              end
4368              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4369                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4370                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4371                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4372              end;              end
4373              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4374                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4375                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4376                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4377                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4378                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4379                    pakketyper.TryGetValue(pakketype, tmpAntal);
4380                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4381                  end
4382                else                else
4383                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4384              end;              end
4385              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4386                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4387                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4388                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4389                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4390                  begin                  begin
4391  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4392                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4393                    begin                    begin
4394                      stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2);  // Fjerner lige en evt. fremtidig dato fra feltet                      stregkoderMedTjekkodeArray[linienr] := TUtils.split(stregkode, ' ', 2);  // Fjerner lige en evt. fremtidig dato fra feltet
# Line 4785  var Line 4400  var
4400                    linienr := linienr + 1;                    linienr := linienr + 1;
4401                  end;                  end;
4402              end;              end;
4403    
4404    
4405              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4406              begin              begin
4407                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4800  var Line 4417  var
4417              end;              end;
4418            end;            end;
4419        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4420    
4421          // Free up the list object  
4422          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4423    
4424    
4425          for pakketype in pakketyper.Keys do
4426          begin
4427            pakketyper.TryGetValue(pakketype, tmpAntal);
4428            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4429          end;
4430    
4431            // Free up the dictionary object
4432        pakketyper.Free;        pakketyper.Free;
4433    
4434    
4435    
4436  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4437        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4438        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5248  begin Line 4874  begin
4874      KommentarST.Caption := strMessage;      KommentarST.Caption := strMessage;
4875    end;    end;
4876    
4877      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4878    
4879  end;  end;
4880    
4881  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5307  begin Line 4935  begin
4935    result := svar;    result := svar;
4936  end;  end;
4937    
 function TMainForm.GetCurrentPrinterHandle: THandle;  
 var  
   Device, Driver, Port: array[0..255] of Char;  
   hDeviceMode: THandle;  
 begin  
   Printer.GetPrinter(Device, Driver, Port, hDeviceMode);  
   if not OpenPrinter(@Device, Result, nil) then  
     RaiseLastWin32Error;  
 end;  
   
 function TMainForm.SavePChar(p: PChar): PChar;  
 const  
   error: PChar = 'Nil';  
 begin  
   if not Assigned(p) then  
     Result := error  
   else  
     Result := p;  
 end;  
4938    
4939  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4940  begin  begin
# Line 5340  begin Line 4949  begin
4949  end;  end;
4950    
4951    
4952    //Nedarvet fra IParentForm
4953    procedure TMainForm.Msg( msg : string);
4954    begin
4955      ShowMessage(msg);
4956    end;
4957    
4958    //Nedarvet fra IParentForm
4959    procedure TMainForm.LogMessage( msg : string);
4960    begin
4961      ListBox1.Items.Insert(0, msg);
4962      SkrivScanningLogFil(msg);
4963    end;
4964    
4965    
4966    //Nedarvet fra IParentForm
4967    procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
 procedure TMainForm.CheckPrintQue(tjektype : string);  
 type  
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
4968  begin  begin
4969    
4970  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1    PrinterstatusStaticText1.Caption := txt;
4971  //            'Test'  skal vise alarmlinie, samt opdatere listbox1    if (alert) then
 //            'Timer' skal kun vise alarmlinie  
   
   if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4972    begin    begin
4973      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4974      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4975      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
   begin  
     printerTxt := 'Der er ikke installeret en printer på denne PC';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
4976    end    end
4977    else    else
4978    begin    begin
4979      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4980      try      PrinterstatusStaticText1.Color := clWhite;
4981        EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);      PrinterstatusStaticText1.Transparent := true;
       pJ := AllocMem(bytesNeeded);  
       if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then  
         RaiseLastWin32Error;  
   
       if numJobs = 0 then  
       begin  
         if (tjektype = 'Test') then  
         begin  
           logTekst := printerTxt + ': Ingen dokumenter i kø';  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         PrinterstatusStaticText1.Caption := '';  
         PrinterstatusStaticText1.Color := MainForm.Color;  
       end  
       else   // så er der kø til printeren  
       begin  
         printerTxt := SavePChar(pJ^[0].pPrinterName);  
         if (tjektype = 'Opstart') or (tjektype = 'Test') then  
         begin  
           logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         for i := 0 to Pred(numJobs) do  
         begin  
           printerTxt := SavePChar(pJ^[i].pPrinterName);  
           statusTxt := 'Ukendt';  
           if (IntToStr(pJ^[i].Status) = '0') then  
             statusTxt := 'Venter...';  
           if (IntToStr(pJ^[i].Status) = '4096') then  
             statusTxt := 'Printer...';  
           if (IntToStr(pJ^[i].Status) = '8210') then  
             statusTxt := 'Printerfejl';  
           if (IntToStr(pJ^[i].Status) = '8214') then  
             statusTxt := 'Sletter print...';  
   
           dokumentTxt := SavePChar(pJ^[i].pDocument);  
           if (dokumentTxt = '') then  
             dokumentTxt := 'Uden navn';  
   
           if (tjektype = 'Opstart') or (tjektype = 'Test') then  
           begin  
             logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',  
                                     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);  
             ListBox1.Items.Insert(0,logTekst);  
             SkrivScanningLogFil(logTekst);  
           end;  
   
           if (i = 0) then  
           begin  
             PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;  
             PrinterstatusStaticText1.Font.Color := clBlack;  
             PrinterstatusStaticText1.Color := MainForm.Color;  
             PrinterstatusStaticText1.Transparent := True;  
             if (numJobs > 3) then  
             begin  
               PrinterstatusStaticText1.Font.Color := clRed;  
               PrinterstatusStaticText1.Color := clWhite;  
               PrinterstatusStaticText1.Transparent := true;  
             end;  
           end;  
   
         end;  
       end  
       finally  
         ClosePrinter(hPrinter);  
     end;  
4982    end;    end;
4983  end;  end;
4984    
4985    //Nedarvet fra IParentForm
4986    function TMainForm.GetFormObject() : TForm;
4987    begin
4988      Result := self;
4989    end;
4990    
4991  end.  end.
4992    

Legend:
Removed from v.2700  
changed lines
  Added in v.3048

  ViewVC Help
Powered by ViewVC 1.1.20