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

Diff of /dao/DelphiScanner/Main.pas

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

revision 2660 by torben, Sun Aug 23 14:45:16 2015 UTC revision 3087 by torben, Mon Aug 15 14:14:14 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet,    ShellApi, ClipBrd, Buttons, wininet,
22    UITypes    UITypes,
23      PakkeshopLabels,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections,
30      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;
# Line 23  type Line 40  type
40      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
41      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
42      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
43      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
44      N1: TMenuItem;      N1: TMenuItem;
45      Pakkernormal1: TMenuItem;      menuNatXpress1: TMenuItem;
46      ReturpakkerfraDAO1: TMenuItem;      menuNatxpressReturDAO1: TMenuItem;
47      Returpakkerfraboghandler1: TMenuItem;      menuNatxpressReturfraKunde1: TMenuItem;
48      Hjlp1: TMenuItem;      Hjlp1: TMenuItem;
49      Om1: TMenuItem;      Om1: TMenuItem;
50      Testforbindelsen1: TMenuItem;      Testforbindelsen1: TMenuItem;
# Line 41  type Line 57  type
57      radioStorPakke: TRadioButton;      radioStorPakke: TRadioButton;
58      radioLillePakke: TRadioButton;      radioLillePakke: TRadioButton;
59      N4: TMenuItem;      N4: TMenuItem;
60      Storepakker1: TMenuItem;      menuStorePakker: TMenuItem;
61      Smpakker1: TMenuItem;      menuSmaaPakker: TMenuItem;
62      Panel1: TPanel;      Panel1: TPanel;
63      Testlyd2: TMenuItem;      Testlyd2: TMenuItem;
64      Button1: TButton;      Button1: TButton;
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      menuDaoDirekte1: TMenuItem;
68      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
71      ListBox2: TListBox;      ListBox2: TListBox;
72      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
73      UploadButton01: TButton;      BtnUploadLogfil: TButton;
74      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      menuPakkeshop1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      PakkeshopNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      menuPakkeshopRetur1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 70  type Line 86  type
86      Timer1: TTimer;      Timer1: TTimer;
87      chkScanTjekkode: TCheckBox;      chkScanTjekkode: TCheckBox;
88      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
89      Automatisktjekkodestyring1: TMenuItem;      menuAutomatiskTjekkodeStyring: TMenuItem;
90      Automatiskvalg1: TMenuItem;      menuAutomatiskvalg1: TMenuItem;
91      PanelValgA: TPanel;      PanelValgA: TPanel;
92      PanelValg1: TPanel;      PanelValg1: TPanel;
93      PanelValg2: TPanel;      PanelValg2: TPanel;
# Line 88  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 119  type Line 130  type
130    procedure radioStorPakkeClick(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
131    procedure radioLillePakkeClick(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
132    procedure chkSporgEfterKundeClick(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
133    procedure Pakkernormal1Click(Sender: TObject);    procedure menuNatXpress1Click(Sender: TObject);
134    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
135    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
136    procedure Om1Click(Sender: TObject);    procedure Om1Click(Sender: TObject);
137    procedure Lukprogrammet1Click(Sender: TObject);    procedure Lukprogrammet1Click(Sender: TObject);
138    procedure Sprgefterboghandlernummer1Click(Sender: TObject);    procedure Sprgefterboghandlernummer1Click(Sender: TObject);
139    procedure ReturpakkerfraDAO1Click(Sender: TObject);    procedure menuNatxpressReturDAO1Click(Sender: TObject);
140    procedure Returpakkerfraboghandler1Click(Sender: TObject);    procedure menuNatxpressReturfraKunde1Click(Sender: TObject);
141    procedure Storepakker1Click(Sender: TObject);    procedure menuStorePakkerClick(Sender: TObject);
142    procedure Smpakker1Click(Sender: TObject);    procedure menuSmaaPakkerClick(Sender: TObject);
143    procedure Testlyd1Click(Sender: TObject);    procedure Testlyd1Click(Sender: TObject);
144    procedure Testlyd2Click(Sender: TObject);    procedure Testlyd2Click(Sender: TObject);
145    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
146    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
147    procedure Budlevering1Click(Sender: TObject);    procedure menuDaoDirekte1Click(Sender: TObject);
148    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
149    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
150    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
151    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
152    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 143  type Line 154  type
154    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
155    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
156    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
157    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
158    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
159    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure menuPakkeshop1Click(Sender: TObject);
160    procedure 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();
# Line 158  type Line 169  type
169    
170    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
171    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
172    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
173    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
174    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
175    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
176    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
177    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
178    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure menuAutomatiskTjekkodeStyringClick(Sender: TObject);
179    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
180    procedure Automatiskvalg1Click(Sender: TObject);    procedure menuAutomatiskvalg1Click(Sender: TObject);
181    procedure PanelValgAClick(Sender: TObject);    procedure PanelValgAClick(Sender: TObject);
182    procedure PanelValg1Click(Sender: TObject);    procedure PanelValg1Click(Sender: TObject);
183    procedure PanelValg2Click(Sender: TObject);    procedure PanelValg2Click(Sender: TObject);
# Line 181  type Line 191  type
191    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
192    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
193    procedure TjekkerUrls();    procedure TjekkerUrls();
194  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
195    procedure RoundCornerOf(Control: TWinControl);  
196      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    
 // 20150310: slut  
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 193  type Line 211  type
211      SkrivLog : String;      SkrivLog : String;
212      Sted : String;      Sted : String;
213      StedNavn : String;      StedNavn : String;
214      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;  
 // 29150330: start  
     UrlEKLoverforselPakkeshop : String;  
 // 20150330: slut  
     UrlFindPakketype, UrlSendPrograminfo: String;  
215      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
216      ScanTjekkode : String;      ScanTjekkode : String;
217      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
218      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
219      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Url : String;
220      LabelType : integer;  
221        Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
222              FarveIndlevering : String;
223    
224        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
225              TitelIndlevering : String;
226    
227      AlarmLyd : String;      AlarmLyd : String;
228      ScannetOkLyd : String;      ScannetOkLyd : String;
229      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
230  // 20150317: start  
231      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
232  // 20150317: slut  
233      PrinterNavn : String;      PrinterNavn : String;
234      TjekPrinter : String;      TjekPrinter : String;
235      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;  
236      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
237      BladhusSted : Integer;      BladhusSted : Integer;
238      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 247  type Line 245  type
245      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
246      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
247      TjekUrls : String;      TjekUrls : String;
248        Config : TConfiguration;
249    
250            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
251        LabelPrint: TLabelPrint;
252    
253      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 = '');
254      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
255      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 = '');
256      procedure CheckCode();      procedure CheckCode();
257      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 262  type Line 262  type
262      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
263      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
264    
265    
266    public    public
267      { Public declarations }      { Public declarations }
268    end;    end;
269    
270    
271  var  var
272    MainForm: TMainForm;    MainForm: TMainForm;
273    
# Line 279  var Line 281  var
281  implementation  implementation
282  {$R *.dfm}  {$R *.dfm}
283    
284  function TMainForm.TColorToHex(Color : TColor) : string;  
285  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;  
286    
287  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
288  begin  begin
289    
290  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
291        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
292    
293    
294    
295    
296      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
297  // 20150309: slut  
298    
299      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
300      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 346  begin Line 338  begin
338        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
339      end;      end;
340    
341      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
342    
343      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
344      begin      begin
# Line 374  begin Line 366  begin
366        else if (Sted = 'BR') then        else if (Sted = 'BR') then
367          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
368        else if (Sted = 'BK') then        else if (Sted = 'BK') then
369          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
370          else if (Sted = 'TK') then
371            begin StedNavn := 'BK/Trykkompagniet: '; end
372        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
373          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
374        else if (Sted = '1') then        else if (Sted = '1') then
375          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
376        else if (Sted = '2') then        else if (Sted = '2') then
# Line 400  begin Line 394  begin
394    
395      StartScreen();      StartScreen();
396      MainForm.Caption := Titel;      MainForm.Caption := Titel;
397      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
398      MainForm.Farve := Farve;      MainForm.Farve := Farve;
399      MainForm.Titel := Titel;      MainForm.Titel := Titel;
400      MainForm.Url := Url;      MainForm.Url := Url;
# Line 410  begin Line 404  begin
404        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
405      end;      end;
406    
407      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
408        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
409      else      else
410        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 435  begin Line 429  begin
429        end;        end;
430      end;      end;
431    
432      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
433      begin      begin
434        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
435        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 460  begin Line 454  begin
454          end          end
455          else          else
456          begin          begin
457            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
458          end;          end;
459          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
460        end        end
461        else        else
462        begin        begin
463          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
464          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
465        end;        end;
466      end;      end;
467    
468    
469  end;  end;
470    
471  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 492  begin Line 487  begin
487    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
488  end;  end;
489    
490  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
491  begin  begin
492    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
493    begin    begin
494       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
495       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 507  begin Line 502  begin
502    
503  end;  end;
504    
505  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
506  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;  
 *)  
507  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
508  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
509       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
510       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
511       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
512  end;  end;
513    
514    
515    
516    //InitForm kaldes før FormCreate
517  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
518  const  const
519    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
520  var  var
   printerInd : integer;  
521    gemScanningtype : String;    gemScanningtype : String;
522    
523  begin  begin
524    
525    
526    // Initierer nogle variabler    // Initierer nogle variabler
527    BladhusSted := 00;    BladhusSted := 00;
528    Application.ShowHint := True;    Application.ShowHint := True;
529    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
530    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
531    
532    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
533    
534    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
535    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
536    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
537    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
538    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
539    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
540    
541    
542    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
# Line 565  begin Line 548  begin
548    
549  // Sætter lige en default panel størrelse  // Sætter lige en default panel størrelse
550    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
551    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 820;
552    
553      Config := TConfiguration.Create();
554      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
555      Config.Sted := Sted;
556    
557    // Læser parametre fra ini filen    // Læser parametre fra ini filen
558    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
559    try    try
560    
561    
562      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
563      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
564      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
565      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');  
566      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');  
567      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');  
568      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
     UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');  
     UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');  
     UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');  
     UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');  
   
     UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');  
   
     UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');  
     UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');  
     UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');  
     UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');  
     LabelType := ReadInteger('Settings','LabelType',1);  
569      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
570      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
571      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 625  begin Line 602  begin
602    
603      if (SkrivLog = '1') then      if (SkrivLog = '1') then
604      begin      begin
605        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);
606        try        try
607          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
608          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
609          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
610          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
611          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
612          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 641  begin Line 618  begin
618    
619      if Scanningtype = 'A' then      if Scanningtype = 'A' then
620      begin      begin
621        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
622        Scanningtype := '1';        Scanningtype := '1';
623        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
624        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
625      end;      end;
626    
627      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;  
628    
629      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
630      begin      begin
# Line 741  begin Line 650  begin
650    
651      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
652      begin      begin
653        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
654        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
655        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
656      end;      end;
# Line 768  begin Line 677  begin
677      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
678      // *************************** //      // *************************** //
679    
680    {$IfDef STED_BK}
681        SpecialVersionSted := 'BK';
682    {$EndIf}
683    {$IfDef STED_TK}
684        SpecialVersionSted := 'TK';// BK-Trykkompagniet
685    {$EndIf}
686    {$IfDef STED_DBK}
687        SpecialVersionSted := 'DBK';
688    {$EndIf}
689    {$IfDef STED_FD}
690        SpecialVersionSted := 'FD';
691    {$EndIf}
692    {$IfDef STED_NS}
693        SpecialVersionSted := 'NS';
694    {$EndIf}
695    
696      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
697      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
698      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 783  begin Line 708  begin
708      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
709      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
710    
 // 20150313: start  
711      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
712      begin      begin
713         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
714         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
715    
716          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
717          Sted := SpecialVersionSted;
718         // her skal vi også disable de knapper BK ikke kan bruge
719          PanelValg2.Enabled := false;
720          PanelValg2.Font.Color := clInactiveCaption;
721          PanelValg3.Enabled := false;
722          PanelValg3.Font.Color := clInactiveCaption;
723          //PanelValg6.Enabled := false;
724          //PanelValg6.Font.Color := clInactiveCaption;
725    
726         // her skal vi også disable de menupunkter FD ikke kan bruge
727          menuNatxpressReturDAO1.Enabled := false;
728          menuNatxpressReturfraKunde1.Enabled := false;
729    
730          //Returpakkerfrapakkeshop1.Enabled := false;
731      end;      end;
732    
733      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
734      begin      begin
735         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
736         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
737      end;  
 // 20150313: slut  
738    
     if SpecialVersionSted = 'BK' then  
     begin  
739        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
740        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
741       // her skal vi også disable de knapper BK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
# Line 805  begin Line 743  begin
743        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
744        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
745        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
746        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
747        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
748       // her skal vi også disable de menupunkter BK ikke kan bruge  
749        ReturpakkerfraDAO1.Enabled := false;       // her skal vi også disable de menupunkter FD ikke kan bruge
750        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
751        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
752        if SpecialVersionScanningtype = 'A' then  
753        begin        //Returpakkerfrapakkeshop1.Enabled := false;
754           Scanningtype := '1';  
       end  
       else  
       begin  
         Scanningtype := SpecialVersionScanningtype;  
       end;  
755      end;      end;
756    
757      if SpecialVersionSted = 'DBK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
758      begin      begin
759        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
760        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
761        // her skal vi også disable de knapper DBK ikke kan bruge       // her skal vi også disable de knapper BK ikke kan bruge
762        PanelValg2.Enabled := false;        PanelValg2.Enabled := false;
763        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
764        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
765        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
766        PanelValg5.Enabled := false;        //PanelValg6.Enabled := false;
767        PanelValg5.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
       PanelValg6.Enabled := false;  
       PanelValg6.Font.Color := clInactiveCaption;  
      // her skal vi også disable de menupunkter DBK ikke kan bruge  
       ReturpakkerfraDAO1.Enabled := false;  
       Returpakkerfraboghandler1.Enabled := false;  
768    
769        Pakkeshoplevering1.Enabled := false;       // her skal vi også disable de menupunkter BK ikke kan bruge
770        Returpakkerfrapakkeshop1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
771          menuNatxpressReturfraKunde1.Enabled := false;
772    
773          //Returpakkerfrapakkeshop1.Enabled := false;
774    
775        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
776        begin        begin
# Line 851  begin Line 782  begin
782        end;        end;
783      end;      end;
784    
785        if SpecialVersionSted = 'DBK' then
786        begin
787          Sted := SpecialVersionSted;
788        end;
789    
790      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
791      or (SpecialVersionSted = '02')      or (SpecialVersionSted = '02')
792      or (SpecialVersionSted = '03')      or (SpecialVersionSted = '03')
# Line 870  begin Line 806  begin
806        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
807        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
808        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
809          PanelValg7.Enabled := false;
810          PanelValg7.Font.Color := clInactiveCaption;
811       // 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
812    
813        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
814    
815        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
816        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
817        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
818        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
819        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
820        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
821        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
822        begin        begin
823          Scanningtype := '4';          Scanningtype := '4';
824          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
825          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
826          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
827        end        end
# Line 892  begin Line 830  begin
830          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
831          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
832          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
833          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
834          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
835          if Scanningtype = '1' then          if Scanningtype = '1' then
836          begin          begin
837            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
838            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
839            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
840          end;          end;
841          if Scanningtype = '2' then          if Scanningtype = '2' then
842          begin          begin
843            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
844            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
845            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
846          end;          end;
847          if Scanningtype = '3' then          if Scanningtype = '3' then
848          begin          begin
849            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
850            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
851            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
852          end;          end;
853          if Scanningtype = '4' then          if Scanningtype = '4' then
854          begin          begin
855            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
856            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
857            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
858          end;          end;
859          if Scanningtype = '5' then          if Scanningtype = '5' then
860          begin          begin
861            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
862            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
863            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
864          end;          end;
865          if Scanningtype = '6' then          if Scanningtype = '6' then
866          begin          begin
867            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
868            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
869            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
870          end;          end;
# Line 965  begin Line 903  begin
903             RutenummerST.Caption := '';             RutenummerST.Caption := '';
904             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
905             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
906             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
907             exit;             exit;
908          end;          end;
909      end      end
# Line 1007  begin Line 945  begin
945    
946      if Pakketype = '1' then      if Pakketype = '1' then
947      begin      begin
948        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
949        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
950      end      end
951      else      else
952      begin      begin
953        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
954        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
955      end;      end;
956    
# Line 1060  begin Line 998  begin
998      end;      end;
999    
1000    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1001    
1002      CheckPrintQue('Opstart');  
1003        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1004        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1005    
1006    finally    finally
1007      Free;      Free;
# Line 1076  begin Line 1010  begin
1010      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
1011      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
1012      begin      begin
1013        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
1014        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
1015        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
1016        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
1017        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
1018        Testprinter1.Visible := false;        Testprinter1.Visible := false;
1019        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
1020        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
1021      end;      end;
1022    
1023      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1134  begin Line 1068  begin
1068      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1069    
1070      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1071      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1072    
1073  end;  end;
1074    
# Line 1191  begin Line 1125  begin
1125      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1126      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1127      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1128        or (NumberString = 'DAO PAKKESHOP')
1129        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1130            or (LowerCase(NumberString) = 'for stor daodirekte' )
1131      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1132    
1133      begin      begin
# Line 1201  begin Line 1138  begin
1138      begin      begin
1139        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1140      end;      end;
1141    end;    end;  // Slut ctrl-v
1142    
1143    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1144    begin    begin
1145      if (Length(Trim(Stregkode)) = 0) then  
1146        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1147        Stregkode := Trim(Stregkode);
1148    
1149        if (Length(Stregkode) = 0) then
1150      begin      begin
1151        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1152    
# Line 1214  begin Line 1155  begin
1155    
1156      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1157      begin      begin
1158         PakkeshopNulstil.Click();         btnNulstil.Click();
1159         exit;         exit;
1160      end;      end;
1161    
1162      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1163      begin      begin
1164        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1165    
# Line 1255  begin Line 1196  begin
1196         exit;         exit;
1197      end;      end;
1198    
1199        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1200        begin
1201          if chkForstorTilDirekte.Enabled then
1202          begin
1203            chkForstorTilDirekte.Checked := true;
1204          end
1205          else
1206          begin
1207             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1208          end;
1209          Stregkode := '';
1210          StregkodeST.Caption := StregKode;
1211          exit;
1212        end;
1213    
1214    
1215      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1216      begin      begin
1217         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1409  begin Line 1366  begin
1366      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1367      begin      begin
1368        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet        // Her skal vi så forespørge pakketype på serveren udfra stregkode feltet
1369        URLStr := Format(UrlFindPakketype,[Stregkode]);        URLStr := Format(Config.UrlFindPakketype,[Stregkode]);
1370        try        try
1371          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST          //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1372          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
# Line 1452  begin Line 1409  begin
1409        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1410      end;      end;
1411    
1412      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1413          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1414          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1415          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1416          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1417          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1418      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1419          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1420    
1421         exit;         exit;
1422      end;      end;
1423    
1424      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1425      begin      begin
1426        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1427        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1493  begin Line 1450  begin
1450                InitPakkeshoplevering();                InitPakkeshoplevering();
1451              end;              end;
1452            end            end
1453        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1454              begin
1455                if Scanningtype <> '6' then
1456                begin
1457                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1458    
1459                 exit;
1460                end;
1461              end
1462    
1463    
1464        else        else
1465            begin            begin
1466            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1467              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1468                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1469    
1470               exit;               exit;
1471            end;            end;
1472        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1473      end      end
1474      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1475      begin      begin
1476        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1477    
1478        exit;        exit;
1479      end;      end;
1480    
1481      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1482      begin      begin
1483        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1484        begin        begin
# Line 1524  begin Line 1491  begin
1491    
1492    
1493    
1494      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1495      begin      begin
1496        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1497        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1537  begin Line 1504  begin
1504        end;        end;
1505      end;      end;
1506    
1507      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1508        begin        begin
1509          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1510             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1511             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1512             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1513             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1514             Stregkode := '';             Stregkode := '';
1515             InitScreen();             InitScreen();
1516        end        end
1517      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1518        begin        begin
1519          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1520             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1555  begin Line 1522  begin
1522             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1523             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1524             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1525             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1526             Stregkode := '';             Stregkode := '';
1527             InitScreen();             InitScreen();
1528        end        end
1529      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1530        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1531         begin         begin
1532            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1585  begin Line 1552  begin
1552             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1553             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1554             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1555             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1556                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1557             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1558                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1559             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1560           end           end
1561          else          else
1562           begin           begin
1563                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1564                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1565                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1566                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1567                                    
1568                StregKode := '';                StregKode := '';
# Line 1607  begin Line 1574  begin
1574          InitScreen();          InitScreen();
1575       end;       end;
1576    
1577      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
1578      begin      begin
1579         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1580           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1581            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1582         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1583            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1584         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1585         try         try
# Line 1621  begin Line 1589  begin
1589            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1590            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1591            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1592               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1593               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1594              exit;              exit;
1595            end;            end;
1596            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1597            begin            begin
1598              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1599              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1646  begin Line 1610  begin
1610              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1611              begin              begin
1612                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1613                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1614                MainForm.Color := clRed;                MainForm.Color := clRed;
1615              end;              end;
1616           end;           end;
1617            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
1618            begin            begin
1619              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1620              if Storepakker1.Checked then              if menuStorePakker.Checked then
1621              begin              begin
1622                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1623              end              end
# Line 1661  begin Line 1625  begin
1625              begin              begin
1626                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1627              end;              end;
1628              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1629            end            end
1630            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1631            begin            begin
1632              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1633              if Storepakker1.Checked then              if menuStorePakker.Checked then
1634              begin              begin
1635                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1636              end              end
# Line 1674  begin Line 1638  begin
1638              begin              begin
1639                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1640              end;              end;
1641              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1642            end            end
1643            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1644            begin            begin
# Line 1685  begin Line 1649  begin
1649            end            end
1650            else            else
1651            begin            begin
1652              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1653            end;            end;
1654           if not PakkeshopNulstil.Visible then  
1655             if not btnNulstil.Visible then
1656            begin            begin
1657    
1658              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1659              begin              begin
1660                if Storepakker1.Checked then                if menuStorePakker.Checked then
1661                begin                begin
1662                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(ScannetOkStorLyd));
1663                end                end
# Line 1738  begin Line 1701  begin
1701    
1702    Key := #0;    Key := #0;
1703    
1704    
1705    
1706    
1707    
1708    
1709  end; //End of OnKeyPress  end; //End of OnKeyPress
1710    
1711    
1712    
1713  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1714  const  const
1715    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1747  var Line 1717  var
1717    WebSvar : String;    WebSvar : String;
1718    URLStr : String;    URLStr : String;
1719  begin  begin
1720    if UrlSendPrograminfo <> '' then    if Config.UrlSendPrograminfo <> '' then
1721    begin    begin
1722      URLStr := Format(UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);      URLStr := Format(Config.UrlSendPrograminfo,[ExtractFileName(ParamStr(0)), Sted, Scanningtype, Infotype, Info]);
1723      try      try
1724        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST        //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
1725        WebSvar := IdHTTP1.Get(URLStr);        WebSvar := IdHTTP1.Get(URLStr);
# Line 1762  begin Line 1732  begin
1732        ShowMessage(logTekst);        ShowMessage(logTekst);
1733        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
1734        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet        // Vi nulstiller lige url feltet så rutinen ikke kaldes igen i forbindelse med lukning af programmet
1735        UrlSendPrograminfo := '';        Config.UrlSendPrograminfo := '';
1736        Application.Terminate;        Application.Terminate;
1737      end;      end;
1738      end;      end;
# Line 1781  var Line 1751  var
1751    
1752    
1753  begin  begin
1754      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
1755      begin      begin
1756        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1757          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1758          begin          begin
1759              wrkAntalSenere := 0;//initial Value
1760    
1761            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1762            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1763            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1764            begin            begin
1765              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1766              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1767  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1768  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1769  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1770              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1771            end            end
1772            else     // kun idag            else     // kun idag
1773            begin            begin
# Line 1900  begin Line 1871  begin
1871                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1872              end;              end;
1873            end;            end;
1874  // 20150310: slut  
1875            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1876          end;          end;
1877      end;      end;
# Line 1930  procedure TMainForm.InitBladhus(); Line 1901  procedure TMainForm.InitBladhus();
1901    
1902  begin  begin
1903    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1904    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1905    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1906    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1907    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1908    ListBox1.Visible := true;    ListBox1.Visible := true;
1909  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1910  // 20150317: start  
1911  (*    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  
1912    begin    begin
1913      IndlesScanningLogFil();      IndlesScanningLogFil();
1914    end;    end;
# Line 1989  begin Line 1920  begin
1920      01 :      01 :
1921            begin;      // NS            begin;      // NS
1922              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1923              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1924              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1925              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1926              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1927              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2001  begin Line 1932  begin
1932      02 :      02 :
1933            begin;    // BK            begin;    // BK
1934              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1935              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1936              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1937              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1938              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1939              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1940              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1941              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1942              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1943              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2016  begin Line 1947  begin
1947              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1948             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1949              begin              begin
1950                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1951              end              end
1952              else              else
1953              begin              begin
1954                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1955              end;              end;
1956              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1957              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1958              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1959              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1960              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2039  begin Line 1970  begin
1970            end;            end;
1971      04 :  begin;           // DBK      04 :  begin;           // DBK
1972              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1973              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
1974              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
1975              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
1976              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
1977              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1978              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1979              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1980              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1981            end;            end;
# Line 2060  var Line 1991  var
1991    URLStr : String;    URLStr : String;
1992    pakkestorrelse : String;    pakkestorrelse : String;
1993    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1994    
1995      PakkeshopLabel: TPakkeshopLabel;
1996  begin  begin
1997    if radioStorPakke.Checked then    if radioStorPakke.Checked then
1998    begin    begin
# Line 2069  begin Line 2002  begin
2002    begin    begin
2003      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
2004    end;    end;
2005    if Pakkernormal1.Checked then  
2006    
2007      if menuNatXpress1.Checked then
2008    begin    begin
2009       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
2010       begin       begin
2011         BoghandlerTjekkode := '-1';         BoghandlerTjekkode := '-1';
2012       end;       end;
2013       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(Config.UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2014    end    end
2015    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
2016    begin    begin
2017       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(Config.UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2018    end    end
2019    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
2020    begin    begin
2021       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(Config.UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2022    end    end
2023    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
2024    begin    begin
2025       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(Config.UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2026    end    end
2027    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
2028    begin    begin
2029       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(Config.UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2030    end    end
2031    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
2032    begin    begin
2033       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(Config.UrlReturPakkeshop,[Sted, PakkeNr]);
2034      end
2035      else if menuIndlevering.Checked then
2036      begin
2037        URLStr := Format(Config.UrlIndleveringsPakke,[Sted, PakkeNr]);
2038    end    end
2039    else    else
2040    begin    begin
2041      exit;      exit;
2042    end;    end;
2043    
2044      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2045      begin
2046        URLStr := Format(Config.URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2047      end;
2048    
2049    try    try
2050      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2051      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2067  begin
2067          end;          end;
2068      end;      end;
2069    end;    end;
2070    
2071    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2072    try    try
2073      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2074       begin       begin
2075        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2076        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2132  begin Line 2078  begin
2078        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2079        PrintNyLabel := False;        PrintNyLabel := False;
2080    
2081        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2082        begin        begin
2083          try          try
2084            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2143  begin Line 2089  begin
2089          begin          begin
2090            PrintNyLabel := True;            PrintNyLabel := True;
2091          end;          end;
 // 20150310: start  
2092        end;        end;
 // 20150310: slut  
2093       end       end
2094        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2095        begin
2096    
2097    
2098    
2099    
2100         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2101         if (Kommentar = 'Ok') then
2102         begin
2103           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2104           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2105           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2106           Stregkode := PakkeshopLabel.Stregkode;
2107    
2108           LabelPrint.PrintFuldPakkeLabel( PakkeshopLabel );
2109           chkForstorTilDirekte.Checked := false;
2110    
2111         end;
2112    
2113    
2114        end
2115      else      else
2116       begin       begin
2117        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2154  begin Line 2119  begin
2119        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2120        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2121        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2122        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2123          begin          begin
2124          try          try
2125            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2179  begin Line 2144  begin
2144          PrintNyLabel := True;          PrintNyLabel := True;
2145        end;        end;
2146      end;      end;
2147    
2148    
2149      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2150      begin      begin
2151        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
2152        begin        begin
2153            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2154            PrintNyLabel := False;            PrintNyLabel := False;
2155        end;        end;
2156      end      end
2157      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) And (Leveringssted <> '') then
2158      begin      begin
2159         if (Leveringssted = 'E') and (Sted = 'DBK') then         if (Leveringssted = 'E') and (Sted = 'DBK') then
2160         begin         begin
# Line 2195  begin Line 2162  begin
2162         end         end
2163         else         else
2164         begin         begin
2165            Kommentar := Kommentar + ' Pakke burde være hos DAO Distribution';            Kommentar := Kommentar + 'Pakke burde være hos ' + Leveringssted;
2166            PrintNyLabel := False;            PrintNyLabel := False;
2167         end;         end;
2168      end;      end;
# Line 2216  begin Line 2183  begin
2183    //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
2184    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2185    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2186    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2187      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2188    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2189    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2228  begin Line 2195  begin
2195      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2196    end;    end;
2197    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2198    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2199    begin    begin
2200      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2201    end;    end;
2202    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2203    begin    begin
2204      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2205    end;    end;
2206    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2207       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2208    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2209    begin    begin
2210      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2211    end;    end;
2212    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2213    begin    begin
2214       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2215        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2254  begin Line 2221  begin
2221          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2222        end;        end;
2223    end;    end;
2224    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2225    begin    begin
2226      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2227    end;    end;
2228    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2229    begin    begin
2230      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2231      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2271  begin Line 2238  begin
2238        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2239      end;      end;
2240    end;    end;
2241      if menuIndlevering.Checked then
2242      begin
2243        List1Msg := Stregkode;
2244      end;
2245    
2246    
2247    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2248    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2249    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2250  end;  end;
2251    
2252  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2253  begin  begin
2254    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2255    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2292  pakkeForkertSted : Integer; Line 2265  pakkeForkertSted : Integer;
2265    kontrolKoreliste : string;    kontrolKoreliste : string;
2266    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2267  begin  begin
2268    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2269       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2270    
2271    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2272    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2330  begin Line 2303  begin
2303        end;        end;
2304    end    end
2305    else    else
2306    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2307    begin    begin
2308       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2309       begin       begin
# Line 2338  begin Line 2311  begin
2311    
2312          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2313          MainForm.Color := clRed;          MainForm.Color := clRed;
2314          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2315    
2316       end       end
2317       else       else
# Line 2349  begin Line 2322  begin
2322            PrintNyLabel := true;            PrintNyLabel := true;
2323            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2324            nyFarve := Farve;            nyFarve := Farve;
2325            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2326            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2327            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2328            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2365  begin Line 2338  begin
2338            begin            begin
2339              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2340              MainForm.Color := clRed;              MainForm.Color := clRed;
2341              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2342            end;            end;
2343    
2344         end;         end;
# Line 2391  begin Line 2364  begin
2364            begin            begin
2365              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2366              MainForm.Color := clRed;              MainForm.Color := clRed;
2367              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2368            end;            end;
2369    
2370         end;         end;
# Line 2399  begin Line 2372  begin
2372    
2373    end;    end;
2374    
2375    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2376    begin    begin
2377      case BladhusSted of      case BladhusSted of
2378        00 :  begin;        00 :  begin;
# Line 2411  begin Line 2384  begin
2384               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2385  // 20150304: slut  // 20150304: slut
2386                begin                begin
2387                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2388                end;                end;
2389              end;              end;
2390        01 :  begin;        01 :  begin;
2391               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2392                    // 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
2393                    // 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')
2394                begin                begin
2395                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2396                end;                end;
2397              end;              end;
2398        02 :  begin;        02 :  begin;
2399                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
2400                begin                begin
2401                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2402                end;                end;
2403              end;              end;
2404        03 :  begin;        03 :  begin;
2405               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2406                    // 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
2407                    // 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')
2408               begin               begin
2409                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2410               end;               end;
2411              end;              end;
2412        04 :  begin;        04 :  begin;
2413                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
2414                begin                begin
2415                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2416                end;                end;
2417              end;              end;
2418        else        else
# Line 2448  begin Line 2421  begin
2421    end;    end;
2422    
2423  // 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
2424    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
2425    begin    begin
2426      exit;      exit;
2427    end;    end;
2428    
2429    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then    if menuDaoDirekte1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2430    begin    begin
2431    end    end
2432    else    else
# Line 2475  begin Line 2448  begin
2448        end;        end;
2449        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2450        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2451        with Printer do  
2452        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2453          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;  
2454      end;      end;
2455    end;    end;
2456    
2457  end;  end;
2458    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
   
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
   
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
     end;  
 end;  
2459    
2460    
2461  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2462  begin  begin
2463      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2464      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2465  end;  end;
2466    
2467  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2468  begin  begin
2469      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2470      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2471  end;  end;
2472    
# Line 2596  begin Line 2509  begin
2509    end;    end;
2510  end;  end;
2511    
2512  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2513  begin  begin
2514        Scanningtype := '5';        Scanningtype := '5';
2515        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2605  end; Line 2518  end;
2518    
2519  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2520  begin  begin
2521      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2522      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2523      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2524    
# Line 2617  begin Line 2530  begin
2530        // 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)
2531        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2532        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2533        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2534      end;      end;
2535  // 20150317: slut  // 20150317: slut
2536  end;  end;
# Line 2632  begin Line 2545  begin
2545    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2546    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...');
2547    
2548          // Tjekker urls    try
2549          logTekst := 'Tjekker urls.';      // Tjekker urls
2550          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2551          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2552        SkrivScanningLogFil(logTekst);
2553    
         // 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;  
2554    
         // 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;  
2555    
2556          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2557          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2558          begin      begin
2559            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', Config.UrlNormal, urlFejl);
2560            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;  
2561    
2562          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2563          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2564          begin      begin
2565            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', Config.UrlReturDAO, urlFejl);
2566            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;  
2567    
2568          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2569          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2570          begin      begin
2571            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', Config.UrlReturBoghandler, urlFejl);
2572            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;  
2573    
2574          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2575          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2576          begin      begin
2577            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', Config.UrlBudlevering, urlFejl);
2578            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;  
2579    
2580          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2581          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2582          or (PanelValg4.Enabled = true) then      begin
2583          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', Config.UrlPakkeshoplevering, urlFejl);
2584            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;  
2585    
2586          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2587          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2588          begin      begin
2589            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', Config.UrlReturPakkeshop, urlFejl);
2590            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;  
2591    
2592          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2593          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2594          begin      begin
2595            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', Config.UrlManglendeScanninger, urlFejl);
2596            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;  
2597    
2598          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2599          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2600          begin      begin
2601            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', Config.UrlPakkeshopManglendeScanninger, urlFejl);
2602            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;  
2603    
2604        // Tjekker UrlPakkeshopManglendeReturScanninger
2605        if PanelValg6.Enabled = true then
2606        begin
2607          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', Config.UrlPakkeshopManglendeReturScanninger, urlFejl);
2608        end;
2609    
2610          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2611          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2612          begin      begin
2613            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', Config.UrlIndleveringsPakke, urlFejl);
2614            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', Config.UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2615              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;      end;
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2616    
2617        // Tjekker UrlEKLoverforsel
2618        if PanelValg1.Enabled = true then
2619        begin
2620          TjekkerEnkeltUrl('UrlEKLoverforsel', Config.UrlEKLoverforsel, urlFejl);
2621        end;
2622    
         // Tjekker UrlFindPakketype  
         if CheckUrl(UrlFindPakketype) then  
         begin  
           logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;  
           SkrivScanningLogFil(logTekst);  
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2623    
2624          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2625          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2626          begin      begin
2627            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', Config.UrlEKLoverforselPakkeshop, urlFejl);
2628            SkrivScanningLogFil(logTekst);      end;
2629          end  
2630          else  
2631          begin      // Tjekker UrlFindPakketype
2632              inc(urlFejl);   // Optæller antal fejl      TjekkerEnkeltUrl('UrlFindPakketype', Config.UrlFindPakketype, urlFejl);
2633              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
2634              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      // Tjekker UrlSendPrograminfo
2635              if TjekUrls = '1' then      TjekkerEnkeltUrl('UrlSendPrograminfo', Config.UrlSendPrograminfo, urlFejl);
2636              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;  
2637    
         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;  
2638    
2639        logTekst := 'urls er ok';
2640        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2641        SkrivScanningLogFil(logTekst);
2642    
2643      Except
2644        TjekUrls := '-';   // markerer at der var fejl
2645    
2646      end;
2647  end;  end;
2648    
2649  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2650  var  const
2651     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2652  begin  begin
2653     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2654     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2655     Result := SystemTimeToDateTime(SystemTime) ;    begin
2656        logTekst := UrlNavn + ' accepteret: ' + Url;
2657        SkrivScanningLogFil(logTekst);
2658      end
2659      else
2660      begin
2661        inc(urlFejl);   // Optæller antal fejl
2662        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2663        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2664        if TjekUrls = '1' then
2665        begin
2666          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2667        end;
2668    
2669        SkrivScanningLogFil(logTekst);
2670    
2671        if TjekUrls = '1' then
2672        begin
2673          ShowMessage(logTekst);
2674          Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2675          Application.Terminate;
2676    
2677          raise Exception.Create('UrlFejl');
2678    
2679        end;
2680      end;
2681    
2682  end;  end;
2683    
2684    
2685    
2686  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2687  var  var
2688    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2699  begin
2699      repeat      repeat
2700        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2701        begin        begin
2702    
2703          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2704          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2705          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2706          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2707          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2708          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
# Line 3077  begin Line 2739  begin
2739    end;    end;
2740  end;  end;
2741    
2742  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2743  begin  begin
2744    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2745    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2746    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2747    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2748    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2749    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3090  begin Line 2752  begin
2752    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then    if BoghandlerNavnST.Caption = 'Fejl i forbindelse til server' then
2753    begin    begin
2754       ShowMessage('Programmet afbrydes...');       ShowMessage('Programmet afbrydes...');
2755       UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut       Config.UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2756       Application.Terminate;       Application.Terminate;
2757       exit;       exit;
2758    end;    end;
# Line 3099  begin Line 2761  begin
2761  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2762    if Farve <> '' then    if Farve <> '' then
2763    begin    begin
2764       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  
2765    end;    end;
2766    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2767    begin    begin
2768       InitLillePakke();       InitLillePakke();
2769    end;    end;
# Line 3173  end; Line 2825  end;
2825    
2826  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2827  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;  
 *)  
2828  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2829  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2830       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2831       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2832       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2833  // 20150311: slut  
2834    
2835    
2836  end;  end;
2837    
2838  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2839  begin  begin
2840        Scanningtype := '1';        Scanningtype := '1';
2841        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3231  begin Line 2870  begin
2870      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2871      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2872      MainForm.Color := clRed;      MainForm.Color := clRed;
2873      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2874    end    end
2875    else    else
2876    begin    begin
# Line 3266  begin Line 2905  begin
2905    Falsk := False;    Falsk := False;
2906    
2907    
2908    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2909    begin    begin
2910      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2911    end    end
# Line 3281  begin Line 2920  begin
2920      DBKbane := '999';      DBKbane := '999';
2921      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2922      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2923      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2924    end;    end;
2925    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2926  end;  end;
# Line 3290  procedure TMainForm.Timer1Timer(Sender: Line 2929  procedure TMainForm.Timer1Timer(Sender:
2929  begin  begin
2930    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2931    begin    begin
2932      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2933    end    end
2934    else    else
2935    begin    begin
# Line 3299  begin Line 2938  begin
2938    end;    end;
2939  end;  end;
2940    
2941  {  
  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;  
2942    
2943  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2944  const  const
# Line 3337  var Line 2947  var
2947   tekst, filversion : String;   tekst, filversion : String;
2948  begin  begin
2949    
2950    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2951    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';
2952    
2953    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 2969  begin
2969          end          end
2970          else          else
2971          begin          begin
2972            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2973          end;          end;
2974      end      end
2975      else      else
2976      begin      begin
2977        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2978      end;      end;
2979    end;    end;
2980    
# Line 3373  begin Line 2983  begin
2983      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2984      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';      tekst := tekst+crlf+crlf+'          **********  DETTE ER KUN EN TEST VERSION  **********';
2985      tekst := tekst+crlf+crlf;      tekst := tekst+crlf+crlf;
2986      tekst := tekst+crlf+crlf+'Url: '+url;      tekst := tekst+crlf+crlf+'Url: ' + Url;
2987    end;    end;
2988    
2989    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);    MessageBox(Handle, PWideChar(tekst), 'Information', MB_OK);
2990    
2991  end;  end;
2992    
2993    
2994  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
2995    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
2996  var  var
# Line 3432  begin Line 3043  begin
3043    
3044    if FileExists(fileName) then    if FileExists(fileName) then
3045    begin    begin
3046      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3047      begin      begin
3048        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3049        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3067  begin
3067    
3068    if FileExists(fileName) then    if FileExists(fileName) then
3069    begin    begin
3070      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3071      begin      begin
3072        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3073        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3074      end      end
3075      else      else
3076      begin      begin
3077        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3078      end;      end;
3079    end    end
3080    else    else
# Line 3472  begin Line 3083  begin
3083    end;    end;
3084  end;  end;
3085    
3086    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3087    begin
3088      Scanningtype := '7';
3089      NulstilAutomatiskValg();
3090      InitIndleveringskode();
3091    end;
3092    
3093  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3094  begin  begin
3095    
# Line 3487  begin Line 3105  begin
3105    
3106  end;  end;
3107    
3108  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3109  begin  begin
3110        Scanningtype := '2';        Scanningtype := '2';
3111        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3112        InitReturFraDao();        InitReturFraDao();
3113  end;  end;
3114    
3115  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3116  begin  begin
3117        Scanningtype := '6';        Scanningtype := '6';
3118        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3503  end; Line 3121  end;
3121    
3122  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3123  begin  begin
3124        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3125        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3126        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3127        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,Config.UrlNormal);
3128        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3129        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3130    
# Line 3517  begin Line 3135  begin
3135        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3136        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3137        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3138        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3139        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3140        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3141        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3142        ListBox1.Visible := true;        ListBox1.Visible := true;
3143        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3144        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3145        InitLillePakke();        InitLillePakke();
3146        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3147    
3148          chkForstorTilDirekte.Checked := false;
3149          chkForstorTilDirekte.Enabled := false;
3150    
3151        if BladhusSted = 0 then        if BladhusSted = 0 then
3152        begin        begin
3153          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3535  end; Line 3157  end;
3157    
3158  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3159  begin  begin
3160        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3161        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3162        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3163        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO, Config.UrlReturDAO);
3164        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3165        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3166    
# Line 3549  begin Line 3171  begin
3171        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3172        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3173        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3174        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3175        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3176        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3177        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3178        ListBox1.Visible := true;        ListBox1.Visible := true;
3179        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3180        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3181        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3182    
3183          chkForstorTilDirekte.Checked := false;
3184          chkForstorTilDirekte.Enabled := false;
3185    
3186        InitLillePakke();        InitLillePakke();
3187  end;  end;
3188    
3189  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3190  begin  begin
3191        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3192        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3193        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3194        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler, Config.UrlReturBoghandler);
3195        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3196        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3197    
# Line 3575  begin Line 3201  begin
3201        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3202        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3203        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3204        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3205        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3206        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3207        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3208        ListBox1.Visible := true;        ListBox1.Visible := true;
3209        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3210        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3211        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3212    
3213          chkForstorTilDirekte.Checked := false;
3214          chkForstorTilDirekte.Enabled := false;
3215    
3216        InitLillePakke();        InitLillePakke();
3217  end;  end;
3218    
3219  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3220  begin  begin
3221        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3222        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3223        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3224        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering, Config.UrlBudlevering);
3225        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3226        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3227    
# Line 3602  begin Line 3232  begin
3232        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3233        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3234        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3235        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3236        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3237        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3238        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3239        ListBox1.Visible := true;        ListBox1.Visible := true;
3240        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3241        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3242        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3243        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3244        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3245        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3246        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3247    
3248          chkForstorTilDirekte.Checked := false;
3249          chkForstorTilDirekte.Enabled := true;
3250    
3251        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3252        begin        begin
3253            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3624  end; Line 3258  end;
3258    
3259  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3260  begin  begin
3261        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3262        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3263        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3264        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering, Config.UrlPakkeshoplevering);
3265        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3266        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3267    
# Line 3638  begin Line 3272  begin
3272        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3273        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3274        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3275        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3276        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3277        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3278        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3279        ListBox1.Visible := true;        ListBox1.Visible := true;
3280        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3281        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3282        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3283    
3284        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3285    
3286          chkForstorTilDirekte.Checked := false;
3287          chkForstorTilDirekte.Enabled := true;
3288    
3289        InitLillePakke();        InitLillePakke();
3290        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3661  end; Line 3298  end;
3298    
3299  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3300  begin  begin
3301        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3302        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3303        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3304        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop, Config.UrlReturPakkeshop);
3305        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3306        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3307    
# Line 3675  begin Line 3312  begin
3312        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3313        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3314        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3315        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3316        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3317        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3318        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3319        ListBox1.Visible := true;        ListBox1.Visible := true;
3320        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3321        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3322        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3323        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3324    
3325          chkForstorTilDirekte.Checked := false;
3326          chkForstorTilDirekte.Enabled := false;
3327    
3328    
3329        InitLillePakke();        InitLillePakke();
3330        IndlesScanningLogFil();        IndlesScanningLogFil();
3331        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3694  begin Line 3336  begin
3336        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3337  end;  end;
3338    
3339  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3340  begin  begin
3341        Scanningtype := '3';        Scanningtype := '3';
3342        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3703  end; Line 3345  end;
3345    
3346  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3347  begin  begin
3348        AutomatiskTjekkodeStyring1.Enabled := false;        menuIndlevering.Checked := true;
3349        Returpakkerfrapakkeshop1.Checked := true;        menuAutomatiskTjekkodeStyring.Enabled := false;
3350        PakkeshopNulstil.Visible := false;  
3351        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        btnNulstil.Visible := false;
3352          InitForm(FarveIndlevering, TitelIndlevering, Config.UrlReturPakkeshop);
3353        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3354        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3355    
# Line 3720  begin Line 3363  begin
3363    
3364    
3365    
3366        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3367        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3368        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3369        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3370        ListBox1.Visible := true;        ListBox1.Visible := true;
3371        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3372    
3373        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3374        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3375        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3376    
3377          chkForstorTilDirekte.Checked := false;
3378          chkForstorTilDirekte.Enabled := false;
3379    
3380    
3381        InitLillePakke();        InitLillePakke();
3382        IndlesScanningLogFil();        IndlesScanningLogFil();
3383        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3741  begin Line 3389  begin
3389  end;  end;
3390    
3391    
3392  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3393  begin  begin
3394    InitStorPakke();    InitStorPakke();
3395  end;  end;
3396    
3397  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3398  begin  begin
3399    InitLillePakke();    InitLillePakke();
3400  end;  end;
# Line 3754  end; Line 3402  end;
3402  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3403  begin  begin
3404    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3405    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3406  //  Stregkode := '';  //  Stregkode := '';
3407  end;  end;
3408    
3409  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3410  begin  begin
3411    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3412    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3413  // 20150310: start  // 20150310: start
3414  //  Stregkode := '';  //  Stregkode := '';
3415  // 20150310: slut  // 20150310: slut
3416  end;  end;
3417    
 /// <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]]);  
3418    
     // 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;  
3419    
3420  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3421  begin  begin
# Line 3870  begin Line 3453  begin
3453       exit;       exit;
3454    end;    end;
3455    
3456    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3457       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
3458       begin       begin
3459         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(ScannetOkLyd));
# Line 3879  begin Line 3462  begin
3462       begin       begin
3463         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3464       end;       end;
3465    if Storepakker1.Checked then    if menuStorePakker.Checked then
3466       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
3467       begin       begin
3468         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(ScannetOkStorLyd));
# Line 3891  begin Line 3474  begin
3474  end;  end;
3475    
3476    
3477  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3478  begin  begin
3479        Scanningtype := '4';        Scanningtype := '4';
3480        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3903  begin; Line 3486  begin;
3486    CheckCode();    CheckCode();
3487  end;  end;
3488    
3489  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3490  var  var
3491    WebSvar : String;    WebSvar : String;
3492    URLStr : String;    URLStr : String;
# Line 3913  var Line 3496  var
3496    status, kommentar : String;    status, kommentar : String;
3497    
3498  begin  begin
3499      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3500    
3501      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');
3502      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3503      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3504      StedKode := Sted;      StedKode := Sted;
3505      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(Config.UrlEKLoverforsel,[StedKode,Sted]);
3506  // 20150330: start  
3507      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3508      begin      begin
3509        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(Config.UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3510      end;      end;
3511  // 20150330: slut  
3512    
3513      try      try
3514      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3559  begin
3559        end;        end;
3560      end;      end;
3561    
3562      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3563    
3564      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
3565    
# Line 3993  begin Line 3576  begin
3576           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3577         end;         end;
3578         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3579         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3580      end;      end;
3581    
3582  end;  end;
# Line 4017  begin Line 3600  begin
3600    else    else
3601      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3602  }  }
3603    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3604    
3605    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3606    CheckCode();    CheckCode();
# Line 4025  end; Line 3608  end;
3608    
3609  end;  end;
3610    
 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;  
3611    
3612  //  //
3613  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4085  begin
4085    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
4086  end;  end;
4087    
4088  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4089  begin  begin
4090      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4091      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
4092  end;  end;
4093    
4094  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4095  const  const
4096    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4097    
# Line 4556  begin Line 4100  begin
4100      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
4101  end;  end;
4102    
4103  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4104  begin  begin
4105      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4106      begin      begin
# Line 4565  begin Line 4109  begin
4109      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
4110  end;  end;
4111    
4112  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;  
4113    
4114  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4115  var  var
# Line 4588  var Line 4120  var
4120    I: Integer;    I: Integer;
4121    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4122    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4123    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    antalLiniefelter, antalFelterFundet, linienr : Integer;
4124    pakketyper : TStrings;    //pakketyper : TStrings;
4125      pakketyper : TDictionary<String, Integer>;
4126      tmpAntal : Integer;
4127    
4128     time, timeSamlet : TTimingHelper;
4129    
4130    
4131    antlin : Integer;    antlin : Integer;
4132    
4133    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4134    
4135    XmlFelter : TStrings;    //XmlFelter : TStrings;
4136      XmlFelter : TDictionary<String, Integer>;
4137    
4138   begin   begin
4139      XmlFelter := TStringList.Create;  
4140      pakketyper := TStringList.Create;  
4141        XmlFelter := TDictionary<String, Integer>.Create;
4142        pakketyper := TDictionary<String, Integer>.Create;
4143    
4144      linienr := 0;      linienr := 0;
4145      ListBox2.Clear;      ListBox2.Clear;
4146      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
# Line 4613  var Line 4155  var
4155          StedKode := Sted;          StedKode := Sted;
4156        end;        end;
4157    
4158          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4159    
4160      if (Scanningtype = '6') then  
4161    
4162        if (Scanningtype = '7') then
4163       begin       begin
4164        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(Config.UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4165         end
4166        else if (Scanningtype = '6') then
4167         begin
4168          URLStr := Format(Config.UrlPakkeshopManglendeReturScanninger, [StedKode]);
4169       end       end
4170      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4171       begin       begin
4172        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(Config.UrlPakkeshopManglendeScanninger, [StedKode]);
4173       end       end
4174      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4175       begin       begin
4176        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'B2']);
4177       end       end
4178      else if (Scanningtype = '4') then      else if (Scanningtype = '4') then
4179       begin       begin
4180        URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer        URLStr := Format(Config.UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer
4181       end       end
4182      else      else
4183       begin       begin
# Line 4636  var Line 4185  var
4185       end;       end;
4186  // 20150310: slut  // 20150310: slut
4187    
4188        time := TTimingHelper.create();        //DEBUG
4189        timeSamlet := TTimingHelper.create();        //DEBUG
4190    
4191      try      try
4192      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
4193  //    URLStr := string(Utf8Encode(URLStr));  //    URLStr := string(Utf8Encode(URLStr));
# Line 4645  var Line 4197  var
4197        begin        begin
4198          // 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
4199          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4200    
4201    
4202    
4203        end;        end;
4204        on e:exception do        on e:exception do
4205        begin        begin
# Line 4655  var Line 4210  var
4210        end;        end;
4211      end;      end;
4212      try      try
4213          time.stop('HTTP Load');     //DEBUG
4214    
4215        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4216    
4217          time.stop('XML Load');     //DEBUG
4218    
4219    
4220    
4221    
4222    
4223    
4224        antlin := 0;        antlin := 0;
4225        antlinIdag := 0;        antlinIdag := 0;
# Line 4667  var Line 4230  var
4230            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4231              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4232              begin              begin
4233                 antlin := antlin + 1;                 Inc(antlin);
4234                 // 20150306: start                 // 20150306: start
4235                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4236                begin                begin
4237                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4238                   begin                   begin
4239                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4240                   end                   end
4241                   else                   else
4242                   begin                   begin
4243                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4244                   end;                   end;
4245                end;                end;
4246                 // 20150306: slut                 // 20150306: slut
4247              end;              end;
4248            end;            end;
4249            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4250                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4251                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4252                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4253                  end
4254                else                else
4255                  XmlFelter.values[Node.NodeName] := '1';                begin
4256                    XmlFelter.Add(Node.NodeName, 1);
4257                  end;
4258    
4259        end;        end;
4260        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4262  var
4262        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4263        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4264    
4265          time.stop('Antal Linier');//DEBUG
4266    
4267          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4268    
4269        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4270        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4271        begin        begin
# Line 4702  var Line 4274  var
4274        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4275    
4276        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4277    
4278    
4279        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4280            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4281            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4283  var
4283                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4284                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4285                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4286              end;              end
4287              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4288                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4289                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4290                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4291              end;              end
4292              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4293                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4294                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4295                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4296              end;              end
4297              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4298                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4299                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4300                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4301              end;              end
4302              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4303                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4304                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4305                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4306                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4307                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4308                    pakketyper.TryGetValue(pakketype, tmpAntal);
4309                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4310                  end
4311                else                else
4312                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4313              end;              end
4314              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4315                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4316                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4317                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4318                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4319                  begin                  begin
4320  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4321                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4322                    begin                    begin
4323                      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
4324                    end                    end
4325                    else                    else
4326                    begin                    begin
# Line 4753  var Line 4329  var
4329                    linienr := linienr + 1;                    linienr := linienr + 1;
4330                  end;                  end;
4331              end;              end;
4332    
4333    
4334              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4335              begin              begin
4336                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4768  var Line 4346  var
4346              end;              end;
4347            end;            end;
4348        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4349    
4350          // Free up the list object  
4351          time.stop('Fyld Listbox2');//DEBUG
4352    
4353    
4354          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4355    
4356    
4357          for pakketype in pakketyper.Keys do
4358          begin
4359            pakketyper.TryGetValue(pakketype, tmpAntal);
4360            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4361          end;
4362    
4363            // Free up the dictionary object
4364        pakketyper.Free;        pakketyper.Free;
4365    
4366    
4367    
4368  //      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.');
4369        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4370        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4880  var Line 4470  var
4470        end;        end;
4471      end;      end;
4472    
4473        time.stop('Done');//DEBUG
4474        timeSamlet.stop('SamletTid');//DEBUG
4475    
4476    
4477  end;  end;
4478    
4479  procedure TMainForm.IndlesScanningLogFil();  procedure TMainForm.IndlesScanningLogFil();
# Line 4934  var Line 4528  var
4528     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4529     imorgenYmd : string;     imorgenYmd : string;
4530     logFilnavn : string;     logFilnavn : string;
4531      error : Integer;     //error : Integer;
4532    
4533  begin  begin
4534    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4620  begin
4620          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4621          S := buffer;          S := buffer;
4622          SetLength(A,0);          SetLength(A,0);
4623          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4624          if (length(A) < 2) then          if (length(A) < 2) then
4625          begin          begin
4626            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4627          end;          end;
4628            if (length(A) > 1) then            if (length(A) > 1) then
4629            begin            begin
# Line 5103  begin Line 4697  begin
4697          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4698          S := buffer;          S := buffer;
4699          SetLength(A,0);          SetLength(A,0);
4700          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4701          if (length(A) < 3) then          if (length(A) < 3) then
4702          begin          begin
4703            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4704          end;          end;
4705          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4706          begin          begin
# Line 5203  begin Line 4797  begin
4797    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4798    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4799    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4800    MainForm.Color := clRed;    MainForm.Color := clRed;
4801    
4802    
4803    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4804    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4805    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4806    PakkeshopNulstil.Visible := true;  
4807      if (strMessage <> '') then
4808      begin
4809        ListBox1.Items.Insert(0, strMessage);
4810        KommentarST.Caption := strMessage;
4811      end;
4812    
4813      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4814    
4815  end;  end;
4816    
4817  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 4871  begin
4871    result := svar;    result := svar;
4872  end;  end;
4873    
 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;  
4874    
4875  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4876  begin  begin
# Line 5301  begin Line 4884  begin
4884    end;    end;
4885  end;  end;
4886    
4887  function TMainForm.AdobeReaderExists: Boolean;  
4888  var  //Nedarvet fra IParentForm
4889    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4890  begin  begin
4891    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4892  end;  end;
4893    
4894  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4895  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;  
4896  begin  begin
4897      ListBox1.Items.Insert(0, msg);
4898      SkrivScanningLogFil(msg);
4899    end;
4900    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4901    
4902    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4903    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4904      printerTxt := 'Der er fravalgt printer i dette program';  begin
4905      ListBox1.Items.Insert(0,printerTxt);  
4906      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4907    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4908    begin    begin
4909      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4910      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4911      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4912    end    end
4913    else    else
4914    begin    begin
4915      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4916      try      PrinterstatusStaticText1.Color := clWhite;
4917        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;  
4918    end;    end;
4919  end;  end;
4920    
4921  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4922  var  function TMainForm.GetFormObject() : TForm;
   hSession, hfile, hRequest: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
   
 end;  
   
 // 20150310: start  
 procedure TMainForm.RoundCornerOf(Control: TWinControl);  
 var  
    R: TRect;  
    Rgn: HRGN;  
4923  begin  begin
4924     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;  
4925  end;  end;
 // 20150310: slut  
4926    
4927  end.  end.
4928    

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

  ViewVC Help
Powered by ViewVC 1.1.20