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

Diff of /dao/DelphiScanner/Main.pas

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

Main.pas revision 2645 by torben, Thu Aug 20 20:12:11 2015 UTC dao/DelphiScanner/Main.pas revision 3076 by torben, Thu Jul 28 20:03:18 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,
23      PakkeshopLabels,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections,
30      TimingHelper
31    
32    ;    ;
33    
34  type  type
35    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
36      StregkodeST: TStaticText;      StregkodeST: TStaticText;
37      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
38      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
39      IdHTTP1: TIdHTTP;      IdHTTP1: TIdHTTP;
40      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
41      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
42      CheckBox1: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
43      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
44      N1: TMenuItem;      N1: TMenuItem;
45      Pakkernormal1: TMenuItem;      menuNatXpress1: TMenuItem;
46      ReturpakkerfraDAO1: TMenuItem;      menuNatxpressReturDAO1: TMenuItem;
47      Returpakkerfraboghandler1: TMenuItem;      menuNatxpressReturfraKunde1: TMenuItem;
48      Hjlp1: TMenuItem;      Hjlp1: TMenuItem;
49      Om1: TMenuItem;      Om1: TMenuItem;
50      Testforbindelsen1: TMenuItem;      Testforbindelsen1: TMenuItem;
# Line 36  type Line 54  type
54      Lukprogrammet1: TMenuItem;      Lukprogrammet1: TMenuItem;
55      N2: TMenuItem;      N2: TMenuItem;
56      N3: TMenuItem;      N3: TMenuItem;
57      RadioButton1: TRadioButton;      radioStorPakke: TRadioButton;
58      RadioButton2: TRadioButton;      radioLillePakke: TRadioButton;
59      N4: TMenuItem;      N4: TMenuItem;
60      Storepakker1: TMenuItem;      menuStorePakker: TMenuItem;
61      Smpakker1: TMenuItem;      menuSmaaPakker: TMenuItem;
62      Panel1: TPanel;      Panel1: TPanel;
63      Testlyd2: TMenuItem;      Testlyd2: TMenuItem;
64      Button1: TButton;      Button1: TButton;
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      menuDaoDirekte1: TMenuItem;
68      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
71      ListBox2: TListBox;      ListBox2: TListBox;
72      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
73      UploadButton01: TButton;      BtnUploadLogfil: TButton;
74      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      menuPakkeshop1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      PakkeshopNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      menuPakkeshopRetur1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      CheckBox2: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
85      PrinterstatusStaticText1: TStaticText;      PrinterstatusStaticText1: TStaticText;
86      Timer1: TTimer;      Timer1: TTimer;
87      CheckBox3: TCheckBox;      chkScanTjekkode: TCheckBox;
88      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
89      Automatisktjekkodestyring1: TMenuItem;      menuAutomatiskTjekkodeStyring: TMenuItem;
90      Automatiskvalg1: TMenuItem;      menuAutomatiskvalg1: TMenuItem;
91      PanelValgA: TPanel;      PanelValgA: TPanel;
92      PanelValg1: TPanel;      PanelValg1: TPanel;
93      PanelValg2: TPanel;      PanelValg2: TPanel;
# Line 77  type Line 95  type
95      PanelValg4: TPanel;      PanelValg4: TPanel;
96      PanelValg5: TPanel;      PanelValg5: TPanel;
97      PanelValg6: TPanel;      PanelValg6: TPanel;
98        PanelValg7: TPanel;
99      Manualgenerel1: TMenuItem;      Manualgenerel1: TMenuItem;
100      StaticTextManglendePakker: TStaticText;      StaticTextManglendePakker: TStaticText;
101      PanelManglendePakker1: TPanel;      PanelManglendePakker1: TPanel;
# Line 85  type Line 104  type
104      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107        menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109        chkEmballageRepareret: TCheckBox;
110        KommentarST: TLabel;
111        chkUdenforSpecifikation: TCheckBox;
112    
113    
114    
   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;  
115    function getProddato() : TDate;    function getProddato() : TDate;
116    function getProddag() : String;    function getProddag() : String;
117    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
   function AdobeReaderExists(): Boolean;  
   function FileTime2DateTime(FileTime: TFileTime): TDateTime;  
   function split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
118    
119    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
120    procedure StartScreen();    procedure StartScreen();
# Line 112  type Line 127  type
127    procedure FormKeyPress(Sender: TObject; var Key: Char);    procedure FormKeyPress(Sender: TObject; var Key: Char);
128    procedure FormCreate(Sender: TObject);    procedure FormCreate(Sender: TObject);
129    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
130    procedure RadioButton1Click(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
131    procedure RadioButton2Click(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
132    procedure CheckBox1Click(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
133    procedure Pakkernormal1Click(Sender: TObject);    procedure menuNatXpress1Click(Sender: TObject);
134    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
135    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
136    procedure Om1Click(Sender: TObject);    procedure Om1Click(Sender: TObject);
137    procedure Lukprogrammet1Click(Sender: TObject);    procedure Lukprogrammet1Click(Sender: TObject);
138    procedure Sprgefterboghandlernummer1Click(Sender: TObject);    procedure Sprgefterboghandlernummer1Click(Sender: TObject);
139    procedure ReturpakkerfraDAO1Click(Sender: TObject);    procedure menuNatxpressReturDAO1Click(Sender: TObject);
140    procedure Returpakkerfraboghandler1Click(Sender: TObject);    procedure menuNatxpressReturfraKunde1Click(Sender: TObject);
141    procedure Storepakker1Click(Sender: TObject);    procedure menuStorePakkerClick(Sender: TObject);
142    procedure Smpakker1Click(Sender: TObject);    procedure menuSmaaPakkerClick(Sender: TObject);
143    procedure Testlyd1Click(Sender: TObject);    procedure Testlyd1Click(Sender: TObject);
144    procedure Testlyd2Click(Sender: TObject);    procedure Testlyd2Click(Sender: TObject);
145    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
146    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
147    procedure Budlevering1Click(Sender: TObject);    procedure menuDaoDirekte1Click(Sender: TObject);
148    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
149    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
150    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
151    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
152    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 139  type Line 154  type
154    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
155    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
156    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
157    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
158    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
159    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure menuPakkeshop1Click(Sender: TObject);
160    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
161    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure menuPakkeshopRetur1Click(Sender: TObject);
162    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
163    procedure InitReturFraDao();    procedure InitReturFraDao();
164    procedure InitReturFraKunde();    procedure InitReturFraKunde();
165    procedure InitDirektelevering();    procedure InitDirektelevering();
166    procedure InitPakkeshoplevering();    procedure InitPakkeshoplevering();
167    procedure InitReturFraPakkeshop();    procedure InitReturFraPakkeshop();
168      procedure InitIndleveringskode();
169    
170    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
171    procedure CheckBox2Click(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
172    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
173    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
174    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
175    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
176    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
177    procedure CheckBox3Click(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
178    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure menuAutomatiskTjekkodeStyringClick(Sender: TObject);
179    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
180    procedure Automatiskvalg1Click(Sender: TObject);    procedure menuAutomatiskvalg1Click(Sender: TObject);
181    procedure PanelValgAClick(Sender: TObject);    procedure PanelValgAClick(Sender: TObject);
182    procedure PanelValg1Click(Sender: TObject);    procedure PanelValg1Click(Sender: TObject);
183    procedure PanelValg2Click(Sender: TObject);    procedure PanelValg2Click(Sender: TObject);
# Line 169  type Line 185  type
185    procedure PanelValg4Click(Sender: TObject);    procedure PanelValg4Click(Sender: TObject);
186    procedure PanelValg5Click(Sender: TObject);    procedure PanelValg5Click(Sender: TObject);
187    procedure PanelValg6Click(Sender: TObject);    procedure PanelValg6Click(Sender: TObject);
188      procedure PanelValg7Click(Sender: TObject);
189    
190    procedure NulstilAutomatiskValg();    procedure NulstilAutomatiskValg();
191    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
192    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
193    procedure TjekkerUrls();    procedure TjekkerUrls();
194  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
195    procedure RoundCornerOf(Control: TWinControl);  
196  // 20150310: slut    procedure menuIndleveringClick(Sender: TObject);
197    
198    
199    
200      //Nedarvet fra IParentForm
201      procedure Msg( msg : string);
202      procedure LogMessage( msg : string);
203      procedure SetPrinterstatusText( txt: string; alert: boolean);
204      function GetFormObject() : TForm;
205    
206    
207    
208    private    private
209      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 183  type Line 211  type
211      SkrivLog : String;      SkrivLog : String;
212      Sted : String;      Sted : String;
213      StedNavn : String;      StedNavn : String;
214      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
215  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
216                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
217    
218      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
219  // 20150330: slut  
220      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
221      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
222      ScanTjekkode : String;      ScanTjekkode : String;
223      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
224      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop : String;  
225      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
226      LabelType : integer;            FarveIndlevering : String;
227    
228        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
229              TitelIndlevering : String;
230    
231      AlarmLyd : String;      AlarmLyd : String;
232      ScannetOkLyd : String;      ScannetOkLyd : String;
233      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
234  // 20150317: start  
235      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
236  // 20150317: slut  
237      PrinterNavn : String;      PrinterNavn : String;
238      TjekPrinter : String;      TjekPrinter : String;
239      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;  
240      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
241      BladhusSted : Integer;      BladhusSted : Integer;
242      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 237  type Line 249  type
249      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
250      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
251      TjekUrls : String;      TjekUrls : String;
252        Config : TConfiguration;
253    
254    
255            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      LabelPrint: TLabelPrint;
256    
257      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 = '');
258      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
259      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 = '');
260      procedure CheckCode();      procedure CheckCode();
261      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 250  type Line 264  type
264      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
265      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
266      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
267        procedure VisAlarmSkaerm(strMessage: string);
268        function InjectURL(Url : String) : String;
269    
270    public    public
271      { Public declarations }      { Public declarations }
272    end;    end;
273    
274    
275  var  var
276    MainForm: TMainForm;    MainForm: TMainForm;
277    
# Line 268  var Line 285  var
285  implementation  implementation
286  {$R *.dfm}  {$R *.dfm}
287    
288  function TMainForm.TColorToHex(Color : TColor) : string;  
289  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;  
290    
291  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
292  begin  begin
293    
294  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
295        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
296    
297    
298    
299    
300      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
301  // 20150309: slut  
302    
303      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
304      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 329  begin Line 336  begin
336        PanelValg6.Font.Color := clWindowText;        PanelValg6.Font.Color := clWindowText;
337      end;      end;
338    
339      OpdaterListenButton01.Enabled := false;      PanelValg7.Color := clBtnFace;
340        if PanelValg7.Enabled = true then
341        begin
342          PanelValg7.Font.Color := clWindowText;
343        end;
344    
345        BtnOpdaterListen.Enabled := false;
346    
347      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
348      begin      begin
# Line 357  begin Line 370  begin
370        else if (Sted = 'BR') then        else if (Sted = 'BR') then
371          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
372        else if (Sted = 'BK') then        else if (Sted = 'BK') then
373          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
374          else if (Sted = 'TK') then
375            begin StedNavn := 'BK/Trykkompagniet: '; end
376        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
377          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
378        else if (Sted = '1') then        else if (Sted = '1') then
379          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
380        else if (Sted = '2') then        else if (Sted = '2') then
# Line 383  begin Line 398  begin
398    
399      StartScreen();      StartScreen();
400      MainForm.Caption := Titel;      MainForm.Caption := Titel;
401      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
402      MainForm.Farve := Farve;      MainForm.Farve := Farve;
403      MainForm.Titel := Titel;      MainForm.Titel := Titel;
404      MainForm.Url := Url;      MainForm.Url := Url;
# Line 393  begin Line 408  begin
408        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
409      end;      end;
410    
411      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
412        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
413      else      else
414        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
415    
416      CheckBox3.Checked := false;      chkScanTjekkode.Checked := false;
417      CheckBox3.Enabled := false;      chkScanTjekkode.Enabled := false;
418      Scanogstjekkoden1.Enabled := false;      Scanogstjekkoden1.Enabled := false;
419    
420      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
421      begin      begin
422        if (ScanTjekkode = '1') then        if (ScanTjekkode = '1') then
423        begin        begin
424          CheckBox3.Checked := true;          chkScanTjekkode.Checked := true;
425          CheckBox3.Enabled := true;          chkScanTjekkode.Enabled := true;
426          Scanogstjekkoden1.Enabled := true;          Scanogstjekkoden1.Enabled := true;
427        end        end
428        else        else
429        begin        begin
430          CheckBox3.Checked := false;          chkScanTjekkode.Checked := false;
431          CheckBox3.Enabled := true;         // False vil forhindre indtastning af tjekkode i nat x-press scanning          chkScanTjekkode.Enabled := true;         // False vil forhindre indtastning af tjekkode i nat x-press scanning
432          Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning          Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
433        end;        end;
434      end;      end;
435    
436      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
437      begin      begin
438        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
439        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
440      end;      end;
441    
# Line 443  begin Line 458  begin
458          end          end
459          else          else
460          begin          begin
461            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
462          end;          end;
463          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
464        end        end
465        else        else
466        begin        begin
467          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
468          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
469        end;        end;
470      end;      end;
471    
472    
473  end;  end;
474    
475  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 461  begin Line 477  begin
477    
478    if Altidprintepakkelabel1.Checked then    if Altidprintepakkelabel1.Checked then
479    begin    begin
480       CheckBox2.Checked := true;       chkAltidPrintLabel.Checked := true;
481    end    end
482    else    else
483    begin    begin
484       CheckBox2.Checked := false;       chkAltidPrintLabel.Checked := false;
485    end;    end;
486    
487  end;  end;
# Line 475  begin Line 491  begin
491    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
492  end;  end;
493    
494  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
495  begin  begin
496    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
497    begin    begin
498       CheckBox3.Enabled := false;       chkScanTjekkode.Enabled := false;
499       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
500    end    end
501    else    else
502    begin    begin
503       CheckBox3.Enabled := true;       chkScanTjekkode.Enabled := true;
504       Scanogstjekkoden1.Enabled := true;       Scanogstjekkoden1.Enabled := true;
505    end;    end;
506    
507  end;  end;
508    
509  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
510  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;  
 *)  
511  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
512  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
513       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
514       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
515       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
516  end;  end;
517    
518    function TMainForm.InjectURL(Url : String) : String;
519    begin
520    
521      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
522      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
523      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
524    
525      Result := Url;
526    end;
527    
528    //InitForm kaldes før FormCreate
529  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
530  const  const
531    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
532  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
533    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
534    
535  begin  begin
536    
537    
538    // Initierer nogle variabler    // Initierer nogle variabler
539    BladhusSted := 00;    BladhusSted := 00;
540    Application.ShowHint := True;    Application.ShowHint := True;
541    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
542    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
543  // 20150306: start  
544    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
545  // 20150306: slut  
546  // 20150310: start    TUtils.RoundCornerOf(PanelManglendePakker1);
547    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker2);
548    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker3);
549    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker4);
550    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker5);
551    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker6);
552    RoundCornerOf(PanelManglendePakker6);  
 // 20150310: slut  
553    
554    // 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
555    if DirectoryExists('Docs') then    if DirectoryExists('Docs') then
# Line 552  begin Line 560  begin
560    
561  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
562    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
563    MainForm.ClientHeight := 700;    MainForm.ClientHeight := 820;
564    
565      Config := TConfiguration.Create();
566      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
567      Config.Sted := Sted;
568    
569    // Læser parametre fra ini filen    // Læser parametre fra ini filen
570    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
571    try    try
572    
573    
574      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
575      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
576      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
577    
578      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');
579        UrlFindPakketype := InjectURL(UrlFindPakketype);
580    
581      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');
582        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
583    
584      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');
585        UrlNormal := InjectURL(UrlNormal);
586    
587      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');
588        UrlReturDAO := InjectURL(UrlReturDAO);
589    
590      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');
591        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
592    
593      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');
594        UrlBudlevering := InjectURL(UrlBudlevering);
595    
596      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');
597        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
598    
599      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');
600  // 20150330: start      UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
601    
602      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');
603  // 20150330: slut      UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
604    
605      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');
606        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
607    
608      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');
609        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
610    
611      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');
612        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
613    
614      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');
615      LabelType := ReadInteger('Settings','LabelType',1);      UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
616    
617        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
618        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
619    
620        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
621        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
622    
623        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
624        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
625    
626    
627    
628      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
629      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
630      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 586  begin Line 635  begin
635      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
636      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
637      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
638    
639      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
640      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
641    
642        FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');
643        TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');
644    
645    
646      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
647      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
648      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
# Line 597  begin Line 652  begin
652      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
653      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
654      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
655  // 20150317: start  
656      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
657  // 20150317: slut  
658      PrinterNavn := ReadString('Settings','PrinterNavn','');      PrinterNavn := ReadString('Settings','PrinterNavn','');
659      TjekPrinter := ReadString('Settings','TjekPrinter','1');      TjekPrinter := ReadString('Settings','TjekPrinter','1');
660      TjekUrls := ReadString('Settings','TjekUrls','2');      TjekUrls := ReadString('Settings','TjekUrls','2');
661    
662      if (SkrivLog = '1') then      if (SkrivLog = '1') then
663      begin      begin
664        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);
665        try        try
666          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
667          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
668          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
669          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
670          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
671          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 622  begin Line 677  begin
677    
678      if Scanningtype = 'A' then      if Scanningtype = 'A' then
679      begin      begin
680        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
681        Scanningtype := '1';        Scanningtype := '1';
682        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
683        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
684      end;      end;
685    
686      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;  
687    
688      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
689      begin      begin
690        CheckBox1.Checked := true;        chkSporgEfterKunde.Checked := true;
691        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
692      end      end
693      else      else
694      begin      begin
695        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
696        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
697      end;      end;
698    
699      if ScanTjekkode = '1' then      if ScanTjekkode = '1' then
700      begin      begin
701        CheckBox3.Checked := true;        chkScanTjekkode.Checked := true;
702        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
703      end      end
704      else      else
705      begin      begin
706        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
707        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
708      end;      end;
709    
710      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
711      begin      begin
712        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
713        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
714        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
715      end;      end;
716    
# Line 749  begin Line 736  begin
736      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
737      // *************************** //      // *************************** //
738    
739    {$IfDef STED_BK}
740        SpecialVersionSted := 'BK';
741    {$EndIf}
742    {$IfDef STED_TK}
743        SpecialVersionSted := 'TK';// BK-Trykkompagniet
744    {$EndIf}
745    {$IfDef STED_DBK}
746        SpecialVersionSted := 'DBK';
747    {$EndIf}
748    {$IfDef STED_FD}
749        SpecialVersionSted := 'FD';
750    {$EndIf}
751    {$IfDef STED_NS}
752        SpecialVersionSted := 'NS';
753    {$EndIf}
754    
755      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
756      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
757      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 764  begin Line 767  begin
767      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
768      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
769    
 // 20150313: start  
770      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
771      begin      begin
772         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
773         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
774    
775          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
776          Sted := SpecialVersionSted;
777         // her skal vi også disable de knapper BK ikke kan bruge
778          PanelValg2.Enabled := false;
779          PanelValg2.Font.Color := clInactiveCaption;
780          PanelValg3.Enabled := false;
781          PanelValg3.Font.Color := clInactiveCaption;
782          //PanelValg6.Enabled := false;
783          //PanelValg6.Font.Color := clInactiveCaption;
784    
785         // her skal vi også disable de menupunkter FD ikke kan bruge
786          menuNatxpressReturDAO1.Enabled := false;
787          menuNatxpressReturfraKunde1.Enabled := false;
788    
789          //Returpakkerfrapakkeshop1.Enabled := false;
790      end;      end;
791    
792      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
793      begin      begin
794         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
795         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
796      end;  
 // 20150313: slut  
797    
     if SpecialVersionSted = 'BK' then  
     begin  
798        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
799        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
800       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 786  begin Line 802  begin
802        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
803        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
804        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
805        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
806        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
807       // her skal vi også disable de menupunkter BK ikke kan bruge  
808        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
809        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
810        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
811        if SpecialVersionScanningtype = 'A' then  
812        begin        //Returpakkerfrapakkeshop1.Enabled := false;
813           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
814      end;      end;
815    
816      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
817      begin      begin
818        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
819        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
820        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
821        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
822        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
823        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
824        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
825        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
826        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
827        PanelValg6.Enabled := false;  
828        PanelValg6.Font.Color := clInactiveCaption;       // her skal vi også disable de menupunkter BK ikke kan bruge
829       // her skal vi også disable de menupunkter DBK ikke kan bruge        menuNatxpressReturDAO1.Enabled := false;
830        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
831        Returpakkerfraboghandler1.Enabled := false;  
832  // 20150317: start        //Returpakkerfrapakkeshop1.Enabled := false;
833        Pakkeshoplevering1.Enabled := false;  
       Returpakkerfrapakkeshop1.Enabled := false;  
 // 20150317: slut  
834        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
835        begin        begin
836           Scanningtype := '1';           Scanningtype := '1';
# Line 832  begin Line 841  begin
841        end;        end;
842      end;      end;
843    
844        if SpecialVersionSted = 'DBK' then
845        begin
846          Sted := SpecialVersionSted;
847        end;
848    
849      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
850      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
851      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 851  begin Line 865  begin
865        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
866        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
867        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
868          PanelValg7.Enabled := false;
869          PanelValg7.Font.Color := clInactiveCaption;
870       // 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
871  // 20150317: start  
872        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
873  // 20150317: slut  
874        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
875        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
876        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
877        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
878        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
879        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
880        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
881        begin        begin
882          Scanningtype := '4';          Scanningtype := '4';
883          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
884          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
885          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
886        end        end
# Line 873  begin Line 889  begin
889          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
890          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
891          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
892          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
893          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
894          if Scanningtype = '1' then          if Scanningtype = '1' then
895          begin          begin
896            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
897            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
898            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
899          end;          end;
900          if Scanningtype = '2' then          if Scanningtype = '2' then
901          begin          begin
902            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
903            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
904            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
905          end;          end;
906          if Scanningtype = '3' then          if Scanningtype = '3' then
907          begin          begin
908            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
909            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
910            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
911          end;          end;
912          if Scanningtype = '4' then          if Scanningtype = '4' then
913          begin          begin
914            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
915            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
916            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
917          end;          end;
918          if Scanningtype = '5' then          if Scanningtype = '5' then
919          begin          begin
920            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
921            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
922            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
923          end;          end;
924          if Scanningtype = '6' then          if Scanningtype = '6' then
925          begin          begin
926            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
927            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
928            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
929          end;          end;
# Line 946  begin Line 962  begin
962             RutenummerST.Caption := '';             RutenummerST.Caption := '';
963             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
964             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
965             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
966             exit;             exit;
967          end;          end;
968      end      end
# Line 988  begin Line 1004  begin
1004    
1005      if Pakketype = '1' then      if Pakketype = '1' then
1006      begin      begin
1007        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
1008        RadioButton1.Checked := true;        radioStorPakke.Checked := true;
1009      end      end
1010      else      else
1011      begin      begin
1012        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
1013        RadioButton2.Checked := true;        radioLillePakke.Checked := true;
1014      end;      end;
1015    
1016      if TestFunktionen = '1' then      if TestFunktionen = '1' then
# Line 1034  begin Line 1050  begin
1050        ScannetOkStorLyd := '';        ScannetOkStorLyd := '';
1051      end;      end;
1052    
1053  // 20150317: start  
1054      if not FileExists(ScannetOkTilTjekkodeLyd) then      if not FileExists(ScannetOkTilTjekkodeLyd) then
1055      begin      begin
1056        ScannetOkTilTjekkodeLyd := '';        ScannetOkTilTjekkodeLyd := '';
1057      end;      end;
 // 20150317: slut  
1058    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1059    
1060      CheckPrintQue('Opstart');  
1061    
1062        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1063        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1064    
1065    finally    finally
1066      Free;      Free;
# Line 1057  begin Line 1069  begin
1069      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
1070      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
1071      begin      begin
1072        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
1073        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
1074        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
1075        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
1076        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
1077        Testprinter1.Visible := false;        Testprinter1.Visible := false;
1078        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
1079        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
1080      end;      end;
1081    
1082      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1072  begin Line 1084  begin
1084          InitBladhus();          InitBladhus();
1085        end;        end;
1086    
1087  // 20150310: start  
1088      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
1089      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
1090    
# Line 1113  begin Line 1125  begin
1125      end;      end;
1126    
1127      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
 // 20150310: slut  
1128    
1129      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1130      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1131    
1132  end;  end;
1133    
# Line 1134  var Line 1145  var
1145    BoghandlerNavn : String;    BoghandlerNavn : String;
1146    Koreliste : String;    Koreliste : String;
1147    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1148    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1149    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1150    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1159  begin Line 1169  begin
1169      ClipboardData := Clipboard.AsText;      ClipboardData := Clipboard.AsText;
1170      numberString := ClipboardData;      numberString := ClipboardData;
1171      Val(numberString, float, errorPos);      Val(numberString, float, errorPos);
1172  // 20150311: start  
1173  //    if (ClipboardData <> '') and (errorPos = 0) then      //    if (ClipboardData <> '') and (errorPos = 0) then
1174      if (ClipboardData <> '') and (errorPos = 0)      if (ClipboardData <> '') and (errorPos = 0)
1175      or (NumberString = 'Nulstil')      or (NumberString = 'Nulstil')
1176      or (NumberString = 'Indtast kundenummer')      or (NumberString = 'Indtast kundenummer')
# Line 1174  begin Line 1184  begin
1184      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1185      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1186      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1187        or (NumberString = 'DAO PAKKESHOP')
1188        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1189            or (LowerCase(NumberString) = 'for stor daodirekte' )
1190      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1191  // 20150311: slut  
1192      begin      begin
1193        Stregkode := Stregkode + ClipboardData;        Stregkode := Stregkode + ClipboardData;
1194        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1184  begin Line 1197  begin
1197      begin      begin
1198        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1199      end;      end;
1200    end;    end;  // Slut ctrl-v
1201    
1202    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1203    begin    begin
1204  // 20150306: start  
1205      if (Length(Trim(Stregkode)) = 0) then      // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1206        Stregkode := Trim(Stregkode);
1207    
1208        if (Length(Stregkode) = 0) then
1209      begin      begin
1210        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1211        List1msg := 'Der skal scannes en stregkode...';  
       ListBox1.Items.Insert(0,List1Msg);  
       MainForm.Color := clRed;  
 // 20150316: start  
       RuteNummerST.Caption := '';  
       BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
       KommentarST.Caption := List1msg;  
       PakkeshopNulstil.Visible := true;  
1212        exit;        exit;
1213      end;      end;
 // 20150306: slut  
1214    
 // 20150311: start  
1215      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1216      begin      begin
1217         PakkeshopNulstil.Click();         btnNulstil.Click();
1218         exit;         exit;
1219      end;      end;
1220    
1221      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1222      begin      begin
1223         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1224  // 20150312: start  
 //       List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        List1msg := 'HUSK at klikke Nulstil før ny scanning...';  
 // 20150312: slut  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
 // 20150312: start  
        Stregkode := '';  
        StregkodeST.Caption := StregKode;  
 // 20150312: slut  
1225         exit;         exit;
1226      end;      end;
1227    
1228      if StregKode = 'Lille pakke' then      if StregKode = 'Lille pakke' then
1229      begin      begin
1230         if RadioButton2.Enabled = true then         if radioLillePakke.Enabled = true then
1231         begin         begin
1232            InitLillePakke();            InitLillePakke();
1233         end         end
1234         else         else
1235         begin         begin
1236          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1237         end;         end;
1238         Stregkode := '';         Stregkode := '';
1239         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1257  begin Line 1242  begin
1242    
1243      if StregKode = 'Stor pakke' then      if StregKode = 'Stor pakke' then
1244      begin      begin
1245         if RadioButton1.Enabled = true then         if radioStorPakke.Enabled = true then
1246         begin         begin
1247            InitStorPakke();            InitStorPakke();
1248         end         end
1249         else         else
1250         begin         begin
1251          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1252         end;         end;
1253         Stregkode := '';         Stregkode := '';
1254         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1255         exit;         exit;
1256      end;      end;
1257    
1258        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1259        begin
1260          if chkForstorTilDirekte.Enabled then
1261          begin
1262            chkForstorTilDirekte.Checked := true;
1263          end
1264          else
1265          begin
1266             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1267          end;
1268          Stregkode := '';
1269          StregkodeST.Caption := StregKode;
1270          exit;
1271        end;
1272    
1273    
1274      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1275      begin      begin
1276         if CheckBox1.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
1277         begin         begin
1278           if (CheckBox1.State = cbChecked) then           if (chkSporgEfterKunde.State = cbChecked) then
1279           begin           begin
1280            CheckBox1.State := cbUnchecked;            chkSporgEfterKunde.State := cbUnchecked;
1281           end           end
1282           else           else
1283           begin           begin
1284            CheckBox1.State := cbChecked;            chkSporgEfterKunde.State := cbChecked;
1285           end;           end;
1286         end         end
1287         else         else
1288         begin         begin
1289          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1290         end;         end;
1291         Stregkode := '';         Stregkode := '';
1292         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1316  begin Line 1295  begin
1295    
1296      if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then      if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then
1297      begin      begin
1298        if CheckBox3.Enabled = true then        if chkScanTjekkode.Enabled = true then
1299        begin        begin
1300           if (CheckBox3.State = cbChecked) then           if (chkScanTjekkode.State = cbChecked) then
1301           begin           begin
1302            CheckBox3.State := cbUnchecked;            chkScanTjekkode.State := cbUnchecked;
1303           end           end
1304           else           else
1305           begin           begin
1306            CheckBox3.State := cbChecked;            chkScanTjekkode.State := cbChecked;
1307           end;           end;
1308        end        end
1309        else        else
1310        begin        begin
1311          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1312        end;        end;
1313        Stregkode := '';        Stregkode := '';
1314        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1355  begin Line 1323  begin
1323         end         end
1324         else         else
1325         begin         begin
1326          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1327         end;         end;
1328         Stregkode := '';         Stregkode := '';
1329         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1330         exit;         exit;
1331      end;      end;
1332    
1333  // 20150323: start  
 //    if StregKode = 'DAO NAT X-PRESS' then  
1334      if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then      if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then
 // 20150323: slut  
1335      begin      begin
1336         if (PanelValg1.Enabled = true) then         if (PanelValg1.Enabled = true) then
1337         begin         begin
# Line 1384  begin Line 1339  begin
1339         end         end
1340         else         else
1341         begin         begin
1342          //ShowMessage('Ændring ikke tilladt');          VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1343         end;         end;
1344         Stregkode := '';         Stregkode := '';
1345         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1410  begin Line 1354  begin
1354         end         end
1355         else         else
1356         begin         begin
1357          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1358         end;         end;
1359         Stregkode := '';         Stregkode := '';
1360         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1436  begin Line 1369  begin
1369         end         end
1370         else         else
1371         begin         begin
1372          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1373         end;         end;
1374         Stregkode := '';         Stregkode := '';
1375         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1462  begin Line 1384  begin
1384         end         end
1385         else         else
1386         begin         begin
1387          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1388         end;         end;
1389         Stregkode := '';         Stregkode := '';
1390         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1488  begin Line 1399  begin
1399         end         end
1400         else         else
1401         begin         begin
1402          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1403         end;         end;
1404         Stregkode := '';         Stregkode := '';
1405         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1514  begin Line 1414  begin
1414         end         end
1415         else         else
1416         begin         begin
1417          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1418         end;         end;
1419         Stregkode := '';         Stregkode := '';
1420         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1421         exit;         exit;
1422      end;      end;
1423  // 20150311: slut  
1424    
1425      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1426      begin      begin
# Line 1579  begin Line 1468  begin
1468        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1469      end;      end;
1470    
1471      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1472          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1473          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1474          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1475          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1476          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1477      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1478         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1479         List1msg := 'Pakketype ' + Pakketype + ' kan ikke scannes på dette scanningsted';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
 // 20150316: start  
        RuteNummerST.Caption := '';  
        BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
        KommentarST.Caption := List1msg;  
        PakkeshopNulstil.Visible := true;  
 // 20150311: start  
        StregKode := '';  
        StregkodeST.Caption := StregKode;  
 // 20150311: slut  
1480         exit;         exit;
1481      end;      end;
1482    
1483      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1484      begin      begin
1485        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1486        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1615  begin Line 1492  begin
1492              end;              end;
1493            end            end
1494        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1495  (*  
       else if Pakketype = 'NatXpressReturDAO' then  
           begin  
             if Scanningtype <> '2' then  
             begin  
               Scanningtype := '2';  
               InitReturFraDao();  
             end;  
           end  
       else if Pakketype = 'NatXpressReturKunde' then  
           begin  
             if Scanningtype <> '3' then  
             begin  
               Scanningtype := '3';  
               InitReturFraKunde();  
             end;  
           end  
 *)  
1496        else if Pakketype = 'Direkte' then        else if Pakketype = 'Direkte' then
1497            begin            begin
1498              if Scanningtype <> '4' then              if Scanningtype <> '4' then
# Line 1649  begin Line 1509  begin
1509                InitPakkeshoplevering();                InitPakkeshoplevering();
1510              end;              end;
1511            end            end
1512        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
 (*  
       else if Pakketype = 'PakkeshopRetur' then  
1513            begin            begin
1514              if Scanningtype <> '6' then              if Scanningtype <> '6' then
1515              begin              begin
1516                Scanningtype := '6';               VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1517                InitReturFraPakkeshop();  
1518                 exit;
1519              end;              end;
1520            end            end
1521  *)  
1522    
1523        else        else
1524            begin   // Her skal komme en alarm og rød skærm            begin
1525               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1526               List1msg := 'Pakken kan ikke scannes med automatisk valg';              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1527               ListBox1.Items.Insert(0,List1Msg);               VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1528               MainForm.Color := clRed;  
 // 20150316: start  
              RuteNummerST.Caption := '';  
              BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
              KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
 // 20150311: start  
              StregKode := '';  
              StregkodeST.Caption := StregKode;  
 // 20150311: slut  
1529               exit;               exit;
1530            end;            end;
1531        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1532      end      end
1533      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1534      begin      begin
1535        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1536        List1msg := 'Pakkenummer ikke gyldigt (for kort)';  
       ListBox1.Items.Insert(0,List1Msg);  
       MainForm.Color := clRed;  
 // 20150316: start  
       RuteNummerST.Caption := '';  
       BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
       KommentarST.Caption := List1msg;  
       PakkeshopNulstil.Visible := true;  
 // 20150312: start  
       StregKode := '';  
       StregkodeST.Caption := StregKode;  
 // 20150312: slut  
1537        exit;        exit;
1538      end;      end;
1539    
1540      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1541      begin      begin
1542        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1543        begin        begin
         PlaySound(PWideChar(AlarmLyd));  
         List1msg := 'Pakke findes som pakketype: ' + Pakketype;  
         ListBox1.Items.Insert(0,List1Msg);  
         MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
         KommentarST.Caption := List1msg;  
         PakkeshopNulstil.Visible := true;  
 // 20150312: start  
         StregKode := '';  
         StregkodeST.Caption := StregKode;  
 // 20150312: slut  
         exit;  
       end;  
     end;  
1544    
1545  // 20150311: start          VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
 (*  
     if StregKode = 'Nulstil' then  
     begin  
        PakkeshopNulstil.Click();  
        exit;  
     end;  
1546    
1547      if PakkeshopNulstil.Visible then          exit;
1548      begin        end;
        PlaySound(PWideChar(AlarmLyd));  
        List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
        exit;  
1549      end;      end;
1550    
     if StregKode = 'Lille pakke' then  
     begin  
        InitLillePakke();  
        exit;  
     end;  
1551    
     if StregKode = 'Stor pakke' then  
     begin  
        InitStorPakke();  
        exit;  
     end;  
1552    
1553      if StregKode = 'Indtast kundenummer' then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1554      begin      begin
1555         if (CheckBox1.State = cbChecked) then        chkScanTjekkode.Checked := false;
        begin  
         CheckBox1.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox1.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
     end;  
   
     if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then  
     begin  
        if (CheckBox3.State = cbChecked) then  
        begin  
         CheckBox3.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox3.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
     end;  
 *)  
 // 20150311: slut  
   
   
     if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then  
     begin  
       CheckBox3.Checked := false;  
1556        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1557        begin        begin
1558          if (Stregkode=stregkoderMedTjekkodeArray[i]) then          if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1559          begin          begin
1560              CheckBox3.Checked := true;              chkScanTjekkode.Checked := true;
1561              Scanogstjekkoden1.Checked := true;              Scanogstjekkoden1.Checked := true;
1562          end;          end;
1563        end;        end;
1564      end;      end;
1565    
1566      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1567        begin        begin
1568          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1569             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1570             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1571             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1572             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1573             Stregkode := '';             Stregkode := '';
1574             InitScreen();             InitScreen();
1575        end        end
1576      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1577        begin        begin
1578          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1579             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1813  begin Line 1581  begin
1581             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1582             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1583             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1584             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1585             Stregkode := '';             Stregkode := '';
1586             InitScreen();             InitScreen();
1587        end        end
1588      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1589        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1590         begin         begin
1591            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1825  begin Line 1593  begin
1593              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1594              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1595              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1596  // 20150317: start  
1597              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1598  // 20150317: slut  
1599             end             end
1600            else            else
1601             begin             begin
1602                List1msg := 'Du skal scanne en stregkode';                VisAlarmSkaerm( 'Du skal scanne en stregkode' );
               ListBox1.Items.Insert(0,List1Msg);  
               //logTekst := RightStr(List1Msg, Length(List1Msg)-10);  
               //SkrivScanningLogFil(logTekst);  
               PlaySound(PWideChar(AlarmLyd));  
               PakkeshopNulstil.Visible := true;  
               MainForm.Color := clRed;  
1603             end;             end;
1604            Stregkode := '';            Stregkode := '';
1605            InitScreen();            InitScreen();
# Line 1849  begin Line 1611  begin
1611             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1612             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1613             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1614             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1615                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1616             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1617                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1618             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1619           end           end
1620          else          else
1621           begin           begin
1622                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1623                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1624                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1625                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1626                KommentarST.Caption := List1msg;                  
               ListBox1.Items.Insert(0,List1Msg);  
               //logTekst := RightStr(List1Msg, Length(List1Msg)-10);  
               //SkrivScanningLogFil(logTekst);  
               PlaySound(PWideChar(AlarmLyd));  
               PakkeshopNulstil.Visible := true;  
               MainForm.Color := clRed;  
 // 20150323: start  
1627                StregKode := '';                StregKode := '';
1628                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1629  // 20150323: slut  
1630                exit;                exit;
1631           end;           end;
1632          Stregkode := '';          Stregkode := '';
1633          InitScreen();          InitScreen();
1634       end;       end;
1635    
1636      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
1637      begin      begin
1638         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1639           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1640            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1641         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1642            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1643         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1644         try         try
# Line 1892  begin Line 1648  begin
1648            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1649            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1650            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1651               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1652               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1653              exit;              exit;
1654            end;            end;
1655            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1656            begin            begin
1657              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1658              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1917  begin Line 1669  begin
1669              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1670              begin              begin
1671                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1672                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1673                MainForm.Color := clRed;                MainForm.Color := clRed;
1674              end;              end;
1675           end;           end;
1676            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
1677            begin            begin
1678              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1679              if Storepakker1.Checked then              if menuStorePakker.Checked then
1680              begin              begin
1681                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1682              end              end
# Line 1932  begin Line 1684  begin
1684              begin              begin
1685                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1686              end;              end;
1687              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1688            end            end
1689            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1690            begin            begin
1691              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1692              if Storepakker1.Checked then              if menuStorePakker.Checked then
1693              begin              begin
1694                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1695              end              end
# Line 1945  begin Line 1697  begin
1697              begin              begin
1698                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1699              end;              end;
1700              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1701            end            end
1702            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1703            begin            begin
1704              List1msg := 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages';              VisAlarmSkaerm( 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages' );
             ListBox1.Items.Insert(0,List1Msg);  
             MainForm.Color := clRed;  
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1705            end            end
1706            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1707            begin            begin
1708            end            end
1709            else            else
1710            begin            begin
1711              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1712            end;            end;
1713           if not PakkeshopNulstil.Visible then  
1714             if not btnNulstil.Visible then
1715            begin            begin
1716  // 20150310: start  
1717  //            SletStregkodelinieFraListboks2(StregKode);              If (menuDaoDirekte1.Checked) then
 // 20150310: slut  
             If (Budlevering1.Checked) then  
1718              begin              begin
1719                if Storepakker1.Checked then                if menuStorePakker.Checked then
1720                begin                begin
1721                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(ScannetOkStorLyd));
1722                end                end
# Line 1982  begin Line 1727  begin
1727                InitLillePakke();                InitLillePakke();
1728              end;              end;
1729            end;            end;
1730  // 20150310: start  
1731            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1732  // 20150310: slut  
1733            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1734            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1735            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 2015  begin Line 1760  begin
1760    
1761    Key := #0;    Key := #0;
1762    
1763  end;  
1764    
1765    
1766    
1767    
1768    end; //End of OnKeyPress
1769    
1770    
1771    
1772  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1773  const  const
# Line 2052  end; Line 1804  end;
1804    
1805  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1806  var  var
 // 20150309: start  
 //  i:integer;  
1807    i : Integer;    i : Integer;
1808    wrkAntal : String;    wrkAntal : String;
1809    wrkAntalIdag, wrkAntalSenere : Integer;    wrkAntalIdag, wrkAntalSenere : Integer;
1810  // 20150309: slut  
1811    
1812  begin  begin
1813      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
1814      begin      begin
1815        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1816          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1817          begin          begin
1818  // 20150309: start            wrkAntalSenere := 0;//initial Value
1819    
1820            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1821            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1822            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1823            begin            begin
1824              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1825              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1826  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1827  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1828  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1829              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1830            end            end
1831            else     // kun idag            else     // kun idag
1832            begin            begin
# Line 2101  begin Line 1852  begin
1852            begin            begin
1853              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1854            end;            end;
 // 20150309: slut  
1855    
 // 20150310: start  
1856            if (Scanningtype = '1') then            if (Scanningtype = '1') then
1857            begin            begin
1858              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
# Line 2181  begin Line 1930  begin
1930                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1931              end;              end;
1932            end;            end;
1933  // 20150310: slut  
1934            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1935          end;          end;
1936      end;      end;
# Line 2208  begin Line 1957  begin
1957  end;  end;
1958    
1959  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1960    
1961  begin  begin
1962    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1963    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1964    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1965    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1966    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1967    ListBox1.Visible := true;    ListBox1.Visible := true;
1968  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1969  // 20150317: start  
1970  (*    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  
1971    begin    begin
1972      IndlesScanningLogFil();      IndlesScanningLogFil();
1973    end;    end;
# Line 2272  begin Line 1979  begin
1979      01 :      01 :
1980            begin;      // NS            begin;      // NS
1981              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1982              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1983              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1984              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1985              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1986              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2284  begin Line 1991  begin
1991      02 :      02 :
1992            begin;    // BK            begin;    // BK
1993              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1994              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1995              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1996              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1997              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1998              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1999              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2000              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2001              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2002              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2299  begin Line 2006  begin
2006              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2007             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2008              begin              begin
2009                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2010              end              end
2011              else              else
2012              begin              begin
2013                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2014              end;              end;
2015              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2016              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2017              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2018              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2019              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2322  begin Line 2029  begin
2029            end;            end;
2030      04 :  begin;           // DBK      04 :  begin;           // DBK
2031              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2032              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
2033              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
2034              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
2035              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
2036              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2037              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2038              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2039              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2040            end;            end;
# Line 2343  var Line 2050  var
2050    URLStr : String;    URLStr : String;
2051    pakkestorrelse : String;    pakkestorrelse : String;
2052    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
2053    
2054      PakkeshopLabel: TPakkeshopLabel;
2055  begin  begin
2056    if RadioButton1.Checked then    if radioStorPakke.Checked then
2057    begin    begin
2058      pakkestorrelse := 'Stor';      pakkestorrelse := 'Stor';
2059    end;    end;
2060    if RadioButton2.Checked then    if radioLillePakke.Checked then
2061    begin    begin
2062      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
2063    end;    end;
2064    if Pakkernormal1.Checked then  
2065    
2066      if menuNatXpress1.Checked then
2067    begin    begin
2068       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
2069       begin       begin
# Line 2360  begin Line 2071  begin
2071       end;       end;
2072       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2073    end    end
2074    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
2075    begin    begin
2076       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2077    end    end
2078    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
2079    begin    begin
2080       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2081    end    end
2082    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
2083    begin    begin
2084       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2085    end    end
2086    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
2087    begin    begin
2088       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2089    end    end
2090    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
2091    begin    begin
2092       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2093    end    end
2094      else if menuIndlevering.Checked then
2095      begin
2096        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2097      end
2098    else    else
2099    begin    begin
2100      exit;      exit;
2101    end;    end;
2102    
2103      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2104      begin
2105        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2106      end;
2107    
2108    try    try
2109      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2110      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2405  begin Line 2126  begin
2126          end;          end;
2127      end;      end;
2128    end;    end;
2129    
2130    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2131    try    try
2132      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2133       begin       begin
2134        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2135        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2136        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2137        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2138        PrintNyLabel := False;        PrintNyLabel := False;
2139  // 20150310: start  
2140        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2141        begin        begin
 // 20150310: slut  
2142          try          try
2143            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2144          except on e:exception do          except on e:exception do
# Line 2427  begin Line 2148  begin
2148          begin          begin
2149            PrintNyLabel := True;            PrintNyLabel := True;
2150          end;          end;
 // 20150310: start  
2151        end;        end;
 // 20150310: slut  
2152       end       end
2153        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2154        begin
2155    
2156    
2157    
2158    
2159         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2160         if (Kommentar = 'Ok') then
2161         begin
2162           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2163           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2164           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2165           Stregkode := PakkeshopLabel.Stregkode;
2166    
2167           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2168           chkForstorTilDirekte.Checked := false;
2169    
2170         end;
2171    
2172    
2173        end
2174      else      else
2175       begin       begin
2176        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2438  begin Line 2178  begin
2178        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2179        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2180        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2181        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2182          begin          begin
2183          try          try
2184            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2463  begin Line 2203  begin
2203          PrintNyLabel := True;          PrintNyLabel := True;
2204        end;        end;
2205      end;      end;
2206    
2207    
2208      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2209      begin      begin
2210        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2211        begin        begin
2212            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2213            PrintNyLabel := False;            PrintNyLabel := False;
2214        end;        end;
2215      end      end
2216      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2217      begin      begin
2218         if (Leveringssted = 'E') and (Sted = 'DBK') then         if (Leveringssted = 'E') and (Sted = 'DBK') then
2219         begin         begin
# Line 2479  begin Line 2221  begin
2221         end         end
2222         else         else
2223         begin         begin
2224            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2225            PrintNyLabel := False;            PrintNyLabel := False;
2226         end;         end;
2227      end;      end;
# Line 2500  begin Line 2242  begin
2242    //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
2243    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2244    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2245    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2246      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2247    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2248    if RadioButton1.Checked then    if radioStorPakke.Checked then
2249    begin    begin
2250      List1Pakkestorrelse := 'Stor pakke';      List1Pakkestorrelse := 'Stor pakke';
2251    end;    end;
2252    if RadioButton2.Checked then    if radioLillePakke.Checked then
2253    begin    begin
2254      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2255    end;    end;
2256    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2257    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2258    begin    begin
2259      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2260    end;    end;
2261    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2262    begin    begin
2263      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2264    end;    end;
2265    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2266       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2267    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2268    begin    begin
2269      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2270    end;    end;
2271    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2272    begin    begin
2273       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2274        if (RadioButton1.Checked) then        if (radioStorPakke.Checked) then
2275        begin        begin
2276          List1msg := List1msg + '; Stor pakke';          List1msg := List1msg + '; Stor pakke';
2277        end;        end;
2278        if (RadioButton2.Checked) then        if (radioLillePakke.Checked) then
2279        begin        begin
2280          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2281        end;        end;
2282    end;    end;
2283    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2284    begin    begin
2285      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2286    end;    end;
2287    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2288    begin    begin
2289      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2290      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2555  begin Line 2297  begin
2297        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2298      end;      end;
2299    end;    end;
2300      if menuIndlevering.Checked then
2301      begin
2302        List1Msg := Stregkode;
2303      end;
2304    
2305    
2306    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2307    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2308    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2309  end;  end;
2310    
2311  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2312  begin  begin
2313    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2314    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2576  pakkeForkertSted : Integer; Line 2324  pakkeForkertSted : Integer;
2324    kontrolKoreliste : string;    kontrolKoreliste : string;
2325    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2326  begin  begin
2327    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2328       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2329    
2330    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2331    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2590  begin Line 2338  begin
2338    end;    end;
2339    pakkeForkertSted := pos('burde være hos', Kommentar);    pakkeForkertSted := pos('burde være hos', Kommentar);
2340    
2341  // 20150306: start  
2342  //  if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) then    if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2343    if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then  
 // 20150306: slut  
2344    begin    begin
2345        if (RuteNummer = 'Ukendt') then        if (RuteNummer = 'Ukendt') then
2346        begin        begin
# Line 2615  begin Line 2362  begin
2362        end;        end;
2363    end    end
2364    else    else
2365    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2366    begin    begin
2367       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2368       begin       begin
2369          PrintNyLabel := false;          PrintNyLabel := false;
2370  // 20150306: start  
 //        PlaySound(PWideChar(AlarmLyd));  
2371          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2372          MainForm.Color := clRed;          MainForm.Color := clRed;
2373          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2374  // 20150306: slut  
2375       end       end
2376       else       else
2377       begin       begin
# Line 2635  begin Line 2381  begin
2381            PrintNyLabel := true;            PrintNyLabel := true;
2382            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2383            nyFarve := Farve;            nyFarve := Farve;
2384            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2385            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2386            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2387            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2388            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2389            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2390  // 20150213: start  
2391            if (PrinterNavn = 'Ingen') then            if (PrinterNavn = 'Ingen') then
2392            begin            begin
2393               PrintNyLabel := false;               PrintNyLabel := false;
2394            end;            end;
2395  // 20150313: slut  
 // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2396            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2397            begin            begin
2398              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2399              MainForm.Color := clRed;              MainForm.Color := clRed;
2400              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2401            end;            end;
2402  // 20150306: slut  
2403         end;         end;
2404         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2405         if (kontrolKoreliste <> RuteNummer) then         if (kontrolKoreliste <> RuteNummer) then
# Line 2674  begin Line 2418  begin
2418            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2419            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2420            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2421  // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2422            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2423            begin            begin
2424              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2425              MainForm.Color := clRed;              MainForm.Color := clRed;
2426              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2427            end;            end;
2428  // 20150306: slut  
 // 20150306: start  
 //       end  
 //       else  
 //       begin  
2429         end;         end;
2430       end;       end;
2431    
2432    end;    end;
2433    
2434    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2435    begin    begin
2436      case BladhusSted of      case BladhusSted of
2437        00 :  begin;        00 :  begin;
# Line 2704  begin Line 2443  begin
2443               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2444  // 20150304: slut  // 20150304: slut
2445                begin                begin
2446                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2447                end;                end;
2448              end;              end;
2449        01 :  begin;        01 :  begin;
2450               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2451                    // 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
2452                    // 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')
2453                begin                begin
2454                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2455                end;                end;
2456              end;              end;
2457        02 :  begin;        02 :  begin;
2458                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
2459                begin                begin
2460                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2461                end;                end;
2462              end;              end;
2463        03 :  begin;        03 :  begin;
2464               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2465                    // 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
2466                    // 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')
2467               begin               begin
2468                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2469               end;               end;
2470              end;              end;
2471        04 :  begin;        04 :  begin;
2472                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
2473                begin                begin
2474                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2475                end;                end;
2476              end;              end;
2477        else        else
# Line 2741  begin Line 2480  begin
2480    end;    end;
2481    
2482  // 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
2483    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
2484    begin    begin
2485      exit;      exit;
2486    end;    end;
2487    
2488    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and CheckBox1.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
2489    begin    begin
2490    end    end
2491    else    else
2492    begin    begin
2493      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or CheckBox2.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2494      begin      begin
2495        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2496        if (CheckBox2.Checked) then        if (chkAltidPrintLabel.Checked) then
2497        begin        begin
2498          logTekst := logTekst + 'Alle ';          logTekst := logTekst + 'Alle ';
2499        end        end
# Line 2768  begin Line 2507  begin
2507        end;        end;
2508        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2509        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2510        with Printer do  
2511        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2512          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;  
2513      end;      end;
2514    end;    end;
2515    
2516  end;  end;
2517    
 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]);  
 // 20150304: start  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
 // 20150304: slut  
       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;  
2518    
2519    
2520  procedure TMainForm.RadioButton1Click(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2521  begin  begin
2522      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2523      RadioButton1.Checked := true;      radioStorPakke.Checked := true;
2524  end;  end;
2525    
2526  procedure TMainForm.RadioButton2Click(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2527  begin  begin
2528      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2529      RadioButton2.Checked := true;      radioLillePakke.Checked := true;
2530  end;  end;
2531    
2532    
2533  procedure TMainForm.CheckBox1Click(Sender: TObject);  procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2534  begin  begin
2535    if CheckBox1.Checked then    if chkSporgEfterKunde.Checked then
2536    begin    begin
2537       Sprgefterboghandlernummer1.Checked := true;       Sprgefterboghandlernummer1.Checked := true;
2538    end    end
# Line 2864  begin Line 2543  begin
2543  end;  end;
2544    
2545    
2546  procedure TMainForm.CheckBox2Click(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2547  begin  begin
2548    if CheckBox2.Checked then    if chkAltidPrintLabel.Checked then
2549    begin    begin
2550       Altidprintepakkelabel1.Checked := true;       Altidprintepakkelabel1.Checked := true;
2551    end    end
# Line 2877  begin Line 2556  begin
2556    
2557  end;  end;
2558    
2559  procedure TMainForm.CheckBox3Click(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2560  begin  begin
2561    if CheckBox3.Checked then    if chkScanTjekkode.Checked then
2562    begin    begin
2563       Scanogstjekkoden1.Checked := true;       Scanogstjekkoden1.Checked := true;
2564    end    end
# Line 2889  begin Line 2568  begin
2568    end;    end;
2569  end;  end;
2570    
2571  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2572  begin  begin
2573        Scanningtype := '5';        Scanningtype := '5';
2574        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2898  end; Line 2577  end;
2577    
2578  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2579  begin  begin
2580      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2581      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2582      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2583  // 20150317: start  
2584      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
2585      or (SpecialVersionSted = '02')        or (SpecialVersionSted = '02')
2586      or (SpecialVersionSted = '03')        or (SpecialVersionSted = '03')
2587      or (SpecialVersionSted = '04') then        or (SpecialVersionSted = '04') then
2588      begin      begin
2589        // 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)
2590        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2591        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2592        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2593      end;      end;
2594  // 20150317: slut  // 20150317: slut
2595  end;  end;
# Line 2925  begin Line 2604  begin
2604    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2605    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...');
2606    
2607          // Tjekker urls    try
2608          logTekst := 'Tjekker urls.';      // Tjekker urls
2609          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2610          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2611        SkrivScanningLogFil(logTekst);
2612    
         // 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;  
2613    
         // 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;  
2614    
2615          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2616          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2617          begin      begin
2618            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2619            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;  
2620    
2621          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2622          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2623          begin      begin
2624            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2625            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;  
2626    
2627          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2628          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2629          begin      begin
2630            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2631            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;  
2632    
2633          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2634          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2635          begin      begin
2636            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2637            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;  
2638    
2639          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2640          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2641          or (PanelValg4.Enabled = true) then      begin
2642          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2643            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;  
2644    
2645          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2646          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2647          begin      begin
2648            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2649            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;  
2650    
2651          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2652          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2653          begin      begin
2654            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2655            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;  
2656    
2657          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2658          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2659          begin      begin
2660            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2661            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;  
2662    
2663  // 20150330: start      // Tjekker UrlPakkeshopManglendeReturScanninger
2664          // Tjekker UrlEKLoverforselPakkeshop      if PanelValg6.Enabled = true then
2665          if PanelValg5.Enabled = true then      begin
2666          begin        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2667            if CheckUrl(UrlEKLoverforselPakkeshop) then      end;
           begin  
             logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
 // 20150330: slut  
2668    
2669          // Tjekker UrlFindPakketype     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2670          if CheckUrl(UrlFindPakketype) then      if PanelValg7.Enabled = true then
2671          begin      begin
2672            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2673            SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2674          end      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;  
2675    
2676          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforsel
2677          if CheckUrl(UrlSendPrograminfo) then      if PanelValg1.Enabled = true then
2678          begin      begin
2679            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2680            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;  
2681    
         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;  
2682    
2683        // Tjekker UrlEKLoverforselPakkeshop
2684        if PanelValg5.Enabled = true then
2685        begin
2686          TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2687        end;
2688    
2689    
2690        // Tjekker UrlFindPakketype
2691        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2692    
2693        // Tjekker UrlSendPrograminfo
2694        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2695    
2696    
2697    
2698        logTekst := 'urls er ok';
2699        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2700        SkrivScanningLogFil(logTekst);
2701    
2702      Except
2703        TjekUrls := '-';   // markerer at der var fejl
2704    
2705      end;
2706  end;  end;
2707    
2708  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2709  var  const
2710     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2711  begin  begin
2712     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2713     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2714     Result := SystemTimeToDateTime(SystemTime) ;    begin
2715        logTekst := UrlNavn + ' accepteret: ' + Url;
2716        SkrivScanningLogFil(logTekst);
2717      end
2718      else
2719      begin
2720        inc(urlFejl);   // Optæller antal fejl
2721        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2722        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2723        if TjekUrls = '1' then
2724        begin
2725          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2726        end;
2727    
2728        SkrivScanningLogFil(logTekst);
2729    
2730        if TjekUrls = '1' then
2731        begin
2732          ShowMessage(logTekst);
2733          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2734          Application.Terminate;
2735    
2736          raise Exception.Create('UrlFejl');
2737    
2738        end;
2739      end;
2740    
2741  end;  end;
2742    
2743    
2744    
2745  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2746  var  var
2747    SR: TSearchRec;    SR: TSearchRec;
# Line 3331  begin Line 2758  begin
2758      repeat      repeat
2759        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2760        begin        begin
2761    
2762          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2763          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2764          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2765          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2766          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2767          // (æ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 3370  begin Line 2798  begin
2798    end;    end;
2799  end;  end;
2800    
2801  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2802  begin  begin
2803    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2804    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2805    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2806    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2807    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2808    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3392  begin Line 2820  begin
2820  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2821    if Farve <> '' then    if Farve <> '' then
2822    begin    begin
2823       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  
2824    end;    end;
2825    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2826    begin    begin
2827       InitLillePakke();       InitLillePakke();
2828    end;    end;
# Line 3412  begin Line 2830  begin
2830    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
2831  end;  end;
2832    
2833    
2834  procedure TMainForm.PanelValg1Click(Sender: TObject);  procedure TMainForm.PanelValg1Click(Sender: TObject);
2835  begin  begin
2836        Scanningtype := '1';        Scanningtype := '1';
# Line 3454  begin Line 2873  begin
2873        NulstilAutomatiskValg();        NulstilAutomatiskValg();
2874  end;  end;
2875    
2876    
2877    procedure TMainForm.PanelValg7Click(Sender: TObject);
2878    begin
2879          Scanningtype := '7';
2880          InitIndleveringskode();
2881          NulstilAutomatiskValg();
2882    
2883    end;
2884    
2885  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2886  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;  
 *)  
2887  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2888  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2889       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2890       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2891       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2892  // 20150311: slut  
2893    
2894    
2895  end;  end;
2896    
2897  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2898  begin  begin
2899        Scanningtype := '1';        Scanningtype := '1';
2900        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3493  var Line 2908  var
2908    BoghandlerNavn : String;    BoghandlerNavn : String;
2909    Koreliste : String;    Koreliste : String;
2910    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2911    SmsKode : String;    SmsKode : String;
2912    DBKbane : String;    DBKbane : String;
2913    Leveringssted : String;    Leveringssted : String;
# Line 3515  begin Line 2929  begin
2929      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2930      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2931      MainForm.Color := clRed;      MainForm.Color := clRed;
2932      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2933    end    end
2934    else    else
2935    begin    begin
2936      Falsk := False;      Falsk := False;
2937      Sand := True;  
2938      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2939      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2940      SmsKode := '999999';      SmsKode := '999999';
# Line 3540  var Line 2954  var
2954    BoghandlerNavn : String;    BoghandlerNavn : String;
2955    Koreliste : String;    Koreliste : String;
2956    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2957    SmsKode : String;    SmsKode : String;
2958    DBKbane : String;    DBKbane : String;
2959    Leveringssted : String;    Leveringssted : String;
# Line 3549  begin Line 2962  begin
2962    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2963    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2964    Falsk := False;    Falsk := False;
   Sand := True;  
2965    
2966    if (Printer.Printers.Count = 0) then  
2967      if (LabelPrint.GetPrinterCount() = 0) then
2968    begin    begin
2969      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2970    end    end
# Line 3566  begin Line 2979  begin
2979      DBKbane := '999';      DBKbane := '999';
2980      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2981      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2982      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2983    end;    end;
2984    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2985  end;  end;
# Line 3575  procedure TMainForm.Timer1Timer(Sender: Line 2988  procedure TMainForm.Timer1Timer(Sender:
2988  begin  begin
2989    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2990    begin    begin
2991      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2992    end    end
2993    else    else
2994    begin    begin
# Line 3584  begin Line 2997  begin
2997    end;    end;
2998  end;  end;
2999    
3000  {  
  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;  
3001    
3002  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3003  const  const
# Line 3622  var Line 3006  var
3006   tekst, filversion : String;   tekst, filversion : String;
3007  begin  begin
3008    
3009    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
3010    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';
3011    
3012    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3644  begin Line 3028  begin
3028          end          end
3029          else          else
3030          begin          begin
3031            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3032          end;          end;
3033      end      end
3034      else      else
3035      begin      begin
3036        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3037      end;      end;
3038    end;    end;
3039    
# Line 3665  begin Line 3049  begin
3049    
3050  end;  end;
3051    
3052    
3053  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3054    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3055  var  var
# Line 3717  begin Line 3102  begin
3102    
3103    if FileExists(fileName) then    if FileExists(fileName) then
3104    begin    begin
3105      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3106      begin      begin
3107        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3108        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3741  begin Line 3126  begin
3126    
3127    if FileExists(fileName) then    if FileExists(fileName) then
3128    begin    begin
3129      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3130      begin      begin
3131        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3132        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3133      end      end
3134      else      else
3135      begin      begin
3136        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3137      end;      end;
3138    end    end
3139    else    else
# Line 3757  begin Line 3142  begin
3142    end;    end;
3143  end;  end;
3144    
3145    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3146    begin
3147      Scanningtype := '7';
3148      NulstilAutomatiskValg();
3149      InitIndleveringskode();
3150    end;
3151    
3152  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3153  begin  begin
3154    
3155    if Sprgefterboghandlernummer1.Checked then    if Sprgefterboghandlernummer1.Checked then
3156    begin    begin
3157       CheckBox1.Checked := true;       chkSporgEfterKunde.Checked := true;
3158    end    end
3159    else    else
3160    begin    begin
3161       CheckBox1.Checked := false;       chkSporgEfterKunde.Checked := false;
3162    end;    end;
3163    
3164    
3165  end;  end;
3166    
3167  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3168  begin  begin
3169        Scanningtype := '2';        Scanningtype := '2';
3170        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3171        InitReturFraDao();        InitReturFraDao();
3172  end;  end;
3173    
3174  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3175  begin  begin
3176        Scanningtype := '6';        Scanningtype := '6';
3177        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3788  end; Line 3180  end;
3180    
3181  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3182  begin  begin
3183        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3184        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3185        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3186        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3187        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3188        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3189        CheckBox1.Enabled := true;  
3190        CheckBox2.Enabled := true;        chkAltidPrintLabel.Enabled := true;
3191        Altidprintepakkelabel1.Enabled := true;        Altidprintepakkelabel1.Enabled := true;
3192        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3193        CheckBox2.Checked := false;        chkAltidPrintLabel.Checked := false;
3194        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3195        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3196        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3197        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3198        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3199        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3200        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3201        ListBox1.Visible := true;        ListBox1.Visible := true;
3202        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3203        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3204        InitLillePakke();        InitLillePakke();
3205        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3206    
3207          chkForstorTilDirekte.Checked := false;
3208          chkForstorTilDirekte.Enabled := false;
3209    
3210        if BladhusSted = 0 then        if BladhusSted = 0 then
3211        begin        begin
3212          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3820  end; Line 3216  end;
3216    
3217  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3218  begin  begin
3219        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3220        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3221        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3222        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3223        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3224        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3225        CheckBox1.Enabled := false;  
3226        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3227        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3228        CheckBox2.Checked := false;  
3229        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3230        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3231        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3232        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3233        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3234        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3235        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3236        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3237        ListBox1.Visible := true;        ListBox1.Visible := true;
3238        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3239        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3240        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3241    
3242          chkForstorTilDirekte.Checked := false;
3243          chkForstorTilDirekte.Enabled := false;
3244    
3245        InitLillePakke();        InitLillePakke();
3246  end;  end;
3247    
3248  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3249  begin  begin
3250        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3251        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3252        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3253        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3254        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3255        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3256        CheckBox1.Enabled := false;  
3257        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3258        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
       CheckBox2.Checked := false;  
3259        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3260        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3261        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3262        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3263        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3264        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3265        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3266        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3267        ListBox1.Visible := true;        ListBox1.Visible := true;
3268        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3269        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3270        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3271    
3272          chkForstorTilDirekte.Checked := false;
3273          chkForstorTilDirekte.Enabled := false;
3274    
3275        InitLillePakke();        InitLillePakke();
3276  end;  end;
3277    
3278  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3279  begin  begin
3280        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3281        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3282        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3283        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3284        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3285        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3286        CheckBox1.Enabled := false;  
3287        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3288        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3289        CheckBox2.Checked := false;  
3290        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3291        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3292        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3293        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3294        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3295        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3296        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3297        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3298        ListBox1.Visible := true;        ListBox1.Visible := true;
3299        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3300        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3301        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3302        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3303        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3304        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3305        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3306    
3307          chkForstorTilDirekte.Checked := false;
3308          chkForstorTilDirekte.Enabled := true;
3309    
3310        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3311        begin        begin
3312            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3910  end; Line 3317  end;
3317    
3318  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3319  begin  begin
3320        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3321        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3322        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3323        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3324        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3325        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3326        CheckBox1.Enabled := false;  
3327        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3328        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3329        CheckBox2.Checked := false;  
3330        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3331        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3332        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3333        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3334        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3335        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3336        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3337        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3338        ListBox1.Visible := true;        ListBox1.Visible := true;
3339        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3340        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3341        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3342  // 20150330: start  
3343  //      EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := true;
3344        EKLoverforsel.Enabled := true;  
3345  // 20150330: slut        chkForstorTilDirekte.Checked := false;
3346          chkForstorTilDirekte.Enabled := true;
3347    
3348        InitLillePakke();        InitLillePakke();
3349        IndlesScanningLogFil();        IndlesScanningLogFil();
3350        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3948  end; Line 3357  end;
3357    
3358  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3359  begin  begin
3360        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3361        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3362        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3363        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3364        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3365        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3366        CheckBox1.Enabled := false;  
3367        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3368        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3369        CheckBox2.Checked := false;  
3370        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3371        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3372        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3373        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3374        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3375        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3376        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3377        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3378        ListBox1.Visible := true;        ListBox1.Visible := true;
3379        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3380        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3381        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3382        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3383    
3384          chkForstorTilDirekte.Checked := false;
3385          chkForstorTilDirekte.Enabled := false;
3386    
3387    
3388        InitLillePakke();        InitLillePakke();
3389        IndlesScanningLogFil();        IndlesScanningLogFil();
3390        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3981  begin Line 3395  begin
3395        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3396  end;  end;
3397    
3398  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3399  begin  begin
3400        Scanningtype := '3';        Scanningtype := '3';
3401        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3402        InitReturFraKunde();        InitReturFraKunde();
3403  end;  end;
3404    
3405  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.InitIndleveringskode();
3406    begin
3407          menuIndlevering.Checked := true;
3408          menuAutomatiskTjekkodeStyring.Enabled := false;
3409    
3410          btnNulstil.Visible := false;
3411          InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3412          PanelValg7.Color := clGreen;
3413          PanelValg7.Font.Color := clWhite;
3414    
3415          chkAltidPrintLabel.Enabled := false;
3416          Altidprintepakkelabel1.Enabled := false;
3417    
3418          Altidprintepakkelabel1.Checked := false;
3419          Sprgefterboghandlernummer1.Checked := false;
3420          Sprgefterboghandlernummer1.Enabled := false;
3421          chkSporgEfterKunde.Checked := false;
3422    
3423    
3424    
3425          menuSmaaPakker.Enabled := false;
3426          menuStorePakker.Enabled := false;
3427          radioStorPakke.Enabled := false;
3428          radioLillePakke.Enabled := false;
3429          ListBox1.Visible := true;
3430          ListBox1.Items.Clear();
3431    
3432          BtnDownloadKontrolfil.Enabled := false;
3433          BtnOpdaterListen.Enabled := true;
3434          BtnEKLoverforsel.Enabled := false;
3435    
3436          chkForstorTilDirekte.Checked := false;
3437          chkForstorTilDirekte.Enabled := false;
3438    
3439    
3440          InitLillePakke();
3441          IndlesScanningLogFil();
3442          if BladhusSted = 0 then
3443          begin
3444            IndlesManglendeScanninger();
3445          end;
3446          IdFTP1.Passive := true;
3447          IdFTP1.PassiveUseControlHost := true;
3448    end;
3449    
3450    
3451    procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3452  begin  begin
3453    InitStorPakke();    InitStorPakke();
3454  end;  end;
3455    
3456  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3457  begin  begin
3458    InitLillePakke();    InitLillePakke();
3459  end;  end;
3460    
3461  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3462  begin  begin
3463    RadioButton2.Checked := true;    radioLillePakke.Checked := true;
3464    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
 // 20150310: start  
3465  //  Stregkode := '';  //  Stregkode := '';
 // 20150310: slut  
3466  end;  end;
3467    
3468  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3469  begin  begin
3470    RadioButton1.Checked := true;    radioStorPakke.Checked := true;
3471    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3472  // 20150310: start  // 20150310: start
3473  //  Stregkode := '';  //  Stregkode := '';
3474  // 20150310: slut  // 20150310: slut
3475  end;  end;
3476    
 /// <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]]);  
3477    
     // 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;  
3478    
3479  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3480  begin  begin
# Line 4106  end; Line 3499  end;
3499    
3500  procedure TMainForm.Testlyd2Click(Sender: TObject);  procedure TMainForm.Testlyd2Click(Sender: TObject);
3501  begin  begin
 // 20150317: start  
3502    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3503    begin    begin
3504       if ScannetOkTilTjekkodeLyd  <> '' then       if ScannetOkTilTjekkodeLyd  <> '' then
# Line 4119  begin Line 3511  begin
3511       end;       end;
3512       exit;       exit;
3513    end;    end;
 // 20150317: slut  
3514    
3515    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3516       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
3517       begin       begin
3518         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(ScannetOkLyd));
3519       end       end
3520       else       else
3521       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);  
3522         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3523       end;       end;
3524    if Storepakker1.Checked then    if menuStorePakker.Checked then
3525       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
3526       begin       begin
3527         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(ScannetOkStorLyd));
3528       end       end
3529       else       else
3530       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);  
3531         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3532       end;       end;
3533  end;  end;
3534    
3535    
3536  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3537  begin  begin
3538        Scanningtype := '4';        Scanningtype := '4';
3539        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 4160  begin; Line 3545  begin;
3545    CheckCode();    CheckCode();
3546  end;  end;
3547    
3548  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3549  var  var
3550    WebSvar : String;    WebSvar : String;
3551    URLStr : String;    URLStr : String;
# Line 4170  var Line 3555  var
3555    status, kommentar : String;    status, kommentar : String;
3556    
3557  begin  begin
3558      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3559    
3560      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');
3561      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3562      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3563      StedKode := Sted;      StedKode := Sted;
3564      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3565  // 20150330: start  
3566      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3567      begin      begin
3568        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3569      end;      end;
3570  // 20150330: slut  
3571    
3572      try      try
3573      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4233  begin Line 3618  begin
3618        end;        end;
3619      end;      end;
3620    
3621      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3622    
3623      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
3624    
# Line 4250  begin Line 3635  begin
3635           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3636         end;         end;
3637         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3638         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3639      end;      end;
3640    
3641  end;  end;
# Line 4274  begin Line 3659  begin
3659    else    else
3660      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3661  }  }
3662    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3663    
3664    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3665    CheckCode();    CheckCode();
# Line 4282  end; Line 3667  end;
3667    
3668  end;  end;
3669    
 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;  
3670    
3671  //  //
3672  // Bladhus ***  // Bladhus ***
# Line 4798  begin Line 4144  begin
4144    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
4145  end;  end;
4146    
4147  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4148  begin  begin
4149      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4150      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
4151  end;  end;
4152    
4153  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4154  const  const
4155    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4156    
# Line 4813  begin Line 4159  begin
4159      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
4160  end;  end;
4161    
4162  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4163  begin  begin
4164      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4165      begin      begin
# Line 4822  begin Line 4168  begin
4168      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
4169  end;  end;
4170    
4171  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;  
4172    
4173  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4174  var  var
# Line 4845  var Line 4179  var
4179    I: Integer;    I: Integer;
4180    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4181    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4182    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4183    pakketyper : TStrings;    //pakketyper : TStrings;
4184      pakketyper : TDictionary<String, Integer>;
4185      tmpAntal : Integer;
4186    
4187     time, timeSamlet : TTimingHelper;
4188    
4189    
4190    antlin : Integer;    antlin : Integer;
4191  // 20150306: start  
4192    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4193  // 20150306: slut  
4194    XmlFelter : TStrings;    //XmlFelter : TStrings;
4195      XmlFelter : TDictionary<String, Integer>;
4196    
4197   begin   begin
4198      XmlFelter := TStringList.Create;  
4199      pakketyper := TStringList.Create;  
4200        XmlFelter := TDictionary<String, Integer>.Create;
4201        pakketyper := TDictionary<String, Integer>.Create;
4202    
4203      linienr := 0;      linienr := 0;
4204      ListBox2.Clear;      ListBox2.Clear;
4205      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 4870  var Line 4214  var
4214          StedKode := Sted;          StedKode := Sted;
4215        end;        end;
4216    
4217  // 20150310: start        Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4218  (*  
4219      if Returpakkerfrapakkeshop1.Checked then  
4220       begin  
4221        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);      if (Scanningtype = '7') then
      end  
     else if Pakkeshoplevering1.Checked then  
      begin  
       URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);  
      end  
     else if Pakkernormal1.Checked then  
4222       begin       begin
4223        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4224       end       end
4225      else      else if (Scanningtype = '6') then
4226       begin       begin
4227        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
      end;  
 *)  
     if (Scanningtype = '6') then  
      begin  
       URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);  
4228       end       end
4229      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4230       begin       begin
4231        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4232       end       end
4233      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4234       begin       begin
# Line 4911  var Line 4244  var
4244       end;       end;
4245  // 20150310: slut  // 20150310: slut
4246    
4247        time := TTimingHelper.create();        //DEBUG
4248        timeSamlet := TTimingHelper.create();        //DEBUG
4249    
4250      try      try
4251      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4252  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4920  var Line 4256  var
4256        begin        begin
4257          // 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
4258          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4259    
4260    
4261    
4262        end;        end;
4263        on e:exception do        on e:exception do
4264        begin        begin
# Line 4930  var Line 4269  var
4269        end;        end;
4270      end;      end;
4271      try      try
4272          time.stop('HTTP Load');     //DEBUG
4273    
4274        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4275    
4276  // 20150206: start        time.stop('XML Load');     //DEBUG
4277    
4278    
4279    
4280    
4281    
4282    
4283        antlin := 0;        antlin := 0;
4284        antlinIdag := 0;        antlinIdag := 0;
4285        antlinSenere := 0;        antlinSenere := 0;
4286  // 20150306: slut  
       antalFelterFundet := 0;  
4287        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4288            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4289            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4290              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4291              begin              begin
4292                 antlin := antlin + 1;                 Inc(antlin);
4293                 // 20150306: start                 // 20150306: start
4294                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4295                begin                begin
4296                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4297                   begin                   begin
4298                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4299                   end                   end
4300                   else                   else
4301                   begin                   begin
4302                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4303                   end;                   end;
4304                end;                end;
4305                 // 20150306: slut                 // 20150306: slut
4306              end;              end;
4307            end;            end;
4308            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4309                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4310                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4311                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4312                  end
4313                else                else
4314                  XmlFelter.values[Node.NodeName] := '1';                begin
4315                    XmlFelter.Add(Node.NodeName, 1);
4316                  end;
4317    
4318        end;        end;
4319        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
4320        antalFelterFundet := 0;        antalFelterFundet := 0;
4321        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4322        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4323  // 20150206: start  
4324  //      logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';        time.stop('Antal Linier');//DEBUG
4325    
4326          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4327    
4328        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4329        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4330        begin        begin
4331          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4332        end;        end;
4333        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4334  // 20150306: slut  
4335        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4336    
4337    
4338        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4339            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4340            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4986  var Line 4342  var
4342                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4343                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4344                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4345              end;              end
4346              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4347                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4348                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4349                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4350              end;              end
4351              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4352                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4353                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4354                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4355              end;              end
4356              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4357                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4358                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4359                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4360              end;              end
4361              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4362                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4363                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4364                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4365                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4366                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4367                    pakketyper.TryGetValue(pakketype, tmpAntal);
4368                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4369                  end
4370                else                else
4371                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4372              end;              end
4373              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4374                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4375                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4376                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4377                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4378                  begin                  begin
4379  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4380                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4381                    begin                    begin
4382                      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
4383                    end                    end
4384                    else                    else
4385                    begin                    begin
4386                      stregkoderMedTjekkodeArray[linienr] := stregkode;                      stregkoderMedTjekkodeArray[linienr] := stregkode;
4387                    end;                    end;
4388  // 20150306: slut                    linienr := linienr + 1;
                     linienr := linienr + 1;  
4389                  end;                  end;
4390              end;              end;
4391    
4392    
4393              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4394              begin              begin
4395                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 5046  var Line 4405  var
4405              end;              end;
4406            end;            end;
4407        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4408    
4409          // Free up the list object  
4410          time.stop('Fyld Listbox2');//DEBUG
4411    
4412    
4413          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4414    
4415    
4416          for pakketype in pakketyper.Keys do
4417          begin
4418            pakketyper.TryGetValue(pakketype, tmpAntal);
4419            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4420          end;
4421    
4422            // Free up the dictionary object
4423        pakketyper.Free;        pakketyper.Free;
4424  // 20150306: start  
4425    
4426    
4427  //      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.');
4428        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4429        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5062  var Line 4432  var
4432        end;        end;
4433        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4434        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
 // 20150306: slut  
 // 20150309: start  
4435        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4436        begin        begin
4437          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
# Line 5072  var Line 4440  var
4440        begin        begin
4441          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4442        end;        end;
 // 20150309: slut  
4443    
 // 20150310: start  
4444        if (Scanningtype = '1') then        if (Scanningtype = '1') then
4445        begin        begin
4446          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal
# Line 5153  var Line 4519  var
4519            PanelManglendePakker6.Visible := false;            PanelManglendePakker6.Visible := false;
4520          end;          end;
4521        end;        end;
 // 20150310: slut  
4522    
4523      except on e:exception do      except on e:exception do
4524        begin        begin
# Line 5164  var Line 4529  var
4529        end;        end;
4530      end;      end;
4531    
4532        time.stop('Done');//DEBUG
4533        timeSamlet.stop('SamletTid');//DEBUG
4534    
4535    
4536  end;  end;
4537    
4538  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 5215  end; Line 4584  end;
4584  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4585  var  var
4586     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4587     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4588     imorgenYmd : string;     imorgenYmd : string;
4589     logFilnavn : string;     logFilnavn : string;
4590      error : Integer;     //error : Integer;
4591    
4592  begin  begin
4593    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5312  begin Line 4679  begin
4679          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4680          S := buffer;          S := buffer;
4681          SetLength(A,0);          SetLength(A,0);
4682          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4683          if (length(A) < 2) then          if (length(A) < 2) then
4684          begin          begin
4685            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4686          end;          end;
4687            if (length(A) > 1) then            if (length(A) > 1) then
4688            begin            begin
# Line 5389  begin Line 4756  begin
4756          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4757          S := buffer;          S := buffer;
4758          SetLength(A,0);          SetLength(A,0);
4759          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4760          if (length(A) < 3) then          if (length(A) < 3) then
4761          begin          begin
4762            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4763          end;          end;
4764          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4765          begin          begin
# Line 5484  begin Line 4851  begin
4851    result := svar;    result := svar;
4852  end;  end;
4853    
4854    procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4855    begin
4856      //ShowMessage('Ændring ikke tilladt');
4857      // Her skal komme en 'rød skærm' alarm
4858      PlaySound(PWideChar(AlarmLyd));
4859      MainForm.Color := clRed;
4860    
4861    
4862      RuteNummerST.Caption := '';
4863      BoghandlerNavnST.Caption := '';
4864      btnNulstil.Visible := true;
4865    
4866      if (strMessage <> '') then
4867      begin
4868        ListBox1.Items.Insert(0, strMessage);
4869        KommentarST.Caption := strMessage;
4870      end;
4871    
4872      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4873    
4874    end;
4875    
4876  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
4877  var  var
4878     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
# Line 5504  end; Line 4893  end;
4893  function TMainForm.getProddag() : String;  function TMainForm.getProddag() : String;
4894  begin  begin
4895  //  ShowMessage(LongDayNames[DayOfWeek(getProddato())]);  //  ShowMessage(LongDayNames[DayOfWeek(getProddato())]);
4896    result := LongDayNames[DayOfWeek(getProddato())];    result := FormatSettings.LongDayNames[DayOfWeek(getProddato())];
4897    //result := 'lørdag';     // MENS VI TESTER  kan vi fremtvinge lørdag situation her    //result := 'lørdag';     // MENS VI TESTER  kan vi fremtvinge lørdag situation her
4898  end;  end;
4899    
# Line 5541  begin Line 4930  begin
4930    result := svar;    result := svar;
4931  end;  end;
4932    
 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;  
4933    
4934  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4935  begin  begin
4936    if Scanogstjekkoden1.Checked then    if Scanogstjekkoden1.Checked then
4937    begin    begin
4938       CheckBox3.Checked := true;       chkScanTjekkode.Checked := true;
4939    end    end
4940    else    else
4941    begin    begin
4942       CheckBox3.Checked := false;       chkScanTjekkode.Checked := false;
4943    end;    end;
4944  end;  end;
4945    
4946  function TMainForm.AdobeReaderExists: Boolean;  
4947  var  //Nedarvet fra IParentForm
4948    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4949  begin  begin
4950    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4951  end;  end;
4952    
4953  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4954  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;  
4955  begin  begin
4956      ListBox1.Items.Insert(0, msg);
4957      SkrivScanningLogFil(msg);
4958    end;
4959    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4960    
4961    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4962    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4963      printerTxt := 'Der er fravalgt printer i dette program';  begin
4964      ListBox1.Items.Insert(0,printerTxt);  
4965      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4966    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4967    begin    begin
4968      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4969      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4970      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4971    end    end
4972    else    else
4973    begin    begin
4974      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4975      try      PrinterstatusStaticText1.Color := clWhite;
4976        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;  
   end;  
 end;  
   
 function TMainForm.CheckUrl(url:string):boolean;  
 var  
   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);  
4977    end;    end;
   
4978  end;  end;
4979    
4980  // 20150310: start  //Nedarvet fra IParentForm
4981  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetFormObject() : TForm;
 var  
    R: TRect;  
    Rgn: HRGN;  
4982  begin  begin
4983     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;  
4984  end;  end;
 // 20150310: slut  
4985    
4986  end.  end.
4987    

Legend:
Removed from v.2645  
changed lines
  Added in v.3076

  ViewVC Help
Powered by ViewVC 1.1.20