/[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 2660 by torben, Sun Aug 23 14:45:16 2015 UTC revision 3073 by torben, Wed Jul 27 15:25:24 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,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
31    ;    ;
32    
33  type  type
34    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
35      StregkodeST: TStaticText;      StregkodeST: TStaticText;
36      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
37      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 23  type Line 39  type
39      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
40      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
41      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
42      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
43      N1: TMenuItem;      N1: TMenuItem;
44      Pakkernormal1: TMenuItem;      menuNatXpress1: TMenuItem;
45      ReturpakkerfraDAO1: TMenuItem;      menuNatxpressReturDAO1: TMenuItem;
46      Returpakkerfraboghandler1: TMenuItem;      menuNatxpressReturfraKunde1: TMenuItem;
47      Hjlp1: TMenuItem;      Hjlp1: TMenuItem;
48      Om1: TMenuItem;      Om1: TMenuItem;
49      Testforbindelsen1: TMenuItem;      Testforbindelsen1: TMenuItem;
# Line 41  type Line 56  type
56      radioStorPakke: TRadioButton;      radioStorPakke: TRadioButton;
57      radioLillePakke: TRadioButton;      radioLillePakke: TRadioButton;
58      N4: TMenuItem;      N4: TMenuItem;
59      Storepakker1: TMenuItem;      menuStorePakker: TMenuItem;
60      Smpakker1: TMenuItem;      menuSmaaPakker: TMenuItem;
61      Panel1: TPanel;      Panel1: TPanel;
62      Testlyd2: TMenuItem;      Testlyd2: TMenuItem;
63      Button1: TButton;      Button1: TButton;
64      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
65      ListBox1: TListBox;      ListBox1: TListBox;
66      Budlevering1: TMenuItem;      menuDaoDirekte1: TMenuItem;
67      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
68      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
69      Image1: TImage;      Image1: TImage;
70      ListBox2: TListBox;      ListBox2: TListBox;
71      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
72      UploadButton01: TButton;      BtnUploadLogfil: TButton;
73      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
74      Pakkeshoplevering1: TMenuItem;      menuPakkeshop1: TMenuItem;
75      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
76      PakkeshopNulstil: TButton;      btnNulstil: TButton;
77      Returpakkerfrapakkeshop1: TMenuItem;      menuPakkeshopRetur1: TMenuItem;
78      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
79      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
80      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
81      N5: TMenuItem;      N5: TMenuItem;
82      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
83      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 70  type Line 85  type
85      Timer1: TTimer;      Timer1: TTimer;
86      chkScanTjekkode: TCheckBox;      chkScanTjekkode: TCheckBox;
87      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
88      Automatisktjekkodestyring1: TMenuItem;      menuAutomatiskTjekkodeStyring: TMenuItem;
89      Automatiskvalg1: TMenuItem;      menuAutomatiskvalg1: TMenuItem;
90      PanelValgA: TPanel;      PanelValgA: TPanel;
91      PanelValg1: TPanel;      PanelValg1: TPanel;
92      PanelValg2: TPanel;      PanelValg2: TPanel;
# Line 88  type Line 103  type
103      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
104      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
105      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
106        menuIndlevering: TMenuItem;
107        chkForstorTilDirekte: TCheckBox;
108        chkEmballageRepareret: TCheckBox;
109        KommentarST: TLabel;
110        chkUdenforSpecifikation: TCheckBox;
111    
112    
113    
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
114    function getProddato() : TDate;    function getProddato() : TDate;
115    function getProddag() : String;    function getProddag() : String;
116    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 split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
117    
118    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
119    procedure StartScreen();    procedure StartScreen();
# Line 119  type Line 129  type
129    procedure radioStorPakkeClick(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
130    procedure radioLillePakkeClick(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
131    procedure chkSporgEfterKundeClick(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
132    procedure Pakkernormal1Click(Sender: TObject);    procedure menuNatXpress1Click(Sender: TObject);
133    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
134    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
135    procedure Om1Click(Sender: TObject);    procedure Om1Click(Sender: TObject);
136    procedure Lukprogrammet1Click(Sender: TObject);    procedure Lukprogrammet1Click(Sender: TObject);
137    procedure Sprgefterboghandlernummer1Click(Sender: TObject);    procedure Sprgefterboghandlernummer1Click(Sender: TObject);
138    procedure ReturpakkerfraDAO1Click(Sender: TObject);    procedure menuNatxpressReturDAO1Click(Sender: TObject);
139    procedure Returpakkerfraboghandler1Click(Sender: TObject);    procedure menuNatxpressReturfraKunde1Click(Sender: TObject);
140    procedure Storepakker1Click(Sender: TObject);    procedure menuStorePakkerClick(Sender: TObject);
141    procedure Smpakker1Click(Sender: TObject);    procedure menuSmaaPakkerClick(Sender: TObject);
142    procedure Testlyd1Click(Sender: TObject);    procedure Testlyd1Click(Sender: TObject);
143    procedure Testlyd2Click(Sender: TObject);    procedure Testlyd2Click(Sender: TObject);
144    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
145    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
146    procedure Budlevering1Click(Sender: TObject);    procedure menuDaoDirekte1Click(Sender: TObject);
147    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
148    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
149    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
150    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
151    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 143  type Line 153  type
153    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
154    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
155    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
156    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
157    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
158    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure menuPakkeshop1Click(Sender: TObject);
159    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
160    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure menuPakkeshopRetur1Click(Sender: TObject);
161    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
162    procedure InitReturFraDao();    procedure InitReturFraDao();
163    procedure InitReturFraKunde();    procedure InitReturFraKunde();
# Line 158  type Line 168  type
168    
169    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
170    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
171    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
172    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
173    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
174    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
175    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
176    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
177    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure menuAutomatiskTjekkodeStyringClick(Sender: TObject);
178    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
179    procedure Automatiskvalg1Click(Sender: TObject);    procedure menuAutomatiskvalg1Click(Sender: TObject);
180    procedure PanelValgAClick(Sender: TObject);    procedure PanelValgAClick(Sender: TObject);
181    procedure PanelValg1Click(Sender: TObject);    procedure PanelValg1Click(Sender: TObject);
182    procedure PanelValg2Click(Sender: TObject);    procedure PanelValg2Click(Sender: TObject);
# Line 181  type Line 190  type
190    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
191    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
192    procedure TjekkerUrls();    procedure TjekkerUrls();
193  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
194    procedure RoundCornerOf(Control: TWinControl);  
195      procedure menuIndleveringClick(Sender: TObject);
196    
197    
198    
199      //Nedarvet fra IParentForm
200      procedure Msg( msg : string);
201      procedure LogMessage( msg : string);
202      procedure SetPrinterstatusText( txt: string; alert: boolean);
203      function GetFormObject() : TForm;
204    
205    
 // 20150310: slut  
206    
207    private    private
208      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder
# Line 193  type Line 210  type
210      SkrivLog : String;      SkrivLog : String;
211      Sted : String;      Sted : String;
212      StedNavn : String;      StedNavn : String;
213      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
214  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
215                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
216    
217      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
218  // 20150330: slut  
219      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
220      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
221      ScanTjekkode : String;      ScanTjekkode : String;
222      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
223      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
224      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
225      LabelType : integer;            FarveIndlevering : String;
226    
227        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
228              TitelIndlevering : String;
229    
230      AlarmLyd : String;      AlarmLyd : String;
231      ScannetOkLyd : String;      ScannetOkLyd : String;
232      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
233  // 20150317: start  
234      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
235  // 20150317: slut  
236      PrinterNavn : String;      PrinterNavn : String;
237      TjekPrinter : String;      TjekPrinter : String;
238      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;  
239      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
240      BladhusSted : Integer;      BladhusSted : Integer;
241      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 247  type Line 248  type
248      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
249      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
250      TjekUrls : String;      TjekUrls : String;
251        Config : TConfiguration;
252    
253    
254            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      LabelPrint: TLabelPrint;
255    
256      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 = '');
257      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
258      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 = '');
259      procedure CheckCode();      procedure CheckCode();
260      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 261  type Line 264  type
264      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
265      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
266      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
267        function InjectURL(Url : String) : String;
268    
269    public    public
270      { Public declarations }      { Public declarations }
271    end;    end;
272    
273    
274  var  var
275    MainForm: TMainForm;    MainForm: TMainForm;
276    
# Line 279  var Line 284  var
284  implementation  implementation
285  {$R *.dfm}  {$R *.dfm}
286    
287  function TMainForm.TColorToHex(Color : TColor) : string;  
288  begin  //FormCreate kaldes før InitForm
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
289    
290  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
291  begin  begin
292    
293  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
294        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
295    
296    
297    
298    
299      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
300  // 20150309: slut  
301    
302      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
303      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 346  begin Line 341  begin
341        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
342      end;      end;
343    
344      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
345    
346      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
347      begin      begin
# Line 374  begin Line 369  begin
369        else if (Sted = 'BR') then        else if (Sted = 'BR') then
370          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
371        else if (Sted = 'BK') then        else if (Sted = 'BK') then
372          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
373          else if (Sted = 'TK') then
374            begin StedNavn := 'BK/Trykkompagniet: '; end
375        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
376          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
377        else if (Sted = '1') then        else if (Sted = '1') then
378          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
379        else if (Sted = '2') then        else if (Sted = '2') then
# Line 400  begin Line 397  begin
397    
398      StartScreen();      StartScreen();
399      MainForm.Caption := Titel;      MainForm.Caption := Titel;
400      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
401      MainForm.Farve := Farve;      MainForm.Farve := Farve;
402      MainForm.Titel := Titel;      MainForm.Titel := Titel;
403      MainForm.Url := Url;      MainForm.Url := Url;
# Line 410  begin Line 407  begin
407        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
408      end;      end;
409    
410      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
411        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
412      else      else
413        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 435  begin Line 432  begin
432        end;        end;
433      end;      end;
434    
435      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
436      begin      begin
437        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
438        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 460  begin Line 457  begin
457          end          end
458          else          else
459          begin          begin
460            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
461          end;          end;
462          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
463        end        end
464        else        else
465        begin        begin
466          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
467          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
468        end;        end;
469      end;      end;
470    
471    
472  end;  end;
473    
474  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 492  begin Line 490  begin
490    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
491  end;  end;
492    
493  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
494  begin  begin
495    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
496    begin    begin
497       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
498       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 507  begin Line 505  begin
505    
506  end;  end;
507    
508  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
509  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;  
 *)  
510  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
511  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
512       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
513       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
514       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
515  end;  end;
516    
517    function TMainForm.InjectURL(Url : String) : String;
518    begin
519    
520      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
521      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
522      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
523    
524      Result := Url;
525    end;
526    
527    //InitForm kaldes før FormCreate
528  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
529  const  const
530    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
531  var  var
   printerInd : integer;  
532    gemScanningtype : String;    gemScanningtype : String;
533    
534  begin  begin
535    
536    
537    // Initierer nogle variabler    // Initierer nogle variabler
538    BladhusSted := 00;    BladhusSted := 00;
539    Application.ShowHint := True;    Application.ShowHint := True;
540    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
541    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
542    
543    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
544    
545    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
546    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
547    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
548    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
549    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
550    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
551    
552    
553    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
# Line 567  begin Line 561  begin
561    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
562    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
563    
564      Config := TConfiguration.Create();
565      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
566      Config.Sted := Sted;
567    
568    // Læser parametre fra ini filen    // Læser parametre fra ini filen
569    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
570    try    try
571    
572    
573      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
574      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
575      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
576    
577      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
578        UrlFindPakketype := InjectURL(UrlFindPakketype);
579    
580      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
581        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
582    
583      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
584        UrlNormal := InjectURL(UrlNormal);
585    
586      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
587        UrlReturDAO := InjectURL(UrlReturDAO);
588    
589      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
590        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
591    
592      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
593        UrlBudlevering := InjectURL(UrlBudlevering);
594    
595      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
596        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
597    
598      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
599        UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
600    
601      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
602        UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
603    
604      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
605        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
606    
607      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
608        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
609    
610      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
611        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
612    
613      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
614      LabelType := ReadInteger('Settings','LabelType',1);      UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
615    
616        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
617        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
618    
619        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
620        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
621    
622        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
623        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
624    
625    
626    
627      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
628      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
629      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 625  begin Line 660  begin
660    
661      if (SkrivLog = '1') then      if (SkrivLog = '1') then
662      begin      begin
663        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);
664        try        try
665          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
666          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
667          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
668          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
669          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
670          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 641  begin Line 676  begin
676    
677      if Scanningtype = 'A' then      if Scanningtype = 'A' then
678      begin      begin
679        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
680        Scanningtype := '1';        Scanningtype := '1';
681        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
682        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
683      end;      end;
684    
685      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;  
686    
687      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
688      begin      begin
# Line 741  begin Line 708  begin
708    
709      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
710      begin      begin
711        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
712        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
713        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
714      end;      end;
# Line 768  begin Line 735  begin
735      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
736      // *************************** //      // *************************** //
737    
738    {$IfDef STED_BK}
739        SpecialVersionSted := 'BK';
740    {$EndIf}
741    {$IfDef STED_TK}
742        SpecialVersionSted := 'TK';// BK-Trykkompagniet
743    {$EndIf}
744    {$IfDef STED_DBK}
745        SpecialVersionSted := 'DBK';
746    {$EndIf}
747    {$IfDef STED_FD}
748        SpecialVersionSted := 'FD';
749    {$EndIf}
750    {$IfDef STED_NS}
751        SpecialVersionSted := 'NS';
752    {$EndIf}
753    
754      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
755      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
756      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 783  begin Line 766  begin
766      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
767      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
768    
 // 20150313: start  
769      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
770      begin      begin
771         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
772         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
773    
774          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
775          Sted := SpecialVersionSted;
776         // her skal vi også disable de knapper BK ikke kan bruge
777          PanelValg2.Enabled := false;
778          PanelValg2.Font.Color := clInactiveCaption;
779          PanelValg3.Enabled := false;
780          PanelValg3.Font.Color := clInactiveCaption;
781          //PanelValg6.Enabled := false;
782          //PanelValg6.Font.Color := clInactiveCaption;
783    
784         // her skal vi også disable de menupunkter FD ikke kan bruge
785          menuNatxpressReturDAO1.Enabled := false;
786          menuNatxpressReturfraKunde1.Enabled := false;
787    
788          //Returpakkerfrapakkeshop1.Enabled := false;
789      end;      end;
790    
791      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
792      begin      begin
793         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
794         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
795      end;  
 // 20150313: slut  
796    
     if SpecialVersionSted = 'BK' then  
     begin  
797        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
798        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
799       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 805  begin Line 801  begin
801        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
802        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
803        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
804        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
805        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
806       // her skal vi også disable de menupunkter BK ikke kan bruge  
807        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
808        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
809        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
810        if SpecialVersionScanningtype = 'A' then  
811        begin        //Returpakkerfrapakkeshop1.Enabled := false;
812           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
813      end;      end;
814    
815      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
816      begin      begin
817        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
818        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
819        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
820        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
821        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
822        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
823        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
824        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
825        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
       PanelValg6.Enabled := false;  
       PanelValg6.Font.Color := clInactiveCaption;  
      // her skal vi også disable de menupunkter DBK ikke kan bruge  
       ReturpakkerfraDAO1.Enabled := false;  
       Returpakkerfraboghandler1.Enabled := false;  
826    
827        Pakkeshoplevering1.Enabled := false;       // her skal vi også disable de menupunkter BK ikke kan bruge
828        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
829          menuNatxpressReturfraKunde1.Enabled := false;
830    
831          //Returpakkerfrapakkeshop1.Enabled := false;
832    
833        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
834        begin        begin
# Line 851  begin Line 840  begin
840        end;        end;
841      end;      end;
842    
843        if SpecialVersionSted = 'DBK' then
844        begin
845          Sted := SpecialVersionSted;
846        end;
847    
848      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
849      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
850      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 870  begin Line 864  begin
864        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
865        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
866        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
867          PanelValg7.Enabled := false;
868          PanelValg7.Font.Color := clInactiveCaption;
869       // 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
870    
871        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
872    
873        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
874        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
875        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
876        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
877        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
878        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
879        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
880        begin        begin
881          Scanningtype := '4';          Scanningtype := '4';
882          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
883          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
884          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
885        end        end
# Line 892  begin Line 888  begin
888          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
889          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
890          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
891          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
892          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
893          if Scanningtype = '1' then          if Scanningtype = '1' then
894          begin          begin
895            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
896            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
897            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
898          end;          end;
899          if Scanningtype = '2' then          if Scanningtype = '2' then
900          begin          begin
901            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
902            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
903            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
904          end;          end;
905          if Scanningtype = '3' then          if Scanningtype = '3' then
906          begin          begin
907            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
908            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
909            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
910          end;          end;
911          if Scanningtype = '4' then          if Scanningtype = '4' then
912          begin          begin
913            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
914            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
915            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
916          end;          end;
917          if Scanningtype = '5' then          if Scanningtype = '5' then
918          begin          begin
919            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
920            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
921            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
922          end;          end;
923          if Scanningtype = '6' then          if Scanningtype = '6' then
924          begin          begin
925            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
926            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
927            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
928          end;          end;
# Line 965  begin Line 961  begin
961             RutenummerST.Caption := '';             RutenummerST.Caption := '';
962             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
963             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
964             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
965             exit;             exit;
966          end;          end;
967      end      end
# Line 1007  begin Line 1003  begin
1003    
1004      if Pakketype = '1' then      if Pakketype = '1' then
1005      begin      begin
1006        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
1007        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
1008      end      end
1009      else      else
1010      begin      begin
1011        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
1012        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
1013      end;      end;
1014    
# Line 1060  begin Line 1056  begin
1056      end;      end;
1057    
1058    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1059    
1060      CheckPrintQue('Opstart');  
1061        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1062        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1063    
1064    finally    finally
1065      Free;      Free;
# Line 1076  begin Line 1068  begin
1068      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
1069      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
1070      begin      begin
1071        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
1072        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
1073        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
1074        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
1075        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
1076        Testprinter1.Visible := false;        Testprinter1.Visible := false;
1077        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
1078        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
1079      end;      end;
1080    
1081      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1134  begin Line 1126  begin
1126      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1127    
1128      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1129      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1130    
1131  end;  end;
1132    
# Line 1191  begin Line 1183  begin
1183      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1184      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1185      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1186        or (NumberString = 'DAO PAKKESHOP')
1187        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1188            or (LowerCase(NumberString) = 'for stor daodirekte' )
1189      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1190    
1191      begin      begin
# Line 1201  begin Line 1196  begin
1196      begin      begin
1197        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1198      end;      end;
1199    end;    end;  // Slut ctrl-v
1200    
1201    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1202    begin    begin
1203      if (Length(Trim(Stregkode)) = 0) then  
1204        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1205        Stregkode := Trim(Stregkode);
1206    
1207        if (Length(Stregkode) = 0) then
1208      begin      begin
1209        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1210    
# Line 1214  begin Line 1213  begin
1213    
1214      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1215      begin      begin
1216         PakkeshopNulstil.Click();         btnNulstil.Click();
1217         exit;         exit;
1218      end;      end;
1219    
1220      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1221      begin      begin
1222        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1223    
# Line 1255  begin Line 1254  begin
1254         exit;         exit;
1255      end;      end;
1256    
1257        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1258        begin
1259          if chkForstorTilDirekte.Enabled then
1260          begin
1261            chkForstorTilDirekte.Checked := true;
1262          end
1263          else
1264          begin
1265             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1266          end;
1267          Stregkode := '';
1268          StregkodeST.Caption := StregKode;
1269          exit;
1270        end;
1271    
1272    
1273      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1274      begin      begin
1275         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1452  begin Line 1467  begin
1467        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1468      end;      end;
1469    
1470      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1471          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1472          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1473          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1474          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1475          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1476      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1477          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1478    
1479         exit;         exit;
1480      end;      end;
1481    
1482      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1483      begin      begin
1484        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1485        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1493  begin Line 1508  begin
1508                InitPakkeshoplevering();                InitPakkeshoplevering();
1509              end;              end;
1510            end            end
1511        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1512              begin
1513                if Scanningtype <> '6' then
1514                begin
1515                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1516    
1517                 exit;
1518                end;
1519              end
1520    
1521    
1522        else        else
1523            begin            begin
1524            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1525              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1526                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1527    
1528               exit;               exit;
1529            end;            end;
1530        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1531      end      end
1532      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1533      begin      begin
1534        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1535    
1536        exit;        exit;
1537      end;      end;
1538    
1539      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1540      begin      begin
1541        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1542        begin        begin
# Line 1524  begin Line 1549  begin
1549    
1550    
1551    
1552      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1553      begin      begin
1554        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1555        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1537  begin Line 1562  begin
1562        end;        end;
1563      end;      end;
1564    
1565      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1566        begin        begin
1567          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1568             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1569             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1570             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1571             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1572             Stregkode := '';             Stregkode := '';
1573             InitScreen();             InitScreen();
1574        end        end
1575      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1576        begin        begin
1577          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1578             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1555  begin Line 1580  begin
1580             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1581             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1582             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1583             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1584             Stregkode := '';             Stregkode := '';
1585             InitScreen();             InitScreen();
1586        end        end
1587      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1588        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1589         begin         begin
1590            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1585  begin Line 1610  begin
1610             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1611             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1612             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1613             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1614                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1615             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1616                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1617             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1618           end           end
1619          else          else
1620           begin           begin
1621                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1622                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1623                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1624                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1625                                    
1626                StregKode := '';                StregKode := '';
# Line 1607  begin Line 1632  begin
1632          InitScreen();          InitScreen();
1633       end;       end;
1634    
1635      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
1636      begin      begin
1637         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1638           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1639            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1640         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1641            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1642         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1643         try         try
# Line 1621  begin Line 1647  begin
1647            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1648            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1649            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1650               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1651               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1652              exit;              exit;
1653            end;            end;
1654            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1655            begin            begin
1656              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1657              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1646  begin Line 1668  begin
1668              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1669              begin              begin
1670                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1671                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1672                MainForm.Color := clRed;                MainForm.Color := clRed;
1673              end;              end;
1674           end;           end;
1675            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
1676            begin            begin
1677              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1678              if Storepakker1.Checked then              if menuStorePakker.Checked then
1679              begin              begin
1680                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1681              end              end
# Line 1661  begin Line 1683  begin
1683              begin              begin
1684                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1685              end;              end;
1686              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1687            end            end
1688            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1689            begin            begin
1690              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1691              if Storepakker1.Checked then              if menuStorePakker.Checked then
1692              begin              begin
1693                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1694              end              end
# Line 1674  begin Line 1696  begin
1696              begin              begin
1697                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1698              end;              end;
1699              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1700            end            end
1701            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1702            begin            begin
# Line 1685  begin Line 1707  begin
1707            end            end
1708            else            else
1709            begin            begin
1710              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1711            end;            end;
1712           if not PakkeshopNulstil.Visible then  
1713             if not btnNulstil.Visible then
1714            begin            begin
1715    
1716              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1717              begin              begin
1718                if Storepakker1.Checked then                if menuStorePakker.Checked then
1719                begin                begin
1720                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(ScannetOkStorLyd));
1721                end                end
# Line 1738  begin Line 1759  begin
1759    
1760    Key := #0;    Key := #0;
1761    
1762    
1763    
1764    
1765    
1766    
1767  end; //End of OnKeyPress  end; //End of OnKeyPress
1768    
1769    
1770    
1771  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1772  const  const
1773    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1781  var Line 1809  var
1809    
1810    
1811  begin  begin
1812      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
1813      begin      begin
1814        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1815          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1816          begin          begin
1817              wrkAntalSenere := 0;//initial Value
1818    
1819            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1820            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1821            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1822            begin            begin
1823              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1824              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1825  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1826  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1827  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1828              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1829            end            end
1830            else     // kun idag            else     // kun idag
1831            begin            begin
# Line 1900  begin Line 1929  begin
1929                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1930              end;              end;
1931            end;            end;
1932  // 20150310: slut  
1933            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1934          end;          end;
1935      end;      end;
# Line 1930  procedure TMainForm.InitBladhus(); Line 1959  procedure TMainForm.InitBladhus();
1959    
1960  begin  begin
1961    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1962    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1963    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1964    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1965    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1966    ListBox1.Visible := true;    ListBox1.Visible := true;
1967  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1968  // 20150317: start  
1969  (*    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  
1970    begin    begin
1971      IndlesScanningLogFil();      IndlesScanningLogFil();
1972    end;    end;
# Line 1989  begin Line 1978  begin
1978      01 :      01 :
1979            begin;      // NS            begin;      // NS
1980              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1981              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1982              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1983              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1984              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1985              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2001  begin Line 1990  begin
1990      02 :      02 :
1991            begin;    // BK            begin;    // BK
1992              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1993              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1994              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1995              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1996              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1997              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1998              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1999              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2000              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2001              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2016  begin Line 2005  begin
2005              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2006             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2007              begin              begin
2008                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2009              end              end
2010              else              else
2011              begin              begin
2012                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2013              end;              end;
2014              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2015              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2016              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2017              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2018              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2039  begin Line 2028  begin
2028            end;            end;
2029      04 :  begin;           // DBK      04 :  begin;           // DBK
2030              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2031              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
2032              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
2033              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2034              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2035              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2036              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2037              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2038              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2039            end;            end;
# Line 2060  var Line 2049  var
2049    URLStr : String;    URLStr : String;
2050    pakkestorrelse : String;    pakkestorrelse : String;
2051    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
2052    
2053      PakkeshopLabel: TPakkeshopLabel;
2054  begin  begin
2055    if radioStorPakke.Checked then    if radioStorPakke.Checked then
2056    begin    begin
# Line 2069  begin Line 2060  begin
2060    begin    begin
2061      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
2062    end;    end;
2063    if Pakkernormal1.Checked then  
2064    
2065      if menuNatXpress1.Checked then
2066    begin    begin
2067       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
2068       begin       begin
# Line 2077  begin Line 2070  begin
2070       end;       end;
2071       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2072    end    end
2073    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
2074    begin    begin
2075       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2076    end    end
2077    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
2078    begin    begin
2079       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2080    end    end
2081    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
2082    begin    begin
2083       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2084    end    end
2085    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
2086    begin    begin
2087       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2088    end    end
2089    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
2090    begin    begin
2091       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2092    end    end
2093      else if menuIndlevering.Checked then
2094      begin
2095        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2096      end
2097    else    else
2098    begin    begin
2099      exit;      exit;
2100    end;    end;
2101    
2102      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2103      begin
2104        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2105      end;
2106    
2107    try    try
2108      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2109      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2125  begin
2125          end;          end;
2126      end;      end;
2127    end;    end;
2128    
2129    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2130    try    try
2131      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2132       begin       begin
2133        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2134        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2132  begin Line 2136  begin
2136        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2137        PrintNyLabel := False;        PrintNyLabel := False;
2138    
2139        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2140        begin        begin
2141          try          try
2142            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2143  begin Line 2147  begin
2147          begin          begin
2148            PrintNyLabel := True;            PrintNyLabel := True;
2149          end;          end;
 // 20150310: start  
2150        end;        end;
 // 20150310: slut  
2151       end       end
2152        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2153        begin
2154    
2155    
2156    
2157    
2158         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2159         if (Kommentar = 'Ok') then
2160         begin
2161           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2162           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2163           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2164           Stregkode := PakkeshopLabel.Stregkode;
2165    
2166           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2167           chkForstorTilDirekte.Checked := false;
2168    
2169         end;
2170    
2171    
2172        end
2173      else      else
2174       begin       begin
2175        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2154  begin Line 2177  begin
2177        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2178        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2179        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2180        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2181          begin          begin
2182          try          try
2183            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2179  begin Line 2202  begin
2202          PrintNyLabel := True;          PrintNyLabel := True;
2203        end;        end;
2204      end;      end;
2205    
2206    
2207      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2208      begin      begin
2209        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2210        begin        begin
2211            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2212            PrintNyLabel := False;            PrintNyLabel := False;
2213        end;        end;
2214      end      end
2215      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2216      begin      begin
2217         if (Leveringssted = 'E') and (Sted = 'DBK') then         if (Leveringssted = 'E') and (Sted = 'DBK') then
2218         begin         begin
# Line 2195  begin Line 2220  begin
2220         end         end
2221         else         else
2222         begin         begin
2223            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2224            PrintNyLabel := False;            PrintNyLabel := False;
2225         end;         end;
2226      end;      end;
# Line 2216  begin Line 2241  begin
2241    //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
2242    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2243    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2244    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2245      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2246    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2247    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2228  begin Line 2253  begin
2253      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2254    end;    end;
2255    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2256    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2257    begin    begin
2258      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2259    end;    end;
2260    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2261    begin    begin
2262      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2263    end;    end;
2264    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2265       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2266    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2267    begin    begin
2268      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2269    end;    end;
2270    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2271    begin    begin
2272       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2273        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2254  begin Line 2279  begin
2279          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2280        end;        end;
2281    end;    end;
2282    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2283    begin    begin
2284      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2285    end;    end;
2286    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2287    begin    begin
2288      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2289      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2271  begin Line 2296  begin
2296        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2297      end;      end;
2298    end;    end;
2299      if menuIndlevering.Checked then
2300      begin
2301        List1Msg := Stregkode;
2302      end;
2303    
2304    
2305    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2306    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2307    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2308  end;  end;
2309    
2310  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2311  begin  begin
2312    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2313    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2292  pakkeForkertSted : Integer; Line 2323  pakkeForkertSted : Integer;
2323    kontrolKoreliste : string;    kontrolKoreliste : string;
2324    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2325  begin  begin
2326    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2327       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2328    
2329    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2330    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2330  begin Line 2361  begin
2361        end;        end;
2362    end    end
2363    else    else
2364    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2365    begin    begin
2366       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2367       begin       begin
# Line 2338  begin Line 2369  begin
2369    
2370          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2371          MainForm.Color := clRed;          MainForm.Color := clRed;
2372          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2373    
2374       end       end
2375       else       else
# Line 2349  begin Line 2380  begin
2380            PrintNyLabel := true;            PrintNyLabel := true;
2381            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2382            nyFarve := Farve;            nyFarve := Farve;
2383            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2384            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2385            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2386            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2365  begin Line 2396  begin
2396            begin            begin
2397              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2398              MainForm.Color := clRed;              MainForm.Color := clRed;
2399              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2400            end;            end;
2401    
2402         end;         end;
# Line 2391  begin Line 2422  begin
2422            begin            begin
2423              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2424              MainForm.Color := clRed;              MainForm.Color := clRed;
2425              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2426            end;            end;
2427    
2428         end;         end;
# Line 2399  begin Line 2430  begin
2430    
2431    end;    end;
2432    
2433    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2434    begin    begin
2435      case BladhusSted of      case BladhusSted of
2436        00 :  begin;        00 :  begin;
# Line 2411  begin Line 2442  begin
2442               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2443  // 20150304: slut  // 20150304: slut
2444                begin                begin
2445                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2446                end;                end;
2447              end;              end;
2448        01 :  begin;        01 :  begin;
2449               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2450                    // 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
2451                    // 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')
2452                begin                begin
2453                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2454                end;                end;
2455              end;              end;
2456        02 :  begin;        02 :  begin;
2457                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
2458                begin                begin
2459                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2460                end;                end;
2461              end;              end;
2462        03 :  begin;        03 :  begin;
2463               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2464                    // 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
2465                    // 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')
2466               begin               begin
2467                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2468               end;               end;
2469              end;              end;
2470        04 :  begin;        04 :  begin;
2471                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
2472                begin                begin
2473                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2474                end;                end;
2475              end;              end;
2476        else        else
# Line 2448  begin Line 2479  begin
2479    end;    end;
2480    
2481  // 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
2482    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
2483    begin    begin
2484      exit;      exit;
2485    end;    end;
2486    
2487    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
2488    begin    begin
2489    end    end
2490    else    else
# Line 2475  begin Line 2506  begin
2506        end;        end;
2507        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2508        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2509        with Printer do  
2510        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2511          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;  
2512      end;      end;
2513    end;    end;
2514    
2515  end;  end;
2516    
 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;  
2517    
2518    
2519  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2520  begin  begin
2521      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2522      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2523  end;  end;
2524    
2525  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2526  begin  begin
2527      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2528      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2529  end;  end;
2530    
# Line 2596  begin Line 2567  begin
2567    end;    end;
2568  end;  end;
2569    
2570  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2571  begin  begin
2572        Scanningtype := '5';        Scanningtype := '5';
2573        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2605  end; Line 2576  end;
2576    
2577  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2578  begin  begin
2579      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2580      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2581      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2582    
# Line 2617  begin Line 2588  begin
2588        // 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)
2589        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2590        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2591        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2592      end;      end;
2593  // 20150317: slut  // 20150317: slut
2594  end;  end;
# Line 2632  begin Line 2603  begin
2603    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2604    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...');
2605    
2606          // Tjekker urls    try
2607          logTekst := 'Tjekker urls.';      // Tjekker urls
2608          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2609          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2610        SkrivScanningLogFil(logTekst);
2611    
         // 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;  
2612    
         // 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;  
2613    
2614          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2615          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2616          begin      begin
2617            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2618            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;  
2619    
2620          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2621          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2622          begin      begin
2623            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2624            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;  
2625    
2626          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2627          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2628          begin      begin
2629            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2630            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;  
2631    
2632          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2633          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2634          begin      begin
2635            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2636            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;  
2637    
2638          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2639          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2640          or (PanelValg4.Enabled = true) then      begin
2641          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2642            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;  
2643    
2644          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2645          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2646          begin      begin
2647            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2648            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;  
2649    
2650          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2651          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2652          begin      begin
2653            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2654            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;  
2655    
2656          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2657          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2658          begin      begin
2659            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2660            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;  
2661    
2662        // Tjekker UrlPakkeshopManglendeReturScanninger
2663        if PanelValg6.Enabled = true then
2664        begin
2665          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2666        end;
2667    
2668          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2669          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2670          begin      begin
2671            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2672            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2673              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;  
2674    
2675        // Tjekker UrlEKLoverforsel
2676        if PanelValg1.Enabled = true then
2677        begin
2678          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2679        end;
2680    
         // 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;  
2681    
2682          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2683          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2684          begin      begin
2685            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2686            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;  
2687    
         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;  
2688    
2689        // Tjekker UrlFindPakketype
2690        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2691    
2692        // Tjekker UrlSendPrograminfo
2693        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2694    
2695    
2696    
2697        logTekst := 'urls er ok';
2698        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2699        SkrivScanningLogFil(logTekst);
2700    
2701      Except
2702        TjekUrls := '-';   // markerer at der var fejl
2703    
2704      end;
2705  end;  end;
2706    
2707  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2708  var  const
2709     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2710  begin  begin
2711     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2712     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2713     Result := SystemTimeToDateTime(SystemTime) ;    begin
2714        logTekst := UrlNavn + ' accepteret: ' + Url;
2715        SkrivScanningLogFil(logTekst);
2716      end
2717      else
2718      begin
2719        inc(urlFejl);   // Optæller antal fejl
2720        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2721        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2722        if TjekUrls = '1' then
2723        begin
2724          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2725        end;
2726    
2727        SkrivScanningLogFil(logTekst);
2728    
2729        if TjekUrls = '1' then
2730        begin
2731          ShowMessage(logTekst);
2732          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2733          Application.Terminate;
2734    
2735          raise Exception.Create('UrlFejl');
2736    
2737        end;
2738      end;
2739    
2740  end;  end;
2741    
2742    
2743    
2744  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2745  var  var
2746    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2757  begin
2757      repeat      repeat
2758        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2759        begin        begin
2760    
2761          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2762          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2763          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2764          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2765          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2766          // (æ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 3077  begin Line 2797  begin
2797    end;    end;
2798  end;  end;
2799    
2800  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2801  begin  begin
2802    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2803    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2804    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2805    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2806    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2807    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3099  begin Line 2819  begin
2819  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2820    if Farve <> '' then    if Farve <> '' then
2821    begin    begin
2822       MainForm.Color := 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  
2823    end;    end;
2824    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2825    begin    begin
2826       InitLillePakke();       InitLillePakke();
2827    end;    end;
# Line 3173  end; Line 2883  end;
2883    
2884  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2885  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;  
 *)  
2886  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2887  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2888       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2889       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2890       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2891  // 20150311: slut  
2892    
2893    
2894  end;  end;
2895    
2896  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2897  begin  begin
2898        Scanningtype := '1';        Scanningtype := '1';
2899        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3231  begin Line 2928  begin
2928      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2929      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2930      MainForm.Color := clRed;      MainForm.Color := clRed;
2931      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2932    end    end
2933    else    else
2934    begin    begin
# Line 3266  begin Line 2963  begin
2963    Falsk := False;    Falsk := False;
2964    
2965    
2966    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2967    begin    begin
2968      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2969    end    end
# Line 3281  begin Line 2978  begin
2978      DBKbane := '999';      DBKbane := '999';
2979      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2980      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2981      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2982    end;    end;
2983    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2984  end;  end;
# Line 3290  procedure TMainForm.Timer1Timer(Sender: Line 2987  procedure TMainForm.Timer1Timer(Sender:
2987  begin  begin
2988    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2989    begin    begin
2990      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2991    end    end
2992    else    else
2993    begin    begin
# Line 3299  begin Line 2996  begin
2996    end;    end;
2997  end;  end;
2998    
2999  {  
  VERY fast split function  
  this function returns part of a string based on  
  constant defineable delimiters, such as ";". So  
  SPLIT('this is a test ',' ',3) = 'is' or  
  SPLIT('data;another;yet;again;more;',';',4) = 'yet'  
   
  Split function shifts index integer by two to  
  be compatible with commonly used PD split function  
  gpl 2004 / Juhani Suhonen  
 }  
 function TMainForm.split(input: string; schar: Char; s: Integer): string;  
 var  
   c: array of Integer;  
   b, t: Integer;  
 begin  
   Dec(s, 2);  // for compatibility with very old & slow split function  
   t := 0;     // variable T needs to be initialized...  
   setlength(c, Length(input));  
   for b := 0 to pred(High(c)) do  
   begin  
     c[b + 1] := posex(schar, input, succ(c[b]));  
     // BREAK LOOP if posex looped (position before previous)  
     // or wanted position reached..  
     if (c[b + 1] < c[b]) or (s < t) then break  
     else  
       Inc(t);  
   end;  
   Result := Copy(input, succ(c[s]), pred(c[s + 1] - c[s]));  
 end;  
3000    
3001  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3002  const  const
# Line 3337  var Line 3005  var
3005   tekst, filversion : String;   tekst, filversion : String;
3006  begin  begin
3007    
3008    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
3009    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';
3010    
3011    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 3027  begin
3027          end          end
3028          else          else
3029          begin          begin
3030            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3031          end;          end;
3032      end      end
3033      else      else
3034      begin      begin
3035        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3036      end;      end;
3037    end;    end;
3038    
# Line 3380  begin Line 3048  begin
3048    
3049  end;  end;
3050    
3051    
3052  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3053    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3054  var  var
# Line 3432  begin Line 3101  begin
3101    
3102    if FileExists(fileName) then    if FileExists(fileName) then
3103    begin    begin
3104      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3105      begin      begin
3106        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3107        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3125  begin
3125    
3126    if FileExists(fileName) then    if FileExists(fileName) then
3127    begin    begin
3128      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3129      begin      begin
3130        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3131        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3132      end      end
3133      else      else
3134      begin      begin
3135        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3136      end;      end;
3137    end    end
3138    else    else
# Line 3472  begin Line 3141  begin
3141    end;    end;
3142  end;  end;
3143    
3144    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3145    begin
3146      Scanningtype := '7';
3147      NulstilAutomatiskValg();
3148      InitIndleveringskode();
3149    end;
3150    
3151  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3152  begin  begin
3153    
# Line 3487  begin Line 3163  begin
3163    
3164  end;  end;
3165    
3166  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3167  begin  begin
3168        Scanningtype := '2';        Scanningtype := '2';
3169        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3170        InitReturFraDao();        InitReturFraDao();
3171  end;  end;
3172    
3173  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3174  begin  begin
3175        Scanningtype := '6';        Scanningtype := '6';
3176        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3503  end; Line 3179  end;
3179    
3180  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3181  begin  begin
3182        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3183        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3184        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3185        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3186        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3187        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
# Line 3517  begin Line 3193  begin
3193        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3194        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3195        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3196        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3197        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3198        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3199        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3200        ListBox1.Visible := true;        ListBox1.Visible := true;
3201        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3202        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3203        InitLillePakke();        InitLillePakke();
3204        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3205    
3206          chkForstorTilDirekte.Checked := false;
3207          chkForstorTilDirekte.Enabled := false;
3208    
3209        if BladhusSted = 0 then        if BladhusSted = 0 then
3210        begin        begin
3211          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3535  end; Line 3215  end;
3215    
3216  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3217  begin  begin
3218        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3219        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3220        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3221        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3222        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3223        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
# Line 3549  begin Line 3229  begin
3229        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3230        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3231        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3232        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3233        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3234        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3235        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3236        ListBox1.Visible := true;        ListBox1.Visible := true;
3237        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3238        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3239        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3240    
3241          chkForstorTilDirekte.Checked := false;
3242          chkForstorTilDirekte.Enabled := false;
3243    
3244        InitLillePakke();        InitLillePakke();
3245  end;  end;
3246    
3247  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3248  begin  begin
3249        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3250        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3251        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3252        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3253        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3254        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
# Line 3575  begin Line 3259  begin
3259        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3260        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3261        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3262        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3263        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3264        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3265        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3266        ListBox1.Visible := true;        ListBox1.Visible := true;
3267        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3268        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3269        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3270    
3271          chkForstorTilDirekte.Checked := false;
3272          chkForstorTilDirekte.Enabled := false;
3273    
3274        InitLillePakke();        InitLillePakke();
3275  end;  end;
3276    
3277  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3278  begin  begin
3279        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3280        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3281        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3282        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3283        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3284        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
# Line 3602  begin Line 3290  begin
3290        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3291        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3292        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3293        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3294        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3295        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3296        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3297        ListBox1.Visible := true;        ListBox1.Visible := true;
3298        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3299        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3300        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3301        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3302        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3303        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3304        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3305    
3306          chkForstorTilDirekte.Checked := false;
3307          chkForstorTilDirekte.Enabled := true;
3308    
3309        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3310        begin        begin
3311            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3624  end; Line 3316  end;
3316    
3317  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3318  begin  begin
3319        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3320        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3321        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3322        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3323        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3324        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
# Line 3638  begin Line 3330  begin
3330        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3331        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3332        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3333        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3334        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3335        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3336        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3337        ListBox1.Visible := true;        ListBox1.Visible := true;
3338        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3339        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3340        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3341    
3342          BtnEKLoverforsel.Enabled := true;
3343    
3344        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3345          chkForstorTilDirekte.Enabled := true;
3346    
3347        InitLillePakke();        InitLillePakke();
3348        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3661  end; Line 3356  end;
3356    
3357  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3358  begin  begin
3359        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3360        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3361        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3362        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3363        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3364        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
# Line 3675  begin Line 3370  begin
3370        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3371        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3372        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3373        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3374        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3375        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3376        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3377        ListBox1.Visible := true;        ListBox1.Visible := true;
3378        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3379        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3380        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3381        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3382    
3383          chkForstorTilDirekte.Checked := false;
3384          chkForstorTilDirekte.Enabled := false;
3385    
3386    
3387        InitLillePakke();        InitLillePakke();
3388        IndlesScanningLogFil();        IndlesScanningLogFil();
3389        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3694  begin Line 3394  begin
3394        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3395  end;  end;
3396    
3397  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3398  begin  begin
3399        Scanningtype := '3';        Scanningtype := '3';
3400        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3703  end; Line 3403  end;
3403    
3404  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3405  begin  begin
3406        AutomatiskTjekkodeStyring1.Enabled := false;        menuIndlevering.Checked := true;
3407        Returpakkerfrapakkeshop1.Checked := true;        menuAutomatiskTjekkodeStyring.Enabled := false;
3408        PakkeshopNulstil.Visible := false;  
3409          btnNulstil.Visible := false;
3410        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3411        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3412        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
# Line 3720  begin Line 3421  begin
3421    
3422    
3423    
3424        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3425        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3426        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3427        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3428        ListBox1.Visible := true;        ListBox1.Visible := true;
3429        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3430    
3431        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3432        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3433        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3434    
3435          chkForstorTilDirekte.Checked := false;
3436          chkForstorTilDirekte.Enabled := false;
3437    
3438    
3439        InitLillePakke();        InitLillePakke();
3440        IndlesScanningLogFil();        IndlesScanningLogFil();
3441        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3741  begin Line 3447  begin
3447  end;  end;
3448    
3449    
3450  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3451  begin  begin
3452    InitStorPakke();    InitStorPakke();
3453  end;  end;
3454    
3455  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3456  begin  begin
3457    InitLillePakke();    InitLillePakke();
3458  end;  end;
# Line 3754  end; Line 3460  end;
3460  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3461  begin  begin
3462    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3463    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3464  //  Stregkode := '';  //  Stregkode := '';
3465  end;  end;
3466    
3467  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3468  begin  begin
3469    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3470    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3471  // 20150310: start  // 20150310: start
3472  //  Stregkode := '';  //  Stregkode := '';
3473  // 20150310: slut  // 20150310: slut
3474  end;  end;
3475    
 /// <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 = '';  
   const Fmt: String = '%d.%d.%d.%d'): String;  
 var  
   sFileName: String;  
   iBufferSize: DWORD;  
   iDummy: DWORD;  
   pBuffer: Pointer;  
   pFileInfo: Pointer;  
   iVer: array[1..4] of Word;  
   S : String;  
 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;  
     // format result string  
     Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);  
3476    
     // Hvorfor virker ovenstående ikke ???  
     S := '';  
     Str(iVer[1], Result);  
     S := S+Result+'.';  
     Str(iVer[2], Result);  
     S := S+Result+'.';  
     Str(iVer[3], Result);  
     S := S+Result+'.';  
     Str(iVer[4], Result);  
     S := S+Result+'';  
     Result := S;  
   end;  
 end;  
3477    
3478  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3479  begin  begin
# Line 3870  begin Line 3511  begin
3511       exit;       exit;
3512    end;    end;
3513    
3514    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3515       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
3516       begin       begin
3517         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(ScannetOkLyd));
# Line 3879  begin Line 3520  begin
3520       begin       begin
3521         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3522       end;       end;
3523    if Storepakker1.Checked then    if menuStorePakker.Checked then
3524       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
3525       begin       begin
3526         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(ScannetOkStorLyd));
# Line 3891  begin Line 3532  begin
3532  end;  end;
3533    
3534    
3535  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3536  begin  begin
3537        Scanningtype := '4';        Scanningtype := '4';
3538        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3903  begin; Line 3544  begin;
3544    CheckCode();    CheckCode();
3545  end;  end;
3546    
3547  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3548  var  var
3549    WebSvar : String;    WebSvar : String;
3550    URLStr : String;    URLStr : String;
# Line 3913  var Line 3554  var
3554    status, kommentar : String;    status, kommentar : String;
3555    
3556  begin  begin
3557      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3558    
3559      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');
3560      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3561      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3562      StedKode := Sted;      StedKode := Sted;
3563      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3564  // 20150330: start  
3565      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3566      begin      begin
3567        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3568      end;      end;
3569  // 20150330: slut  
3570    
3571      try      try
3572      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3617  begin
3617        end;        end;
3618      end;      end;
3619    
3620      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3621    
3622      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
3623    
# Line 3993  begin Line 3634  begin
3634           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3635         end;         end;
3636         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3637         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3638      end;      end;
3639    
3640  end;  end;
# Line 4017  begin Line 3658  begin
3658    else    else
3659      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3660  }  }
3661    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3662    
3663    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3664    CheckCode();    CheckCode();
# Line 4025  end; Line 3666  end;
3666    
3667  end;  end;
3668    
 function TMainForm.BarCodeValid (ACode: string): boolean;  
 var  
    I: integer;  
    SumOdd, SumEven: integer;  
    ADigit, AChecksumDigit: integer;  
 begin  
    SumOdd := 0;  
    SumEven := 0;  
    for I := 1 to (Length (ACode) - 1) do begin  
       ADigit := StrToIntDef (ACode [I], 0);  
       if (I MOD 2 = 0) then begin  
          SumEven := SumEven + ADigit;  
       end else begin  
          SumOdd := SumOdd + ADigit;  
       end; {if}  
    end; {for}  
    AChecksumDigit := StrToIntDef (ACode [Length (ACode)], 0);  
    Result := ((SumOdd*3 + SumEven + AChecksumDigit) MOD 10 = 0);  
 end; {--BarCodeValid--}  
   
 { used for EAN 8/13 }  
 function TMainForm.CheckSumModulo10(const data:string):string;  
         var i,fak,sum : Integer;  
 begin  
         sum := 0;  
         fak := Length(data);  
         for i:=1 to Length(data) do  
         begin  
                 if (fak mod 2) = 0 then  
                         sum := sum + (StrToInt(data[i])*1)  
                 else  
                         sum := sum + (StrToInt(data[i])*3);  
                 dec(fak);  
         end;  
         if (sum mod 10) = 0 then  
                 result := data+'0'  
         else  
                 result := data+IntToStr(10-(sum mod 10));  
 end;  
3669    
3670  //  //
3671  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4143  begin
4143    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
4144  end;  end;
4145    
4146  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4147  begin  begin
4148      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4149      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
4150  end;  end;
4151    
4152  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4153  const  const
4154    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4155    
# Line 4556  begin Line 4158  begin
4158      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
4159  end;  end;
4160    
4161  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4162  begin  begin
4163      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4164      begin      begin
# Line 4565  begin Line 4167  begin
4167      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
4168  end;  end;
4169    
4170  function TMainForm.Explode(var a: TStrArray; Border, S: string): Integer;  
 var  
   S2: string;  
 begin  
   Result  := 0;  
   S2 := S + Border;  
   repeat  
     SetLength(A, Length(A) + 1);  
     a[Result] := Copy(S2, 0,Pos(Border, S2) - 1);  
     Delete(S2, 1,Length(a[Result] + Border));  
     Inc(Result);  
   until S2 = '';  
 end;  
4171    
4172  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4173  var  var
# Line 4588  var Line 4178  var
4178    I: Integer;    I: Integer;
4179    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4180    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4181    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4182    pakketyper : TStrings;    //pakketyper : TStrings;
4183      pakketyper : TDictionary<String, Integer>;
4184      tmpAntal : Integer;
4185    
4186    
4187    
4188    antlin : Integer;    antlin : Integer;
4189    
4190    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4191    
4192    XmlFelter : TStrings;    //XmlFelter : TStrings;
4193      XmlFelter : TDictionary<String, Integer>;
4194    
4195   begin   begin
4196      XmlFelter := TStringList.Create;  
4197      pakketyper := TStringList.Create;  
4198        XmlFelter := TDictionary<String, Integer>.Create;
4199        pakketyper := TDictionary<String, Integer>.Create;
4200    
4201      linienr := 0;      linienr := 0;
4202      ListBox2.Clear;      ListBox2.Clear;
4203      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 4613  var Line 4212  var
4212          StedKode := Sted;          StedKode := Sted;
4213        end;        end;
4214    
4215          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4216    
4217    
4218      if (Scanningtype = '6') then  
4219        if (Scanningtype = '7') then
4220         begin
4221          URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4222         end
4223        else if (Scanningtype = '6') then
4224       begin       begin
4225        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4226       end       end
4227      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4228       begin       begin
4229        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4230       end       end
4231      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4232       begin       begin
# Line 4645  var Line 4251  var
4251        begin        begin
4252          // 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
4253          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4254    
4255    
4256    
4257        end;        end;
4258        on e:exception do        on e:exception do
4259        begin        begin
# Line 4667  var Line 4276  var
4276            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4277              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4278              begin              begin
4279                 antlin := antlin + 1;                 Inc(antlin);
4280                 // 20150306: start                 // 20150306: start
4281                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4282                begin                begin
4283                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4284                   begin                   begin
4285                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4286                   end                   end
4287                   else                   else
4288                   begin                   begin
4289                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4290                   end;                   end;
4291                end;                end;
4292                 // 20150306: slut                 // 20150306: slut
4293              end;              end;
4294            end;            end;
4295            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4296                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4297                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4298                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4299                  end
4300                else                else
4301                  XmlFelter.values[Node.NodeName] := '1';                begin
4302                    XmlFelter.Add(Node.NodeName, 1);
4303                  end;
4304    
4305        end;        end;
4306        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4308  var
4308        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4309        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4310    
4311    
4312          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4313    
4314        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4315        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4316        begin        begin
# Line 4702  var Line 4319  var
4319        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4320    
4321        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4322    
4323    
4324        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4325            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4326            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4328  var
4328                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4329                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4330                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4331              end;              end
4332              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4333                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4334                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4335                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4336              end;              end
4337              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4338                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4339                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4340                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4341              end;              end
4342              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4343                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4344                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4345                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4346              end;              end
4347              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4348                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4349                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4350                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4351                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4352                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4353                    pakketyper.TryGetValue(pakketype, tmpAntal);
4354                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4355                  end
4356                else                else
4357                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4358              end;              end
4359              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4360                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4361                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4362                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4363                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4364                  begin                  begin
4365  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4366                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4367                    begin                    begin
4368                      stregkoderMedTjekkodeArray[linienr] := 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
4369                    end                    end
4370                    else                    else
4371                    begin                    begin
# Line 4753  var Line 4374  var
4374                    linienr := linienr + 1;                    linienr := linienr + 1;
4375                  end;                  end;
4376              end;              end;
4377    
4378    
4379              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4380              begin              begin
4381                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4768  var Line 4391  var
4391              end;              end;
4392            end;            end;
4393        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4394    
4395          // Free up the list object  
4396          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4397    
4398    
4399          for pakketype in pakketyper.Keys do
4400          begin
4401            pakketyper.TryGetValue(pakketype, tmpAntal);
4402            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4403          end;
4404    
4405            // Free up the dictionary object
4406        pakketyper.Free;        pakketyper.Free;
4407    
4408    
4409    
4410  //      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.');
4411        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4412        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4934  var Line 4566  var
4566     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4567     imorgenYmd : string;     imorgenYmd : string;
4568     logFilnavn : string;     logFilnavn : string;
4569      error : Integer;     //error : Integer;
4570    
4571  begin  begin
4572    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4658  begin
4658          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4659          S := buffer;          S := buffer;
4660          SetLength(A,0);          SetLength(A,0);
4661          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4662          if (length(A) < 2) then          if (length(A) < 2) then
4663          begin          begin
4664            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4665          end;          end;
4666            if (length(A) > 1) then            if (length(A) > 1) then
4667            begin            begin
# Line 5103  begin Line 4735  begin
4735          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4736          S := buffer;          S := buffer;
4737          SetLength(A,0);          SetLength(A,0);
4738          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4739          if (length(A) < 3) then          if (length(A) < 3) then
4740          begin          begin
4741            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4742          end;          end;
4743          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4744          begin          begin
# Line 5203  begin Line 4835  begin
4835    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4836    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4837    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4838    MainForm.Color := clRed;    MainForm.Color := clRed;
4839    
4840    
4841    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4842    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4843    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4844    PakkeshopNulstil.Visible := true;  
4845      if (strMessage <> '') then
4846      begin
4847        ListBox1.Items.Insert(0, strMessage);
4848        KommentarST.Caption := strMessage;
4849      end;
4850    
4851      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4852    
4853  end;  end;
4854    
4855  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 4909  begin
4909    result := svar;    result := svar;
4910  end;  end;
4911    
 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;  
4912    
4913  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4914  begin  begin
# Line 5301  begin Line 4922  begin
4922    end;    end;
4923  end;  end;
4924    
4925  function TMainForm.AdobeReaderExists: Boolean;  
4926  var  //Nedarvet fra IParentForm
4927    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4928  begin  begin
4929    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4930  end;  end;
4931    
4932  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4933  type  procedure TMainForm.LogMessage( msg : string);
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
4934  begin  begin
4935      ListBox1.Items.Insert(0, msg);
4936      SkrivScanningLogFil(msg);
4937    end;
4938    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4939    
4940    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4941    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4942      printerTxt := 'Der er fravalgt printer i dette program';  begin
4943      ListBox1.Items.Insert(0,printerTxt);  
4944      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4945    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4946    begin    begin
4947      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4948      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4949      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4950    end    end
4951    else    else
4952    begin    begin
4953      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4954      try      PrinterstatusStaticText1.Color := clWhite;
4955        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;  
4956    end;    end;
4957  end;  end;
4958    
4959  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4960  var  function TMainForm.GetFormObject() : TForm;
   hSession, hfile, hRequest: hInternet;  
   dwindex,dwcodelen :dword;  
   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;  
   
 end;  
   
 // 20150310: start  
 procedure TMainForm.RoundCornerOf(Control: TWinControl);  
 var  
    R: TRect;  
    Rgn: HRGN;  
4961  begin  begin
4962     with Control do    Result := self;
    begin  
      R := ClientRect;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ;  
      rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 25, 25) ;  
 //     rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 30, 30) ;  
      Perform(EM_GETRECT, 0, lParam(@r)) ;  
      InflateRect(r, - 4, - 4) ;  
      Perform(EM_SETRECTNP, 0, lParam(@r)) ;  
      SetWindowRgn(Handle, rgn, True) ;  
      Invalidate;  
    end;  
4963  end;  end;
 // 20150310: slut  
4964    
4965  end.  end.
4966    

Legend:
Removed from v.2660  
changed lines
  Added in v.3073

  ViewVC Help
Powered by ViewVC 1.1.20