/[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 2654 by torben, Sun Aug 23 11:00:22 2015 UTC revision 2977 by torben, Tue Mar 15 13:44:38 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet    ShellApi, ClipBrd, Buttons, wininet,
22      UITypes,
23      PakkeshopLabels,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
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 36  type Line 54  type
54      Lukprogrammet1: TMenuItem;      Lukprogrammet1: TMenuItem;
55      N2: TMenuItem;      N2: TMenuItem;
56      N3: TMenuItem;      N3: TMenuItem;
57      RadioButton1: TRadioButton;      radioStorPakke: TRadioButton;
58      RadioButton2: TRadioButton;      radioLillePakke: TRadioButton;
59      N4: TMenuItem;      N4: TMenuItem;
60      Storepakker1: TMenuItem;      Storepakker1: TMenuItem;
61      Smpakker1: TMenuItem;      Smpakker1: TMenuItem;
# Line 47  type Line 65  type
65      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
66      ListBox1: TListBox;      ListBox1: TListBox;
67      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
68      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
69      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
70      Image1: TImage;      Image1: TImage;
71      ListBox2: TListBox;      ListBox2: TListBox;
72      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
73      UploadButton01: TButton;      BtnUploadLogfil: TButton;
74      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
75      Pakkeshoplevering1: TMenuItem;      Pakkeshoplevering1: TMenuItem;
76      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
77      PakkeshopNulstil: TButton;      btnNulstil: TButton;
78      Returpakkerfrapakkeshop1: TMenuItem;      Returpakkerfrapakkeshop1: TMenuItem;
79      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
80      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 77  type Line 95  type
95      PanelValg4: TPanel;      PanelValg4: TPanel;
96      PanelValg5: TPanel;      PanelValg5: TPanel;
97      PanelValg6: TPanel;      PanelValg6: TPanel;
98        PanelValg7: TPanel;
99      Manualgenerel1: TMenuItem;      Manualgenerel1: TMenuItem;
100      StaticTextManglendePakker: TStaticText;      StaticTextManglendePakker: TStaticText;
101      PanelManglendePakker1: TPanel;      PanelManglendePakker1: TPanel;
# Line 85  type Line 104  type
104      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
105      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
106      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
107      PanelValg7: TPanel;      menuIndlevering: TMenuItem;
108        chkForstorTilDirekte: TCheckBox;
109    
110    
111    
   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;  
112    function getProddato() : TDate;    function getProddato() : TDate;
113    function getProddag() : String;    function getProddag() : String;
114    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;  
115    
116    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
117    procedure StartScreen();    procedure StartScreen();
# Line 113  type Line 124  type
124    procedure FormKeyPress(Sender: TObject; var Key: Char);    procedure FormKeyPress(Sender: TObject; var Key: Char);
125    procedure FormCreate(Sender: TObject);    procedure FormCreate(Sender: TObject);
126    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
127    procedure RadioButton1Click(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
128    procedure RadioButton2Click(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
129    procedure chkSporgEfterKundeClick(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
130    procedure Pakkernormal1Click(Sender: TObject);    procedure Pakkernormal1Click(Sender: TObject);
131    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
# Line 131  type Line 142  type
142    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
143    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
144    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
145    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
146    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
147    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
148    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
149    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 140  type Line 151  type
151    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
152    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
153    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
154    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
155    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
156    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure Pakkeshoplevering1Click(Sender: TObject);
157    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
158    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
159    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
160    procedure InitReturFraDao();    procedure InitReturFraDao();
# Line 155  type Line 166  type
166    
167    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
168    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
169    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
170    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
171    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
172    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
173    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
174    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
# Line 172  type Line 182  type
182    procedure PanelValg4Click(Sender: TObject);    procedure PanelValg4Click(Sender: TObject);
183    procedure PanelValg5Click(Sender: TObject);    procedure PanelValg5Click(Sender: TObject);
184    procedure PanelValg6Click(Sender: TObject);    procedure PanelValg6Click(Sender: TObject);
185      procedure PanelValg7Click(Sender: TObject);
186    
187    procedure NulstilAutomatiskValg();    procedure NulstilAutomatiskValg();
188    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
189    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
190    procedure TjekkerUrls();    procedure TjekkerUrls();
191  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
192    procedure RoundCornerOf(Control: TWinControl);  
193      procedure menuIndleveringClick(Sender: TObject);
194    
195    
196    
197      //Nedarvet fra IParentForm
198      procedure LogMessage( msg : string);
199      procedure SetPrinterstatusText( txt: string; alert: boolean);
200      function GetFormObject() : TForm;
201    
     procedure PanelValg7Click(Sender: TObject);  
 // 20150310: slut  
202    
203    private    private
204      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 188  type Line 206  type
206      SkrivLog : String;      SkrivLog : String;
207      Sted : String;      Sted : String;
208      StedNavn : String;      StedNavn : String;
209      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
210  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
211                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
212    
213      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
214  // 20150330: slut  
215      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
216      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
217      ScanTjekkode : String;      ScanTjekkode : String;
218      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
219      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop : String;  
220      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
221      LabelType : integer;            FarveIndlevering : String;
222    
223        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
224              TitelIndlevering : String;
225    
226      AlarmLyd : String;      AlarmLyd : String;
227      ScannetOkLyd : String;      ScannetOkLyd : String;
228      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
229  // 20150317: start  
230      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
231  // 20150317: slut  
232      PrinterNavn : String;      PrinterNavn : String;
233      TjekPrinter : String;      TjekPrinter : String;
234      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;  
235      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
236      BladhusSted : Integer;      BladhusSted : Integer;
237      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 242  type Line 244  type
244      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
245      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
246      TjekUrls : String;      TjekUrls : String;
247        Config : TConfiguration;
248    
249    
250            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }      LabelPrint: TLabelPrint;
251    
252      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 = '');
253      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
254      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 = '');
255      procedure CheckCode();      procedure CheckCode();
256      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 255  type Line 259  type
259      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
260      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
261      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
262        procedure VisAlarmSkaerm(strMessage: string);
263    
264    public    public
265      { Public declarations }      { Public declarations }
266    end;    end;
267    
268    
269  var  var
270    MainForm: TMainForm;    MainForm: TMainForm;
271    
# Line 273  var Line 279  var
279  implementation  implementation
280  {$R *.dfm}  {$R *.dfm}
281    
282  function TMainForm.TColorToHex(Color : TColor) : string;  
283  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;  
284    
285  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
286  begin  begin
287    
 // 20150309: startr  
288      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
289  // 20150309: slut  
290    
291      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
292      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 340  begin Line 330  begin
330        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
331      end;      end;
332    
333      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
334    
335      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
336      begin      begin
# Line 368  begin Line 358  begin
358        else if (Sted = 'BR') then        else if (Sted = 'BR') then
359          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
360        else if (Sted = 'BK') then        else if (Sted = 'BK') then
361          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
362          else if (Sted = 'TK') then
363            begin StedNavn := 'BK/Trykkompagniet: '; end
364        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
365          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
366        else if (Sted = '1') then        else if (Sted = '1') then
367          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
368        else if (Sted = '2') then        else if (Sted = '2') then
# Line 394  begin Line 386  begin
386    
387      StartScreen();      StartScreen();
388      MainForm.Caption := Titel;      MainForm.Caption := Titel;
389      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
390      MainForm.Farve := Farve;      MainForm.Farve := Farve;
391      MainForm.Titel := Titel;      MainForm.Titel := Titel;
392      MainForm.Url := Url;      MainForm.Url := Url;
# Line 454  begin Line 446  begin
446          end          end
447          else          else
448          begin          begin
449            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
450          end;          end;
451          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
452        end        end
453        else        else
454        begin        begin
455          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
456          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
457        end;        end;
458      end;      end;
459    
460    
461  end;  end;
462    
463  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 503  end; Line 496  end;
496    
497  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
498  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;  
 *)  
499  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
500  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
501       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
502       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
503       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
504  end;  end;
505    
506    
507    //InitForm kaldes før FormCreate
508  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
509  const  const
510    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
511  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
512    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
513    
514  begin  begin
515    
516    
517    // Initierer nogle variabler    // Initierer nogle variabler
518    BladhusSted := 00;    BladhusSted := 00;
519    Application.ShowHint := True;    Application.ShowHint := True;
520    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
521    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
522  // 20150306: start  
523    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
524  // 20150306: slut  
525  // 20150310: start    TUtils.RoundCornerOf(PanelManglendePakker1);
526    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker2);
527    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker3);
528    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker4);
529    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker5);
530    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker6);
531    RoundCornerOf(PanelManglendePakker6);  
 // 20150310: slut  
532    
533    // 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
534    if DirectoryExists('Docs') then    if DirectoryExists('Docs') then
# Line 565  begin Line 541  begin
541    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
542    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
543    
544      Config := TConfiguration.Create();
545      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
546      Config.Sted := Sted;
547    
548    // Læser parametre fra ini filen    // Læser parametre fra ini filen
549    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
550    try    try
551    
552    
553      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
554      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
555      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
# Line 579  begin Line 561  begin
561      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');
562      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');
563      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');
564  // 20150330: start  
565      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');
566  // 20150330: slut  
567      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');
568      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');
569      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');
570      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');
571      LabelType := ReadInteger('Settings','LabelType',1);  
572    
573        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
574        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
575        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
576    
577    
578    
579    
580      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
581      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
582      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 597  begin Line 587  begin
587      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
588      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
589      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
590    
591      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
592      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
593    
594        FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');
595        TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');
596    
597    
598      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
599      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
600      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
# Line 608  begin Line 604  begin
604      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
605      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
606      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
607  // 20150317: start  
608      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
609  // 20150317: slut  
610      PrinterNavn := ReadString('Settings','PrinterNavn','');      PrinterNavn := ReadString('Settings','PrinterNavn','');
611      TjekPrinter := ReadString('Settings','TjekPrinter','1');      TjekPrinter := ReadString('Settings','TjekPrinter','1');
612      TjekUrls := ReadString('Settings','TjekUrls','2');      TjekUrls := ReadString('Settings','TjekUrls','2');
613    
614      if (SkrivLog = '1') then      if (SkrivLog = '1') then
615      begin      begin
616        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);
617        try        try
618          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
619          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
620          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
621          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
622          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
623          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 639  begin Line 635  begin
635        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
636      end;      end;
637    
638      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;  
639    
640      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
641      begin      begin
# Line 760  begin Line 688  begin
688      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
689      // *************************** //      // *************************** //
690    
691    {$IfDef STED_BK}
692        SpecialVersionSted := 'BK';
693    {$EndIf}
694    {$IfDef STED_TK}
695        SpecialVersionSted := 'TK';// BK-Trykkompagniet
696    {$EndIf}
697    {$IfDef STED_DBK}
698        SpecialVersionSted := 'DBK';
699    {$EndIf}
700    {$IfDef STED_FD}
701        SpecialVersionSted := 'FD';
702    {$EndIf}
703    {$IfDef STED_NS}
704        SpecialVersionSted := 'NS';
705    {$EndIf}
706    
707    
708      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
709      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
710      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 775  begin Line 720  begin
720      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
721      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
722    
 // 20150313: start  
723      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
724      begin      begin
725         SpecialVersionSted := '01';         SpecialVersionSted := '01';
# Line 786  begin Line 730  begin
730         SpecialVersionSted := '03';         SpecialVersionSted := '03';
731         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
732      end;      end;
 // 20150313: slut  
733    
734      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
735      begin      begin
736        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
737        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 797  begin Line 740  begin
740        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
741        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
742        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
743        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
744        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
745    
746       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
747        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
748        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
749        Returpakkerfrapakkeshop1.Enabled := false;  
750          //Returpakkerfrapakkeshop1.Enabled := false;
751    
752        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
753        begin        begin
754           Scanningtype := '1';           Scanningtype := '1';
# Line 826  begin Line 772  begin
772        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
773        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
774        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
775    
776    
777       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
778        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
779        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
780  // 20150317: start  
781        Pakkeshoplevering1.Enabled := false;        Pakkeshoplevering1.Enabled := false;
782        Returpakkerfrapakkeshop1.Enabled := false;        Returpakkerfrapakkeshop1.Enabled := false;
783  // 20150317: slut  
784        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
785        begin        begin
786           Scanningtype := '1';           Scanningtype := '1';
# Line 862  begin Line 810  begin
810        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
811        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
812        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
813          PanelValg7.Enabled := false;
814          PanelValg7.Font.Color := clInactiveCaption;
815       // 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
816  // 20150317: start  
817        Automatiskvalg1.Enabled := false;        Automatiskvalg1.Enabled := false;
818  // 20150317: slut  
819        Pakkernormal1.Enabled := false;        Pakkernormal1.Enabled := false;
820        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
821        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
# Line 957  begin Line 907  begin
907             RutenummerST.Caption := '';             RutenummerST.Caption := '';
908             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
909             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
910             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
911             exit;             exit;
912          end;          end;
913      end      end
# Line 1000  begin Line 950  begin
950      if Pakketype = '1' then      if Pakketype = '1' then
951      begin      begin
952        Storepakker1.Checked := true;        Storepakker1.Checked := true;
953        RadioButton1.Checked := true;        radioStorPakke.Checked := true;
954      end      end
955      else      else
956      begin      begin
957        Smpakker1.Checked := true;        Smpakker1.Checked := true;
958        RadioButton2.Checked := true;        radioLillePakke.Checked := true;
959      end;      end;
960    
961      if TestFunktionen = '1' then      if TestFunktionen = '1' then
# Line 1045  begin Line 995  begin
995        ScannetOkStorLyd := '';        ScannetOkStorLyd := '';
996      end;      end;
997    
998  // 20150317: start  
999      if not FileExists(ScannetOkTilTjekkodeLyd) then      if not FileExists(ScannetOkTilTjekkodeLyd) then
1000      begin      begin
1001        ScannetOkTilTjekkodeLyd := '';        ScannetOkTilTjekkodeLyd := '';
1002      end;      end;
 // 20150317: slut  
1003    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1004    
1005      CheckPrintQue('Opstart');  
1006    
1007        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1008        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1009    
1010    finally    finally
1011      Free;      Free;
# Line 1083  begin Line 1029  begin
1029          InitBladhus();          InitBladhus();
1030        end;        end;
1031    
1032  // 20150310: start  
1033      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
1034      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
1035    
# Line 1124  begin Line 1070  begin
1070      end;      end;
1071    
1072      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
 // 20150310: slut  
1073    
1074      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1075      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1076    
1077  end;  end;
1078    
# Line 1145  var Line 1090  var
1090    BoghandlerNavn : String;    BoghandlerNavn : String;
1091    Koreliste : String;    Koreliste : String;
1092    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1093    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1094    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1095    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1170  begin Line 1114  begin
1114      ClipboardData := Clipboard.AsText;      ClipboardData := Clipboard.AsText;
1115      numberString := ClipboardData;      numberString := ClipboardData;
1116      Val(numberString, float, errorPos);      Val(numberString, float, errorPos);
1117  // 20150311: start  
1118  //    if (ClipboardData <> '') and (errorPos = 0) then      //    if (ClipboardData <> '') and (errorPos = 0) then
1119      if (ClipboardData <> '') and (errorPos = 0)      if (ClipboardData <> '') and (errorPos = 0)
1120      or (NumberString = 'Nulstil')      or (NumberString = 'Nulstil')
1121      or (NumberString = 'Indtast kundenummer')      or (NumberString = 'Indtast kundenummer')
# Line 1185  begin Line 1129  begin
1129      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1130      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1131      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1132        or (NumberString = 'DAO PAKKESHOP')
1133        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1134            or (LowerCase(NumberString) = 'for stor daodirekte' )
1135      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1136  // 20150311: slut  
1137      begin      begin
1138        Stregkode := Stregkode + ClipboardData;        Stregkode := Stregkode + ClipboardData;
1139        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1195  begin Line 1142  begin
1142      begin      begin
1143        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1144      end;      end;
1145    end;    end;  // Slut ctrl-v
1146    
1147    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1148    begin    begin
1149  // 20150306: start  
1150      if (Length(Trim(Stregkode)) = 0) then      // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1151        Stregkode := Trim(Stregkode);
1152    
1153        if (Length(Stregkode) = 0) then
1154      begin      begin
1155        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1156        List1msg := 'Der skal scannes en stregkode...';  
       ListBox1.Items.Insert(0,List1Msg);  
       MainForm.Color := clRed;  
 // 20150316: start  
       RuteNummerST.Caption := '';  
       BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
       KommentarST.Caption := List1msg;  
       PakkeshopNulstil.Visible := true;  
1157        exit;        exit;
1158      end;      end;
 // 20150306: slut  
1159    
 // 20150311: start  
1160      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1161      begin      begin
1162         PakkeshopNulstil.Click();         btnNulstil.Click();
1163         exit;         exit;
1164      end;      end;
1165    
1166      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1167      begin      begin
1168         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1169  // 20150312: start  
 //       List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        List1msg := 'HUSK at klikke Nulstil før ny scanning...';  
 // 20150312: slut  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
 // 20150312: start  
        Stregkode := '';  
        StregkodeST.Caption := StregKode;  
 // 20150312: slut  
1170         exit;         exit;
1171      end;      end;
1172    
1173      if StregKode = 'Lille pakke' then      if StregKode = 'Lille pakke' then
1174      begin      begin
1175         if RadioButton2.Enabled = true then         if radioLillePakke.Enabled = true then
1176         begin         begin
1177            InitLillePakke();            InitLillePakke();
1178         end         end
1179         else         else
1180         begin         begin
1181          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1182         end;         end;
1183         Stregkode := '';         Stregkode := '';
1184         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1268  begin Line 1187  begin
1187    
1188      if StregKode = 'Stor pakke' then      if StregKode = 'Stor pakke' then
1189      begin      begin
1190         if RadioButton1.Enabled = true then         if radioStorPakke.Enabled = true then
1191         begin         begin
1192            InitStorPakke();            InitStorPakke();
1193         end         end
1194         else         else
1195         begin         begin
1196          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1197         end;         end;
1198         Stregkode := '';         Stregkode := '';
1199         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1200         exit;         exit;
1201      end;      end;
1202    
1203        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1204        begin
1205          if chkForstorTilDirekte.Enabled then
1206          begin
1207            chkForstorTilDirekte.Checked := true;
1208          end
1209          else
1210          begin
1211             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1212          end;
1213          Stregkode := '';
1214          StregkodeST.Caption := StregKode;
1215          exit;
1216        end;
1217    
1218    
1219      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1220      begin      begin
1221         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1307  begin Line 1231  begin
1231         end         end
1232         else         else
1233         begin         begin
1234          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1235         end;         end;
1236         Stregkode := '';         Stregkode := '';
1237         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1340  begin Line 1253  begin
1253        end        end
1254        else        else
1255        begin        begin
1256          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1257        end;        end;
1258        Stregkode := '';        Stregkode := '';
1259        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1366  begin Line 1268  begin
1268         end         end
1269         else         else
1270         begin         begin
1271          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1272         end;         end;
1273         Stregkode := '';         Stregkode := '';
1274         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1275         exit;         exit;
1276      end;      end;
1277    
1278  // 20150323: start  
 //    if StregKode = 'DAO NAT X-PRESS' then  
1279      if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then      if (StregKode = 'DAO NAT X-PRESS' ) or (StregKode = 'DAO NAT X+PRESS') then
 // 20150323: slut  
1280      begin      begin
1281         if (PanelValg1.Enabled = true) then         if (PanelValg1.Enabled = true) then
1282         begin         begin
# Line 1395  begin Line 1284  begin
1284         end         end
1285         else         else
1286         begin         begin
1287          //ShowMessage('Ændring ikke tilladt');          VisAlarmSkaerm(Stregkode + ' kan ikke vælges på dette scanningsted');
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1288         end;         end;
1289         Stregkode := '';         Stregkode := '';
1290         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1421  begin Line 1299  begin
1299         end         end
1300         else         else
1301         begin         begin
1302          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1303         end;         end;
1304         Stregkode := '';         Stregkode := '';
1305         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1447  begin Line 1314  begin
1314         end         end
1315         else         else
1316         begin         begin
1317          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1318         end;         end;
1319         Stregkode := '';         Stregkode := '';
1320         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1473  begin Line 1329  begin
1329         end         end
1330         else         else
1331         begin         begin
1332          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1333         end;         end;
1334         Stregkode := '';         Stregkode := '';
1335         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1499  begin Line 1344  begin
1344         end         end
1345         else         else
1346         begin         begin
1347          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1348         end;         end;
1349         Stregkode := '';         Stregkode := '';
1350         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1525  begin Line 1359  begin
1359         end         end
1360         else         else
1361         begin         begin
1362          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1363         end;         end;
1364         Stregkode := '';         Stregkode := '';
1365         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1366         exit;         exit;
1367      end;      end;
1368  // 20150311: slut  
1369    
1370      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1371      begin      begin
# Line 1590  begin Line 1413  begin
1413        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1414      end;      end;
1415    
1416      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1417          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1418          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1419          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1420          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1421          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1422      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1423         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1424         List1msg := 'Pakketype ' + Pakketype + ' kan ikke scannes på dette scanningsted';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
 // 20150316: start  
        RuteNummerST.Caption := '';  
        BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
        KommentarST.Caption := List1msg;  
        PakkeshopNulstil.Visible := true;  
 // 20150311: start  
        StregKode := '';  
        StregkodeST.Caption := StregKode;  
 // 20150311: slut  
1425         exit;         exit;
1426      end;      end;
1427    
1428      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1429      begin      begin
1430        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1431        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1626  begin Line 1437  begin
1437              end;              end;
1438            end            end
1439        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1440  (*  
       else if Pakketype = 'NatXpressReturDAO' then  
           begin  
             if Scanningtype <> '2' then  
             begin  
               Scanningtype := '2';  
               InitReturFraDao();  
             end;  
           end  
       else if Pakketype = 'NatXpressReturKunde' then  
           begin  
             if Scanningtype <> '3' then  
             begin  
               Scanningtype := '3';  
               InitReturFraKunde();  
             end;  
           end  
 *)  
1441        else if Pakketype = 'Direkte' then        else if Pakketype = 'Direkte' then
1442            begin            begin
1443              if Scanningtype <> '4' then              if Scanningtype <> '4' then
# Line 1661  begin Line 1455  begin
1455              end;              end;
1456            end            end
1457        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1458  (*  
       else if Pakketype = 'PakkeshopRetur' then  
           begin  
             if Scanningtype <> '6' then  
             begin  
               Scanningtype := '6';  
               InitReturFraPakkeshop();  
             end;  
           end  
 *)  
1459        else        else
1460            begin   // Her skal komme en alarm og rød skærm            begin
1461               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1462               List1msg := 'Pakken kan ikke scannes med automatisk valg';              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1463               ListBox1.Items.Insert(0,List1Msg);               VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1464               MainForm.Color := clRed;  
 // 20150316: start  
              RuteNummerST.Caption := '';  
              BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
              KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
 // 20150311: start  
              StregKode := '';  
              StregkodeST.Caption := StregKode;  
 // 20150311: slut  
1465               exit;               exit;
1466            end;            end;
1467        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1468      end      end
1469      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1470      begin      begin
1471        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1472        List1msg := 'Pakkenummer ikke gyldigt (for kort)';  
       ListBox1.Items.Insert(0,List1Msg);  
       MainForm.Color := clRed;  
 // 20150316: start  
       RuteNummerST.Caption := '';  
       BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
       KommentarST.Caption := List1msg;  
       PakkeshopNulstil.Visible := true;  
 // 20150312: start  
       StregKode := '';  
       StregkodeST.Caption := StregKode;  
 // 20150312: slut  
1473        exit;        exit;
1474      end;      end;
1475    
# Line 1714  begin Line 1477  begin
1477      begin      begin
1478        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1479        begin        begin
         PlaySound(PWideChar(AlarmLyd));  
         List1msg := 'Pakke findes som pakketype: ' + Pakketype;  
         ListBox1.Items.Insert(0,List1Msg);  
         MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
         KommentarST.Caption := List1msg;  
         PakkeshopNulstil.Visible := true;  
 // 20150312: start  
         StregKode := '';  
         StregkodeST.Caption := StregKode;  
 // 20150312: slut  
         exit;  
       end;  
     end;  
1480    
1481  // 20150311: start          VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
 (*  
     if StregKode = 'Nulstil' then  
     begin  
        PakkeshopNulstil.Click();  
        exit;  
     end;  
1482    
1483      if PakkeshopNulstil.Visible then          exit;
1484      begin        end;
        PlaySound(PWideChar(AlarmLyd));  
        List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
        exit;  
     end;  
   
     if StregKode = 'Lille pakke' then  
     begin  
        InitLillePakke();  
        exit;  
     end;  
   
     if StregKode = 'Stor pakke' then  
     begin  
        InitStorPakke();  
        exit;  
     end;  
   
     if StregKode = 'Indtast kundenummer' then  
     begin  
        if (CheckBox1.State = cbChecked) then  
        begin  
         CheckBox1.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox1.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
1485      end;      end;
1486    
     if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then  
     begin  
        if (CheckBox3.State = cbChecked) then  
        begin  
         CheckBox3.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox3.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
     end;  
 *)  
 // 20150311: slut  
1487    
1488    
1489      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
# Line 1812  begin Line 1505  begin
1505             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1506             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1507             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1508             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1509             Stregkode := '';             Stregkode := '';
1510             InitScreen();             InitScreen();
1511        end        end
# Line 1824  begin Line 1517  begin
1517             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1518             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1519             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1520             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1521             Stregkode := '';             Stregkode := '';
1522             InitScreen();             InitScreen();
1523        end        end
# Line 1836  begin Line 1529  begin
1529              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1530              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1531              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1532  // 20150317: start  
1533              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1534  // 20150317: slut  
1535             end             end
1536            else            else
1537             begin             begin
1538                List1msg := 'Du skal scanne en stregkode';                VisAlarmSkaerm( 'Du skal scanne en stregkode' );
               ListBox1.Items.Insert(0,List1Msg);  
               //logTekst := RightStr(List1Msg, Length(List1Msg)-10);  
               //SkrivScanningLogFil(logTekst);  
               PlaySound(PWideChar(AlarmLyd));  
               PakkeshopNulstil.Visible := true;  
               MainForm.Color := clRed;  
1539             end;             end;
1540            Stregkode := '';            Stregkode := '';
1541            InitScreen();            InitScreen();
# Line 1861  begin Line 1548  begin
1548             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1549             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1550             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1551                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1552             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1553                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1554             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1555           end           end
1556          else          else
1557           begin           begin
1558                if (PakkeshopLevering1.Checked) then                if (PakkeshopLevering1.Checked) then
1559                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1560                if (Pakkernormal1.Checked) then                if (Pakkernormal1.Checked) then
1561                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1562                KommentarST.Caption := List1msg;                  
               ListBox1.Items.Insert(0,List1Msg);  
               //logTekst := RightStr(List1Msg, Length(List1Msg)-10);  
               //SkrivScanningLogFil(logTekst);  
               PlaySound(PWideChar(AlarmLyd));  
               PakkeshopNulstil.Visible := true;  
               MainForm.Color := clRed;  
 // 20150323: start  
1563                StregKode := '';                StregKode := '';
1564                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1565  // 20150323: slut  
1566                exit;                exit;
1567           end;           end;
1568          Stregkode := '';          Stregkode := '';
# Line 1891  begin Line 1571  begin
1571    
1572      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
1573      begin      begin
1574    
1575         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1576            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1577         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 1903  begin Line 1584  begin
1584            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1585            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1586            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1587               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1588               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1589              exit;              exit;
1590            end;            end;
1591            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
# Line 1928  begin Line 1605  begin
1605              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1606              begin              begin
1607                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1608                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1609                MainForm.Color := clRed;                MainForm.Color := clRed;
1610              end;              end;
1611           end;           end;
1612            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
1613            begin            begin
1614              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1615              if Storepakker1.Checked then              if Storepakker1.Checked then
1616              begin              begin
1617                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1943  begin Line 1620  begin
1620              begin              begin
1621                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1622              end;              end;
1623              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1624            end            end
1625            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1626            begin            begin
1627              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1628              if Storepakker1.Checked then              if Storepakker1.Checked then
1629              begin              begin
1630                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1956  begin Line 1633  begin
1633              begin              begin
1634                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1635              end;              end;
1636              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1637            end            end
1638            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1639            begin            begin
1640              List1msg := 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages';              VisAlarmSkaerm( 'Pakke ' + PakkeshopStregkode + ' skal gemmes på lager indtil data modtages' );
             ListBox1.Items.Insert(0,List1Msg);  
             MainForm.Color := clRed;  
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1641            end            end
1642            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1643            begin            begin
1644            end            end
1645            else            else
1646            begin            begin
1647              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1648            end;            end;
1649           if not PakkeshopNulstil.Visible then  
1650             if not btnNulstil.Visible then
1651            begin            begin
1652  // 20150310: start  
 //            SletStregkodelinieFraListboks2(StregKode);  
 // 20150310: slut  
1653              If (Budlevering1.Checked) then              If (Budlevering1.Checked) then
1654              begin              begin
1655                if Storepakker1.Checked then                if Storepakker1.Checked then
# Line 1993  begin Line 1663  begin
1663                InitLillePakke();                InitLillePakke();
1664              end;              end;
1665            end;            end;
1666  // 20150310: start  
1667            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1668  // 20150310: slut  
1669            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1670            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1671            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 2026  begin Line 1696  begin
1696    
1697    Key := #0;    Key := #0;
1698    
1699  end;  
1700    
1701    
1702    
1703    
1704    end; //End of OnKeyPress
1705    
1706    
1707    
1708  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1709  const  const
# Line 2063  end; Line 1740  end;
1740    
1741  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1742  var  var
 // 20150309: start  
 //  i:integer;  
1743    i : Integer;    i : Integer;
1744    wrkAntal : String;    wrkAntal : String;
1745    wrkAntalIdag, wrkAntalSenere : Integer;    wrkAntalIdag, wrkAntalSenere : Integer;
1746  // 20150309: slut  
1747    
1748  begin  begin
1749      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
1750      begin      begin
1751        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1752          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1753          begin          begin
1754  // 20150309: start  
1755            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1756            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1757            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1758            begin            begin
1759              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1760              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1761  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1762  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1763  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1764              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1765            end            end
1766            else     // kun idag            else     // kun idag
1767            begin            begin
# Line 2112  begin Line 1787  begin
1787            begin            begin
1788              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1789            end;            end;
 // 20150309: slut  
1790    
 // 20150310: start  
1791            if (Scanningtype = '1') then            if (Scanningtype = '1') then
1792            begin            begin
1793              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
# Line 2192  begin Line 1865  begin
1865                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1866              end;              end;
1867            end;            end;
1868  // 20150310: slut  
1869            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1870          end;          end;
1871      end;      end;
# Line 2219  begin Line 1892  begin
1892  end;  end;
1893    
1894  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1895    
1896  begin  begin
1897    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
# Line 2230  begin Line 1901  begin
1901    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1902    ListBox1.Visible := true;    ListBox1.Visible := true;
1903  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1904  // 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  
1905    if Budlevering1.Checked then    if Budlevering1.Checked then
1906    begin    begin
1907      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2283  begin Line 1914  begin
1914      01 :      01 :
1915            begin;      // NS            begin;      // NS
1916              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1917              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1918              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1919              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1920              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1921              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2297  begin Line 1928  begin
1928              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1929              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
1930              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1931              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1932              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1933              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1934              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1935              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1936              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1937              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2310  begin Line 1941  begin
1941              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1942             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1943              begin              begin
1944                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1945              end              end
1946              else              else
1947              begin              begin
1948                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1949              end;              end;
1950              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1951              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1952              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1953              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1954              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2335  begin Line 1966  begin
1966              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1967              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
1968              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1969              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1970              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1971              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1972              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1973              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1974              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1975            end;            end;
# Line 2354  var Line 1985  var
1985    URLStr : String;    URLStr : String;
1986    pakkestorrelse : String;    pakkestorrelse : String;
1987    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1988    
1989      PakkeshopLabel: TPakkeshopLabel;
1990  begin  begin
1991    if RadioButton1.Checked then    if radioStorPakke.Checked then
1992    begin    begin
1993      pakkestorrelse := 'Stor';      pakkestorrelse := 'Stor';
1994    end;    end;
1995    if RadioButton2.Checked then    if radioLillePakke.Checked then
1996    begin    begin
1997      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1998    end;    end;
1999    
2000    
2001    if Pakkernormal1.Checked then    if Pakkernormal1.Checked then
2002    begin    begin
2003       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
# Line 2391  begin Line 2026  begin
2026    begin    begin
2027       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2028    end    end
2029      else if menuIndlevering.Checked then
2030      begin
2031        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2032      end
2033    else    else
2034    begin    begin
2035      exit;      exit;
2036    end;    end;
2037    
2038      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2039      begin
2040        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2041      end;
2042    
2043    try    try
2044      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2045      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2416  begin Line 2061  begin
2061          end;          end;
2062      end;      end;
2063    end;    end;
2064    
2065    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2066    try    try
2067      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2425  begin Line 2071  begin
2071        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2072        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2073        PrintNyLabel := False;        PrintNyLabel := False;
2074  // 20150310: start  
2075        if Pakkeshoplevering1.Checked then        if Pakkeshoplevering1.Checked then
2076        begin        begin
 // 20150310: slut  
2077          try          try
2078            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2079          except on e:exception do          except on e:exception do
# Line 2438  begin Line 2083  begin
2083          begin          begin
2084            PrintNyLabel := True;            PrintNyLabel := True;
2085          end;          end;
 // 20150310: start  
2086        end;        end;
 // 20150310: slut  
2087       end       end
2088        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2089        begin
2090    
2091    
2092    
2093    
2094         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2095         if (Kommentar = 'Ok') then
2096         begin
2097           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2098           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2099           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2100           Stregkode := PakkeshopLabel.Stregkode;
2101    
2102           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2103           chkForstorTilDirekte.Checked := false;
2104    
2105         end;
2106    
2107    
2108        end
2109      else      else
2110       begin       begin
2111        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2474  begin Line 2138  begin
2138          PrintNyLabel := True;          PrintNyLabel := True;
2139        end;        end;
2140      end;      end;
2141    
2142    
2143      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2144      begin      begin
2145        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2514  begin Line 2180  begin
2180    if Pakkeshoplevering1.Checked then    if Pakkeshoplevering1.Checked then
2181      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2182    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2183    if RadioButton1.Checked then    if radioStorPakke.Checked then
2184    begin    begin
2185      List1Pakkestorrelse := 'Stor pakke';      List1Pakkestorrelse := 'Stor pakke';
2186    end;    end;
2187    if RadioButton2.Checked then    if radioLillePakke.Checked then
2188    begin    begin
2189      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2190    end;    end;
# Line 2540  begin Line 2206  begin
2206    if Budlevering1.Checked then    if Budlevering1.Checked then
2207    begin    begin
2208       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2209        if (RadioButton1.Checked) then        if (radioStorPakke.Checked) then
2210        begin        begin
2211          List1msg := List1msg + '; Stor pakke';          List1msg := List1msg + '; Stor pakke';
2212        end;        end;
2213        if (RadioButton2.Checked) then        if (radioLillePakke.Checked) then
2214        begin        begin
2215          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2216        end;        end;
# Line 2566  begin Line 2232  begin
2232        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2233      end;      end;
2234    end;    end;
2235      if menuIndlevering.Checked then
2236      begin
2237        List1Msg := Stregkode;
2238      end;
2239    
2240    
2241    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2242    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2243    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2244  end;  end;
2245    
2246  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2247  begin  begin
2248    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2249    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2588  pakkeForkertSted : Integer; Line 2260  pakkeForkertSted : Integer;
2260    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2261  begin  begin
2262    if Budlevering1.Checked then    if Budlevering1.Checked then
2263       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2264    
2265    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2266    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2601  begin Line 2273  begin
2273    end;    end;
2274    pakkeForkertSted := pos('burde være hos', Kommentar);    pakkeForkertSted := pos('burde være hos', Kommentar);
2275    
2276  // 20150306: start  
 //  if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) then  
2277    if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then    if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2278  // 20150306: slut  
2279    begin    begin
2280        if (RuteNummer = 'Ukendt') then        if (RuteNummer = 'Ukendt') then
2281        begin        begin
# Line 2631  begin Line 2302  begin
2302       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2303       begin       begin
2304          PrintNyLabel := false;          PrintNyLabel := false;
2305  // 20150306: start  
 //        PlaySound(PWideChar(AlarmLyd));  
2306          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2307          MainForm.Color := clRed;          MainForm.Color := clRed;
2308          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2309  // 20150306: slut  
2310       end       end
2311       else       else
2312       begin       begin
# Line 2646  begin Line 2316  begin
2316            PrintNyLabel := true;            PrintNyLabel := true;
2317            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2318            nyFarve := Farve;            nyFarve := Farve;
2319            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2320            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2321            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2322            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2323            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2324            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2325  // 20150213: start  
2326            if (PrinterNavn = 'Ingen') then            if (PrinterNavn = 'Ingen') then
2327            begin            begin
2328               PrintNyLabel := false;               PrintNyLabel := false;
2329            end;            end;
2330  // 20150313: slut  
 // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2331            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2332            begin            begin
2333              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2334              MainForm.Color := clRed;              MainForm.Color := clRed;
2335              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2336            end;            end;
2337  // 20150306: slut  
2338         end;         end;
2339         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2340         if (kontrolKoreliste <> RuteNummer) then         if (kontrolKoreliste <> RuteNummer) then
# Line 2685  begin Line 2353  begin
2353            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2354            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2355            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2356  // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2357            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm            if (PrintNyLabel = false) then  // Hvis vi ikke printer label skal vi vise en 'rød skærm' alarm
2358            begin            begin
2359              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2360              MainForm.Color := clRed;              MainForm.Color := clRed;
2361              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2362            end;            end;
2363  // 20150306: slut  
 // 20150306: start  
 //       end  
 //       else  
 //       begin  
2364         end;         end;
2365       end;       end;
2366    
# Line 2715  begin Line 2378  begin
2378               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2379  // 20150304: slut  // 20150304: slut
2380                begin                begin
2381                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2382                end;                end;
2383              end;              end;
2384        01 :  begin;        01 :  begin;
2385               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2386                    // 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
2387                    // 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')
2388                begin                begin
2389                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2390                end;                end;
2391              end;              end;
2392        02 :  begin;        02 :  begin;
2393                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
2394                begin                begin
2395                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2396                end;                end;
2397              end;              end;
2398        03 :  begin;        03 :  begin;
2399               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2400                    // 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
2401                    // 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')
2402               begin               begin
2403                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2404               end;               end;
2405              end;              end;
2406        04 :  begin;        04 :  begin;
2407                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
2408                begin                begin
2409                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2410                end;                end;
2411              end;              end;
2412        else        else
# Line 2779  begin Line 2442  begin
2442        end;        end;
2443        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2444        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2445        with Printer do  
2446        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2447          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;  
2448      end;      end;
2449    end;    end;
2450    
2451  end;  end;
2452    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
 // 20150304: start  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
 // 20150304: slut  
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
     end;  
 end;  
2453    
2454    
2455  procedure TMainForm.RadioButton1Click(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2456  begin  begin
2457      Storepakker1.Checked := true;      Storepakker1.Checked := true;
2458      RadioButton1.Checked := true;      radioStorPakke.Checked := true;
2459  end;  end;
2460    
2461  procedure TMainForm.RadioButton2Click(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2462  begin  begin
2463      Smpakker1.Checked := true;      Smpakker1.Checked := true;
2464      RadioButton2.Checked := true;      radioLillePakke.Checked := true;
2465  end;  end;
2466    
2467    
# Line 2912  begin Line 2515  begin
2515      Automatiskvalg1.Checked := false;      Automatiskvalg1.Checked := false;
2516      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2517      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2518  // 20150317: start  
2519      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
2520      or (SpecialVersionSted = '02')        or (SpecialVersionSted = '02')
2521      or (SpecialVersionSted = '03')        or (SpecialVersionSted = '03')
2522      or (SpecialVersionSted = '04') then        or (SpecialVersionSted = '04') then
2523      begin      begin
2524        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2525        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
# Line 2936  begin Line 2539  begin
2539    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2540    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...');
2541    
2542          // Tjekker urls    try
2543          logTekst := 'Tjekker urls.';      // Tjekker urls
2544          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2545          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2546        SkrivScanningLogFil(logTekst);
2547    
         // 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;  
2548    
         // 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;  
2549    
2550          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2551          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2552          begin      begin
2553            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2554            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;  
2555    
2556          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2557          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2558          begin      begin
2559            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2560            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;  
2561    
2562          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2563          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2564          begin      begin
2565            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2566            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;  
2567    
2568          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2569          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2570          begin      begin
2571            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2572            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;  
2573    
2574          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2575          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2576          or (PanelValg4.Enabled = true) then      begin
2577          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2578            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;  
2579    
2580          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2581          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2582          begin      begin
2583            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2584            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;  
2585    
2586          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2587          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2588          begin      begin
2589            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2590            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;  
2591    
2592          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2593          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2594          begin      begin
2595            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2596            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;  
2597    
2598  // 20150330: start      // Tjekker UrlPakkeshopManglendeReturScanninger
2599          // Tjekker UrlEKLoverforselPakkeshop      if PanelValg6.Enabled = true then
2600          if PanelValg5.Enabled = true then      begin
2601          begin        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2602            if CheckUrl(UrlEKLoverforselPakkeshop) then      end;
           begin  
             logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforselPakkeshop svarer ikke: ' + UrlEKLoverforselPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
 // 20150330: slut  
2603    
2604          // Tjekker UrlFindPakketype     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2605          if CheckUrl(UrlFindPakketype) then      if PanelValg7.Enabled = true then
2606          begin      begin
2607            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2608            SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2609          end      end;
2610          else  
2611          begin      // Tjekker UrlEKLoverforsel
2612              inc(urlFejl);   // Optæller antal fejl      if PanelValg1.Enabled = true then
2613              logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;      begin
2614              ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2615              if TjekUrls = '1' then      end;
2616              begin  
2617                logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
2618              end;      // Tjekker UrlEKLoverforselPakkeshop
2619              SkrivScanningLogFil(logTekst);      if PanelValg5.Enabled = true then
2620              if TjekUrls = '1' then      begin
2621              begin        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2622                ShowMessage(logTekst);      end;
2623                UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
2624                Application.Terminate;  
2625                exit;      // Tjekker UrlFindPakketype
2626              end;      TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2627          end;  
2628        // Tjekker UrlSendPrograminfo
2629        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2630    
         // Tjekker UrlSendPrograminfo  
         if CheckUrl(UrlSendPrograminfo) then  
         begin  
           logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;  
           SkrivScanningLogFil(logTekst);  
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2631    
         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;  
2632    
2633        logTekst := 'urls er ok';
2634        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2635        SkrivScanningLogFil(logTekst);
2636    
2637      Except
2638        TjekUrls := '-';   // markerer at der var fejl
2639    
2640      end;
2641  end;  end;
2642    
2643  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2644  var  const
2645     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2646  begin  begin
2647     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2648     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2649     Result := SystemTimeToDateTime(SystemTime) ;    begin
2650        logTekst := UrlNavn + ' accepteret: ' + Url;
2651        SkrivScanningLogFil(logTekst);
2652      end
2653      else
2654      begin
2655        inc(urlFejl);   // Optæller antal fejl
2656        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2657        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2658        if TjekUrls = '1' then
2659        begin
2660          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2661        end;
2662    
2663        SkrivScanningLogFil(logTekst);
2664    
2665        if TjekUrls = '1' then
2666        begin
2667          ShowMessage(logTekst);
2668          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2669          Application.Terminate;
2670    
2671          raise Exception.Create('UrlFejl');
2672    
2673        end;
2674      end;
2675    
2676  end;  end;
2677    
2678    
2679    
2680  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2681  var  var
2682    SR: TSearchRec;    SR: TSearchRec;
# Line 3342  begin Line 2693  begin
2693      repeat      repeat
2694        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2695        begin        begin
2696    
2697          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2698          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2699          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2700          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2701          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2702          // (æ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 3381  begin Line 2733  begin
2733    end;    end;
2734  end;  end;
2735    
2736  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2737  begin  begin
2738    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2739    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2740    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2741    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2742    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2743    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3403  begin Line 2755  begin
2755  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2756    if Farve <> '' then    if Farve <> '' then
2757    begin    begin
2758       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  
2759    end;    end;
2760    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2761    begin    begin
# Line 3477  end; Line 2819  end;
2819    
2820  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2821  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;  
 *)  
2822  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2823  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2824       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2825       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2826       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2827  // 20150311: slut  
2828    
2829    
2830  end;  end;
2831    
2832  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3514  var Line 2843  var
2843    BoghandlerNavn : String;    BoghandlerNavn : String;
2844    Koreliste : String;    Koreliste : String;
2845    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2846    SmsKode : String;    SmsKode : String;
2847    DBKbane : String;    DBKbane : String;
2848    Leveringssted : String;    Leveringssted : String;
# Line 3536  begin Line 2864  begin
2864      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2865      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2866      MainForm.Color := clRed;      MainForm.Color := clRed;
2867      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2868    end    end
2869    else    else
2870    begin    begin
2871      Falsk := False;      Falsk := False;
2872      Sand := True;  
2873      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2874      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2875      SmsKode := '999999';      SmsKode := '999999';
# Line 3561  var Line 2889  var
2889    BoghandlerNavn : String;    BoghandlerNavn : String;
2890    Koreliste : String;    Koreliste : String;
2891    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2892    SmsKode : String;    SmsKode : String;
2893    DBKbane : String;    DBKbane : String;
2894    Leveringssted : String;    Leveringssted : String;
# Line 3570  begin Line 2897  begin
2897    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2898    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2899    Falsk := False;    Falsk := False;
   Sand := True;  
2900    
2901    if (Printer.Printers.Count = 0) then  
2902      if (LabelPrint.GetPrinterCount() = 0) then
2903    begin    begin
2904      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2905    end    end
# Line 3587  begin Line 2914  begin
2914      DBKbane := '999';      DBKbane := '999';
2915      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2916      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2917      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2918    end;    end;
2919    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2920  end;  end;
# Line 3596  procedure TMainForm.Timer1Timer(Sender: Line 2923  procedure TMainForm.Timer1Timer(Sender:
2923  begin  begin
2924    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2925    begin    begin
2926      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2927    end    end
2928    else    else
2929    begin    begin
# Line 3605  begin Line 2932  begin
2932    end;    end;
2933  end;  end;
2934    
2935  {  
  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;  
2936    
2937  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2938  const  const
# Line 3643  var Line 2941  var
2941   tekst, filversion : String;   tekst, filversion : String;
2942  begin  begin
2943    
2944    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2945    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';
2946    
2947    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3665  begin Line 2963  begin
2963          end          end
2964          else          else
2965          begin          begin
2966            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2967          end;          end;
2968      end      end
2969      else      else
2970      begin      begin
2971        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2972      end;      end;
2973    end;    end;
2974    
# Line 3738  begin Line 3036  begin
3036    
3037    if FileExists(fileName) then    if FileExists(fileName) then
3038    begin    begin
3039      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3040      begin      begin
3041        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3042        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3762  begin Line 3060  begin
3060    
3061    if FileExists(fileName) then    if FileExists(fileName) then
3062    begin    begin
3063      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3064      begin      begin
3065        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3066        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3067      end      end
3068      else      else
3069      begin      begin
3070        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3071      end;      end;
3072    end    end
3073    else    else
# Line 3778  begin Line 3076  begin
3076    end;    end;
3077  end;  end;
3078    
3079    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3080    begin
3081      Scanningtype := '7';
3082      NulstilAutomatiskValg();
3083      InitIndleveringskode();
3084    end;
3085    
3086  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3087  begin  begin
3088    
# Line 3810  end; Line 3115  end;
3115  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3116  begin  begin
3117        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3118        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3119        Pakkernormal1.Checked := true;        Pakkernormal1.Checked := true;
3120        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3121        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
# Line 3825  begin Line 3130  begin
3130        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3131        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3132        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3133        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3134        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3135        ListBox1.Visible := true;        ListBox1.Visible := true;
3136        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3137        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3138        InitLillePakke();        InitLillePakke();
3139        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3140    
3141          chkForstorTilDirekte.Checked := false;
3142          chkForstorTilDirekte.Enabled := false;
3143    
3144        if BladhusSted = 0 then        if BladhusSted = 0 then
3145        begin        begin
3146          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3843  procedure TMainForm.InitReturFraDao(); Line 3152  procedure TMainForm.InitReturFraDao();
3152  begin  begin
3153        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3154        ReturpakkerfraDAO1.Checked := true;        ReturpakkerfraDAO1.Checked := true;
3155        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3156        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3157        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3158        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
# Line 3857  begin Line 3166  begin
3166        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3167        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3168        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3169        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3170        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3171        ListBox1.Visible := true;        ListBox1.Visible := true;
3172        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3173        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3174        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3175    
3176          chkForstorTilDirekte.Checked := false;
3177          chkForstorTilDirekte.Enabled := false;
3178    
3179        InitLillePakke();        InitLillePakke();
3180  end;  end;
3181    
# Line 3870  procedure TMainForm.InitReturFraKunde(); Line 3183  procedure TMainForm.InitReturFraKunde();
3183  begin  begin
3184        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3185        Returpakkerfraboghandler1.Checked := true;        Returpakkerfraboghandler1.Checked := true;
3186        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3187        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3188        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3189        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
# Line 3883  begin Line 3196  begin
3196        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3197        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3198        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3199        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3200        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3201        ListBox1.Visible := true;        ListBox1.Visible := true;
3202        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3203        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3204        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3205    
3206          chkForstorTilDirekte.Checked := false;
3207          chkForstorTilDirekte.Enabled := false;
3208    
3209        InitLillePakke();        InitLillePakke();
3210  end;  end;
3211    
# Line 3896  procedure TMainForm.InitDirektelevering( Line 3213  procedure TMainForm.InitDirektelevering(
3213  begin  begin
3214        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3215        Budlevering1.Checked := true;        Budlevering1.Checked := true;
3216        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3217        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3218        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3219        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
# Line 3910  begin Line 3227  begin
3227        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3228        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3229        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3230        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3231        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3232        ListBox1.Visible := true;        ListBox1.Visible := true;
3233        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3234        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3235        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3236        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3237        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3238        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3239        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3240    
3241          chkForstorTilDirekte.Checked := false;
3242          chkForstorTilDirekte.Enabled := true;
3243    
3244        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3245        begin        begin
3246            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3932  procedure TMainForm.InitPakkeshopleverin Line 3253  procedure TMainForm.InitPakkeshopleverin
3253  begin  begin
3254        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3255        Pakkeshoplevering1.Checked := true;        Pakkeshoplevering1.Checked := true;
3256        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3257        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3258        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3259        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
# Line 3946  begin Line 3267  begin
3267        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3268        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3269        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3270        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3271        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3272        ListBox1.Visible := true;        ListBox1.Visible := true;
3273        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3274        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3275        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3276  // 20150330: start  
3277  //      EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := true;
3278        EKLoverforsel.Enabled := true;  
3279  // 20150330: slut        chkForstorTilDirekte.Checked := false;
3280          chkForstorTilDirekte.Enabled := true;
3281    
3282        InitLillePakke();        InitLillePakke();
3283        IndlesScanningLogFil();        IndlesScanningLogFil();
3284        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3970  procedure TMainForm.InitReturFraPakkesho Line 3293  procedure TMainForm.InitReturFraPakkesho
3293  begin  begin
3294        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3295        Returpakkerfrapakkeshop1.Checked := true;        Returpakkerfrapakkeshop1.Checked := true;
3296        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3297        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3298        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3299        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
# Line 3984  begin Line 3307  begin
3307        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3308        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3309        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3310        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3311        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3312        ListBox1.Visible := true;        ListBox1.Visible := true;
3313        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3314        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3315        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3316        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3317    
3318          chkForstorTilDirekte.Checked := false;
3319          chkForstorTilDirekte.Enabled := false;
3320    
3321    
3322        InitLillePakke();        InitLillePakke();
3323        IndlesScanningLogFil();        IndlesScanningLogFil();
3324        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4010  end; Line 3338  end;
3338    
3339  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3340  begin  begin
3341          menuIndlevering.Checked := true;
3342        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3343        Returpakkerfrapakkeshop1.Checked := true;  
3344        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3345        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3346        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3347        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3348    
# Line 4022  begin Line 3351  begin
3351    
3352        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3353        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
       chkSporgEfterKunde.Checked := false;  
3354        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3355          chkSporgEfterKunde.Checked := false;
3356    
3357    
3358    
3359        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3360        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3361        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3362        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3363        ListBox1.Visible := true;        ListBox1.Visible := true;
3364        ListBox1.Items.Clear;        ListBox1.Items.Clear();
3365        DownloadButton01.Enabled := false;  
3366        OpdaterListenButton01.Enabled := true;        BtnDownloadKontrolfil.Enabled := false;
3367        EKLoverforsel.Enabled := false;        BtnOpdaterListen.Enabled := true;
3368          BtnEKLoverforsel.Enabled := false;
3369    
3370          chkForstorTilDirekte.Checked := false;
3371          chkForstorTilDirekte.Enabled := false;
3372    
3373    
3374        InitLillePakke();        InitLillePakke();
3375        IndlesScanningLogFil();        IndlesScanningLogFil();
3376        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4056  end; Line 3394  end;
3394    
3395  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3396  begin  begin
3397    RadioButton2.Checked := true;    radioLillePakke.Checked := true;
3398    Smpakker1.Checked := true;    Smpakker1.Checked := true;
 // 20150310: start  
3399  //  Stregkode := '';  //  Stregkode := '';
 // 20150310: slut  
3400  end;  end;
3401    
3402  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3403  begin  begin
3404    RadioButton1.Checked := true;    radioStorPakke.Checked := true;
3405    Storepakker1.Checked := true;    Storepakker1.Checked := true;
3406  // 20150310: start  // 20150310: start
3407  //  Stregkode := '';  //  Stregkode := '';
3408  // 20150310: slut  // 20150310: slut
3409  end;  end;
3410    
 /// <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]]);  
3411    
     // 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;  
3412    
3413  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3414  begin  begin
# Line 4162  end; Line 3433  end;
3433    
3434  procedure TMainForm.Testlyd2Click(Sender: TObject);  procedure TMainForm.Testlyd2Click(Sender: TObject);
3435  begin  begin
 // 20150317: start  
3436    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3437    begin    begin
3438       if ScannetOkTilTjekkodeLyd  <> '' then       if ScannetOkTilTjekkodeLyd  <> '' then
# Line 4175  begin Line 3445  begin
3445       end;       end;
3446       exit;       exit;
3447    end;    end;
 // 20150317: slut  
3448    
3449    if Smpakker1.Checked then    if Smpakker1.Checked then
3450       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
# Line 4184  begin Line 3453  begin
3453       end       end
3454       else       else
3455       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);  
3456         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3457       end;       end;
3458    if Storepakker1.Checked then    if Storepakker1.Checked then
3459       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
# Line 4196  begin Line 3462  begin
3462       end       end
3463       else       else
3464       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);  
3465         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3466       end;       end;
3467  end;  end;
3468    
# Line 4216  begin; Line 3479  begin;
3479    CheckCode();    CheckCode();
3480  end;  end;
3481    
3482  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3483  var  var
3484    WebSvar : String;    WebSvar : String;
3485    URLStr : String;    URLStr : String;
# Line 4226  var Line 3489  var
3489    status, kommentar : String;    status, kommentar : String;
3490    
3491  begin  begin
3492      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3493    
3494      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');
3495      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3496      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3497      StedKode := Sted;      StedKode := Sted;
3498      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3499  // 20150330: start  
3500      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3501      begin      begin
3502        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3503      end;      end;
3504  // 20150330: slut  
3505    
3506      try      try
3507      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4289  begin Line 3552  begin
3552        end;        end;
3553      end;      end;
3554    
3555      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3556    
3557      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
3558    
# Line 4306  begin Line 3569  begin
3569           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3570         end;         end;
3571         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3572         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3573      end;      end;
3574    
3575  end;  end;
# Line 4330  begin Line 3593  begin
3593    else    else
3594      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3595  }  }
3596    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3597    
3598    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3599    CheckCode();    CheckCode();
# Line 4338  end; Line 3601  end;
3601    
3602  end;  end;
3603    
 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;  
3604    
3605  //  //
3606  // Bladhus ***  // Bladhus ***
# Line 4854  begin Line 4078  begin
4078    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
4079  end;  end;
4080    
4081  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4082  begin  begin
4083      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4084      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
4085  end;  end;
4086    
4087  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4088  const  const
4089    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4090    
# Line 4869  begin Line 4093  begin
4093      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
4094  end;  end;
4095    
4096  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4097  begin  begin
4098      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4099      begin      begin
# Line 4878  begin Line 4102  begin
4102      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
4103  end;  end;
4104    
4105  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;  
4106    
4107  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4108  var  var
# Line 4902  var Line 4114  var
4114    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4115    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4116    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4117    pakketyper : TStrings;    //pakketyper : TStrings;
4118      pakketyper : TDictionary<String, Integer>;
4119      tmpAntal : Integer;
4120    
4121    
4122    
4123    antlin : Integer;    antlin : Integer;
4124  // 20150306: start  
4125    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4126  // 20150306: slut  
4127    XmlFelter : TStrings;    //XmlFelter : TStrings;
4128      XmlFelter : TDictionary<String, Integer>;
4129    
4130   begin   begin
4131      XmlFelter := TStringList.Create;  
4132      pakketyper := TStringList.Create;  
4133        XmlFelter := TDictionary<String, Integer>.Create;
4134        pakketyper := TDictionary<String, Integer>.Create;
4135    
4136      linienr := 0;      linienr := 0;
4137      ListBox2.Clear;      ListBox2.Clear;
4138      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 4926  var Line 4147  var
4147          StedKode := Sted;          StedKode := Sted;
4148        end;        end;
4149    
4150  // 20150310: start        Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4151  (*  
4152      if Returpakkerfrapakkeshop1.Checked then  
4153       begin  
4154        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);      if (Scanningtype = '7') then
      end  
     else if Pakkeshoplevering1.Checked then  
      begin  
       URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);  
      end  
     else if Pakkernormal1.Checked then  
4155       begin       begin
4156        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4157       end       end
4158      else      else if (Scanningtype = '6') then
      begin  
       URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer  
      end;  
 *)  
     if (Scanningtype = '6') then  
4159       begin       begin
4160        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4161       end       end
4162      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4163       begin       begin
4164        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4165       end       end
4166      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4167       begin       begin
# Line 4988  var Line 4198  var
4198      try      try
4199        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4200    
4201  // 20150206: start  
4202        antlin := 0;        antlin := 0;
4203        antlinIdag := 0;        antlinIdag := 0;
4204        antlinSenere := 0;        antlinSenere := 0;
4205  // 20150306: slut  
       antalFelterFundet := 0;  
4206        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4207            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4208            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4209              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4210              begin              begin
4211                 antlin := antlin + 1;                 Inc(antlin);
4212                 // 20150306: start                 // 20150306: start
4213                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4214                begin                begin
4215                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4216                   begin                   begin
4217                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4218                   end                   end
4219                   else                   else
4220                   begin                   begin
4221                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4222                   end;                   end;
4223                end;                end;
4224                 // 20150306: slut                 // 20150306: slut
4225              end;              end;
4226            end;            end;
4227            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4228                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4229                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4230                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4231                  end
4232                else                else
4233                  XmlFelter.values[Node.NodeName] := '1';                begin
4234                    XmlFelter.Add(Node.NodeName, 1);
4235                  end;
4236    
4237        end;        end;
4238        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
4239        antalFelterFundet := 0;        antalFelterFundet := 0;
4240        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4241        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4242  // 20150206: start  
4243  //      logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';  
4244          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4245    
4246        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4247        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4248        begin        begin
4249          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4250        end;        end;
4251        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4252  // 20150306: slut  
4253        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4254    
4255    
4256        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4257            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4258            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 5042  var Line 4260  var
4260                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4261                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4262                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4263              end;              end
4264              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4265                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4266                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4267                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4268              end;              end
4269              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4270                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4271                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4272                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4273              end;              end
4274              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4275                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4276                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4277                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4278              end;              end
4279              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4280                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4281                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4282                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4283                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4284                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4285                    pakketyper.TryGetValue(pakketype, tmpAntal);
4286                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4287                  end
4288                else                else
4289                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4290              end;              end
4291              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4292                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4293                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4294                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4295                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4296                  begin                  begin
4297  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4298                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4299                    begin                    begin
4300                      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
4301                    end                    end
4302                    else                    else
4303                    begin                    begin
4304                      stregkoderMedTjekkodeArray[linienr] := stregkode;                      stregkoderMedTjekkodeArray[linienr] := stregkode;
4305                    end;                    end;
4306  // 20150306: slut                    linienr := linienr + 1;
                     linienr := linienr + 1;  
4307                  end;                  end;
4308              end;              end;
4309    
4310    
4311              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4312              begin              begin
4313                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 5102  var Line 4323  var
4323              end;              end;
4324            end;            end;
4325        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4326    
4327          // Free up the list object  
4328          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4329    
4330    
4331          for pakketype in pakketyper.Keys do
4332          begin
4333            pakketyper.TryGetValue(pakketype, tmpAntal);
4334            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4335          end;
4336    
4337            // Free up the dictionary object
4338        pakketyper.Free;        pakketyper.Free;
4339  // 20150306: start  
4340    
4341    
4342  //      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.');
4343        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4344        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5118  var Line 4347  var
4347        end;        end;
4348        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4349        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
 // 20150306: slut  
 // 20150309: start  
4350        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4351        begin        begin
4352          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
# Line 5128  var Line 4355  var
4355        begin        begin
4356          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4357        end;        end;
 // 20150309: slut  
4358    
 // 20150310: start  
4359        if (Scanningtype = '1') then        if (Scanningtype = '1') then
4360        begin        begin
4361          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal
# Line 5209  var Line 4434  var
4434            PanelManglendePakker6.Visible := false;            PanelManglendePakker6.Visible := false;
4435          end;          end;
4436        end;        end;
 // 20150310: slut  
4437    
4438      except on e:exception do      except on e:exception do
4439        begin        begin
# Line 5271  end; Line 4495  end;
4495  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4496  var  var
4497     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4498     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4499     imorgenYmd : string;     imorgenYmd : string;
4500     logFilnavn : string;     logFilnavn : string;
4501      error : Integer;     //error : Integer;
4502    
4503  begin  begin
4504    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5368  begin Line 4590  begin
4590          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4591          S := buffer;          S := buffer;
4592          SetLength(A,0);          SetLength(A,0);
4593          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4594          if (length(A) < 2) then          if (length(A) < 2) then
4595          begin          begin
4596            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4597          end;          end;
4598            if (length(A) > 1) then            if (length(A) > 1) then
4599            begin            begin
# Line 5445  begin Line 4667  begin
4667          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4668          S := buffer;          S := buffer;
4669          SetLength(A,0);          SetLength(A,0);
4670          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4671          if (length(A) < 3) then          if (length(A) < 3) then
4672          begin          begin
4673            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4674          end;          end;
4675          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4676          begin          begin
# Line 5540  begin Line 4762  begin
4762    result := svar;    result := svar;
4763  end;  end;
4764    
4765    procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4766    begin
4767      //ShowMessage('Ændring ikke tilladt');
4768      // Her skal komme en 'rød skærm' alarm
4769      PlaySound(PWideChar(AlarmLyd));
4770      MainForm.Color := clRed;
4771    
4772    
4773      RuteNummerST.Caption := '';
4774      BoghandlerNavnST.Caption := '';
4775      btnNulstil.Visible := true;
4776    
4777      if (strMessage <> '') then
4778      begin
4779        ListBox1.Items.Insert(0, strMessage);
4780        KommentarST.Caption := strMessage;
4781      end;
4782    
4783    end;
4784    
4785  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
4786  var  var
4787     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
# Line 5597  begin Line 4839  begin
4839    result := svar;    result := svar;
4840  end;  end;
4841    
 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;  
4842    
4843  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4844  begin  begin
# Line 5629  begin Line 4852  begin
4852    end;    end;
4853  end;  end;
4854    
4855  function TMainForm.AdobeReaderExists: Boolean;  
4856  var  
4857    AReg: TRegistry;  //Nedarvet fra IParentForm
4858    procedure TMainForm.LogMessage( msg : string);
4859  begin  begin
4860    result:= false;    ListBox1.Items.Insert(0, msg);
4861    AReg := TRegistry.Create;    SkrivScanningLogFil(msg);
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4862  end;  end;
4863    
 procedure TMainForm.CheckPrintQue(tjektype : string);  
 type  
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
 begin  
4864    
4865  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  //Nedarvet fra IParentForm
4866  //            'Test'  skal vise alarmlinie, samt opdatere listbox1  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4867  //            'Timer' skal kun vise alarmlinie  begin
4868    
4869    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then    PrinterstatusStaticText1.Caption := txt;
4870      if (alert) then
4871    begin    begin
4872      printerTxt := 'Der er fravalgt printer i dette program';      PrinterstatusStaticText1.Font.Color := clBlack;
4873      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4874      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
   begin  
     printerTxt := 'Der er ikke installeret en printer på denne PC';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
4875    end    end
4876    else    else
4877    begin    begin
4878      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4879      try      PrinterstatusStaticText1.Color := clWhite;
4880        EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);      PrinterstatusStaticText1.Transparent := true;
       pJ := AllocMem(bytesNeeded);  
       if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then  
         RaiseLastWin32Error;  
   
       if numJobs = 0 then  
       begin  
         if (tjektype = 'Test') then  
         begin  
           logTekst := printerTxt + ': Ingen dokumenter i kø';  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         PrinterstatusStaticText1.Caption := '';  
         PrinterstatusStaticText1.Color := MainForm.Color;  
       end  
       else   // så er der kø til printeren  
       begin  
         printerTxt := SavePChar(pJ^[0].pPrinterName);  
         if (tjektype = 'Opstart') or (tjektype = 'Test') then  
         begin  
           logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         for i := 0 to Pred(numJobs) do  
         begin  
           printerTxt := SavePChar(pJ^[i].pPrinterName);  
           statusTxt := 'Ukendt';  
           if (IntToStr(pJ^[i].Status) = '0') then  
             statusTxt := 'Venter...';  
           if (IntToStr(pJ^[i].Status) = '4096') then  
             statusTxt := 'Printer...';  
           if (IntToStr(pJ^[i].Status) = '8210') then  
             statusTxt := 'Printerfejl';  
           if (IntToStr(pJ^[i].Status) = '8214') then  
             statusTxt := 'Sletter print...';  
   
           dokumentTxt := SavePChar(pJ^[i].pDocument);  
           if (dokumentTxt = '') then  
             dokumentTxt := 'Uden navn';  
   
           if (tjektype = 'Opstart') or (tjektype = 'Test') then  
           begin  
             logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',  
                                     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);  
             ListBox1.Items.Insert(0,logTekst);  
             SkrivScanningLogFil(logTekst);  
           end;  
   
           if (i = 0) then  
           begin  
             PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;  
             PrinterstatusStaticText1.Font.Color := clBlack;  
             PrinterstatusStaticText1.Color := MainForm.Color;  
             PrinterstatusStaticText1.Transparent := True;  
             if (numJobs > 3) then  
             begin  
               PrinterstatusStaticText1.Font.Color := clRed;  
               PrinterstatusStaticText1.Color := clWhite;  
               PrinterstatusStaticText1.Transparent := true;  
             end;  
           end;  
   
         end;  
       end  
       finally  
         ClosePrinter(hPrinter);  
     end;  
   end;  
 end;  
   
 function TMainForm.CheckUrl(url:string):boolean;  
 var  
   hSession, hfile, hRequest: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
4881    end;    end;
   
4882  end;  end;
4883    
4884  // 20150310: start  //Nedarvet fra IParentForm
4885  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetFormObject() : TForm;
 var  
    R: TRect;  
    Rgn: HRGN;  
4886  begin  begin
4887     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;  
4888  end;  end;
 // 20150310: slut  
4889    
4890  end.  end.
4891    

Legend:
Removed from v.2654  
changed lines
  Added in v.2977

  ViewVC Help
Powered by ViewVC 1.1.20