/[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 3039 by torben, Wed Jun 1 13:25:34 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet,    ShellApi, ClipBrd, Buttons, wininet,
22    UITypes    UITypes,
23      PakkeshopLabels,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
31    ;    ;
32    
33  type  type
34    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
35      StregkodeST: TStaticText;      StregkodeST: TStaticText;
36      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
37      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 23  type Line 39  type
39      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
40      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
41      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
42      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
43      N1: TMenuItem;      N1: TMenuItem;
44      Pakkernormal1: TMenuItem;      Pakkernormal1: TMenuItem;
# Line 49  type Line 64  type
64      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
65      ListBox1: TListBox;      ListBox1: TListBox;
66      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
67      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
68      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
69      Image1: TImage;      Image1: TImage;
70      ListBox2: TListBox;      ListBox2: TListBox;
71      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
72      UploadButton01: TButton;      BtnUploadLogfil: TButton;
73      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
74      Pakkeshoplevering1: TMenuItem;      Pakkeshoplevering1: TMenuItem;
75      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
76      PakkeshopNulstil: TButton;      btnNulstil: TButton;
77      Returpakkerfrapakkeshop1: TMenuItem;      Returpakkerfrapakkeshop1: TMenuItem;
78      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
79      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
80      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
81      N5: TMenuItem;      N5: TMenuItem;
82      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
83      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 88  type Line 103  type
103      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
104      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
105      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
106        menuIndlevering: TMenuItem;
107        chkForstorTilDirekte: TCheckBox;
108        chkEmballageRepareret: TCheckBox;
109        KommentarST: TLabel;
110    
111    
112    
   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;  
113    function getProddato() : TDate;    function getProddato() : TDate;
114    function getProddag() : String;    function getProddag() : String;
115    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;  
116    
117    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
118    procedure StartScreen();    procedure StartScreen();
# Line 134  type Line 143  type
143    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
144    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
145    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
146    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
147    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
148    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
149    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
150    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 143  type Line 152  type
152    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
153    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
154    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
155    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
156    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
157    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure Pakkeshoplevering1Click(Sender: TObject);
158    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
159    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
160    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
161    procedure InitReturFraDao();    procedure InitReturFraDao();
# Line 158  type Line 167  type
167    
168    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
169    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
170    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
171    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
172    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
173    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
174    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
175    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
# Line 181  type Line 189  type
189    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
190    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
191    procedure TjekkerUrls();    procedure TjekkerUrls();
192  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
193    procedure RoundCornerOf(Control: TWinControl);  
194      procedure menuIndleveringClick(Sender: TObject);
195    
196    
197    
198      //Nedarvet fra IParentForm
199      procedure Msg( msg : string);
200      procedure LogMessage( msg : string);
201      procedure SetPrinterstatusText( txt: string; alert: boolean);
202      function GetFormObject() : TForm;
203    
204    
 // 20150310: slut  
205    
206    private    private
207      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 209  type
209      SkrivLog : String;      SkrivLog : String;
210      Sted : String;      Sted : String;
211      StedNavn : String;      StedNavn : String;
212      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
213  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
214                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
215    
216      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
217  // 20150330: slut  
218      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
219      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
220      ScanTjekkode : String;      ScanTjekkode : String;
221      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
222      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
223      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
224      LabelType : integer;            FarveIndlevering : String;
225    
226        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
227              TitelIndlevering : String;
228    
229      AlarmLyd : String;      AlarmLyd : String;
230      ScannetOkLyd : String;      ScannetOkLyd : String;
231      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
232  // 20150317: start  
233      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
234  // 20150317: slut  
235      PrinterNavn : String;      PrinterNavn : String;
236      TjekPrinter : String;      TjekPrinter : String;
237      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;  
238      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
239      BladhusSted : Integer;      BladhusSted : Integer;
240      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 247  type Line 247  type
247      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
248      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
249      TjekUrls : String;      TjekUrls : String;
250        Config : TConfiguration;
251    
252            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
253        LabelPrint: TLabelPrint;
254    
255      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 = '');
256      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
257      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 = '');
258      procedure CheckCode();      procedure CheckCode();
259      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 261  type Line 263  type
263      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
264      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
265      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
266        function InjectURL(Url : String) : String;
267    
268    public    public
269      { Public declarations }      { Public declarations }
270    end;    end;
271    
272    
273  var  var
274    MainForm: TMainForm;    MainForm: TMainForm;
275    
# Line 279  var Line 283  var
283  implementation  implementation
284  {$R *.dfm}  {$R *.dfm}
285    
286  function TMainForm.TColorToHex(Color : TColor) : string;  
287  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;  
288    
289  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
290  begin  begin
291    
 // 20150309: startr  
292      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
293  // 20150309: slut  
294    
295      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
296      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 346  begin Line 334  begin
334        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
335      end;      end;
336    
337      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
338    
339      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
340      begin      begin
# Line 374  begin Line 362  begin
362        else if (Sted = 'BR') then        else if (Sted = 'BR') then
363          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
364        else if (Sted = 'BK') then        else if (Sted = 'BK') then
365          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
366          else if (Sted = 'TK') then
367            begin StedNavn := 'BK/Trykkompagniet: '; end
368        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
369          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
370        else if (Sted = '1') then        else if (Sted = '1') then
371          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
372        else if (Sted = '2') then        else if (Sted = '2') then
# Line 400  begin Line 390  begin
390    
391      StartScreen();      StartScreen();
392      MainForm.Caption := Titel;      MainForm.Caption := Titel;
393      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
394      MainForm.Farve := Farve;      MainForm.Farve := Farve;
395      MainForm.Titel := Titel;      MainForm.Titel := Titel;
396      MainForm.Url := Url;      MainForm.Url := Url;
# Line 460  begin Line 450  begin
450          end          end
451          else          else
452          begin          begin
453            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
454          end;          end;
455          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
456        end        end
457        else        else
458        begin        begin
459          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
460          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
461        end;        end;
462      end;      end;
463    
464    
465  end;  end;
466    
467  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 509  end; Line 500  end;
500    
501  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
502  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;  
 *)  
503  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
504  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
505       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
506       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
507       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
508  end;  end;
509    
510    function TMainForm.InjectURL(Url : String) : String;
511    begin
512    
513      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
514      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
515      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
516    
517      Result := Url;
518    end;
519    
520    //InitForm kaldes før FormCreate
521  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
522  const  const
523    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
524  var  var
   printerInd : integer;  
525    gemScanningtype : String;    gemScanningtype : String;
526    
527  begin  begin
528    
529    
530    // Initierer nogle variabler    // Initierer nogle variabler
531    BladhusSted := 00;    BladhusSted := 00;
532    Application.ShowHint := True;    Application.ShowHint := True;
533    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
534    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
535    
536    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
537    
538    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
539    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
540    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
541    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
542    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
543    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
544    
545    
546    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
# Line 567  begin Line 554  begin
554    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
555    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
556    
557      Config := TConfiguration.Create();
558      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
559      Config.Sted := Sted;
560    
561    // Læser parametre fra ini filen    // Læser parametre fra ini filen
562    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
563    try    try
564    
565    
566      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
567      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
568      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
569    
570      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
571        UrlFindPakketype := InjectURL(UrlFindPakketype);
572    
573      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
574        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
575    
576      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
577        UrlNormal := InjectURL(UrlNormal);
578    
579      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
580        UrlReturDAO := InjectURL(UrlReturDAO);
581    
582      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
583        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
584    
585      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
586        UrlBudlevering := InjectURL(UrlBudlevering);
587    
588      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
589        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
590    
591      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
592        UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
593    
594      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
595        UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
596    
597      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
598        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
599    
600      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
601        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
602    
603      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
604        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
605    
606      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
607      LabelType := ReadInteger('Settings','LabelType',1);      UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
608    
609        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
610        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
611    
612        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
613        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
614    
615        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
616        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
617    
618    
619    
620      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
621      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
622      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 625  begin Line 653  begin
653    
654      if (SkrivLog = '1') then      if (SkrivLog = '1') then
655      begin      begin
656        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);
657        try        try
658          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
659          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
660          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
661          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
662          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
663          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 647  begin Line 675  begin
675        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
676      end;      end;
677    
678      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;  
679    
680      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
681      begin      begin
# Line 768  begin Line 728  begin
728      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
729      // *************************** //      // *************************** //
730    
731    {$IfDef STED_BK}
732        SpecialVersionSted := 'BK';
733    {$EndIf}
734    {$IfDef STED_TK}
735        SpecialVersionSted := 'TK';// BK-Trykkompagniet
736    {$EndIf}
737    {$IfDef STED_DBK}
738        SpecialVersionSted := 'DBK';
739    {$EndIf}
740    {$IfDef STED_FD}
741        SpecialVersionSted := 'FD';
742    {$EndIf}
743    {$IfDef STED_NS}
744        SpecialVersionSted := 'NS';
745    {$EndIf}
746    
747    
748      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
749      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
750      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 783  begin Line 760  begin
760      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
761      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
762    
 // 20150313: start  
763      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
764      begin      begin
765         SpecialVersionSted := '01';         SpecialVersionSted := '01';
766         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
767      end;      end;
768    
769      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
770      begin      begin
771         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
772         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
773    
774    
775          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
776          Sted := SpecialVersionSted;
777         // her skal vi også disable de knapper BK ikke kan bruge
778          PanelValg2.Enabled := false;
779          PanelValg2.Font.Color := clInactiveCaption;
780          PanelValg3.Enabled := false;
781          PanelValg3.Font.Color := clInactiveCaption;
782          //PanelValg6.Enabled := false;
783          //PanelValg6.Font.Color := clInactiveCaption;
784    
785         // her skal vi også disable de menupunkter FD ikke kan bruge
786          ReturpakkerfraDAO1.Enabled := false;
787          Returpakkerfraboghandler1.Enabled := false;
788    
789          //Returpakkerfrapakkeshop1.Enabled := false;
790    
791      end;      end;
 // 20150313: slut  
792    
793      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
794      begin      begin
795        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
796        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 805  begin Line 799  begin
799        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
800        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
801        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
802        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
803        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
804    
805       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
806        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
807        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
808        Returpakkerfrapakkeshop1.Enabled := false;  
809          //Returpakkerfrapakkeshop1.Enabled := false;
810    
811        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
812        begin        begin
813           Scanningtype := '1';           Scanningtype := '1';
# Line 834  begin Line 831  begin
831        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
832        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
833        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
834    
835    
836       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
837        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
838        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
# Line 870  begin Line 869  begin
869        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
870        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
871        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
872          PanelValg7.Enabled := false;
873          PanelValg7.Font.Color := clInactiveCaption;
874       // 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
875    
876        Automatiskvalg1.Enabled := false;        Automatiskvalg1.Enabled := false;
# Line 965  begin Line 966  begin
966             RutenummerST.Caption := '';             RutenummerST.Caption := '';
967             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
968             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
969             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
970             exit;             exit;
971          end;          end;
972      end      end
# Line 1060  begin Line 1061  begin
1061      end;      end;
1062    
1063    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1064    
1065      CheckPrintQue('Opstart');  
1066        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1067        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1068    
1069    finally    finally
1070      Free;      Free;
# Line 1134  begin Line 1131  begin
1131      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1132    
1133      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1134      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1135    
1136  end;  end;
1137    
# Line 1191  begin Line 1188  begin
1188      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1189      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1190      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1191        or (NumberString = 'DAO PAKKESHOP')
1192        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1193            or (LowerCase(NumberString) = 'for stor daodirekte' )
1194      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1195    
1196      begin      begin
# Line 1201  begin Line 1201  begin
1201      begin      begin
1202        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1203      end;      end;
1204    end;    end;  // Slut ctrl-v
1205    
1206    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1207    begin    begin
1208      if (Length(Trim(Stregkode)) = 0) then  
1209        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1210        Stregkode := Trim(Stregkode);
1211    
1212        if (Length(Stregkode) = 0) then
1213      begin      begin
1214        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1215    
# Line 1214  begin Line 1218  begin
1218    
1219      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1220      begin      begin
1221         PakkeshopNulstil.Click();         btnNulstil.Click();
1222         exit;         exit;
1223      end;      end;
1224    
1225      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1226      begin      begin
1227        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1228    
# Line 1255  begin Line 1259  begin
1259         exit;         exit;
1260      end;      end;
1261    
1262        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1263        begin
1264          if chkForstorTilDirekte.Enabled then
1265          begin
1266            chkForstorTilDirekte.Checked := true;
1267          end
1268          else
1269          begin
1270             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1271          end;
1272          Stregkode := '';
1273          StregkodeST.Caption := StregKode;
1274          exit;
1275        end;
1276    
1277    
1278      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1279      begin      begin
1280         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1452  begin Line 1472  begin
1472        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1473      end;      end;
1474    
1475      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1476          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1477          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1478          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1479          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1480          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1481      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1482          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1483    
1484         exit;         exit;
1485      end;      end;
1486    
1487      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1488      begin      begin
1489        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1490        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1493  begin Line 1513  begin
1513                InitPakkeshoplevering();                InitPakkeshoplevering();
1514              end;              end;
1515            end            end
1516        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1517              begin
1518                if Scanningtype <> '6' then
1519                begin
1520                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1521    
1522                 exit;
1523                end;
1524              end
1525    
1526    
1527        else        else
1528            begin            begin
1529            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1530              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1531                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1532    
1533               exit;               exit;
1534            end;            end;
# Line 1543  begin Line 1573  begin
1573             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1574             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1575             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1576             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1577             Stregkode := '';             Stregkode := '';
1578             InitScreen();             InitScreen();
1579        end        end
# Line 1555  begin Line 1585  begin
1585             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1586             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1587             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1588             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1589             Stregkode := '';             Stregkode := '';
1590             InitScreen();             InitScreen();
1591        end        end
# Line 1586  begin Line 1616  begin
1616             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1617             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1618             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1619                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1620             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1621                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1622             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1623           end           end
1624          else          else
1625           begin           begin
# Line 1609  begin Line 1639  begin
1639    
1640      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 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
1641      begin      begin
1642    
1643         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1644            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1645         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
# Line 1621  begin Line 1652  begin
1652            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1653            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1654            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1655               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1656               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1657              exit;              exit;
1658            end;            end;
1659            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
# Line 1646  begin Line 1673  begin
1673              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1674              begin              begin
1675                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1676                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1677                MainForm.Color := clRed;                MainForm.Color := clRed;
1678              end;              end;
1679           end;           end;
1680            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1681            begin            begin
1682              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1683              if Storepakker1.Checked then              if Storepakker1.Checked then
1684              begin              begin
1685                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1661  begin Line 1688  begin
1688              begin              begin
1689                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1690              end;              end;
1691              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1692            end            end
1693            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1694            begin            begin
1695              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1696              if Storepakker1.Checked then              if Storepakker1.Checked then
1697              begin              begin
1698                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1674  begin Line 1701  begin
1701              begin              begin
1702                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1703              end;              end;
1704              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1705            end            end
1706            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1707            begin            begin
# Line 1685  begin Line 1712  begin
1712            end            end
1713            else            else
1714            begin            begin
1715              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1716            end;            end;
1717           if not PakkeshopNulstil.Visible then  
1718             if not btnNulstil.Visible then
1719            begin            begin
1720    
1721              If (Budlevering1.Checked) then              If (Budlevering1.Checked) then
# Line 1738  begin Line 1764  begin
1764    
1765    Key := #0;    Key := #0;
1766    
1767    
1768    
1769    
1770    
1771    
1772  end; //End of OnKeyPress  end; //End of OnKeyPress
1773    
1774    
1775    
1776  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1777  const  const
1778    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1781  var Line 1814  var
1814    
1815    
1816  begin  begin
1817      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked or menuIndlevering.Checked then
1818      begin      begin
1819        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1820          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
# Line 1792  begin Line 1825  begin
1825            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1826            begin            begin
1827              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1828              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1829  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1830  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1831  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1832              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1833            end            end
1834            else     // kun idag            else     // kun idag
1835            begin            begin
# Line 1900  begin Line 1933  begin
1933                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1934              end;              end;
1935            end;            end;
1936  // 20150310: slut  
1937            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1938          end;          end;
1939      end;      end;
# Line 1936  begin Line 1969  begin
1969    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1970    ListBox1.Visible := true;    ListBox1.Visible := true;
1971  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1972  // 20150317: start  
 (*  
   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  
1973    if Budlevering1.Checked then    if Budlevering1.Checked then
1974    begin    begin
1975      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 1989  begin Line 1982  begin
1982      01 :      01 :
1983            begin;      // NS            begin;      // NS
1984              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1985              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1986              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1987              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1988              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1989              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2005  begin Line 1998  begin
1998              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1999              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2000              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2001              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
2002              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2003              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2004              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2005              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2016  begin Line 2009  begin
2009              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2010             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2011              begin              begin
2012                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2013              end              end
2014              else              else
2015              begin              begin
2016                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2017              end;              end;
2018              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2019              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2020              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2021              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2022              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2043  begin Line 2036  begin
2036              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2037              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2038              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2039              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2040              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2041              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2042              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2043            end;            end;
# Line 2060  var Line 2053  var
2053    URLStr : String;    URLStr : String;
2054    pakkestorrelse : String;    pakkestorrelse : String;
2055    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
2056    
2057      PakkeshopLabel: TPakkeshopLabel;
2058  begin  begin
2059    if radioStorPakke.Checked then    if radioStorPakke.Checked then
2060    begin    begin
# Line 2069  begin Line 2064  begin
2064    begin    begin
2065      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
2066    end;    end;
2067    
2068    
2069    if Pakkernormal1.Checked then    if Pakkernormal1.Checked then
2070    begin    begin
2071       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
# Line 2097  begin Line 2094  begin
2094    begin    begin
2095       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2096    end    end
2097      else if menuIndlevering.Checked then
2098      begin
2099        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2100      end
2101    else    else
2102    begin    begin
2103      exit;      exit;
2104    end;    end;
2105    
2106      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2107      begin
2108        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2109      end;
2110    
2111    try    try
2112      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2113      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2129  begin
2129          end;          end;
2130      end;      end;
2131    end;    end;
2132    
2133    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2134    try    try
2135      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2143  begin Line 2151  begin
2151          begin          begin
2152            PrintNyLabel := True;            PrintNyLabel := True;
2153          end;          end;
 // 20150310: start  
2154        end;        end;
 // 20150310: slut  
2155       end       end
2156        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2157        begin
2158    
2159    
2160    
2161    
2162         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2163         if (Kommentar = 'Ok') then
2164         begin
2165           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2166           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2167           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2168           Stregkode := PakkeshopLabel.Stregkode;
2169    
2170           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2171           chkForstorTilDirekte.Checked := false;
2172    
2173         end;
2174    
2175    
2176        end
2177      else      else
2178       begin       begin
2179        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2179  begin Line 2206  begin
2206          PrintNyLabel := True;          PrintNyLabel := True;
2207        end;        end;
2208      end;      end;
2209    
2210    
2211      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2212      begin      begin
2213        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2271  begin Line 2300  begin
2300        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2301      end;      end;
2302    end;    end;
2303      if menuIndlevering.Checked then
2304      begin
2305        List1Msg := Stregkode;
2306      end;
2307    
2308    
2309    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2310    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2311    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2312  end;  end;
2313    
2314  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2315  begin  begin
2316    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2317    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2293  pakkeForkertSted : Integer; Line 2328  pakkeForkertSted : Integer;
2328    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2329  begin  begin
2330    if Budlevering1.Checked then    if Budlevering1.Checked then
2331       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2332    
2333    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2334    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2338  begin Line 2373  begin
2373    
2374          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2375          MainForm.Color := clRed;          MainForm.Color := clRed;
2376          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2377    
2378       end       end
2379       else       else
# Line 2349  begin Line 2384  begin
2384            PrintNyLabel := true;            PrintNyLabel := true;
2385            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2386            nyFarve := Farve;            nyFarve := Farve;
2387            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2388            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2389            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2390            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2365  begin Line 2400  begin
2400            begin            begin
2401              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2402              MainForm.Color := clRed;              MainForm.Color := clRed;
2403              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2404            end;            end;
2405    
2406         end;         end;
# Line 2391  begin Line 2426  begin
2426            begin            begin
2427              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2428              MainForm.Color := clRed;              MainForm.Color := clRed;
2429              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2430            end;            end;
2431    
2432         end;         end;
# Line 2411  begin Line 2446  begin
2446               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2447  // 20150304: slut  // 20150304: slut
2448                begin                begin
2449                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2450                end;                end;
2451              end;              end;
2452        01 :  begin;        01 :  begin;
2453               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2454                    // 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
2455                    // 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')
2456                begin                begin
2457                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2458                end;                end;
2459              end;              end;
2460        02 :  begin;        02 :  begin;
2461                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
2462                begin                begin
2463                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2464                end;                end;
2465              end;              end;
2466        03 :  begin;        03 :  begin;
2467               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2468                    // 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
2469                    // 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')
2470               begin               begin
2471                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2472               end;               end;
2473              end;              end;
2474        04 :  begin;        04 :  begin;
2475                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
2476                begin                begin
2477                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2478                end;                end;
2479              end;              end;
2480        else        else
# Line 2475  begin Line 2510  begin
2510        end;        end;
2511        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2512        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2513        with Printer do  
2514        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2515          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;  
2516      end;      end;
2517    end;    end;
2518    
2519  end;  end;
2520    
 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;  
2521    
2522    
2523  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
# Line 2632  begin Line 2607  begin
2607    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2608    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...');
2609    
2610          // Tjekker urls    try
2611          logTekst := 'Tjekker urls.';      // Tjekker urls
2612          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2613          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2614        SkrivScanningLogFil(logTekst);
2615    
         // 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;  
2616    
         // 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;  
2617    
2618          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2619          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2620          begin      begin
2621            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2622            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;  
2623    
2624          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2625          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2626          begin      begin
2627            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2628            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;  
2629    
2630          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2631          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2632          begin      begin
2633            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2634            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;  
2635    
2636          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2637          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2638          begin      begin
2639            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2640            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;  
2641    
2642          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2643          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2644          or (PanelValg4.Enabled = true) then      begin
2645          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2646            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;  
2647    
2648          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2649          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2650          begin      begin
2651            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2652            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;  
2653    
2654          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2655          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2656          begin      begin
2657            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2658            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;  
2659    
2660          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2661          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2662          begin      begin
2663            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2664            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;  
2665    
2666        // Tjekker UrlPakkeshopManglendeReturScanninger
2667        if PanelValg6.Enabled = true then
2668        begin
2669          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2670        end;
2671    
2672          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2673          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2674          begin      begin
2675            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2676            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2677              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;  
2678    
2679        // Tjekker UrlEKLoverforsel
2680        if PanelValg1.Enabled = true then
2681        begin
2682          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2683        end;
2684    
         // 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;  
2685    
2686          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2687          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2688          begin      begin
2689            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2690            SkrivScanningLogFil(logTekst);      end;
2691          end  
2692          else  
2693          begin      // Tjekker UrlFindPakketype
2694              inc(urlFejl);   // Optæller antal fejl      TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2695              logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
2696              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      // Tjekker UrlSendPrograminfo
2697              if TjekUrls = '1' then      TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2698              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;  
2699    
         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;  
2700    
2701        logTekst := 'urls er ok';
2702        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2703        SkrivScanningLogFil(logTekst);
2704    
2705      Except
2706        TjekUrls := '-';   // markerer at der var fejl
2707    
2708      end;
2709  end;  end;
2710    
2711  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2712  var  const
2713     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2714  begin  begin
2715     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2716     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2717     Result := SystemTimeToDateTime(SystemTime) ;    begin
2718        logTekst := UrlNavn + ' accepteret: ' + Url;
2719        SkrivScanningLogFil(logTekst);
2720      end
2721      else
2722      begin
2723        inc(urlFejl);   // Optæller antal fejl
2724        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2725        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2726        if TjekUrls = '1' then
2727        begin
2728          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2729        end;
2730    
2731        SkrivScanningLogFil(logTekst);
2732    
2733        if TjekUrls = '1' then
2734        begin
2735          ShowMessage(logTekst);
2736          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2737          Application.Terminate;
2738    
2739          raise Exception.Create('UrlFejl');
2740    
2741        end;
2742      end;
2743    
2744  end;  end;
2745    
2746    
2747    
2748  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2749  var  var
2750    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2761  begin
2761      repeat      repeat
2762        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2763        begin        begin
2764    
2765          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2766          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2767          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2768          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2769          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2770          // (æ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 2801  begin
2801    end;    end;
2802  end;  end;
2803    
2804  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2805  begin  begin
2806    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2807    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2808    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2809    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2810    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2811    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3099  begin Line 2823  begin
2823  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2824    if Farve <> '' then    if Farve <> '' then
2825    begin    begin
2826       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  
2827    end;    end;
2828    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2829    begin    begin
# Line 3173  end; Line 2887  end;
2887    
2888  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2889  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;  
 *)  
2890  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2891  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2892       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2893       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2894       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2895  // 20150311: slut  
2896    
2897    
2898  end;  end;
2899    
2900  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3231  begin Line 2932  begin
2932      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2933      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2934      MainForm.Color := clRed;      MainForm.Color := clRed;
2935      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2936    end    end
2937    else    else
2938    begin    begin
# Line 3266  begin Line 2967  begin
2967    Falsk := False;    Falsk := False;
2968    
2969    
2970    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2971    begin    begin
2972      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2973    end    end
# Line 3280  begin Line 2981  begin
2981      SmsKode := '999999';      SmsKode := '999999';
2982      DBKbane := '999';      DBKbane := '999';
2983      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2984      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      LabelPrint.TestZpl();
2985      CheckPrintQue('Test');      //PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2986        LabelPrint.CheckPrintQue('Test', PrinterNavn);
2987    end;    end;
2988    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2989  end;  end;
# Line 3290  procedure TMainForm.Timer1Timer(Sender: Line 2992  procedure TMainForm.Timer1Timer(Sender:
2992  begin  begin
2993    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2994    begin    begin
2995      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2996    end    end
2997    else    else
2998    begin    begin
# Line 3299  begin Line 3001  begin
3001    end;    end;
3002  end;  end;
3003    
3004  {  
  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;  
3005    
3006  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3007  const  const
# Line 3337  var Line 3010  var
3010   tekst, filversion : String;   tekst, filversion : String;
3011  begin  begin
3012    
3013    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
3014    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';
3015    
3016    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 3032  begin
3032          end          end
3033          else          else
3034          begin          begin
3035            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3036          end;          end;
3037      end      end
3038      else      else
3039      begin      begin
3040        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3041      end;      end;
3042    end;    end;
3043    
# Line 3380  begin Line 3053  begin
3053    
3054  end;  end;
3055    
3056    
3057  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3058    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3059  var  var
# Line 3432  begin Line 3106  begin
3106    
3107    if FileExists(fileName) then    if FileExists(fileName) then
3108    begin    begin
3109      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3110      begin      begin
3111        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3112        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3130  begin
3130    
3131    if FileExists(fileName) then    if FileExists(fileName) then
3132    begin    begin
3133      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3134      begin      begin
3135        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3136        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3137      end      end
3138      else      else
3139      begin      begin
3140        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3141      end;      end;
3142    end    end
3143    else    else
# Line 3472  begin Line 3146  begin
3146    end;    end;
3147  end;  end;
3148    
3149    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3150    begin
3151      Scanningtype := '7';
3152      NulstilAutomatiskValg();
3153      InitIndleveringskode();
3154    end;
3155    
3156  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3157  begin  begin
3158    
# Line 3504  end; Line 3185  end;
3185  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3186  begin  begin
3187        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3188        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3189        Pakkernormal1.Checked := true;        Pakkernormal1.Checked := true;
3190        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3191        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
# Line 3522  begin Line 3203  begin
3203        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3204        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3205        ListBox1.Visible := true;        ListBox1.Visible := true;
3206        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3207        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3208        InitLillePakke();        InitLillePakke();
3209        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3210    
3211          chkForstorTilDirekte.Checked := false;
3212          chkForstorTilDirekte.Enabled := false;
3213    
3214        if BladhusSted = 0 then        if BladhusSted = 0 then
3215        begin        begin
3216          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3537  procedure TMainForm.InitReturFraDao(); Line 3222  procedure TMainForm.InitReturFraDao();
3222  begin  begin
3223        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3224        ReturpakkerfraDAO1.Checked := true;        ReturpakkerfraDAO1.Checked := true;
3225        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3226        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3227        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3228        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
# Line 3556  begin Line 3241  begin
3241        ListBox1.Visible := true;        ListBox1.Visible := true;
3242        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3243        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3244        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3245    
3246          chkForstorTilDirekte.Checked := false;
3247          chkForstorTilDirekte.Enabled := false;
3248    
3249        InitLillePakke();        InitLillePakke();
3250  end;  end;
3251    
# Line 3564  procedure TMainForm.InitReturFraKunde(); Line 3253  procedure TMainForm.InitReturFraKunde();
3253  begin  begin
3254        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3255        Returpakkerfraboghandler1.Checked := true;        Returpakkerfraboghandler1.Checked := true;
3256        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3257        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3258        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3259        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
# Line 3582  begin Line 3271  begin
3271        ListBox1.Visible := true;        ListBox1.Visible := true;
3272        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3273        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3274        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3275    
3276          chkForstorTilDirekte.Checked := false;
3277          chkForstorTilDirekte.Enabled := false;
3278    
3279        InitLillePakke();        InitLillePakke();
3280  end;  end;
3281    
# Line 3590  procedure TMainForm.InitDirektelevering( Line 3283  procedure TMainForm.InitDirektelevering(
3283  begin  begin
3284        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3285        Budlevering1.Checked := true;        Budlevering1.Checked := true;
3286        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3287        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3288        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3289        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
# Line 3608  begin Line 3301  begin
3301        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3302        ListBox1.Visible := true;        ListBox1.Visible := true;
3303        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3304        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3305        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3306        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3307        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3308        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3309        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3310    
3311          chkForstorTilDirekte.Checked := false;
3312          chkForstorTilDirekte.Enabled := true;
3313    
3314        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3315        begin        begin
3316            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3626  procedure TMainForm.InitPakkeshopleverin Line 3323  procedure TMainForm.InitPakkeshopleverin
3323  begin  begin
3324        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3325        Pakkeshoplevering1.Checked := true;        Pakkeshoplevering1.Checked := true;
3326        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3327        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3328        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3329        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
# Line 3644  begin Line 3341  begin
3341        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3342        ListBox1.Visible := true;        ListBox1.Visible := true;
3343        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3344        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3345        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3346    
3347          BtnEKLoverforsel.Enabled := true;
3348    
3349        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3350          chkForstorTilDirekte.Enabled := true;
3351    
3352        InitLillePakke();        InitLillePakke();
3353        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3663  procedure TMainForm.InitReturFraPakkesho Line 3363  procedure TMainForm.InitReturFraPakkesho
3363  begin  begin
3364        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3365        Returpakkerfrapakkeshop1.Checked := true;        Returpakkerfrapakkeshop1.Checked := true;
3366        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3367        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3368        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3369        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
# Line 3681  begin Line 3381  begin
3381        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3382        ListBox1.Visible := true;        ListBox1.Visible := true;
3383        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3384        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3385        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3386        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3387    
3388          chkForstorTilDirekte.Checked := false;
3389          chkForstorTilDirekte.Enabled := false;
3390    
3391    
3392        InitLillePakke();        InitLillePakke();
3393        IndlesScanningLogFil();        IndlesScanningLogFil();
3394        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3703  end; Line 3408  end;
3408    
3409  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3410  begin  begin
3411          menuIndlevering.Checked := true;
3412        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3413        Returpakkerfrapakkeshop1.Checked := true;  
3414        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3415        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3416        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3417        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
# Line 3727  begin Line 3433  begin
3433        ListBox1.Visible := true;        ListBox1.Visible := true;
3434        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3435    
3436        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3437        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3438        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3439    
3440          chkForstorTilDirekte.Checked := false;
3441          chkForstorTilDirekte.Enabled := false;
3442    
3443    
3444        InitLillePakke();        InitLillePakke();
3445        IndlesScanningLogFil();        IndlesScanningLogFil();
3446        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3767  begin Line 3478  begin
3478  // 20150310: slut  // 20150310: slut
3479  end;  end;
3480    
 /// <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]]);  
3481    
     // 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;  
3482    
3483  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3484  begin  begin
# Line 3903  begin; Line 3549  begin;
3549    CheckCode();    CheckCode();
3550  end;  end;
3551    
3552  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3553  var  var
3554    WebSvar : String;    WebSvar : String;
3555    URLStr : String;    URLStr : String;
# Line 3913  var Line 3559  var
3559    status, kommentar : String;    status, kommentar : String;
3560    
3561  begin  begin
3562      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3563    
3564      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');
3565      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3566      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3567      StedKode := Sted;      StedKode := Sted;
3568      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3569  // 20150330: start  
3570      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3571      begin      begin
3572        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3573      end;      end;
3574  // 20150330: slut  
3575    
3576      try      try
3577      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3622  begin
3622        end;        end;
3623      end;      end;
3624    
3625      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3626    
3627      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
3628    
# Line 3993  begin Line 3639  begin
3639           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3640         end;         end;
3641         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3642         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3643      end;      end;
3644    
3645  end;  end;
# Line 4017  begin Line 3663  begin
3663    else    else
3664      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3665  }  }
3666    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3667    
3668    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3669    CheckCode();    CheckCode();
# Line 4025  end; Line 3671  end;
3671    
3672  end;  end;
3673    
 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;  
3674    
3675  //  //
3676  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4148  begin
4148    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
4149  end;  end;
4150    
4151  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4152  begin  begin
4153      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4154      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
4155  end;  end;
4156    
4157  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4158  const  const
4159    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4160    
# Line 4556  begin Line 4163  begin
4163      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
4164  end;  end;
4165    
4166  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4167  begin  begin
4168      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4169      begin      begin
# Line 4565  begin Line 4172  begin
4172      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
4173  end;  end;
4174    
4175  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;  
4176    
4177  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4178  var  var
# Line 4589  var Line 4184  var
4184    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4185    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4186    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4187    pakketyper : TStrings;    //pakketyper : TStrings;
4188      pakketyper : TDictionary<String, Integer>;
4189      tmpAntal : Integer;
4190    
4191    
4192    
4193    antlin : Integer;    antlin : Integer;
4194    
4195    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4196    
4197    XmlFelter : TStrings;    //XmlFelter : TStrings;
4198      XmlFelter : TDictionary<String, Integer>;
4199    
4200   begin   begin
4201      XmlFelter := TStringList.Create;  
4202      pakketyper := TStringList.Create;  
4203        XmlFelter := TDictionary<String, Integer>.Create;
4204        pakketyper := TDictionary<String, Integer>.Create;
4205    
4206      linienr := 0;      linienr := 0;
4207      ListBox2.Clear;      ListBox2.Clear;
4208      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 4217  var
4217          StedKode := Sted;          StedKode := Sted;
4218        end;        end;
4219    
4220          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4221    
4222    
4223    
4224      if (Scanningtype = '6') then      if (Scanningtype = '7') then
4225         begin
4226          URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4227         end
4228        else if (Scanningtype = '6') then
4229       begin       begin
4230        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4231       end       end
4232      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4233       begin       begin
4234        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4235       end       end
4236      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4237       begin       begin
# Line 4667  var Line 4278  var
4278            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4279              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4280              begin              begin
4281                 antlin := antlin + 1;                 Inc(antlin);
4282                 // 20150306: start                 // 20150306: start
4283                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4284                begin                begin
4285                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4286                   begin                   begin
4287                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4288                   end                   end
4289                   else                   else
4290                   begin                   begin
4291                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4292                   end;                   end;
4293                end;                end;
4294                 // 20150306: slut                 // 20150306: slut
4295              end;              end;
4296            end;            end;
4297            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4298                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4299                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4300                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4301                  end
4302                else                else
4303                  XmlFelter.values[Node.NodeName] := '1';                begin
4304                    XmlFelter.Add(Node.NodeName, 1);
4305                  end;
4306    
4307        end;        end;
4308        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4310  var
4310        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4311        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4312    
4313    
4314          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4315    
4316        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4317        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4318        begin        begin
# Line 4702  var Line 4321  var
4321        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4322    
4323        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4324    
4325    
4326        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4327            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4328            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4330  var
4330                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4331                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4332                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4333              end;              end
4334              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4335                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4336                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4337                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4338              end;              end
4339              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4340                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4341                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4342                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4343              end;              end
4344              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4345                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4346                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4347                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4348              end;              end
4349              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4350                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4351                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4352                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4353                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4354                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4355                    pakketyper.TryGetValue(pakketype, tmpAntal);
4356                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4357                  end
4358                else                else
4359                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4360              end;              end
4361              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4362                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4363                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4364                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4365                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4366                  begin                  begin
4367  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4368                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4369                    begin                    begin
4370                      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
4371                    end                    end
4372                    else                    else
4373                    begin                    begin
# Line 4753  var Line 4376  var
4376                    linienr := linienr + 1;                    linienr := linienr + 1;
4377                  end;                  end;
4378              end;              end;
4379    
4380    
4381              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4382              begin              begin
4383                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4768  var Line 4393  var
4393              end;              end;
4394            end;            end;
4395        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4396    
4397          // Free up the list object  
4398          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4399    
4400    
4401          for pakketype in pakketyper.Keys do
4402          begin
4403            pakketyper.TryGetValue(pakketype, tmpAntal);
4404            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4405          end;
4406    
4407            // Free up the dictionary object
4408        pakketyper.Free;        pakketyper.Free;
4409    
4410    
4411    
4412  //      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.');
4413        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4414        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4934  var Line 4568  var
4568     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4569     imorgenYmd : string;     imorgenYmd : string;
4570     logFilnavn : string;     logFilnavn : string;
4571      error : Integer;     //error : Integer;
4572    
4573  begin  begin
4574    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4660  begin
4660          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4661          S := buffer;          S := buffer;
4662          SetLength(A,0);          SetLength(A,0);
4663          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4664          if (length(A) < 2) then          if (length(A) < 2) then
4665          begin          begin
4666            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4667          end;          end;
4668            if (length(A) > 1) then            if (length(A) > 1) then
4669            begin            begin
# Line 5103  begin Line 4737  begin
4737          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4738          S := buffer;          S := buffer;
4739          SetLength(A,0);          SetLength(A,0);
4740          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4741          if (length(A) < 3) then          if (length(A) < 3) then
4742          begin          begin
4743            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4744          end;          end;
4745          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4746          begin          begin
# Line 5203  begin Line 4837  begin
4837    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4838    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4839    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4840    MainForm.Color := clRed;    MainForm.Color := clRed;
4841    
4842    
4843    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4844    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4845    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4846    PakkeshopNulstil.Visible := true;  
4847      if (strMessage <> '') then
4848      begin
4849        ListBox1.Items.Insert(0, strMessage);
4850        KommentarST.Caption := strMessage;
4851      end;
4852    
4853      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4854    
4855  end;  end;
4856    
4857  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 4911  begin
4911    result := svar;    result := svar;
4912  end;  end;
4913    
 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;  
4914    
4915  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4916  begin  begin
# Line 5301  begin Line 4924  begin
4924    end;    end;
4925  end;  end;
4926    
4927  function TMainForm.AdobeReaderExists: Boolean;  
4928  var  //Nedarvet fra IParentForm
4929    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4930  begin  begin
4931    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4932  end;  end;
4933    
4934  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4935  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;  
4936  begin  begin
4937      ListBox1.Items.Insert(0, msg);
4938      SkrivScanningLogFil(msg);
4939    end;
4940    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4941    
4942    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4943    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4944      printerTxt := 'Der er fravalgt printer i dette program';  begin
4945      ListBox1.Items.Insert(0,printerTxt);  
4946      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4947    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4948    begin    begin
4949      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4950      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4951      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4952    end    end
4953    else    else
4954    begin    begin
4955      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4956      try      PrinterstatusStaticText1.Color := clWhite;
4957        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;  
4958    end;    end;
4959  end;  end;
4960    
4961  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4962  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;  
4963  begin  begin
4964     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;  
4965  end;  end;
 // 20150310: slut  
4966    
4967  end.  end.
4968    

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

  ViewVC Help
Powered by ViewVC 1.1.20