/[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 3090 by torben, Mon Aug 15 19:26:48 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');  
557      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');  
558      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
     UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
     UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');  
     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');  
559    
560      if (SkrivLog = '1') then      if (SkrivLog = '1') then
561      begin      begin
562        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);
563        try        try
564          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
565          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
566          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
567          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
568          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
569          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 634  begin Line 575  begin
575    
576      if Scanningtype = 'A' then      if Scanningtype = 'A' then
577      begin      begin
578        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
579        Scanningtype := '1';        Scanningtype := '1';
580        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
581        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
582      end;      end;
583    
     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;  
584    
585      if SporgEfterBoghandler = '1' then  
586        if Config.SporgEfterBoghandler = '1' then
587      begin      begin
588        chkSporgEfterKunde.Checked := true;        chkSporgEfterKunde.Checked := true;
589        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
# Line 721  begin Line 594  begin
594        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
595      end;      end;
596    
597      if ScanTjekkode = '1' then      if Config.ScanTjekkode = '1' then
598      begin      begin
599        chkScanTjekkode.Checked := true;        chkScanTjekkode.Checked := true;
600        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
# Line 732  begin Line 605  begin
605        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
606      end;      end;
607    
608      if ScanTjekkodeAutomatik = '1' then      if Config.ScanTjekkodeAutomatik = '1' then
609      begin      begin
610        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
611        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
612        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
613      end;      end;
# Line 764  begin Line 637  begin
637  {$IfDef STED_BK}  {$IfDef STED_BK}
638      SpecialVersionSted := 'BK';      SpecialVersionSted := 'BK';
639  {$EndIf}  {$EndIf}
640    {$IfDef STED_TK}
641        SpecialVersionSted := 'TK';// BK-Trykkompagniet
642    {$EndIf}
643  {$IfDef STED_DBK}  {$IfDef STED_DBK}
644      SpecialVersionSted := 'DBK';      SpecialVersionSted := 'DBK';
645  {$EndIf}  {$EndIf}
# Line 774  begin Line 650  begin
650      SpecialVersionSted := 'NS';      SpecialVersionSted := 'NS';
651  {$EndIf}  {$EndIf}
652    
   
653      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
654      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
655      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 790  begin Line 665  begin
665      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
666      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
667    
 // 20150313: start  
668      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
669      begin      begin
670         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
671         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
672    
673          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
674          Sted := SpecialVersionSted;
675         // her skal vi også disable de knapper BK ikke kan bruge
676          PanelValg2.Enabled := false;
677          PanelValg2.Font.Color := clInactiveCaption;
678          PanelValg3.Enabled := false;
679          PanelValg3.Font.Color := clInactiveCaption;
680          //PanelValg6.Enabled := false;
681          //PanelValg6.Font.Color := clInactiveCaption;
682    
683         // her skal vi også disable de menupunkter FD ikke kan bruge
684          menuNatxpressReturDAO1.Enabled := false;
685          menuNatxpressReturfraKunde1.Enabled := false;
686    
687          //Returpakkerfrapakkeshop1.Enabled := false;
688      end;      end;
689    
690      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
691      begin      begin
692         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
693         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
694      end;  
 // 20150313: slut  
695    
     if SpecialVersionSted = 'BK' then  
     begin  
696        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
697        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
698       // 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 700  begin
700        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
701        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
702        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
703        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
704        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
705       // her skal vi også disable de menupunkter BK ikke kan bruge  
706        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
707        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
708        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
709        if SpecialVersionScanningtype = 'A' then  
710        begin        //Returpakkerfrapakkeshop1.Enabled := false;
711           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
712      end;      end;
713    
714      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
715      begin      begin
716        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
717        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
718        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
719        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
720        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
721        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
722        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
723        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
724        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
       PanelValg6.Enabled := false;  
       PanelValg6.Font.Color := clInactiveCaption;  
       PanelValg7.Enabled := false;  
       PanelValg7.Font.Color := clInactiveCaption;  
725    
726       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
727        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
728        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
729    
730        Pakkeshoplevering1.Enabled := false;        //Returpakkerfrapakkeshop1.Enabled := false;
       Returpakkerfrapakkeshop1.Enabled := false;  
731    
732        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
733        begin        begin
# Line 861  begin Line 739  begin
739        end;        end;
740      end;      end;
741    
742        if SpecialVersionSted = 'DBK' then
743        begin
744          Sted := SpecialVersionSted;
745        end;
746    
747      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
748      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
749      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 884  begin Line 767  begin
767        PanelValg7.Font.Color := clInactiveCaption;        PanelValg7.Font.Color := clInactiveCaption;
768       // 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
769    
770        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
771    
772        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
773        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
774        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
775        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
776        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
777        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
778        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
779        begin        begin
780          Scanningtype := '4';          Scanningtype := '4';
781          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
782          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
783          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
784        end        end
# Line 904  begin Line 787  begin
787          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
788          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
789          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
790          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
791          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
792          if Scanningtype = '1' then          if Scanningtype = '1' then
793          begin          begin
794            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
795            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
796            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
797          end;          end;
798          if Scanningtype = '2' then          if Scanningtype = '2' then
799          begin          begin
800            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
801            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
802            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
803          end;          end;
804          if Scanningtype = '3' then          if Scanningtype = '3' then
805          begin          begin
806            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
807            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
808            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
809          end;          end;
810          if Scanningtype = '4' then          if Scanningtype = '4' then
811          begin          begin
812            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
813            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
814            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
815          end;          end;
816          if Scanningtype = '5' then          if Scanningtype = '5' then
817          begin          begin
818            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
819            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
820            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
821          end;          end;
822          if Scanningtype = '6' then          if Scanningtype = '6' then
823          begin          begin
824            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
825            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
826            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
827          end;          end;
# Line 967  begin Line 850  begin
850          Application.Terminate;          Application.Terminate;
851      end;      end;
852    
853      if TjekUrls = '1' then    // Tjekker urls      if Config.TjekUrls = '1' then    // Tjekker urls
854      begin      begin
855          TjekkerUrls();          TjekkerUrls();
856          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
857          begin          begin
858             PlaySound(PWideChar(AlarmLyd));             PlaySound(PWideChar(Config.AlarmLyd));
859             MainForm.Color := clRed;             MainForm.Color := clRed;
860             RutenummerST.Caption := '';             RutenummerST.Caption := '';
861             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
# Line 1019  begin Line 902  begin
902    
903      if Pakketype = '1' then      if Pakketype = '1' then
904      begin      begin
905        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
906        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
907      end      end
908      else      else
909      begin      begin
910        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
911        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
912      end;      end;
913    
914      if TestFunktionen = '1' then      if Config.TestFunktionen = '1' then
915      begin      begin
916        Testforbindelsen1.Visible := true;        Testforbindelsen1.Visible := true;
917        Testprinter1.Visible := true;        Testprinter1.Visible := true;
918        Testlyd1.Visible := true;        Testlyd1.Visible := true;
919        Testlyd2.Visible := true;        Testlyd2.Visible := true;
920      end      end
921      else if TestFunktionen = '2' then      else if Config.TestFunktionen = '2' then
922      begin      begin
923        Testforbindelsen1.Enabled := false;        Testforbindelsen1.Enabled := false;
924        Testprinter1.Enabled := false;        Testprinter1.Enabled := false;
# Line 1050  begin Line 933  begin
933        Testlyd2.Visible := false;        Testlyd2.Visible := false;
934      end;      end;
935    
     if not FileExists(AlarmLyd) then  
     begin  
       AlarmLyd := '';  
     end;  
   
     if not FileExists(ScannetOkLyd) then  
     begin  
       ScannetOkLyd := '';  
     end;  
936    
     if not FileExists(ScannetOkStorLyd) then  
     begin  
       ScannetOkStorLyd := '';  
     end;  
   
   
     if not FileExists(ScannetOkTilTjekkodeLyd) then  
     begin  
       ScannetOkTilTjekkodeLyd := '';  
     end;  
937    
938    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
939    
940      CheckPrintQue('Opstart');      LabelPrint := TLabelPrint.Create( self, Config, Config.PrinterNavn );
941        LabelPrint.CheckPrintQue('Opstart', Config.PrinterNavn);
942    
943    finally    finally
944      Free;      Free;
# Line 1088  begin Line 947  begin
947      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
948      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
949      begin      begin
950        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
951        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
952        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
953        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
954        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
955        Testprinter1.Visible := false;        Testprinter1.Visible := false;
956        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
957        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
958      end;      end;
959    
960      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1146  begin Line 1005  begin
1005      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1006    
1007      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1008      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion(''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1009    
1010  end;  end;
1011    
# Line 1203  begin Line 1062  begin
1062      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1063      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1064      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1065        or (NumberString = 'DAO PAKKESHOP')
1066        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1067            or (LowerCase(NumberString) = 'for stor daodirekte' )
1068      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1069    
1070      begin      begin
# Line 1213  begin Line 1075  begin
1075      begin      begin
1076        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1077      end;      end;
1078    end;    end;  // Slut ctrl-v
1079    
1080    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1081    begin    begin
1082      if (Length(Trim(Stregkode)) = 0) then  
1083        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1084        Stregkode := Trim(Stregkode);
1085    
1086        if (Length(Stregkode) = 0) then
1087      begin      begin
1088        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1089    
# Line 1267  begin Line 1133  begin
1133         exit;         exit;
1134      end;      end;
1135    
1136        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1137        begin
1138          if chkForstorTilDirekte.Enabled then
1139          begin
1140            chkForstorTilDirekte.Checked := true;
1141          end
1142          else
1143          begin
1144             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1145          end;
1146          Stregkode := '';
1147          StregkodeST.Caption := StregKode;
1148          exit;
1149        end;
1150    
1151    
1152      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1153      begin      begin
1154         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1421  begin Line 1303  begin
1303      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1304      begin      begin
1305        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1306        URLStr := Format(UrlFindPakketype,[Stregkode]);        URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1307        try        try
1308          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1309          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
# Line 1464  begin Line 1346  begin
1346        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1347      end;      end;
1348    
1349      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1350          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1351          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1352          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1353          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1354          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1355      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1356          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1357    
1358         exit;         exit;
1359      end;      end;
1360    
1361      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1362      begin      begin
1363        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1364        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1505  begin Line 1387  begin
1387                InitPakkeshoplevering();                InitPakkeshoplevering();
1388              end;              end;
1389            end            end
1390        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1391              begin
1392                if Scanningtype <> '6' then
1393                begin
1394                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1395    
1396                 exit;
1397                end;
1398              end
1399    
1400    
1401        else        else
1402            begin            begin
1403            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1404              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1405                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1406    
1407               exit;               exit;
1408            end;            end;
1409        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1410      end      end
1411      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1412      begin      begin
1413        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1414    
1415        exit;        exit;
1416      end;      end;
1417    
1418      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1419      begin      begin
1420        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1421        begin        begin
# Line 1536  begin Line 1428  begin
1428    
1429    
1430    
1431      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1432      begin      begin
1433        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1434        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1549  begin Line 1441  begin
1441        end;        end;
1442      end;      end;
1443    
1444      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1445        begin        begin
1446          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1447             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
# Line 1559  begin Line 1451  begin
1451             Stregkode := '';             Stregkode := '';
1452             InitScreen();             InitScreen();
1453        end        end
1454      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1455        begin        begin
1456          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1457             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1571  begin Line 1463  begin
1463             Stregkode := '';             Stregkode := '';
1464             InitScreen();             InitScreen();
1465        end        end
1466      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1467        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1468         begin         begin
1469            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1580  begin Line 1472  begin
1472              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1473              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1474    
1475              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
1476    
1477             end             end
1478            else            else
# Line 1597  begin Line 1489  begin
1489             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1490             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1491             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1492             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1493                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(Config.FarvePakkeshoplevering);
1494             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1495                MainForm.Color := TUtils.HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(Config.FarveNormal);
1496             btnNulstil.Visible := false;             btnNulstil.Visible := false;
1497           end           end
1498          else          else
1499           begin           begin
1500                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1501                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1502                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1503                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1504                                    
1505                StregKode := '';                StregKode := '';
# Line 1619  begin Line 1511  begin
1511          InitScreen();          InitScreen();
1512       end;       end;
1513    
1514      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
1515      begin      begin
1516         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1517           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1518            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1519         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1520            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1521         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1522         try         try
# Line 1637  begin Line 1530  begin
1530    
1531              exit;              exit;
1532            end;            end;
1533            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1534            begin            begin
1535              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1536              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1653  begin Line 1546  begin
1546              tjekkodemangler := pos('Tjekkode mangler', Kommentar);              tjekkodemangler := pos('Tjekkode mangler', Kommentar);
1547              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1548              begin              begin
1549                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(Config.AlarmLyd));
1550                btnNulstil.Visible := true;                btnNulstil.Visible := true;
1551                MainForm.Color := clRed;                MainForm.Color := clRed;
1552              end;              end;
1553           end;           end;
1554            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
1555            begin            begin
1556              MainForm.Color := TUtils.HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1557              if Storepakker1.Checked then              if menuStorePakker.Checked then
1558              begin              begin
1559                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1560              end              end
1561              else              else
1562              begin              begin
1563                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1564              end;              end;
1565              btnNulstil.Visible := false;              btnNulstil.Visible := false;
1566            end            end
1567            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1568            begin            begin
1569              MainForm.Color := TUtils.HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1570              if Storepakker1.Checked then              if menuStorePakker.Checked then
1571              begin              begin
1572                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(Config.ScannetOkStorLyd));
1573              end              end
1574              else              else
1575              begin              begin
1576                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(Config.ScannetOkLyd));
1577              end;              end;
1578              btnNulstil.Visible := false;              btnNulstil.Visible := false;
1579            end            end
# Line 1695  begin Line 1588  begin
1588            begin            begin
1589              VisAlarmSkaerm('');              VisAlarmSkaerm('');
1590            end;            end;
1591    
1592           if not btnNulstil.Visible then           if not btnNulstil.Visible then
1593            begin            begin
1594    
1595              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1596              begin              begin
1597                if Storepakker1.Checked then                if menuStorePakker.Checked then
1598                begin                begin
1599                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(Config.ScannetOkStorLyd));
1600                end                end
1601                else                else
1602                begin                begin
1603                  PlaySound(PWideChar(ScannetOkLyd));                  PlaySound(PWideChar(Config.ScannetOkLyd));
1604                end;                end;
1605                InitLillePakke();                InitLillePakke();
1606              end;              end;
# Line 1744  begin Line 1638  begin
1638    
1639    Key := #0;    Key := #0;
1640    
1641    
1642    
1643    
1644    
1645    
1646  end; //End of OnKeyPress  end; //End of OnKeyPress
1647    
1648    
1649    
1650  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1651  const  const
1652    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1753  var Line 1654  var
1654    WebSvar : String;    WebSvar : String;
1655    URLStr : String;    URLStr : String;
1656  begin  begin
1657    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1658    begin    begin
1659      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1660      try      try
1661        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1662        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 1768  begin Line 1669  begin
1669        ShowMessage(logTekst);        ShowMessage(logTekst);
1670        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1671        // 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
1672        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1673        Application.Terminate;        Application.Terminate;
1674      end;      end;
1675      end;      end;
# Line 1787  var Line 1688  var
1688    
1689    
1690  begin  begin
1691      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
1692      begin      begin
1693        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1694          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1695          begin          begin
1696              wrkAntalSenere := 0;//initial Value
1697    
1698            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1699            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
# Line 1906  begin Line 1808  begin
1808                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1809              end;              end;
1810            end;            end;
1811  // 20150310: slut  
1812            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1813          end;          end;
1814      end;      end;
# Line 1936  procedure TMainForm.InitBladhus(); Line 1838  procedure TMainForm.InitBladhus();
1838    
1839  begin  begin
1840    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1841    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1842    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1843    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1844    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1845    ListBox1.Visible := true;    ListBox1.Visible := true;
1846  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1847  // 20150317: start  
1848  (*    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  
1849    begin    begin
1850      IndlesScanningLogFil();      IndlesScanningLogFil();
1851    end;    end;
# Line 1995  begin Line 1857  begin
1857      01 :      01 :
1858            begin;      // NS            begin;      // NS
1859              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1860              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1861              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1862              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1863              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1864              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2007  begin Line 1869  begin
1869      02 :      02 :
1870            begin;    // BK            begin;    // BK
1871              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1872              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1873              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1874              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1875              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1876              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1877              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1878              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1879              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1880              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2022  begin Line 1884  begin
1884              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1885             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1886              begin              begin
1887                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1888              end              end
1889              else              else
1890              begin              begin
1891                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1892              end;              end;
1893              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1894              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1895              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1896              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1897              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2045  begin Line 1907  begin
1907            end;            end;
1908      04 :  begin;           // DBK      04 :  begin;           // DBK
1909              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1910              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1911              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1912              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1913              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1914              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1915              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1916              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1917              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1918            end;            end;
# Line 2079  begin Line 1941  begin
1941    end;    end;
1942    
1943    
1944    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
1945    begin    begin
1946       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
1947       begin       begin
1948         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
1949       end;       end;
1950       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
1951    end    end
1952    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
1953    begin    begin
1954       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
1955    end    end
1956    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
1957    begin    begin
1958       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
1959    end    end
1960    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
1961    begin    begin
1962       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
1963    end    end
1964    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
1965    begin    begin
1966       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
1967    end    end
1968    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
1969    begin    begin
1970       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
1971    end    end
1972    else if menuIndlevering.Checked then    else if menuIndlevering.Checked then
1973    begin    begin
1974      URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);      URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
1975    end    end
1976    else    else
1977    begin    begin
1978      exit;      exit;
1979    end;    end;
1980    
1981      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
1982      begin
1983        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
1984      end;
1985    
1986    try    try
1987      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1988      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2136  begin Line 2004  begin
2004          end;          end;
2005      end;      end;
2006    end;    end;
2007    
2008    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2009    try    try
2010      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2011       begin       begin
2012        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2013        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2146  begin Line 2015  begin
2015        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2016        PrintNyLabel := False;        PrintNyLabel := False;
2017    
2018        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2019        begin        begin
2020          try          try
2021            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2159  begin Line 2028  begin
2028          end;          end;
2029        end;        end;
2030       end       end
2031      else if menuIndlevering.Checked then      else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2032      begin      begin
2033    
2034    
# Line 2170  begin Line 2039  begin
2039       begin       begin
2040         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label         PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2041         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc         PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2042         RuteNummer := PakkeshopLabel.Koreliste;         RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2043           Stregkode := PakkeshopLabel.Stregkode;
2044    
2045         PrintPakkeshopLabel( PakkeshopLabel );         LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2046           chkForstorTilDirekte.Checked := false;
2047    
2048       end;       end;
2049    
# Line 2185  begin Line 2056  begin
2056        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2057        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2058        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2059        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2060          begin          begin
2061          try          try
2062            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2216  begin Line 2087  begin
2087      begin      begin
2088        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2089        begin        begin
2090            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2091            PrintNyLabel := False;            PrintNyLabel := False;
2092        end;        end;
2093      end      end
2094      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2095      begin      begin
2096         if (Leveringssted = 'E') and (Sted = 'DBK') then         if (Leveringssted = 'E') and (Sted = 'DBK') then
2097         begin         begin
# Line 2228  begin Line 2099  begin
2099         end         end
2100         else         else
2101         begin         begin
2102            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2103            PrintNyLabel := False;            PrintNyLabel := False;
2104         end;         end;
2105      end;      end;
# Line 2249  begin Line 2120  begin
2120    //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
2121    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2122    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2123    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2124      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2125    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2126    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2261  begin Line 2132  begin
2132      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2133    end;    end;
2134    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2135    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2136    begin    begin
2137      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2138    end;    end;
2139    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2140    begin    begin
2141      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2142    end;    end;
2143    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2144       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2145    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2146    begin    begin
2147      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2148    end;    end;
2149    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2150    begin    begin
2151       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2152        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2287  begin Line 2158  begin
2158          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2159        end;        end;
2160    end;    end;
2161    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2162    begin    begin
2163      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2164    end;    end;
2165    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2166    begin    begin
2167      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2168      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2304  begin Line 2175  begin
2175        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2176      end;      end;
2177    end;    end;
2178      if menuIndlevering.Checked then
2179      begin
2180        List1Msg := Stregkode;
2181      end;
2182    
2183    
2184    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2185    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2186    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2187  end;  end;
2188    
2189  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2190  begin  begin
2191    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2192    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2325  pakkeForkertSted : Integer; Line 2202  pakkeForkertSted : Integer;
2202    kontrolKoreliste : string;    kontrolKoreliste : string;
2203    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2204  begin  begin
2205    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2206       RuteNummerST.Color := TUtils.HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2207    
2208    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 2363  begin Line 2240  begin
2240        end;        end;
2241    end    end
2242    else    else
2243    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2244    begin    begin
2245       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2246       begin       begin
2247          PrintNyLabel := false;          PrintNyLabel := false;
2248    
2249          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
2250          MainForm.Color := clRed;          MainForm.Color := clRed;
2251          btnNulstil.Visible := true;          btnNulstil.Visible := true;
2252    
# Line 2389  begin Line 2266  begin
2266            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2267            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2268    
2269            if (PrinterNavn = 'Ingen') then            if (Config.PrinterNavn = 'Ingen') then
2270            begin            begin
2271               PrintNyLabel := false;               PrintNyLabel := false;
2272            end;            end;
2273    
2274            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
2275            begin            begin
2276              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2277              MainForm.Color := clRed;              MainForm.Color := clRed;
2278              btnNulstil.Visible := true;              btnNulstil.Visible := true;
2279            end;            end;
# Line 2422  begin Line 2299  begin
2299    
2300            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
2301            begin            begin
2302              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(Config.AlarmLyd));
2303              MainForm.Color := clRed;              MainForm.Color := clRed;
2304              btnNulstil.Visible := true;              btnNulstil.Visible := true;
2305            end;            end;
# Line 2432  begin Line 2309  begin
2309    
2310    end;    end;
2311    
2312    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2313    begin    begin
2314      case BladhusSted of      case BladhusSted of
2315        00 :  begin;        00 :  begin;
# Line 2444  begin Line 2321  begin
2321               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2322  // 20150304: slut  // 20150304: slut
2323                begin                begin
2324                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2325                end;                end;
2326              end;              end;
2327        01 :  begin;        01 :  begin;
# Line 2452  begin Line 2329  begin
2329                    // 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
2330                    // 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')
2331                begin                begin
2332                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2333                end;                end;
2334              end;              end;
2335        02 :  begin;        02 :  begin;
2336                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
2337                begin                begin
2338                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2339                end;                end;
2340              end;              end;
2341        03 :  begin;        03 :  begin;
# Line 2466  begin Line 2343  begin
2343                    // 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
2344                    // 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')
2345               begin               begin
2346                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2347               end;               end;
2348              end;              end;
2349        04 :  begin;        04 :  begin;
2350                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
2351                begin                begin
2352                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2353                end;                end;
2354              end;              end;
2355        else        else
# Line 2481  begin Line 2358  begin
2358    end;    end;
2359    
2360  // 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
2361    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
2362    begin    begin
2363      exit;      exit;
2364    end;    end;
2365    
2366    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
2367    begin    begin
2368    end    end
2369    else    else
2370    begin    begin
2371      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
2372      begin      begin
2373        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2374        if (chkAltidPrintLabel.Checked) then        if (chkAltidPrintLabel.Checked) then
# Line 2508  begin Line 2385  begin
2385        end;        end;
2386        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2387        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2388        with Printer do  
2389        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2390          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;  
2391      end;      end;
2392    end;    end;
2393    
2394  end;  end;
2395    
 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;  
2396    
2397    
2398  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2399  begin  begin
2400      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2401      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2402  end;  end;
2403    
2404  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2405  begin  begin
2406      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2407      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2408  end;  end;
2409    
# Line 2629  begin Line 2446  begin
2446    end;    end;
2447  end;  end;
2448    
2449  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2450  begin  begin
2451        Scanningtype := '5';        Scanningtype := '5';
2452        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2638  end; Line 2455  end;
2455    
2456  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2457  begin  begin
2458      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2459      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2460      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2461    
# Line 2650  begin Line 2467  begin
2467        // 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)
2468        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2469        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2470        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2471      end;      end;
2472  // 20150317: slut  // 20150317: slut
2473  end;  end;
# Line 2665  begin Line 2482  begin
2482    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2483    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...');
2484    
2485          // Tjekker urls    try
2486          logTekst := 'Tjekker urls.';      // Tjekker urls
2487          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2488          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2489        SkrivScanningLogFil(logTekst);
2490    
         // 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;  
2491    
         // 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;  
2492    
2493          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2494          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2495          begin      begin
2496            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2497            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;  
2498    
2499          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2500          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2501          begin      begin
2502            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2503            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;  
2504    
2505          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2506          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2507          begin      begin
2508            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2509            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;  
2510    
2511          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2512          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2513          begin      begin
2514            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2515            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;  
2516    
2517          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2518          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2519          or (PanelValg4.Enabled = true) then      begin
2520          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2521            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;  
2522    
2523          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2524          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2525          begin      begin
2526            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2527            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;  
2528    
2529          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2530          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2531          begin      begin
2532            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2533            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;  
2534    
2535          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2536          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2537          begin      begin
2538            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2539            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;  
2540    
2541        // Tjekker UrlPakkeshopManglendeReturScanninger
2542        if PanelValg6.Enabled = true then
2543        begin
2544          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2545        end;
2546    
2547          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2548          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2549          begin      begin
2550            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2551            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2552              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;  
2553    
2554        // Tjekker UrlEKLoverforsel
2555        if PanelValg1.Enabled = true then
2556        begin
2557          TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2558        end;
2559    
         // 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;  
2560    
2561          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2562          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2563          begin      begin
2564            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2565            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;  
2566    
         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;  
2567    
2568        // Tjekker UrlFindPakketype
2569        TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2570    
2571        // Tjekker UrlSendPrograminfo
2572        TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2573    
2574    
2575    
2576        logTekst := 'urls er ok';
2577        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2578        SkrivScanningLogFil(logTekst);
2579    
2580      Except
2581        Config.TjekUrls := '-';   // markerer at der var fejl
2582    
2583      end;
2584  end;  end;
2585    
2586  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2587  var  const
2588     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2589  begin  begin
2590     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2591     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2592     Result := SystemTimeToDateTime(SystemTime) ;    begin
2593        logTekst := UrlNavn + ' accepteret: ' + Url;
2594        SkrivScanningLogFil(logTekst);
2595      end
2596      else
2597      begin
2598        inc(urlFejl);   // Optæller antal fejl
2599        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2600        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2601        if Config.TjekUrls = '1' then
2602        begin
2603          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2604        end;
2605    
2606        SkrivScanningLogFil(logTekst);
2607    
2608        if Config.TjekUrls = '1' then
2609        begin
2610          ShowMessage(logTekst);
2611          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2612          Application.Terminate;
2613    
2614          raise Exception.Create('UrlFejl');
2615    
2616        end;
2617      end;
2618    
2619  end;  end;
2620    
2621    
2622    
2623  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2624  var  var
2625    SR: TSearchRec;    SR: TSearchRec;
# Line 3074  begin Line 2639  begin
2639    
2640          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2641          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2642          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2643          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2644          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2645          // (æ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 2689  begin
2689    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2690    begin    begin
2691       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2692       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
2693       Application.Terminate;       Application.Terminate;
2694       exit;       exit;
2695    end;    end;
# Line 3134  begin Line 2699  begin
2699    if Farve <> '' then    if Farve <> '' then
2700    begin    begin
2701       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  
2702    end;    end;
2703    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2704    begin    begin
2705       InitLillePakke();       InitLillePakke();
2706    end;    end;
# Line 3207  end; Line 2762  end;
2762    
2763  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2764  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;  
 *)  
2765  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2766  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2767       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2768       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2769       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2770  // 20150311: slut  
2771    
2772    
2773  end;  end;
2774    
2775  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2776  begin  begin
2777        Scanningtype := '1';        Scanningtype := '1';
2778        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3249  var Line 2791  var
2791    Leveringssted : String;    Leveringssted : String;
2792    orgTjekUrls : String;    orgTjekUrls : String;
2793  begin  begin
2794    orgTjekUrls := TjekUrls;    orgTjekUrls := Config.TjekUrls;
2795    if (TjekUrls = '1') or (TjekUrls = '2') then    if (Config.TjekUrls = '1') or (Config.TjekUrls = '2') then
2796    begin    begin
2797      TjekkerUrls();      TjekkerUrls();
2798    end;    end;
2799    if TjekUrls = '-' then    if Config.TjekUrls = '-' then
2800    begin    begin
2801      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');      //ShowMessage('Der var fejl i een eller flere urls - se logvinduet');
2802      RuteNummer := '';      RuteNummer := '';
# Line 3263  begin Line 2805  begin
2805      Koreliste := '';      Koreliste := '';
2806      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2807      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2808      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(Config.AlarmLyd));
2809      MainForm.Color := clRed;      MainForm.Color := clRed;
2810      btnNulstil.Visible := true;      btnNulstil.Visible := true;
2811    end    end
# Line 3279  begin Line 2821  begin
2821      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2822      FocusControl(StregkodeST);      FocusControl(StregkodeST);
2823    end;    end;
2824    TjekUrls := orgTjekUrls;    Config.TjekUrls := orgTjekUrls;
2825    
2826  end;  end;
2827    
# Line 3300  begin Line 2842  begin
2842    Falsk := False;    Falsk := False;
2843    
2844    
2845    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2846    begin    begin
2847      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2848    end    end
2849    else if PrinterNavn = 'Ingen' then    else if Config.PrinterNavn = 'Ingen' then
2850    begin    begin
2851      ShowMessage('Der er fravalgt printer i dette program.');      ShowMessage('Der er fravalgt printer i dette program.');
2852    end    end
# Line 3315  begin Line 2857  begin
2857      DBKbane := '999';      DBKbane := '999';
2858      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2859      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2860      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', Config.PrinterNavn);
2861    end;    end;
2862    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2863  end;  end;
2864    
2865  procedure TMainForm.Timer1Timer(Sender: TObject);  procedure TMainForm.Timer1Timer(Sender: TObject);
2866  begin  begin
2867    if (TjekPrinter = '1') then    if (Config.TjekPrinter = '1') then
2868    begin    begin
2869      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', Config.PrinterNavn);
2870    end    end
2871    else    else
2872    begin    begin
# Line 3342  var Line 2884  var
2884   tekst, filversion : String;   tekst, filversion : String;
2885  begin  begin
2886    
2887    filversion := Sto_GetFmtFileVersion('');    filversion := TUtils.Sto_GetFmtFileVersion('');
2888    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';
2889    
2890    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3378  begin Line 2920  begin
2920      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2921      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
2922      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2923      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
2924    end;    end;
2925    
2926    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
2927    
2928  end;  end;
2929    
2930    
2931  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
2932    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
2933  var  var
# Line 3437  begin Line 2980  begin
2980    
2981    if FileExists(fileName) then    if FileExists(fileName) then
2982    begin    begin
2983      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
2984      begin      begin
2985        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
2986        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3461  begin Line 3004  begin
3004    
3005    if FileExists(fileName) then    if FileExists(fileName) then
3006    begin    begin
3007      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3008      begin      begin
3009        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3010        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3011      end      end
3012      else      else
3013      begin      begin
3014        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3015      end;      end;
3016    end    end
3017    else    else
# Line 3499  begin Line 3042  begin
3042    
3043  end;  end;
3044    
3045  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3046  begin  begin
3047        Scanningtype := '2';        Scanningtype := '2';
3048        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3049        InitReturFraDao();        InitReturFraDao();
3050  end;  end;
3051    
3052  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3053  begin  begin
3054        Scanningtype := '6';        Scanningtype := '6';
3055        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3515  end; Line 3058  end;
3058    
3059  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3060  begin  begin
3061        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3062        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3063        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3064        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(Config.FarveNormal,Config.TitelNormal,Config.UrlNormal);
3065        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3066        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3067    
# Line 3529  begin Line 3072  begin
3072        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3073        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3074        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3075        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3076        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3077        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3078        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3079        ListBox1.Visible := true;        ListBox1.Visible := true;
3080        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3081        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3082        InitLillePakke();        InitLillePakke();
3083        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3084    
3085          chkForstorTilDirekte.Checked := false;
3086          chkForstorTilDirekte.Enabled := false;
3087    
3088        if BladhusSted = 0 then        if BladhusSted = 0 then
3089        begin        begin
3090          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3547  end; Line 3094  end;
3094    
3095  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3096  begin  begin
3097        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3098        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3099        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3100        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(Config.FarveReturDAO, Config.TitelReturDAO, Config.UrlReturDAO);
3101        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3102        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3103    
# Line 3561  begin Line 3108  begin
3108        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3109        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3110        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3111        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3112        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3113        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3114        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3115        ListBox1.Visible := true;        ListBox1.Visible := true;
3116        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3117        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3118        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3119    
3120          chkForstorTilDirekte.Checked := false;
3121          chkForstorTilDirekte.Enabled := false;
3122    
3123        InitLillePakke();        InitLillePakke();
3124  end;  end;
3125    
3126  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3127  begin  begin
3128        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3129        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3130        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3131        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(Config.FarveReturBoghandler, Config.TitelReturBoghandler, Config.UrlReturBoghandler);
3132        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3133        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3134    
# Line 3587  begin Line 3138  begin
3138        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3139        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3140        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3141        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3142        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3143        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3144        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3145        ListBox1.Visible := true;        ListBox1.Visible := true;
3146        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3147        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3148        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3149    
3150          chkForstorTilDirekte.Checked := false;
3151          chkForstorTilDirekte.Enabled := false;
3152    
3153        InitLillePakke();        InitLillePakke();
3154  end;  end;
3155    
3156  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3157  begin  begin
3158        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3159        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3160        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3161        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(Config.FarveBudlevering, Config.TitelBudlevering, Config.UrlBudlevering);
3162        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3163        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3164    
# Line 3614  begin Line 3169  begin
3169        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3170        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3171        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3172        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3173        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3174        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3175        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3176        ListBox1.Visible := true;        ListBox1.Visible := true;
3177        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3178        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3179        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3180        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3181        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3182        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3183        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3184    
3185          chkForstorTilDirekte.Checked := false;
3186          chkForstorTilDirekte.Enabled := true;
3187    
3188        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3189        begin        begin
3190            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3636  end; Line 3195  end;
3195    
3196  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3197  begin  begin
3198        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3199        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3200        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3201        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(Config.FarvePakkeshoplevering, Config.TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3202        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3203        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3204    
# Line 3650  begin Line 3209  begin
3209        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3210        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3211        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3212        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3213        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3214        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3215        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3216        ListBox1.Visible := true;        ListBox1.Visible := true;
3217        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3218        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3219        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3220    
3221          BtnEKLoverforsel.Enabled := true;
3222    
3223        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3224          chkForstorTilDirekte.Enabled := true;
3225    
3226        InitLillePakke();        InitLillePakke();
3227        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3673  end; Line 3235  end;
3235    
3236  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3237  begin  begin
3238        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3239        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3240        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3241        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(Config.FarveReturPakkeshop, Config.TitelReturPakkeshop, Config.UrlReturPakkeshop);
3242        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3243        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3244    
# Line 3687  begin Line 3249  begin
3249        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3250        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3251        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3252        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3253        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3254        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3255        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3256        ListBox1.Visible := true;        ListBox1.Visible := true;
3257        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3258        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3259        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3260        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3261    
3262          chkForstorTilDirekte.Checked := false;
3263          chkForstorTilDirekte.Enabled := false;
3264    
3265    
3266        InitLillePakke();        InitLillePakke();
3267        IndlesScanningLogFil();        IndlesScanningLogFil();
3268        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3706  begin Line 3273  begin
3273        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3274  end;  end;
3275    
3276  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3277  begin  begin
3278        Scanningtype := '3';        Scanningtype := '3';
3279        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3716  end; Line 3283  end;
3283  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3284  begin  begin
3285        menuIndlevering.Checked := true;        menuIndlevering.Checked := true;
3286        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3287    
3288        btnNulstil.Visible := false;        btnNulstil.Visible := false;
3289        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        InitForm(Config.FarveIndlevering, Config.TitelIndlevering, Config.UrlReturPakkeshop);
3290        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3291        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3292    
# Line 3733  begin Line 3300  begin
3300    
3301    
3302    
3303        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3304        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3305        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3306        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3307        ListBox1.Visible := true;        ListBox1.Visible := true;
3308        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3309    
3310        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3311        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3312        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3313    
3314          chkForstorTilDirekte.Checked := false;
3315          chkForstorTilDirekte.Enabled := false;
3316    
3317    
3318        InitLillePakke();        InitLillePakke();
3319        IndlesScanningLogFil();        IndlesScanningLogFil();
3320        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3754  begin Line 3326  begin
3326  end;  end;
3327    
3328    
3329  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3330  begin  begin
3331    InitStorPakke();    InitStorPakke();
3332  end;  end;
3333    
3334  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3335  begin  begin
3336    InitLillePakke();    InitLillePakke();
3337  end;  end;
# Line 3767  end; Line 3339  end;
3339  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3340  begin  begin
3341    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3342    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3343  //  Stregkode := '';  //  Stregkode := '';
3344  end;  end;
3345    
3346  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3347  begin  begin
3348    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3349    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3350  // 20150310: start  // 20150310: start
3351  //  Stregkode := '';  //  Stregkode := '';
3352  // 20150310: slut  // 20150310: slut
3353  end;  end;
3354    
 /// <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;  
3355    
     // format result string  
     Result := Format('%d.%d.%d.%d', [iVer[1], iVer[2], iVer[3], iVer[4]]);  
   
   end;  
 end;  
3356    
3357  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3358  begin  begin
# Line 3846  end; Line 3365  end;
3365    
3366  procedure TMainForm.Testlyd1Click(Sender: TObject);  procedure TMainForm.Testlyd1Click(Sender: TObject);
3367  begin  begin
3368     if AlarmLyd  <> '' then     if Config.AlarmLyd  <> '' then
3369     begin     begin
3370       PlaySound(PWideChar(AlarmLyd));       PlaySound(PWideChar(Config.AlarmLyd));
3371     end     end
3372     else     else
3373     begin     begin
# Line 3860  procedure TMainForm.Testlyd2Click(Sender Line 3379  procedure TMainForm.Testlyd2Click(Sender
3379  begin  begin
3380    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3381    begin    begin
3382       if ScannetOkTilTjekkodeLyd  <> '' then       if Config.ScannetOkTilTjekkodeLyd  <> '' then
3383       begin       begin
3384         PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));         PlaySound(PWideChar(Config.ScannetOkTilTjekkodeLyd));
3385       end       end
3386       else       else
3387       begin       begin
# Line 3871  begin Line 3390  begin
3390       exit;       exit;
3391    end;    end;
3392    
3393    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3394       if ScannetOkLyd  <> '' then       if Config.ScannetOkLyd  <> '' then
3395       begin       begin
3396         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(Config.ScannetOkLyd));
3397       end       end
3398       else       else
3399       begin       begin
3400         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3401       end;       end;
3402    if Storepakker1.Checked then    if menuStorePakker.Checked then
3403       if ScannetOkStorLyd  <> '' then       if Config.ScannetOkStorLyd  <> '' then
3404       begin       begin
3405         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(Config.ScannetOkStorLyd));
3406       end       end
3407       else       else
3408       begin       begin
# Line 3892  begin Line 3411  begin
3411  end;  end;
3412    
3413    
3414  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3415  begin  begin
3416        Scanningtype := '4';        Scanningtype := '4';
3417        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3904  begin; Line 3423  begin;
3423    CheckCode();    CheckCode();
3424  end;  end;
3425    
3426  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3427  var  var
3428    WebSvar : String;    WebSvar : String;
3429    URLStr : String;    URLStr : String;
# Line 3914  var Line 3433  var
3433    status, kommentar : String;    status, kommentar : String;
3434    
3435  begin  begin
3436      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3437    
3438      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');
3439      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3440      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3441      StedKode := Sted;      StedKode := Sted;
3442      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3443  // 20150330: start  
3444      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3445      begin      begin
3446        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3447      end;      end;
3448  // 20150330: slut  
3449    
3450      try      try
3451      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3977  begin Line 3496  begin
3496        end;        end;
3497      end;      end;
3498    
3499      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3500    
3501      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
3502    
3503      // Hvis der var fejl i overførslen skal dette fejlmeldes her      // Hvis der var fejl i overførslen skal dette fejlmeldes her
3504      if status = 'Fejl' then      if status = 'Fejl' then
3505      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
3506         PlaySound(PWideChar(AlarmLyd));         PlaySound(PWideChar(Config.AlarmLyd));
3507         MainForm.Color := clRed;         MainForm.Color := clRed;
3508         RutenummerST.Caption := 'EKL overførsel';         RutenummerST.Caption := 'EKL overførsel';
3509         BoghandlerNavnST.Caption := 'Fejl:';         BoghandlerNavnST.Caption := 'Fejl:';
# Line 4503  begin Line 4022  begin
4022    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
4023  end;  end;
4024    
4025  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4026  begin  begin
4027      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4028      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
4029  end;  end;
4030    
4031  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4032  const  const
4033    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4034    
# Line 4518  begin Line 4037  begin
4037      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
4038  end;  end;
4039    
4040  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4041  begin  begin
4042      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4043      begin      begin
# Line 4528  begin Line 4047  begin
4047  end;  end;
4048    
4049    
 // 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;  
   
4050    
4051  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4052  var  var
# Line 4661  var Line 4057  var
4057    I: Integer;    I: Integer;
4058    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4059    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4060    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4061    pakketyper : TStrings;    //pakketyper : TStrings;
4062      pakketyper : TDictionary<String, Integer>;
4063      tmpAntal : Integer;
4064    
4065     time, timeSamlet : TTimingHelper;
4066    
4067    
4068    antlin : Integer;    antlin : Integer;
4069    
4070    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4071    
4072    XmlFelter : TStrings;    //XmlFelter : TStrings;
4073      XmlFelter : TDictionary<String, Integer>;
4074    
4075   begin   begin
4076      XmlFelter := TStringList.Create;  
4077      pakketyper := TStringList.Create;  
4078        XmlFelter := TDictionary<String, Integer>.Create;
4079        pakketyper := TDictionary<String, Integer>.Create;
4080    
4081      linienr := 0;      linienr := 0;
4082      ListBox2.Clear;      ListBox2.Clear;
4083      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 4092  var
4092          StedKode := Sted;          StedKode := Sted;
4093        end;        end;
4094    
4095          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4096    
4097    
4098    
4099      if (Scanningtype = '6') then      if (Scanningtype = '7') then
4100         begin
4101          URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4102         end
4103        else if (Scanningtype = '6') then
4104       begin       begin
4105        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4106       end       end
4107      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4108       begin       begin
4109        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4110       end       end
4111      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4112       begin       begin
4113        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4114       end       end
4115      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4116       begin       begin
4117        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4118       end       end
4119      else      else
4120       begin       begin
# Line 4709  var Line 4122  var
4122       end;       end;
4123  // 20150310: slut  // 20150310: slut
4124    
4125        time := TTimingHelper.create();        //DEBUG
4126        timeSamlet := TTimingHelper.create();        //DEBUG
4127    
4128      try      try
4129      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4130  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4718  var Line 4134  var
4134        begin        begin
4135          // 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
4136          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4137    
4138    
4139    
4140        end;        end;
4141        on e:exception do        on e:exception do
4142        begin        begin
# Line 4728  var Line 4147  var
4147        end;        end;
4148      end;      end;
4149      try      try
4150          time.stop('HTTP Load');     //DEBUG
4151    
4152        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4153    
4154          time.stop('XML Load');     //DEBUG
4155    
4156    
4157    
4158    
4159    
4160    
4161        antlin := 0;        antlin := 0;
4162        antlinIdag := 0;        antlinIdag := 0;
# Line 4740  var Line 4167  var
4167            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4168              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4169              begin              begin
4170                 antlin := antlin + 1;                 Inc(antlin);
4171                 // 20150306: start                 // 20150306: start
4172                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4173                begin                begin
4174                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4175                   begin                   begin
4176                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4177                   end                   end
4178                   else                   else
4179                   begin                   begin
4180                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4181                   end;                   end;
4182                end;                end;
4183                 // 20150306: slut                 // 20150306: slut
4184              end;              end;
4185            end;            end;
4186            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4187                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4188                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4189                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4190                  end
4191                else                else
4192                  XmlFelter.values[Node.NodeName] := '1';                begin
4193                    XmlFelter.Add(Node.NodeName, 1);
4194                  end;
4195    
4196        end;        end;
4197        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4767  var Line 4199  var
4199        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4200        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4201    
4202          time.stop('Antal Linier');//DEBUG
4203    
4204          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4205    
4206        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4207        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4208        begin        begin
# Line 4775  var Line 4211  var
4211        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4212    
4213        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4214    
4215    
4216        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4217            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4218            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4782  var Line 4220  var
4220                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4221                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4222                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4223              end;              end
4224              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4225                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4226                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4227                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4228              end;              end
4229              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4230                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4231                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4232                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4233              end;              end
4234              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4235                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4236                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4237                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4238              end;              end
4239              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4240                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4241                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4242                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4243                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4244                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4245                    pakketyper.TryGetValue(pakketype, tmpAntal);
4246                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4247                  end
4248                else                else
4249                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4250              end;              end
4251              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4252                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4253                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4254                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4255                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4256                  begin                  begin
4257  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4258                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4259                    begin                    begin
4260                      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 4266  var
4266                    linienr := linienr + 1;                    linienr := linienr + 1;
4267                  end;                  end;
4268              end;              end;
4269    
4270    
4271              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4272              begin              begin
4273                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4841  var Line 4283  var
4283              end;              end;
4284            end;            end;
4285        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4286    
4287          // Free up the list object  
4288          time.stop('Fyld Listbox2');//DEBUG
4289    
4290    
4291          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4292    
4293    
4294          for pakketype in pakketyper.Keys do
4295          begin
4296            pakketyper.TryGetValue(pakketype, tmpAntal);
4297            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4298          end;
4299    
4300            // Free up the dictionary object
4301        pakketyper.Free;        pakketyper.Free;
4302    
4303    
4304    
4305  //      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.');
4306        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4307        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4953  var Line 4407  var
4407        end;        end;
4408      end;      end;
4409    
4410        time.stop('Done');//DEBUG
4411        timeSamlet.stop('SamletTid');//DEBUG
4412    
4413    
4414  end;  end;
4415    
4416  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 5128  begin Line 4586  begin
4586          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4587          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4588          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4589          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4590        end;        end;
4591      end;      end;
4592    end    end
# Line 5137  begin Line 4595  begin
4595        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Ruteskift fil '+filnavn+' findes ikke.');
4596        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';        logTekst := 'Ruteskift fil '+filnavn+' findes ikke.';
4597        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4598        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4599    end;    end;
4600  end;  end;
4601    
# Line 5208  begin Line 4666  begin
4666          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' +'Fandt ingen linier til '+imorgenYmd+'.');
4667          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';          logTekst := 'Fandt ingen linier til '+imorgenYmd+'.';
4668          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
4669          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(Config.AlarmLyd));
4670        end;        end;
4671      end;      end;
4672    end    end
# Line 5217  begin Line 4675  begin
4675        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Kontrol fil '+filnavn+' findes ikke.');
4676        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';        logTekst := 'Kontrol fil '+filnavn+' findes ikke.';
4677        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4678        PlaySound(PWideChar(AlarmLyd));        PlaySound(PWideChar(Config.AlarmLyd));
4679    end;    end;
4680  end;  end;
4681    
# Line 5275  procedure TMainForm.VisAlarmSkaerm(strMe Line 4733  procedure TMainForm.VisAlarmSkaerm(strMe
4733  begin  begin
4734    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4735    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4736    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(Config.AlarmLyd));
4737    MainForm.Color := clRed;    MainForm.Color := clRed;
4738    
4739    
# Line 5289  begin Line 4747  begin
4747      KommentarST.Caption := strMessage;      KommentarST.Caption := strMessage;
4748    end;    end;
4749    
4750      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4751    
4752  end;  end;
4753    
4754  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5348  begin Line 4808  begin
4808    result := svar;    result := svar;
4809  end;  end;
4810    
 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;  
4811    
4812  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4813  begin  begin
# Line 5380  begin Line 4821  begin
4821    end;    end;
4822  end;  end;
4823    
4824  function TMainForm.AdobeReaderExists: Boolean;  
4825  var  //Nedarvet fra IParentForm
4826    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4827  begin  begin
4828    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4829  end;  end;
4830    
4831    //Nedarvet fra IParentForm
4832  function TMainForm.CheckUrl(url:string):boolean;  procedure TMainForm.LogMessage( msg : string);
4833  var  begin
4834    hSession, hfile: hInternet;    ListBox1.Items.Insert(0, msg);
4835    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;  
   
4836  end;  end;
4837    
4838    
4839  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4840  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;  
4841  begin  begin
4842    
4843  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1    PrinterstatusStaticText1.Caption := txt;
4844  //            '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  
4845    begin    begin
4846      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4847      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4848      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
   begin  
     printerTxt := 'Der er ikke installeret en printer på denne PC';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
4849    end    end
4850    else    else
4851    begin    begin
4852      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4853      try      PrinterstatusStaticText1.Color := clWhite;
4854        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;  
4855    end;    end;
4856  end;  end;
4857    
4858    //Nedarvet fra IParentForm
4859    function TMainForm.GetFormObject() : TForm;
4860    begin
4861      Result := self;
4862    end;
4863    
4864  end.  end.
4865    

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

  ViewVC Help
Powered by ViewVC 1.1.20