/[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 2682 by torben, Wed Aug 26 19:52:38 2015 UTC revision 3093 by torben, Fri Aug 19 12:28:21 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, Registry, 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      TimingHelper
31    
32    ;    ;
33    
34  type  type
35    TMainForm = class(TForm)    TMainForm = class(TForm, IParentForm)
36      StregkodeST: TStaticText;      StregkodeST: TStaticText;
37      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
38      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 26  type Line 40  type
40      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
41      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
42      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
43      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
44      N1: TMenuItem;      N1: TMenuItem;
45      Pakkernormal1: TMenuItem;      menuNatXpress1: TMenuItem;
46      ReturpakkerfraDAO1: TMenuItem;      menuNatxpressReturDAO1: TMenuItem;
47      Returpakkerfraboghandler1: TMenuItem;      menuNatxpressReturfraKunde1: TMenuItem;
48      Hjlp1: TMenuItem;      Hjlp1: TMenuItem;
49      Om1: TMenuItem;      Om1: TMenuItem;
50      Testforbindelsen1: TMenuItem;      Testforbindelsen1: TMenuItem;
# Line 44  type Line 57  type
57      radioStorPakke: TRadioButton;      radioStorPakke: TRadioButton;
58      radioLillePakke: TRadioButton;      radioLillePakke: TRadioButton;
59      N4: TMenuItem;      N4: TMenuItem;
60      Storepakker1: TMenuItem;      menuStorePakker: TMenuItem;
61      Smpakker1: TMenuItem;      menuSmaaPakker: TMenuItem;
62      Panel1: TPanel;      Panel1: TPanel;
63      Testlyd2: TMenuItem;      Testlyd2: TMenuItem;
64      Button1: TButton;      Button1: TButton;
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      menuDaoDirekte1: TMenuItem;
68      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
71      ListBox2: TListBox;      ListBox2: TListBox;
72      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
73      UploadButton01: TButton;      BtnUploadLogfil: TButton;
74      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      menuPakkeshop1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      btnNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      menuPakkeshopRetur1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 73  type Line 86  type
86      Timer1: TTimer;      Timer1: TTimer;
87      chkScanTjekkode: TCheckBox;      chkScanTjekkode: TCheckBox;
88      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
89      Automatisktjekkodestyring1: TMenuItem;      menuAutomatiskTjekkodeStyring: TMenuItem;
90      Automatiskvalg1: TMenuItem;      menuAutomatiskvalg1: TMenuItem;
91      PanelValgA: TPanel;      PanelValgA: TPanel;
92      PanelValg1: TPanel;      PanelValg1: TPanel;
93      PanelValg2: TPanel;      PanelValg2: TPanel;
# Line 92  type Line 105  type
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107      menuIndlevering: TMenuItem;      menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109        chkEmballageRepareret: TCheckBox;
110        KommentarST: TLabel;
111        chkUdenforSpecifikation: TCheckBox;
112    
113    
   function Sto_GetFmtFileVersion(const FileName: String = ''): String;  
114    
115    function getProddato() : TDate;    function getProddato() : TDate;
116    function getProddag() : String;    function getProddag() : String;
117    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
   function AdobeReaderExists(): Boolean;  
   function FileTime2DateTime(FileTime: TFileTime): TDateTime;  
   function CheckUrl(url:string):boolean;  
118    
119    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
120    procedure StartScreen();    procedure StartScreen();
# Line 119  type Line 130  type
130    procedure radioStorPakkeClick(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
131    procedure radioLillePakkeClick(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
132    procedure chkSporgEfterKundeClick(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
133    procedure Pakkernormal1Click(Sender: TObject);    procedure menuNatXpress1Click(Sender: TObject);
134    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
135    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
136    procedure Om1Click(Sender: TObject);    procedure Om1Click(Sender: TObject);
137    procedure Lukprogrammet1Click(Sender: TObject);    procedure Lukprogrammet1Click(Sender: TObject);
138    procedure Sprgefterboghandlernummer1Click(Sender: TObject);    procedure Sprgefterboghandlernummer1Click(Sender: TObject);
139    procedure ReturpakkerfraDAO1Click(Sender: TObject);    procedure menuNatxpressReturDAO1Click(Sender: TObject);
140    procedure Returpakkerfraboghandler1Click(Sender: TObject);    procedure menuNatxpressReturfraKunde1Click(Sender: TObject);
141    procedure Storepakker1Click(Sender: TObject);    procedure menuStorePakkerClick(Sender: TObject);
142    procedure Smpakker1Click(Sender: TObject);    procedure menuSmaaPakkerClick(Sender: TObject);
143    procedure Testlyd1Click(Sender: TObject);    procedure Testlyd1Click(Sender: TObject);
144    procedure Testlyd2Click(Sender: TObject);    procedure Testlyd2Click(Sender: TObject);
145    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
146    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
147    procedure Budlevering1Click(Sender: TObject);    procedure menuDaoDirekte1Click(Sender: TObject);
148    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
149    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
150    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
151    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
152    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 143  type Line 154  type
154    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
155    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
156    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
157    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
158    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
159    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure menuPakkeshop1Click(Sender: TObject);
160    procedure btnNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
161    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure menuPakkeshopRetur1Click(Sender: TObject);
162    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
163    procedure InitReturFraDao();    procedure InitReturFraDao();
164    procedure InitReturFraKunde();    procedure InitReturFraKunde();
# Line 158  type Line 169  type
169    
170    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
171    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
172    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
173    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
174    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
175    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
176    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
177    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
178    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure menuAutomatiskTjekkodeStyringClick(Sender: TObject);
179    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
180    procedure Automatiskvalg1Click(Sender: TObject);    procedure menuAutomatiskvalg1Click(Sender: TObject);
181    procedure PanelValgAClick(Sender: TObject);    procedure PanelValgAClick(Sender: TObject);
182    procedure PanelValg1Click(Sender: TObject);    procedure PanelValg1Click(Sender: TObject);
183    procedure PanelValg2Click(Sender: TObject);    procedure PanelValg2Click(Sender: TObject);
# Line 180  type Line 191  type
191    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
192    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
193    procedure TjekkerUrls();    procedure TjekkerUrls();
194      procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
195    
196    procedure menuIndleveringClick(Sender: TObject);    procedure menuIndleveringClick(Sender: TObject);
197    
198    procedure PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
199    procedure CheckPrintQue(tjektype : string);  
200      //Nedarvet fra IParentForm
201      procedure Msg( msg : string);
202      procedure LogMessage( msg : string);
203      procedure SetPrinterstatusText( txt: string; alert: boolean);
204      function GetFormObject() : TForm;
205    
206    
207    
208    private    private
# Line 193  type Line 211  type
211      SkrivLog : String;      SkrivLog : String;
212      Sted : String;      Sted : String;
213      StedNavn : String;      StedNavn : String;
214      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlEKLoverforsel : String;  
215  // 29150330: start      Scanningtype,  Pakketype : String;
216      UrlEKLoverforselPakkeshop : String;  
217  // 20150330: slut  
218      UrlFindPakketype, UrlSendPrograminfo: String;      Url : String;
219      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;  
220      ScanTjekkode : String;      Farve : String;
221      ScanTjekkodeAutomatik : string;  
222      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;      Titel : String;
223      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;  
224      LabelType : integer;  
225      AlarmLyd : String;  
     ScannetOkLyd : String;  
     ScannetOkStorLyd : String;  
 // 20150317: start  
     ScannetOkTilTjekkodeLyd : String;  
 // 20150317: slut  
     PrinterNavn : String;  
     TjekPrinter : String;  
     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;  
226      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
227      BladhusSted : Integer;      BladhusSted : Integer;
228      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 246  type Line 234  type
234      logTekst : string;      logTekst : string;
235      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
236      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
     TjekUrls : String;  
237    
238      Barcode : TStBarcode;      Config : TConfiguration;
239    
240    
241        LabelPrint: TLabelPrint;
242    
243      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 = '');
244      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
245      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 = '');
246      procedure CheckCode();      procedure CheckCode();
247      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 263  type Line 252  type
252      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
253      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
254    
255    
256    public    public
257      { Public declarations }      { Public declarations }
258    end;    end;
259    
       function GetPixelsPerInchX(): Integer;  
     function GetPixelsPerInchY(): Integer;  
260    
261  var  var
262    MainForm: TMainForm;    MainForm: TMainForm;
# Line 284  implementation Line 272  implementation
272  {$R *.dfm}  {$R *.dfm}
273    
274    
275    //FormCreate kaldes før InitForm
276    
277  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
278  begin  begin
279    
280  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
281        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
282    
283    
284    
285    
286      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
 // 20150309: slut  
287    
     Barcode := TStBarcode.Create(MainForm);//Dynamisk oprettelse af Barcode component  
288    
289      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
290      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 335  begin Line 328  begin
328        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
329      end;      end;
330    
331      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
332    
333      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
334      begin      begin
# Line 363  begin Line 356  begin
356        else if (Sted = 'BR') then        else if (Sted = 'BR') then
357          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
358        else if (Sted = 'BK') then        else if (Sted = 'BK') then
359          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
360          else if (Sted = 'TK') then
361            begin StedNavn := 'BK/Trykkompagniet: '; end
362        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
363          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
364        else if (Sted = '1') then        else if (Sted = '1') then
365          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
366        else if (Sted = '2') then        else if (Sted = '2') then
# Line 399  begin Line 394  begin
394        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
395      end;      end;
396    
397      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
398        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
399      else      else
400        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 410  begin Line 405  begin
405    
406      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
407      begin      begin
408        if (ScanTjekkode = '1') then        if (Config.ScanTjekkode = '1') then
409        begin        begin
410          chkScanTjekkode.Checked := true;          chkScanTjekkode.Checked := true;
411          chkScanTjekkode.Enabled := true;          chkScanTjekkode.Enabled := true;
# Line 424  begin Line 419  begin
419        end;        end;
420      end;      end;
421    
422      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
423      begin      begin
424        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
425        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 460  begin Line 455  begin
455        end;        end;
456      end;      end;
457    
458    
459  end;  end;
460    
461  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 481  begin Line 477  begin
477    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
478  end;  end;
479    
480  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
481  begin  begin
482    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
483    begin    begin
484       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
485       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 496  begin Line 492  begin
492    
493  end;  end;
494    
495  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
496  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
497  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
498  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
499       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
500       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
501       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
502  end;  end;
503    
504    
505    
506    //InitForm kaldes før FormCreate
507  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
508  const  const
509    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
510  var  var
   printerInd : integer;  
511    gemScanningtype : String;    gemScanningtype : String;
512    
513  begin  begin
514    
515    
516    // Initierer nogle variabler    // Initierer nogle variabler
517    BladhusSted := 00;    BladhusSted := 00;
518    Application.ShowHint := True;    Application.ShowHint := True;
# Line 554  begin Line 538  begin
538    
539  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
540    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
541    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 820;
542    
543      Config := TConfiguration.Create();
544      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
545      Config.Sted := Sted;
546    
547    // Læser parametre fra ini filen    // Læser parametre fra ini filen
548    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
549    try    try
550    
551    
552      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
553      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
554      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
555      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');  
556      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      Scanningtype := 'A'; //hardcoded
557      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      Pakketype := '0';
558      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
559      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
560      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');  
561      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');  
     UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');  
   
     UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');  
   
     UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');  
     UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');  
     UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');  
     UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');  
   
     UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');  
   
   
     LabelType := ReadInteger('Settings','LabelType',1);  
     FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');  
     TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');  
     FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');  
     TitelReturDAO := ReadString('Settings','TitelReturDAO','Returforsendelse fra DAO');  
     FarveReturBoghandler := ReadString('Settings','FarveReturBoghandler','F2F5A9');  
     TitelReturBoghandler := ReadString('Settings','TitelReturBoghandler','Returforsendelse fra boghandler');  
     FarveBudlevering := ReadString('Settings','FarveBudlevering','2E9AFE');  
     TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');  
     FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');  
     TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');  
   
     FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');  
     TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');  
   
     FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');  
     TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');  
   
   
     SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');  
     ScanTjekkode := ReadString('Settings','ScanTjekkode','0');  
     ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');  
     Scanningtype := ReadString('Settings','Scanningtype','A');  
     Pakketype := ReadString('Settings','Pakketype','0');  
     TestFunktionen := ReadString('Settings','TestFunktion','0');  
     AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');  
     ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');  
     ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');  
   
     ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');  
   
     PrinterNavn := ReadString('Settings','PrinterNavn','');  
     TjekPrinter := ReadString('Settings','TjekPrinter','1');  
     TjekUrls := ReadString('Settings','TjekUrls','2');  
562    
563      if (SkrivLog = '1') then      if (SkrivLog = '1') then
564      begin      begin
565        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
566        try        try
567          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
568          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
569          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
570          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
571          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
572          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 634  begin Line 578  begin
578    
579      if Scanningtype = 'A' then      if Scanningtype = 'A' then
580      begin      begin
581        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
582        Scanningtype := '1';        Scanningtype := '1';
583        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
584        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
585      end;      end;
586    
     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;  
587    
588      if SporgEfterBoghandler = '1' then  
589        if Config.SporgEfterBoghandler = '1' then
590      begin      begin
591        chkSporgEfterKunde.Checked := true;        chkSporgEfterKunde.Checked := true;
592        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
# Line 721  begin Line 597  begin
597        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
598      end;      end;
599    
600      if ScanTjekkode = '1' then      if Config.ScanTjekkode = '1' then
601      begin      begin
602        chkScanTjekkode.Checked := true;        chkScanTjekkode.Checked := true;
603        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
# Line 732  begin Line 608  begin
608        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
609      end;      end;
610    
611      if ScanTjekkodeAutomatik = '1' then      if Config.ScanTjekkodeAutomatik = '1' then
612      begin      begin
613        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
614        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
615        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
616      end;      end;
# Line 764  begin Line 640  begin
640  {$IfDef STED_BK}  {$IfDef STED_BK}
641      SpecialVersionSted := 'BK';      SpecialVersionSted := 'BK';
642  {$EndIf}  {$EndIf}
643    {$IfDef STED_TK}
644        SpecialVersionSted := 'TK';// BK-Trykkompagniet
645    {$EndIf}
646  {$IfDef STED_DBK}  {$IfDef STED_DBK}
647      SpecialVersionSted := 'DBK';      SpecialVersionSted := 'DBK';
648  {$EndIf}  {$EndIf}
# Line 774  begin Line 653  begin
653      SpecialVersionSted := 'NS';      SpecialVersionSted := 'NS';
654  {$EndIf}  {$EndIf}
655    
   
656      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
657      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
658      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 790  begin Line 668  begin
668      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
669      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
670    
 // 20150313: start  
671      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
672      begin      begin
673         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
674         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
675    
676          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
677          Sted := SpecialVersionSted;
678         // her skal vi også disable de knapper BK ikke kan bruge
679          PanelValg2.Enabled := false;
680          PanelValg2.Font.Color := clInactiveCaption;
681          PanelValg3.Enabled := false;
682          PanelValg3.Font.Color := clInactiveCaption;
683          //PanelValg6.Enabled := false;
684          //PanelValg6.Font.Color := clInactiveCaption;
685    
686         // her skal vi også disable de menupunkter FD ikke kan bruge
687          menuNatxpressReturDAO1.Enabled := false;
688          menuNatxpressReturfraKunde1.Enabled := false;
689    
690          //Returpakkerfrapakkeshop1.Enabled := false;
691      end;      end;
692    
693      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
694      begin      begin
695         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
696         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
697      end;  
 // 20150313: slut  
698    
     if SpecialVersionSted = 'BK' then  
     begin  
699        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
700        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
701       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 812  begin Line 703  begin
703        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
704        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
705        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
706        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
707        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
708       // her skal vi også disable de menupunkter BK ikke kan bruge  
709        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
710        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
711        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
712        if SpecialVersionScanningtype = 'A' then  
713        begin        //Returpakkerfrapakkeshop1.Enabled := false;
714           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
715      end;      end;
716    
717      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
718      begin      begin
719        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
720        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
721        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
722        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
723        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
724        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
725        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
726        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
727        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
       PanelValg6.Enabled := false;  
       PanelValg6.Font.Color := clInactiveCaption;  
       PanelValg7.Enabled := false;  
       PanelValg7.Font.Color := clInactiveCaption;  
728    
729       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
730        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
731        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
732    
733        Pakkeshoplevering1.Enabled := false;        //Returpakkerfrapakkeshop1.Enabled := false;
       Returpakkerfrapakkeshop1.Enabled := false;  
734    
735        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
736        begin        begin
# Line 861  begin Line 742  begin
742        end;        end;
743      end;      end;
744    
745        if SpecialVersionSted = 'DBK' then
746        begin
747          Sted := SpecialVersionSted;
748        end;
749    
750      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
751      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
752      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 884  begin Line 770  begin
770        PanelValg7.Font.Color := clInactiveCaption;        PanelValg7.Font.Color := clInactiveCaption;
771       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
772    
773        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
774    
775        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
776        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
777        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
778        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
779        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
780        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
781        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
782        begin        begin
783          Scanningtype := '4';          Scanningtype := '4';
784          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
785          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
786          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
787        end        end
# Line 904  begin Line 790  begin
790          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
791          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
792          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
793          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
794          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
795          if Scanningtype = '1' then          if Scanningtype = '1' then
796          begin          begin
797            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
798            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
799            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
800          end;          end;
801          if Scanningtype = '2' then          if Scanningtype = '2' then
802          begin          begin
803            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
804            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
805            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
806          end;          end;
807          if Scanningtype = '3' then          if Scanningtype = '3' then
808          begin          begin
809            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
810            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
811            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
812          end;          end;
813          if Scanningtype = '4' then          if Scanningtype = '4' then
814          begin          begin
815            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
816            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
817            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
818          end;          end;
819          if Scanningtype = '5' then          if Scanningtype = '5' then
820          begin          begin
821            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
822            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
823            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
824          end;          end;
825          if Scanningtype = '6' then          if Scanningtype = '6' then
826          begin          begin
827            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
828            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
829            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
830          end;          end;
# Line 967  begin Line 853  begin
853          Application.Terminate;          Application.Terminate;
854      end;      end;
855    
856      if TjekUrls = '1' then    // Tjekker urls      if Config.TjekUrls = '1' then    // Tjekker urls
857      begin      begin
858          TjekkerUrls();          TjekkerUrls();
859          if TjekUrls = '-' then  // så var der fejl i url - så vi stopper her          if Config.TjekUrls = '-' then  // så var der fejl i url - så vi stopper her
860          begin          begin
861             PlaySound(PWideChar(AlarmLyd));             PlaySound(PWideChar(Config.AlarmLyd));
862             MainForm.Color := clRed;             MainForm.Color := clRed;
863             RutenummerST.Caption := '';             RutenummerST.Caption := '';
864             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
# Line 1019  begin Line 905  begin
905    
906      if Pakketype = '1' then      if Pakketype = '1' then
907      begin      begin
908        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
909        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
910      end      end
911      else      else
912      begin      begin
913        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
914        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
915      end;      end;
916    
917      if TestFunktionen = '1' then      if Config.TestFunktionen = '1' then
918      begin      begin
919        Testforbindelsen1.Visible := true;        Testforbindelsen1.Visible := true;
920        Testprinter1.Visible := true;        Testprinter1.Visible := true;
921        Testlyd1.Visible := true;        Testlyd1.Visible := true;
922        Testlyd2.Visible := true;        Testlyd2.Visible := true;
923      end      end
924      else if TestFunktionen = '2' then      else if Config.TestFunktionen = '2' then
925      begin      begin
926        Testforbindelsen1.Enabled := false;        Testforbindelsen1.Enabled := false;
927        Testprinter1.Enabled := false;        Testprinter1.Enabled := false;
# Line 1050  begin Line 936  begin
936        Testlyd2.Visible := false;        Testlyd2.Visible := false;
937      end;      end;
938    
     if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   
     if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
   
     if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
   
939    
     if not FileExists(ScannetOkTilTjekkodeLyd) then  
     begin  
       ScannetOkTilTjekkodeLyd := '';  
     end;  
940    
941    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
942    
943      CheckPrintQue('Opstart');      LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
944        LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
945    
946    finally    finally
947      Free;      Free;
# Line 1088  begin Line 950  begin
950      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
951      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
952      begin      begin
953        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
954        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
955        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
956        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
957        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
958        Testprinter1.Visible := false;        Testprinter1.Visible := false;
959        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
960        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
961      end;      end;
962    
963      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1146  begin Line 1008  begin
1008      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1009    
1010      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1011      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion(''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1012    
1013  end;  end;
1014    
# Line 1203  begin Line 1065  begin
1065      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1066      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1067      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1068        or (NumberString = 'DAO PAKKESHOP')
1069        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1070            or (LowerCase(NumberString) = 'for stor daodirekte' )
1071      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1072    
1073      begin      begin
# Line 1213  begin Line 1078  begin
1078      begin      begin
1079        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1080      end;      end;
1081    end;    end;  // Slut ctrl-v
1082    
1083    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1084    begin    begin
1085      if (Length(Trim(Stregkode)) = 0) then  
1086        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1087        Stregkode := Trim(Stregkode);
1088    
1089        if (Length(Stregkode) = 0) then
1090      begin      begin
1091        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1092    
# Line 1267  begin Line 1136  begin
1136         exit;         exit;
1137      end;      end;
1138    
1139        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1140        begin
1141          if chkForstorTilDirekte.Enabled then
1142          begin
1143            chkForstorTilDirekte.Checked := true;
1144          end
1145          else
1146          begin
1147             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1148          end;
1149          Stregkode := '';
1150          StregkodeST.Caption := StregKode;
1151          exit;
1152        end;
1153    
1154    
1155      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1156      begin      begin
1157         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1421  begin Line 1306  begin
1306      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1307      begin      begin
1308        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1309        URLStr := Format(UrlFindPakketype,[Stregkode]);        URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1310        try        try
1311          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1312          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
# Line 1464  begin Line 1349  begin
1349        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1350      end;      end;
1351    
1352      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1353          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1354          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1355          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1356          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1357          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1358      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1359          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1360    
1361         exit;         exit;
1362      end;      end;
1363    
1364      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1365      begin      begin
1366        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1367        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1505  begin Line 1390  begin
1390                InitPakkeshoplevering();                InitPakkeshoplevering();
1391              end;              end;
1392            end            end
1393        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1394              begin
1395                if Scanningtype <> '6' then
1396                begin
1397                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1398    
1399                 exit;
1400                end;
1401              end
1402    
1403    
1404        else        else
1405            begin            begin
1406            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1407              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1408                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1409    
1410               exit;               exit;
1411            end;            end;
1412        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1413      end      end
1414      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1415      begin      begin
1416        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1417    
1418        exit;        exit;
1419      end;      end;
1420    
1421      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1422      begin      begin
1423        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1424        begin        begin
# Line 1536  begin Line 1431  begin
1431    
1432    
1433    
1434      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1435      begin      begin
1436        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1437        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1549  begin Line 1444  begin
1444        end;        end;
1445      end;      end;
1446    
1447      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1448        begin        begin
1449          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1450             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
# Line 1559  begin Line 1454  begin
1454             Stregkode := '';             Stregkode := '';
1455             InitScreen();             InitScreen();
1456        end        end
1457      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1458        begin        begin
1459          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1460             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1571  begin Line 1466  begin
1466             Stregkode := '';             Stregkode := '';
1467             InitScreen();             InitScreen();
1468        end        end
1469      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1470        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1471         begin         begin
1472            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1580  begin Line 1475  begin
1475              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1476              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1477    
1478              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1479    
1480             end             end
1481            else            else
# Line 1597  begin Line 1492  begin
1492             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1493             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1494             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1495             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1496                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1497             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1498                MainForm.Color := TUtils.HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1499             btnNulstil.Visible := false;             btnNulstil.Visible := false;
1500           end           end
1501          else          else
1502           begin           begin
1503                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1504                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1505                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1506                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1507                                    
1508                StregKode := '';                StregKode := '';
# Line 1619  begin Line 1514  begin
1514          InitScreen();          InitScreen();
1515       end;       end;
1516    
1517      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 menuPakkeshop1.Checked and not menuNatXpress1.Checked or (menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (menuNatXpress1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1518      begin      begin
1519         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1520           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1521            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1522         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1523            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1524         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1525         try         try
# Line 1637  begin Line 1533  begin
1533    
1534              exit;              exit;
1535            end;            end;
1536            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1537            begin            begin
1538              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1539              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1653  begin Line 1549  begin
1549              tjekkodemangler := pos('Tjekkode mangler', Kommentar);              tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1550              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1551              begin              begin
1552                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(Config.AlarmLyd));
1553                btnNulstil.Visible := true;                btnNulstil.Visible := true;
1554                MainForm.Color := clRed;                MainForm.Color := clRed;
1555              end;              end;
1556           end;           end;
1557            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( menuNatXpress1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1558            begin            begin
1559              MainForm.Color := TUtils.HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1560              if Storepakker1.Checked then              if menuStorePakker.Checked then
1561              begin              begin
1562                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1563              end              end
1564              else              else
1565              begin              begin
1566                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1567              end;              end;
1568              btnNulstil.Visible := false;              btnNulstil.Visible := false;
1569            end            end
1570            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1571            begin            begin
1572              MainForm.Color := TUtils.HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1573              if Storepakker1.Checked then              if menuStorePakker.Checked then
1574              begin              begin
1575                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1576              end              end
1577              else              else
1578              begin              begin
1579                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1580              end;              end;
1581              btnNulstil.Visible := false;              btnNulstil.Visible := false;
1582            end            end
# Line 1695  begin Line 1591  begin
1591            begin            begin
1592              VisAlarmSkaerm('');              VisAlarmSkaerm('');
1593            end;            end;
1594    
1595           if not btnNulstil.Visible then           if not btnNulstil.Visible then
1596            begin            begin
1597    
1598              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1599              begin              begin
1600                if Storepakker1.Checked then                if menuStorePakker.Checked then
1601                begin                begin
1602                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(Config.ScannetOkStorLyd));
1603                end                end
1604                else                else
1605                begin                begin
1606                  PlaySound(PWideChar(ScannetOkLyd));                  PlaySound(PWideChar(Config.ScannetOkLyd));
1607                end;                end;
1608                InitLillePakke();                InitLillePakke();
1609              end;              end;
# Line 1744  begin Line 1641  begin
1641    
1642    Key := #0;    Key := #0;
1643    
1644    
1645    
1646    
1647    
1648    
1649  end; //End of OnKeyPress  end; //End of OnKeyPress
1650    
1651    
1652    
1653  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1654  const  const
1655    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1753  var Line 1657  var
1657    WebSvar : String;    WebSvar : String;
1658    URLStr : String;    URLStr : String;
1659  begin  begin
1660    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1661    begin    begin
1662      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1663      try      try
1664        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1665        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 1768  begin Line 1672  begin
1672        ShowMessage(logTekst);        ShowMessage(logTekst);
1673        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1674        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1675        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1676        Application.Terminate;        Application.Terminate;
1677      end;      end;
1678      end;      end;
# Line 1787  var Line 1691  var
1691    
1692    
1693  begin  begin
1694      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked or menuNatXpress1.Checked or menuIndlevering.Checked then
1695      begin      begin
1696        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1697          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1698          begin          begin
1699              wrkAntalSenere := 0;//initial Value
1700    
1701            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1702            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
# Line 1906  begin Line 1811  begin
1811                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1812              end;              end;
1813            end;            end;
1814  // 20150310: slut  
1815            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1816          end;          end;
1817      end;      end;
# Line 1936  procedure TMainForm.InitBladhus(); Line 1841  procedure TMainForm.InitBladhus();
1841    
1842  begin  begin
1843    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1844    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1845    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1846    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1847    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1848    ListBox1.Visible := true;    ListBox1.Visible := true;
1849  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1850  // 20150317: start  
1851  (*    if menuDaoDirekte1.Checked then
   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  
   if Budlevering1.Checked then  
1852    begin    begin
1853      IndlesScanningLogFil();      IndlesScanningLogFil();
1854    end;    end;
# Line 1995  begin Line 1860  begin
1860      01 :      01 :
1861            begin;      // NS            begin;      // NS
1862              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1863              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1864              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1865              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1866              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1867              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2007  begin Line 1872  begin
1872      02 :      02 :
1873            begin;    // BK            begin;    // BK
1874              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1875              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1876              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1877              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1878              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1879              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1880              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1881              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1882              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1883              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2022  begin Line 1887  begin
1887              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1888             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1889              begin              begin
1890                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1891              end              end
1892              else              else
1893              begin              begin
1894                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1895              end;              end;
1896              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1897              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1898              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1899              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1900              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2045  begin Line 1910  begin
1910            end;            end;
1911      04 :  begin;           // DBK      04 :  begin;           // DBK
1912              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1913              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1914              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1915              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1916              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1917              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1918              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1919              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1920              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1921            end;            end;
# Line 2079  begin Line 1944  begin
1944    end;    end;
1945    
1946    
1947    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
1948    begin    begin
1949       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
1950       begin       begin
1951         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
1952       end;       end;
1953       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1954    end    end
1955    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
1956    begin    begin
1957       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1958    end    end
1959    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
1960    begin    begin
1961       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
1962    end    end
1963    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
1964    begin    begin
1965       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
1966    end    end
1967    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
1968    begin    begin
1969       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
1970    end    end
1971    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
1972    begin    begin
1973       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
1974    end    end
1975    else if menuIndlevering.Checked then    else if menuIndlevering.Checked then
1976    begin    begin
1977      URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);      URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
1978    end    end
1979    else    else
1980    begin    begin
1981      exit;      exit;
1982    end;    end;
1983    
1984      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
1985      begin
1986        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
1987      end;
1988    
1989    try    try
1990      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1991      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2136  begin Line 2007  begin
2007          end;          end;
2008      end;      end;
2009    end;    end;
2010    
2011    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2012    try    try
2013      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2014       begin       begin
2015        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2016        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2146  begin Line 2018  begin
2018        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2019        PrintNyLabel := False;        PrintNyLabel := False;
2020    
2021        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2022        begin        begin
2023          try          try
2024            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2159  begin Line 2031  begin
2031          end;          end;
2032        end;        end;
2033       end       end
2034      else if menuIndlevering.Checked then      else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2035      begin      begin
2036    
2037    
# Line 2170  begin Line 2042  begin
2042       begin       begin
2043         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2044         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2045         RuteNummer := PakkeshopLabel.Koreliste;         RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2046           Stregkode := PakkeshopLabel.Stregkode;
2047    
2048         PrintPakkeshopLabel( PakkeshopLabel );         LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2049           chkForstorTilDirekte.Checked := false;
2050    
2051       end;       end;
2052    
# Line 2185  begin Line 2059  begin
2059        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2060        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2061        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2062        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2063          begin          begin
2064          try          try
2065            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2216  begin Line 2090  begin
2090      begin      begin
2091        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2092        begin        begin
2093            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2094            PrintNyLabel := False;            //PrintNyLabel := False; //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
2095        end;        end;
2096      end      end
2097      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2098      begin      begin
2099         if (Leveringssted = 'E') and (Sted = 'DBK') then        Kommentar := Kommentar + ' Pakke burde være hos ' + Leveringssted;
2100         begin        //PrintNyLabel := False;  //ved fuld-daekning / X-ruter skal vi altid skrive label alligevel
           // Det er ok at DBK scanner pakker til E     (Schenker)  
        end  
        else  
        begin  
           Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';  
           PrintNyLabel := False;  
        end;  
2101      end;      end;
2102    except on e:exception do    except on e:exception do
2103      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);      raise exception.CreateFmt('Fejl i XML-format: %s',[e.Message]);
# Line 2249  begin Line 2116  begin
2116    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2117    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2118    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2119    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2120      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2121    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2122    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2261  begin Line 2128  begin
2128      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2129    end;    end;
2130    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2131    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2132    begin    begin
2133      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2134    end;    end;
2135    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2136    begin    begin
2137      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2138    end;    end;
2139    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2140       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2141    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2142    begin    begin
2143      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2144    end;    end;
2145    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2146    begin    begin
2147       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2148        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2287  begin Line 2154  begin
2154          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2155        end;        end;
2156    end;    end;
2157    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2158    begin    begin
2159      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2160    end;    end;
2161    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2162    begin    begin
2163      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2164      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2304  begin Line 2171  begin
2171        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2172      end;      end;
2173    end;    end;
2174      if menuIndlevering.Checked then
2175      begin
2176        List1Msg := Stregkode;
2177      end;
2178    
2179    
2180    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2181    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2182    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2183  end;  end;
2184    
2185  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2186  begin  begin
2187    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2188    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2325  pakkeForkertSted : Integer; Line 2198  pakkeForkertSted : Integer;
2198    kontrolKoreliste : string;    kontrolKoreliste : string;
2199    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2200  begin  begin
2201    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2202       RuteNummerST.Color := TUtils.HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2203    
2204    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 2363  begin Line 2236  begin
2236        end;        end;
2237    end    end
2238    else    else
2239    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2240    begin    begin
2241       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2242       begin       begin
2243          PrintNyLabel := false;          PrintNyLabel := false;
2244    
2245          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
2246          MainForm.Color := clRed;          MainForm.Color := clRed;
2247          btnNulstil.Visible := true;          btnNulstil.Visible := true;
2248    
# Line 2389  begin Line 2262  begin
2262            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2263            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2264    
2265            if (PrinterNavn = 'Ingen') then            if (Config.PrinterNavn = 'Ingen') then
2266            begin            begin
2267               PrintNyLabel := false;               PrintNyLabel := false;
2268            end;            end;
2269    
2270            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2271            begin            begin
2272              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2273              MainForm.Color := clRed;              MainForm.Color := clRed;
2274              btnNulstil.Visible := true;              btnNulstil.Visible := true;
2275            end;            end;
# Line 2422  begin Line 2295  begin
2295    
2296            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2297            begin            begin
2298              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2299              MainForm.Color := clRed;              MainForm.Color := clRed;
2300              btnNulstil.Visible := true;              btnNulstil.Visible := true;
2301            end;            end;
# Line 2432  begin Line 2305  begin
2305    
2306    end;    end;
2307    
2308    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2309    begin    begin
2310      case BladhusSted of      case BladhusSted of
2311        00 :  begin;        00 :  begin;
# Line 2444  begin Line 2317  begin
2317               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2318  // 20150304: slut  // 20150304: slut
2319                begin                begin
2320                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2321                end;                end;
2322              end;              end;
2323        01 :  begin;        01 :  begin;
# Line 2452  begin Line 2325  begin
2325                    // 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
2326                    // 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')
2327                begin                begin
2328                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2329                end;                end;
2330              end;              end;
2331        02 :  begin;        02 :  begin;
2332                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
2333                begin                begin
2334                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2335                end;                end;
2336              end;              end;
2337        03 :  begin;        03 :  begin;
# Line 2466  begin Line 2339  begin
2339                    // 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
2340                    // 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')
2341               begin               begin
2342                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2343               end;               end;
2344              end;              end;
2345        04 :  begin;        04 :  begin;
2346                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
2347                begin                begin
2348                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2349                end;                end;
2350              end;              end;
2351        else        else
# Line 2481  begin Line 2354  begin
2354    end;    end;
2355    
2356  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2357    if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then    if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2358    begin    begin
2359      exit;      exit;
2360    end;    end;
2361    
2362    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then    if menuDaoDirekte1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2363    begin    begin
2364    end    end
2365    else    else
2366    begin    begin
2367      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then      if ( (Config.PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2368      begin      begin
2369        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2370        if (chkAltidPrintLabel.Checked) then        if (chkAltidPrintLabel.Checked) then
# Line 2508  begin Line 2381  begin
2381        end;        end;
2382        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2383        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2384        with Printer do  
2385        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2386          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;  
2387      end;      end;
2388    end;    end;
2389    
2390  end;  end;
2391    
 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;  
2392    
2393    
2394  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2395  begin  begin
2396      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2397      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2398  end;  end;
2399    
2400  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2401  begin  begin
2402      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2403      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2404  end;  end;
2405    
# Line 2629  begin Line 2442  begin
2442    end;    end;
2443  end;  end;
2444    
2445  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2446  begin  begin
2447        Scanningtype := '5';        Scanningtype := '5';
2448        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2638  end; Line 2451  end;
2451    
2452  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2453  begin  begin
2454      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2455      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2456      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2457    
# Line 2650  begin Line 2463  begin
2463        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2464        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2465        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2466        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2467      end;      end;
2468  // 20150317: slut  // 20150317: slut
2469  end;  end;
# Line 2665  begin Line 2478  begin
2478    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2479    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...');
2480    
2481          // Tjekker urls    try
2482          logTekst := 'Tjekker urls.';      // Tjekker urls
2483          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2484          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2485        SkrivScanningLogFil(logTekst);
2486    
         // Tjekker UrlNormal  
         if PanelValg1.Enabled = true then  
         begin  
           if 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;  
2487    
         // Tjekker UrlReturDAO  
         if PanelValg2.Enabled = true then  
         begin  
           if 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;  
2488    
2489          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2490          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2491          begin      begin
2492            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2493            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;  
2494    
2495          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2496          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2497          begin      begin
2498            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2499            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;  
2500    
2501          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2502          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2503          begin      begin
2504            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2505            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;  
2506    
2507          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2508          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2509          begin      begin
2510            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2511            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;  
2512    
2513          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2514          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2515          or (PanelValg4.Enabled = true) then      begin
2516          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2517            if 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;  
2518    
2519          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2520          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2521          begin      begin
2522            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2523            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;  
2524    
2525          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2526          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2527          begin      begin
2528            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2529            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;  
2530    
2531          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2532          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2533          begin      begin
2534            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2535            begin      end;
             logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;  
             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;  
2536    
2537        // Tjekker UrlPakkeshopManglendeReturScanninger
2538        if PanelValg6.Enabled = true then
2539        begin
2540          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2541        end;
2542    
2543          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2544          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2545          begin      begin
2546            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2547            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2548              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;      end;
             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;  
2549    
2550        // Tjekker UrlEKLoverforsel
2551        if PanelValg1.Enabled = true then
2552        begin
2553          TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2554        end;
2555    
         // Tjekker UrlFindPakketype  
         if 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;  
2556    
2557          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2558          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2559          begin      begin
2560            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2561            SkrivScanningLogFil(logTekst);      end;
         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;  
2562    
         if urlFejl > 0 then  
         begin  
           TjekUrls := '-';   // markerer at der var fejl  
         end  
         else  
         begin  
           logTekst := 'urls er ok';  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
2563    
2564        // Tjekker UrlFindPakketype
2565        TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2566    
2567        // Tjekker UrlSendPrograminfo
2568        TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2569    
2570    
2571    
2572        logTekst := 'urls er ok';
2573        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2574        SkrivScanningLogFil(logTekst);
2575    
2576      Except
2577        Config.TjekUrls := '-';   // markerer at der var fejl
2578    
2579      end;
2580  end;  end;
2581    
2582  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2583  var  const
2584     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2585  begin  begin
2586     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2587     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2588     Result := SystemTimeToDateTime(SystemTime) ;    begin
2589        logTekst := UrlNavn + ' accepteret: ' + Url;
2590        SkrivScanningLogFil(logTekst);
2591      end
2592      else
2593      begin
2594        inc(urlFejl);   // Optæller antal fejl
2595        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2596        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2597        if Config.TjekUrls = '1' then
2598        begin
2599          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2600        end;
2601    
2602        SkrivScanningLogFil(logTekst);
2603    
2604        if Config.TjekUrls = '1' then
2605        begin
2606          ShowMessage(logTekst);
2607          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2608          Application.Terminate;
2609    
2610          raise Exception.Create('UrlFejl');
2611    
2612        end;
2613      end;
2614    
2615  end;  end;
2616    
2617    
2618    
2619  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2620  var  var
2621    SR: TSearchRec;    SR: TSearchRec;
# Line 3074  begin Line 2635  begin
2635    
2636          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2637          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2638          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2639          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2640          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2641          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
# Line 3124  begin Line 2685  begin
2685    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2686    begin    begin
2687       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2688       UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut       Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2689       Application.Terminate;       Application.Terminate;
2690       exit;       exit;
2691    end;    end;
# Line 3134  begin Line 2695  begin
2695    if Farve <> '' then    if Farve <> '' then
2696    begin    begin
2697       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  
2698    end;    end;
2699    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2700    begin    begin
2701       InitLillePakke();       InitLillePakke();
2702    end;    end;
# Line 3207  end; Line 2758  end;
2758    
2759  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2760  begin  begin
 // 20150311: start  
 (*  
   if PanelValgA.Color = clBtnFace then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
2761  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2762  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2763       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2764       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2765       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2766  // 20150311: slut  
2767    
2768    
2769  end;  end;
2770    
2771  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2772  begin  begin
2773        Scanningtype := '1';        Scanningtype := '1';
2774        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3249  var Line 2787  var
2787    Leveringssted : String;    Leveringssted : String;
2788    orgTjekUrls : String;    orgTjekUrls : String;
2789  begin  begin
2790    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2791    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2792    begin    begin
2793      TjekkerUrls();      TjekkerUrls();
2794    end;    end;
2795    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2796    begin    begin
2797      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2798      RuteNummer := '';      RuteNummer := '';
# Line 3263  begin Line 2801  begin
2801      Koreliste := '';      Koreliste := '';
2802      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2803      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2804      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2805      MainForm.Color := clRed;      MainForm.Color := clRed;
2806      btnNulstil.Visible := true;      btnNulstil.Visible := true;
2807    end    end
# Line 3279  begin Line 2817  begin
2817      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2818      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2819    end;    end;
2820    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2821    
2822  end;  end;
2823    
# Line 3300  begin Line 2838  begin
2838    Falsk := False;    Falsk := False;
2839    
2840    
2841    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2842    begin    begin
2843      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2844    end    end
2845    else if PrinterNavn = 'Ingen' then    else if Config.PrinterNavn = 'Ingen' then
2846    begin    begin
2847      ShowMessage('Der er fravalgt printer i dette program.');      ShowMessage('Der er fravalgt printer i dette program.');
2848    end    end
# Line 3315  begin Line 2853  begin
2853      DBKbane := '999';      DBKbane := '999';
2854      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2855      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2856      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2857    end;    end;
2858    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2859  end;  end;
2860    
2861  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2862  begin  begin
2863    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2864    begin    begin
2865      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2866    end    end
2867    else    else
2868    begin    begin
# Line 3342  var Line 2880  var
2880   tekst, filversion : String;   tekst, filversion : String;
2881  begin  begin
2882    
2883    filversion := Sto_GetFmtFileVersion('');    filversion := TUtils.Sto_GetFmtFileVersion('');
2884    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';    tekst := 'Program til indscanning af pakker'+crlf+'Version '+filversion+crlf+crlf+'Udviklet af it afdelingen, DAO';
2885    
2886    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3378  begin Line 2916  begin
2916      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2917      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
2918      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2919      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
2920    end;    end;
2921    
2922    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
2923    
2924  end;  end;
2925    
2926    
2927  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
2928    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
2929  var  var
# Line 3437  begin Line 2976  begin
2976    
2977    if FileExists(fileName) then    if FileExists(fileName) then
2978    begin    begin
2979      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
2980      begin      begin
2981        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
2982        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3461  begin Line 3000  begin
3000    
3001    if FileExists(fileName) then    if FileExists(fileName) then
3002    begin    begin
3003      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3004      begin      begin
3005        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3006        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3007      end      end
3008      else      else
3009      begin      begin
3010        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3011      end;      end;
3012    end    end
3013    else    else
# Line 3499  begin Line 3038  begin
3038    
3039  end;  end;
3040    
3041  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3042  begin  begin
3043        Scanningtype := '2';        Scanningtype := '2';
3044        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3045        InitReturFraDao();        InitReturFraDao();
3046  end;  end;
3047    
3048  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3049  begin  begin
3050        Scanningtype := '6';        Scanningtype := '6';
3051        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3515  end; Line 3054  end;
3054    
3055  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3056  begin  begin
3057        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3058        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3059        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3060        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3061        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3062        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3063    
# Line 3529  begin Line 3068  begin
3068        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3069        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3070        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3071        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3072        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3073        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3074        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3075        ListBox1.Visible := true;        ListBox1.Visible := true;
3076        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3077        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3078        InitLillePakke();        InitLillePakke();
3079        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3080    
3081          chkForstorTilDirekte.Checked := false;
3082          chkForstorTilDirekte.Enabled := false;
3083    
3084        if BladhusSted = 0 then        if BladhusSted = 0 then
3085        begin        begin
3086          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3547  end; Line 3090  end;
3090    
3091  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3092  begin  begin
3093        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3094        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3095        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3096        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3097        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3098        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3099    
# Line 3561  begin Line 3104  begin
3104        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3105        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3106        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3107        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3108        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3109        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3110        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3111        ListBox1.Visible := true;        ListBox1.Visible := true;
3112        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3113        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3114        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3115    
3116          chkForstorTilDirekte.Checked := false;
3117          chkForstorTilDirekte.Enabled := false;
3118    
3119        InitLillePakke();        InitLillePakke();
3120  end;  end;
3121    
3122  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3123  begin  begin
3124        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3125        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3126        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3127        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3128        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3129        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3130    
# Line 3587  begin Line 3134  begin
3134        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3135        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3136        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3137        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3138        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3139        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3140        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3141        ListBox1.Visible := true;        ListBox1.Visible := true;
3142        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3143        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3144        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3145    
3146          chkForstorTilDirekte.Checked := false;
3147          chkForstorTilDirekte.Enabled := false;
3148    
3149        InitLillePakke();        InitLillePakke();
3150  end;  end;
3151    
3152  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3153  begin  begin
3154        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3155        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3156        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3157        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3158        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3159        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3160    
# Line 3614  begin Line 3165  begin
3165        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3166        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3167        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3168        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3169        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3170        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3171        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3172        ListBox1.Visible := true;        ListBox1.Visible := true;
3173        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3174        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3175        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3176        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3177        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3178        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3179        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3180    
3181          chkForstorTilDirekte.Checked := false;
3182          chkForstorTilDirekte.Enabled := true;
3183    
3184        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3185        begin        begin
3186            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3636  end; Line 3191  end;
3191    
3192  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3193  begin  begin
3194        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3195        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3196        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3197        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3198        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3199        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3200    
# Line 3650  begin Line 3205  begin
3205        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3206        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3207        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3208        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3209        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3210        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3211        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3212        ListBox1.Visible := true;        ListBox1.Visible := true;
3213        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3214        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3215        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3216    
3217        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3218    
3219          chkForstorTilDirekte.Checked := false;
3220          chkForstorTilDirekte.Enabled := true;
3221    
3222        InitLillePakke();        InitLillePakke();
3223        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3673  end; Line 3231  end;
3231    
3232  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3233  begin  begin
3234        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3235        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3236        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3237        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3238        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3239        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3240    
# Line 3687  begin Line 3245  begin
3245        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3246        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3247        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3248        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3249        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3250        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3251        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3252        ListBox1.Visible := true;        ListBox1.Visible := true;
3253        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3254        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3255        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3256        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3257    
3258          chkForstorTilDirekte.Checked := false;
3259          chkForstorTilDirekte.Enabled := false;
3260    
3261    
3262        InitLillePakke();        InitLillePakke();
3263        IndlesScanningLogFil();        IndlesScanningLogFil();
3264        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3706  begin Line 3269  begin
3269        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3270  end;  end;
3271    
3272  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3273  begin  begin
3274        Scanningtype := '3';        Scanningtype := '3';
3275        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3716  end; Line 3279  end;
3279  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3280  begin  begin
3281        menuIndlevering.Checked := true;        menuIndlevering.Checked := true;
3282        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3283    
3284        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3285        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3286        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3287        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3288    
# Line 3733  begin Line 3296  begin
3296    
3297    
3298    
3299        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3300        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3301        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3302        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3303        ListBox1.Visible := true;        ListBox1.Visible := true;
3304        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3305    
3306        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3307        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3308        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3309    
3310          chkForstorTilDirekte.Checked := false;
3311          chkForstorTilDirekte.Enabled := false;
3312    
3313    
3314        InitLillePakke();        InitLillePakke();
3315        IndlesScanningLogFil();        IndlesScanningLogFil();
3316        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3754  begin Line 3322  begin
3322  end;  end;
3323    
3324    
3325  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3326  begin  begin
3327    InitStorPakke();    InitStorPakke();
3328  end;  end;
3329    
3330  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3331  begin  begin
3332    InitLillePakke();    InitLillePakke();
3333  end;  end;
# Line 3767  end; Line 3335  end;
3335  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3336  begin  begin
3337    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3338    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3339  //  Stregkode := '';  //  Stregkode := '';
3340  end;  end;
3341    
3342  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3343  begin  begin
3344    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3345    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3346  // 20150310: start  // 20150310: start
3347  //  Stregkode := '';  //  Stregkode := '';
3348  // 20150310: slut  // 20150310: slut
3349  end;  end;
3350    
 /// <summary>  
 ///   This function reads the file resource of "FileName" and returns  
 ///   the version number as formatted text.</summary>  
 /// <example>  
 ///   Sto_GetFmtFileVersion() = '4.13.128.0'  
 ///   Sto_GetFmtFileVersion('', '%.2d-%.2d-%.2d') = '04-13-128'  
 /// </example>  
 /// <remarks>If "Fmt" is invalid, the function may raise an  
 ///   EConvertError exception.</remarks>  
 /// <param name="FileName">Full path to exe or dll. If an empty  
 ///   string is passed, the function uses the filename of the  
 ///   running exe or dll.</param>  
 /// <param name="Fmt">Format string, you can use at most four integer  
 ///   values.</param>  
 /// <returns>Formatted version number of file, '' if no version  
 ///   resource found.</returns>  
 function TMainForm.Sto_GetFmtFileVersion(const FileName: String = ''): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Integer;  
 begin  
   // set default value  
   Result := '';  
   // get filename of exe/dll if no filename is specified  
   sFileName := Trim(FileName);  
   if (sFileName = '') then  
     sFileName := GetModuleName(HInstance);  
   // get size of version info (0 if no version info exists)  
   iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);  
   if (iBufferSize > 0) then  
   begin  
     GetMem(pBuffer, iBufferSize);  
     try  
     // get fixed file info (language independent)  
     GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);  
     VerQueryValue(pBuffer, '\', pFileInfo, iDummy);  
     // read version blocks  
     iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);  
     iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);  
     finally  
       FreeMem(pBuffer);  
     end;  
3351    
     // format result string  
     Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]);  
   
   end;  
 end;  
3352    
3353  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3354  begin  begin
# Line 3846  end; Line 3361  end;
3361    
3362  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3363  begin  begin
3364     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3365     begin     begin
3366       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3367     end     end
3368     else     else
3369     begin     begin
# Line 3860  procedure TMainForm.Testlyd2Click(Sender Line 3375  procedure TMainForm.Testlyd2Click(Sender
3375  begin  begin
3376    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3377    begin    begin
3378       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3379       begin       begin
3380         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3381       end       end
3382       else       else
3383       begin       begin
# Line 3871  begin Line 3386  begin
3386       exit;       exit;
3387    end;    end;
3388    
3389    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3390       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3391       begin       begin
3392         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3393       end       end
3394       else       else
3395       begin       begin
3396         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3397       end;       end;
3398    if Storepakker1.Checked then    if menuStorePakker.Checked then
3399       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3400       begin       begin
3401         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3402       end       end
3403       else       else
3404       begin       begin
# Line 3892  begin Line 3407  begin
3407  end;  end;
3408    
3409    
3410  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3411  begin  begin
3412        Scanningtype := '4';        Scanningtype := '4';
3413        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3904  begin; Line 3419  begin;
3419    CheckCode();    CheckCode();
3420  end;  end;
3421    
3422  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3423  var  var
3424    WebSvar : String;    WebSvar : String;
3425    URLStr : String;    URLStr : String;
# Line 3914  var Line 3429  var
3429    status, kommentar : String;    status, kommentar : String;
3430    
3431  begin  begin
3432      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3433    
3434      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Overfører de scannede pakker til EKL');
3435      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3436      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3437      StedKode := Sted;      StedKode := Sted;
3438      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3439  // 20150330: start  
3440      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3441      begin      begin
3442        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3443      end;      end;
3444  // 20150330: slut  
3445    
3446      try      try
3447      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3977  begin Line 3492  begin
3492        end;        end;
3493      end;      end;
3494    
3495      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3496    
3497      ListBox1.SetFocus;  // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
3498    
3499      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3500      if status = 'Fejl' then      if status = 'Fejl' then
3501      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3502         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3503         MainForm.Color := clRed;         MainForm.Color := clRed;
3504         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3505         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 4503  begin Line 4018  begin
4018    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode    ListBox1.SetFocus;  // for at flytte fokus væk fra upload knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4019  end;  end;
4020    
4021  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4022  begin  begin
4023      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4024      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4025  end;  end;
4026    
4027  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4028  const  const
4029    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4030    
# Line 4518  begin Line 4033  begin
4033      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode      ListBox1.SetFocus;  // for at flytte fokus væk fra download knappen så denne ikke aktiveres ved scanning / indtastning af stregkode
4034  end;  end;
4035    
4036  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4037  begin  begin
4038      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4039      begin      begin
# Line 4528  begin Line 4043  begin
4043  end;  end;
4044    
4045    
 // ToDo: PrintPakkeshopLabel()  
 procedure TMainForm.PrintPakkeshopLabel( PakkeshopLabel : TPakkeshopLabel);  
 var  
   XForm, XFormOld: TXForm; //Bruges til rotate X-formation  
   Angle: integer;  
   gMode: integer;  
   BarcodeArea: TRect;  
   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;  
   
4046    
4047  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4048  var  var
# Line 4661  var Line 4053  var
4053    I: Integer;    I: Integer;
4054    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4055    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4056    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4057    pakketyper : TStrings;    //pakketyper : TStrings;
4058      pakketyper : TDictionary<String, Integer>;
4059      tmpAntal : Integer;
4060    
4061     time, timeSamlet : TTimingHelper;
4062    
4063    
4064    antlin : Integer;    antlin : Integer;
4065    
4066    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4067    
4068    XmlFelter : TStrings;    //XmlFelter : TStrings;
4069      XmlFelter : TDictionary<String, Integer>;
4070    
4071   begin   begin
4072      XmlFelter := TStringList.Create;  
4073      pakketyper := TStringList.Create;  
4074        XmlFelter := TDictionary<String, Integer>.Create;
4075        pakketyper := TDictionary<String, Integer>.Create;
4076    
4077      linienr := 0;      linienr := 0;
4078      ListBox2.Clear;      ListBox2.Clear;
4079      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 4686  var Line 4088  var
4088          StedKode := Sted;          StedKode := Sted;
4089        end;        end;
4090    
4091          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4092    
4093      if (Scanningtype = '6') then  
4094    
4095        if (Scanningtype = '7') then
4096       begin       begin
4097        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4098         end
4099        else if (Scanningtype = '6') then
4100         begin
4101          URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4102       end       end
4103      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4104       begin       begin
4105        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4106       end       end
4107      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4108       begin       begin
4109        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4110       end       end
4111      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4112       begin       begin
4113        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4114       end       end
4115      else      else
4116       begin       begin
# Line 4709  var Line 4118  var
4118       end;       end;
4119  // 20150310: slut  // 20150310: slut
4120    
4121        time := TTimingHelper.create();        //DEBUG
4122        timeSamlet := TTimingHelper.create();        //DEBUG
4123    
4124      try      try
4125      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4126  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4718  var Line 4130  var
4130        begin        begin
4131          // 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
4132          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4133    
4134    
4135    
4136        end;        end;
4137        on e:exception do        on e:exception do
4138        begin        begin
# Line 4728  var Line 4143  var
4143        end;        end;
4144      end;      end;
4145      try      try
4146          time.stop('HTTP Load');     //DEBUG
4147    
4148        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4149    
4150          time.stop('XML Load');     //DEBUG
4151    
4152    
4153    
4154    
4155    
4156    
4157        antlin := 0;        antlin := 0;
4158        antlinIdag := 0;        antlinIdag := 0;
# Line 4740  var Line 4163  var
4163            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4164              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4165              begin              begin
4166                 antlin := antlin + 1;                 Inc(antlin);
4167                 // 20150306: start                 // 20150306: start
4168                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4169                begin                begin
4170                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4171                   begin                   begin
4172                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4173                   end                   end
4174                   else                   else
4175                   begin                   begin
4176                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4177                   end;                   end;
4178                end;                end;
4179                 // 20150306: slut                 // 20150306: slut
4180              end;              end;
4181            end;            end;
4182            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4183                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4184                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4185                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4186                  end
4187                else                else
4188                  XmlFelter.values[Node.NodeName] := '1';                begin
4189                    XmlFelter.Add(Node.NodeName, 1);
4190                  end;
4191    
4192        end;        end;
4193        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4767  var Line 4195  var
4195        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4196        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4197    
4198          time.stop('Antal Linier');//DEBUG
4199    
4200          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4201    
4202        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4203        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4204        begin        begin
# Line 4775  var Line 4207  var
4207        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4208    
4209        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4210    
4211    
4212        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4213            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4214            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4782  var Line 4216  var
4216                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4217                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4218                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4219              end;              end
4220              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4221                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4222                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4223                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4224              end;              end
4225              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4226                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4227                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4228                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4229              end;              end
4230              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4231                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4232                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4233                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4234              end;              end
4235              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4236                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4237                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4238                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4239                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4240                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4241                    pakketyper.TryGetValue(pakketype, tmpAntal);
4242                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4243                  end
4244                else                else
4245                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4246              end;              end
4247              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4248                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4249                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4250                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4251                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4252                  begin                  begin
4253  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4254                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4255                    begin                    begin
4256                      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 4826  var Line 4262  var
4262                    linienr := linienr + 1;                    linienr := linienr + 1;
4263                  end;                  end;
4264              end;              end;
4265    
4266    
4267              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4268              begin              begin
4269                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4841  var Line 4279  var
4279              end;              end;
4280            end;            end;
4281        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4282    
4283          // Free up the list object  
4284          time.stop('Fyld Listbox2');//DEBUG
4285    
4286    
4287          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4288    
4289    
4290          for pakketype in pakketyper.Keys do
4291          begin
4292            pakketyper.TryGetValue(pakketype, tmpAntal);
4293            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4294          end;
4295    
4296            // Free up the dictionary object
4297        pakketyper.Free;        pakketyper.Free;
4298    
4299    
4300    
4301  //      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.');
4302        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4303        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4953  var Line 4403  var
4403        end;        end;
4404      end;      end;
4405    
4406        time.stop('Done');//DEBUG
4407        timeSamlet.stop('SamletTid');//DEBUG
4408    
4409    
4410  end;  end;
4411    
4412  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 5128  begin Line 4582  begin
4582          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4583          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4584          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4585          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4586        end;        end;
4587      end;      end;
4588    end    end
# Line 5137  begin Line 4591  begin
4591        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4592        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4593        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4594        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4595    end;    end;
4596  end;  end;
4597    
# Line 5208  begin Line 4662  begin
4662          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4663          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4664          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4665          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4666        end;        end;
4667      end;      end;
4668    end    end
# Line 5217  begin Line 4671  begin
4671        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4672        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4673        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4674        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4675    end;    end;
4676  end;  end;
4677    
# Line 5275  procedure TMainForm.VisAlarmSkaerm(strMe Line 4729  procedure TMainForm.VisAlarmSkaerm(strMe
4729  begin  begin
4730    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4731    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4732    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(Config.AlarmLyd));
4733    MainForm.Color := clRed;    MainForm.Color := clRed;
4734    
4735    
# Line 5289  begin Line 4743  begin
4743      KommentarST.Caption := strMessage;      KommentarST.Caption := strMessage;
4744    end;    end;
4745    
4746      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4747    
4748  end;  end;
4749    
4750  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5348  begin Line 4804  begin
4804    result := svar;    result := svar;
4805  end;  end;
4806    
 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;  
4807    
4808  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4809  begin  begin
# Line 5380  begin Line 4817  begin
4817    end;    end;
4818  end;  end;
4819    
4820  function TMainForm.AdobeReaderExists: Boolean;  
4821  var  //Nedarvet fra IParentForm
4822    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4823  begin  begin
4824    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4825  end;  end;
4826    
4827    //Nedarvet fra IParentForm
4828  function TMainForm.CheckUrl(url:string):boolean;  procedure TMainForm.LogMessage( msg : string);
4829  var  begin
4830    hSession, hfile: hInternet;    ListBox1.Items.Insert(0, msg);
4831    dwindex,dwcodelen :dword;    SkrivScanningLogFil(msg);
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
   
4832  end;  end;
4833    
4834    
4835  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4836  type  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
4837  begin  begin
4838    
4839  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1    PrinterstatusStaticText1.Caption := txt;
4840  //            '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  
   begin  
     printerTxt := 'Der er fravalgt printer i dette program';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4841    begin    begin
4842      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4843      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4844      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4845    end    end
4846    else    else
4847    begin    begin
4848      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4849      try      PrinterstatusStaticText1.Color := clWhite;
4850        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;  
4851    end;    end;
4852  end;  end;
4853    
4854    //Nedarvet fra IParentForm
4855    function TMainForm.GetFormObject() : TForm;
4856    begin
4857      Result := self;
4858    end;
4859    
4860  end.  end.
4861    

Legend:
Removed from v.2682  
changed lines
  Added in v.3093

  ViewVC Help
Powered by ViewVC 1.1.20