/[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 2650 by torben, Thu Aug 20 20:58:26 2015 UTC revision 3038 by torben, Tue May 31 11:50:42 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;
38      IdHTTP1: TIdHTTP;      IdHTTP1: TIdHTTP;
39      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
40      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
41      CheckBox1: TCheckBox;      chkSporgEfterKunde: TCheckBox;
42      KommentarST: TStaticText;      KommentarST: TStaticText;
43      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
44      N1: TMenuItem;      N1: TMenuItem;
# Line 36  type Line 54  type
54      Lukprogrammet1: TMenuItem;      Lukprogrammet1: TMenuItem;
55      N2: TMenuItem;      N2: TMenuItem;
56      N3: TMenuItem;      N3: TMenuItem;
57      RadioButton1: TRadioButton;      radioStorPakke: TRadioButton;
58      RadioButton2: TRadioButton;      radioLillePakke: TRadioButton;
59      N4: TMenuItem;      N4: TMenuItem;
60      Storepakker1: TMenuItem;      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      CheckBox2: TCheckBox;      chkAltidPrintLabel: TCheckBox;
81      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
82      N5: TMenuItem;      N5: TMenuItem;
83      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
84      Manual1: TMenuItem;      Manual1: TMenuItem;
85      PrinterstatusStaticText1: TStaticText;      PrinterstatusStaticText1: TStaticText;
86      Timer1: TTimer;      Timer1: TTimer;
87      CheckBox3: TCheckBox;      chkScanTjekkode: TCheckBox;
88      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
89      Automatisktjekkodestyring1: TMenuItem;      Automatisktjekkodestyring1: TMenuItem;
90      Automatiskvalg1: TMenuItem;      Automatiskvalg1: 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        chkEmballageRepareret: TCheckBox;
110    
111    
112    
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
113    function getProddato() : TDate;    function getProddato() : TDate;
114    function getProddag() : String;    function getProddag() : String;
115    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
   function AdobeReaderExists(): Boolean;  
   function FileTime2DateTime(FileTime: TFileTime): TDateTime;  
   function split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
116    
117    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
118    procedure StartScreen();    procedure StartScreen();
# Line 113  type Line 125  type
125    procedure FormKeyPress(Sender: TObject; var Key: Char);    procedure FormKeyPress(Sender: TObject; var Key: Char);
126    procedure FormCreate(Sender: TObject);    procedure FormCreate(Sender: TObject);
127    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
128    procedure RadioButton1Click(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
129    procedure RadioButton2Click(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
130    procedure CheckBox1Click(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
131    procedure Pakkernormal1Click(Sender: TObject);    procedure Pakkernormal1Click(Sender: TObject);
132    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
133    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
# Line 131  type Line 143  type
143    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
144    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
145    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
146    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
147    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
148    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
149    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
150    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 140  type Line 152  type
152    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
153    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
154    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
155    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
156    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
157    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure Pakkeshoplevering1Click(Sender: TObject);
158    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
159    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
160    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
161    procedure InitReturFraDao();    procedure InitReturFraDao();
# Line 154  type Line 166  type
166    procedure InitIndleveringskode();    procedure InitIndleveringskode();
167    
168    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
169    procedure CheckBox2Click(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
170    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
171    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
172    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
173    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
174    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
175    procedure CheckBox3Click(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
176    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure Automatisktjekkodestyring1Click(Sender: TObject);
177    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
178    procedure Automatiskvalg1Click(Sender: TObject);    procedure Automatiskvalg1Click(Sender: TObject);
# Line 172  type Line 183  type
183    procedure PanelValg4Click(Sender: TObject);    procedure PanelValg4Click(Sender: TObject);
184    procedure PanelValg5Click(Sender: TObject);    procedure PanelValg5Click(Sender: TObject);
185    procedure PanelValg6Click(Sender: TObject);    procedure PanelValg6Click(Sender: TObject);
186      procedure PanelValg7Click(Sender: TObject);
187    
188    procedure NulstilAutomatiskValg();    procedure NulstilAutomatiskValg();
189    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
190    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
191    procedure TjekkerUrls();    procedure TjekkerUrls();
192  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
193    procedure RoundCornerOf(Control: TWinControl);  
194      procedure menuIndleveringClick(Sender: TObject);
195    
196    
197    
198      //Nedarvet fra IParentForm
199      procedure Msg( msg : string);
200      procedure LogMessage( msg : string);
201      procedure SetPrinterstatusText( txt: string; alert: boolean);
202      function GetFormObject() : TForm;
203    
     procedure PanelValg7Click(Sender: TObject);  
 // 20150310: slut  
204    
205    private    private
206      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 208  type
208      SkrivLog : String;      SkrivLog : String;
209      Sted : String;      Sted : String;
210      StedNavn : String;      StedNavn : String;
211      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
212  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
213                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
214    
215      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
216  // 20150330: slut  
217      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
218      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
219      ScanTjekkode : String;      ScanTjekkode : String;
220      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
221      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop : String;  
222      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
223      LabelType : integer;            FarveIndlevering : String;
224    
225        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
226              TitelIndlevering : String;
227    
228      AlarmLyd : String;      AlarmLyd : String;
229      ScannetOkLyd : String;      ScannetOkLyd : String;
230      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
231  // 20150317: start  
232      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
233  // 20150317: slut  
234      PrinterNavn : String;      PrinterNavn : String;
235      TjekPrinter : String;      TjekPrinter : String;
236      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;  
237      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
238      BladhusSted : Integer;      BladhusSted : Integer;
239      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 242  type Line 246  type
246      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
247      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
248      TjekUrls : String;      TjekUrls : String;
249        Config : TConfiguration;
250    
251            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
252        LabelPrint: TLabelPrint;
253    
254      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 = '');
255      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
256      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 = '');
257      procedure CheckCode();      procedure CheckCode();
258      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 255  type Line 261  type
261      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
262      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
263      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
264        procedure VisAlarmSkaerm(strMessage: string);
265        function InjectURL(Url : String) : String;
266    
267    public    public
268      { Public declarations }      { Public declarations }
269    end;    end;
270    
271    
272  var  var
273    MainForm: TMainForm;    MainForm: TMainForm;
274    
# Line 273  var Line 282  var
282  implementation  implementation
283  {$R *.dfm}  {$R *.dfm}
284    
285  function TMainForm.TColorToHex(Color : TColor) : string;  
286  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;  
287    
288  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
289  begin  begin
290    
 // 20150309: startr  
291      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
292  // 20150309: slut  
293    
294      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
295      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 340  begin Line 333  begin
333        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
334      end;      end;
335    
336      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
337    
338      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
339      begin      begin
# Line 368  begin Line 361  begin
361        else if (Sted = 'BR') then        else if (Sted = 'BR') then
362          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
363        else if (Sted = 'BK') then        else if (Sted = 'BK') then
364          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
365          else if (Sted = 'TK') then
366            begin StedNavn := 'BK/Trykkompagniet: '; end
367        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
368          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
369        else if (Sted = '1') then        else if (Sted = '1') then
370          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
371        else if (Sted = '2') then        else if (Sted = '2') then
# Line 394  begin Line 389  begin
389    
390      StartScreen();      StartScreen();
391      MainForm.Caption := Titel;      MainForm.Caption := Titel;
392      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
393      MainForm.Farve := Farve;      MainForm.Farve := Farve;
394      MainForm.Titel := Titel;      MainForm.Titel := Titel;
395      MainForm.Url := Url;      MainForm.Url := Url;
# Line 409  begin Line 404  begin
404      else      else
405        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
406    
407      CheckBox3.Checked := false;      chkScanTjekkode.Checked := false;
408      CheckBox3.Enabled := false;      chkScanTjekkode.Enabled := false;
409      Scanogstjekkoden1.Enabled := false;      Scanogstjekkoden1.Enabled := false;
410    
411      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
412      begin      begin
413        if (ScanTjekkode = '1') then        if (ScanTjekkode = '1') then
414        begin        begin
415          CheckBox3.Checked := true;          chkScanTjekkode.Checked := true;
416          CheckBox3.Enabled := true;          chkScanTjekkode.Enabled := true;
417          Scanogstjekkoden1.Enabled := true;          Scanogstjekkoden1.Enabled := true;
418        end        end
419        else        else
420        begin        begin
421          CheckBox3.Checked := false;          chkScanTjekkode.Checked := false;
422          CheckBox3.Enabled := true;         // False vil forhindre indtastning af tjekkode i nat x-press scanning          chkScanTjekkode.Enabled := true;         // False vil forhindre indtastning af tjekkode i nat x-press scanning
423          Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning          Scanogstjekkoden1.Enabled := true; // False vil forhindre indtastning af tjekkode i nat x-press scanning
424        end;        end;
425      end;      end;
426    
427      if Automatisktjekkodestyring1.Checked then      if Automatisktjekkodestyring1.Checked then
428      begin      begin
429        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
430        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
431      end;      end;
432    
# Line 454  begin Line 449  begin
449          end          end
450          else          else
451          begin          begin
452            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
453          end;          end;
454          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
455        end        end
456        else        else
457        begin        begin
458          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
459          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
460        end;        end;
461      end;      end;
462    
463    
464  end;  end;
465    
466  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 472  begin Line 468  begin
468    
469    if Altidprintepakkelabel1.Checked then    if Altidprintepakkelabel1.Checked then
470    begin    begin
471       CheckBox2.Checked := true;       chkAltidPrintLabel.Checked := true;
472    end    end
473    else    else
474    begin    begin
475       CheckBox2.Checked := false;       chkAltidPrintLabel.Checked := false;
476    end;    end;
477    
478  end;  end;
# Line 490  procedure TMainForm.Automatisktjekkodest Line 486  procedure TMainForm.Automatisktjekkodest
486  begin  begin
487    if Automatisktjekkodestyring1.Checked then    if Automatisktjekkodestyring1.Checked then
488    begin    begin
489       CheckBox3.Enabled := false;       chkScanTjekkode.Enabled := false;
490       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
491    end    end
492    else    else
493    begin    begin
494       CheckBox3.Enabled := true;       chkScanTjekkode.Enabled := true;
495       Scanogstjekkoden1.Enabled := true;       Scanogstjekkoden1.Enabled := true;
496    end;    end;
497    
# Line 503  end; Line 499  end;
499    
500  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
501  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;  
 *)  
502  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
503  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
504       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
505       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
506       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
507  end;  end;
508    
509    function TMainForm.InjectURL(Url : String) : String;
510    begin
511    
512      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
513      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
514      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
515    
516      Result := Url;
517    end;
518    
519    //InitForm kaldes før FormCreate
520  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
521  const  const
522    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
523  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
524    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
525    
526  begin  begin
527    
528    
529    // Initierer nogle variabler    // Initierer nogle variabler
530    BladhusSted := 00;    BladhusSted := 00;
531    Application.ShowHint := True;    Application.ShowHint := True;
532    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
533    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
534  // 20150306: start  
535    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
536  // 20150306: slut  
537  // 20150310: start    TUtils.RoundCornerOf(PanelManglendePakker1);
538    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker2);
539    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker3);
540    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker4);
541    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker5);
542    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker6);
543    RoundCornerOf(PanelManglendePakker6);  
 // 20150310: slut  
544    
545    // 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
546    if DirectoryExists('Docs') then    if DirectoryExists('Docs') then
# Line 565  begin Line 553  begin
553    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
554    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
555    
556      Config := TConfiguration.Create();
557      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
558      Config.Sted := Sted;
559    
560    // Læser parametre fra ini filen    // Læser parametre fra ini filen
561    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
562    try    try
563    
564    
565      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
566      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
567      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
568    
569      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
570        UrlFindPakketype := InjectURL(UrlFindPakketype);
571    
572      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
573        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
574    
575      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
576        UrlNormal := InjectURL(UrlNormal);
577    
578      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
579        UrlReturDAO := InjectURL(UrlReturDAO);
580    
581      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
582        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
583    
584      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');
585        UrlBudlevering := InjectURL(UrlBudlevering);
586    
587      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');
588        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
589    
590      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');
591  // 20150330: start      UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
592    
593      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');
594  // 20150330: slut      UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
595    
596      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');
597        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
598    
599      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');
600        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
601    
602      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');
603        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
604    
605      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');
606      LabelType := ReadInteger('Settings','LabelType',1);      UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
607    
608        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
609        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
610    
611        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
612        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
613    
614        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
615        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
616    
617    
618    
619      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
620      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
621      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 597  begin Line 626  begin
626      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
627      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
628      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
629    
630      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
631      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
632    
633        FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');
634        TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');
635    
636    
637      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
638      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
639      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
# Line 608  begin Line 643  begin
643      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
644      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
645      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
646  // 20150317: start  
647      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
648  // 20150317: slut  
649      PrinterNavn := ReadString('Settings','PrinterNavn','');      PrinterNavn := ReadString('Settings','PrinterNavn','');
650      TjekPrinter := ReadString('Settings','TjekPrinter','1');      TjekPrinter := ReadString('Settings','TjekPrinter','1');
651      TjekUrls := ReadString('Settings','TjekUrls','2');      TjekUrls := ReadString('Settings','TjekUrls','2');
652    
653      if (SkrivLog = '1') then      if (SkrivLog = '1') then
654      begin      begin
655        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);
656        try        try
657          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
658          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
659          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
660          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
661          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
662          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 639  begin Line 674  begin
674        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
675      end;      end;
676    
677      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;  
678    
679      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
680      begin      begin
681        CheckBox1.Checked := true;        chkSporgEfterKunde.Checked := true;
682        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
683      end      end
684      else      else
685      begin      begin
686        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
687        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
688      end;      end;
689    
690      if ScanTjekkode = '1' then      if ScanTjekkode = '1' then
691      begin      begin
692        CheckBox3.Checked := true;        chkScanTjekkode.Checked := true;
693        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
694      end      end
695      else      else
696      begin      begin
697        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
698        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
699      end;      end;
700    
701      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
702      begin      begin
703        Automatisktjekkodestyring1.Checked := true;        Automatisktjekkodestyring1.Checked := true;
704        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
705        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
706      end;      end;
707    
# Line 760  begin Line 727  begin
727      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
728      // *************************** //      // *************************** //
729    
730    {$IfDef STED_BK}
731        SpecialVersionSted := 'BK';
732    {$EndIf}
733    {$IfDef STED_TK}
734        SpecialVersionSted := 'TK';// BK-Trykkompagniet
735    {$EndIf}
736    {$IfDef STED_DBK}
737        SpecialVersionSted := 'DBK';
738    {$EndIf}
739    {$IfDef STED_FD}
740        SpecialVersionSted := 'FD';
741    {$EndIf}
742    {$IfDef STED_NS}
743        SpecialVersionSted := 'NS';
744    {$EndIf}
745    
746    
747      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
748      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
749      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 775  begin Line 759  begin
759      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
760      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
761    
 // 20150313: start  
762      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
763      begin      begin
764         SpecialVersionSted := '01';         SpecialVersionSted := '01';
765         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
766      end;      end;
767    
768      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
769      begin      begin
770         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
771         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
772    
773    
774          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
775          Sted := SpecialVersionSted;
776         // her skal vi også disable de knapper BK ikke kan bruge
777          PanelValg2.Enabled := false;
778          PanelValg2.Font.Color := clInactiveCaption;
779          PanelValg3.Enabled := false;
780          PanelValg3.Font.Color := clInactiveCaption;
781          //PanelValg6.Enabled := false;
782          //PanelValg6.Font.Color := clInactiveCaption;
783    
784         // her skal vi også disable de menupunkter FD ikke kan bruge
785          ReturpakkerfraDAO1.Enabled := false;
786          Returpakkerfraboghandler1.Enabled := false;
787    
788          //Returpakkerfrapakkeshop1.Enabled := false;
789    
790      end;      end;
 // 20150313: slut  
791    
792      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
793      begin      begin
794        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
795        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 797  begin Line 798  begin
798        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
799        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
800        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
801        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
802        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
803    
804       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
805        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
806        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
807        Returpakkerfrapakkeshop1.Enabled := false;  
808          //Returpakkerfrapakkeshop1.Enabled := false;
809    
810        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
811        begin        begin
812           Scanningtype := '1';           Scanningtype := '1';
# Line 826  begin Line 830  begin
830        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
831        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
832        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
833    
834    
835       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
836        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
837        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
838  // 20150317: start  
839        Pakkeshoplevering1.Enabled := false;        Pakkeshoplevering1.Enabled := false;
840        Returpakkerfrapakkeshop1.Enabled := false;        Returpakkerfrapakkeshop1.Enabled := false;
841  // 20150317: slut  
842        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
843        begin        begin
844           Scanningtype := '1';           Scanningtype := '1';
# Line 862  begin Line 868  begin
868        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
869        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
870        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
871          PanelValg7.Enabled := false;
872          PanelValg7.Font.Color := clInactiveCaption;
873       // 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
874  // 20150317: start  
875        Automatiskvalg1.Enabled := false;        Automatiskvalg1.Enabled := false;
876  // 20150317: slut  
877        Pakkernormal1.Enabled := false;        Pakkernormal1.Enabled := false;
878        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
879        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
# Line 957  begin Line 965  begin
965             RutenummerST.Caption := '';             RutenummerST.Caption := '';
966             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
967             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
968             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
969             exit;             exit;
970          end;          end;
971      end      end
# Line 1000  begin Line 1008  begin
1008      if Pakketype = '1' then      if Pakketype = '1' then
1009      begin      begin
1010        Storepakker1.Checked := true;        Storepakker1.Checked := true;
1011        RadioButton1.Checked := true;        radioStorPakke.Checked := true;
1012      end      end
1013      else      else
1014      begin      begin
1015        Smpakker1.Checked := true;        Smpakker1.Checked := true;
1016        RadioButton2.Checked := true;        radioLillePakke.Checked := true;
1017      end;      end;
1018    
1019      if TestFunktionen = '1' then      if TestFunktionen = '1' then
# Line 1045  begin Line 1053  begin
1053        ScannetOkStorLyd := '';        ScannetOkStorLyd := '';
1054      end;      end;
1055    
1056  // 20150317: start  
1057      if not FileExists(ScannetOkTilTjekkodeLyd) then      if not FileExists(ScannetOkTilTjekkodeLyd) then
1058      begin      begin
1059        ScannetOkTilTjekkodeLyd := '';        ScannetOkTilTjekkodeLyd := '';
1060      end;      end;
 // 20150317: slut  
1061    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1062    
1063      CheckPrintQue('Opstart');  
1064    
1065        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1066        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1067    
1068    finally    finally
1069      Free;      Free;
# Line 1083  begin Line 1087  begin
1087          InitBladhus();          InitBladhus();
1088        end;        end;
1089    
1090  // 20150310: start  
1091      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
1092      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
1093    
# Line 1124  begin Line 1128  begin
1128      end;      end;
1129    
1130      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
 // 20150310: slut  
1131    
1132      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1133      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1134    
1135  end;  end;
1136    
# Line 1145  var Line 1148  var
1148    BoghandlerNavn : String;    BoghandlerNavn : String;
1149    Koreliste : String;    Koreliste : String;
1150    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1151    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1152    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1153    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1170  begin Line 1172  begin
1172      ClipboardData := Clipboard.AsText;      ClipboardData := Clipboard.AsText;
1173      numberString := ClipboardData;      numberString := ClipboardData;
1174      Val(numberString, float, errorPos);      Val(numberString, float, errorPos);
1175  // 20150311: start  
1176  //    if (ClipboardData <> '') and (errorPos = 0) then      //    if (ClipboardData <> '') and (errorPos = 0) then
1177      if (ClipboardData <> '') and (errorPos = 0)      if (ClipboardData <> '') and (errorPos = 0)
1178      or (NumberString = 'Nulstil')      or (NumberString = 'Nulstil')
1179      or (NumberString = 'Indtast kundenummer')      or (NumberString = 'Indtast kundenummer')
# Line 1185  begin Line 1187  begin
1187      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1188      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1189      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1190        or (NumberString = 'DAO PAKKESHOP')
1191        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1192            or (LowerCase(NumberString) = 'for stor daodirekte' )
1193      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1194  // 20150311: slut  
1195      begin      begin
1196        Stregkode := Stregkode + ClipboardData;        Stregkode := Stregkode + ClipboardData;
1197        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1195  begin Line 1200  begin
1200      begin      begin
1201        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1202      end;      end;
1203    end;    end;  // Slut ctrl-v
1204    
1205    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1206    begin    begin
1207  // 20150306: start  
1208      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
1209        Stregkode := Trim(Stregkode);
1210    
1211        if (Length(Stregkode) = 0) then
1212      begin      begin
1213        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1214        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;  
1215        exit;        exit;
1216      end;      end;
 // 20150306: slut  
1217    
 // 20150311: start  
1218      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1219      begin      begin
1220         PakkeshopNulstil.Click();         btnNulstil.Click();
1221         exit;         exit;
1222      end;      end;
1223    
1224      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1225      begin      begin
1226         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1227  // 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  
1228         exit;         exit;
1229      end;      end;
1230    
1231      if StregKode = 'Lille pakke' then      if StregKode = 'Lille pakke' then
1232      begin      begin
1233         if RadioButton2.Enabled = true then         if radioLillePakke.Enabled = true then
1234         begin         begin
1235            InitLillePakke();            InitLillePakke();
1236         end         end
1237         else         else
1238         begin         begin
1239          //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;  
1240         end;         end;
1241         Stregkode := '';         Stregkode := '';
1242         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1268  begin Line 1245  begin
1245    
1246      if StregKode = 'Stor pakke' then      if StregKode = 'Stor pakke' then
1247      begin      begin
1248         if RadioButton1.Enabled = true then         if radioStorPakke.Enabled = true then
1249         begin         begin
1250            InitStorPakke();            InitStorPakke();
1251         end         end
1252         else         else
1253         begin         begin
1254          //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;  
1255         end;         end;
1256         Stregkode := '';         Stregkode := '';
1257         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1258         exit;         exit;
1259      end;      end;
1260    
1261        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1262        begin
1263          if chkForstorTilDirekte.Enabled then
1264          begin
1265            chkForstorTilDirekte.Checked := true;
1266          end
1267          else
1268          begin
1269             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1270          end;
1271          Stregkode := '';
1272          StregkodeST.Caption := StregKode;
1273          exit;
1274        end;
1275    
1276    
1277      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1278      begin      begin
1279         if CheckBox1.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
1280         begin         begin
1281           if (CheckBox1.State = cbChecked) then           if (chkSporgEfterKunde.State = cbChecked) then
1282           begin           begin
1283            CheckBox1.State := cbUnchecked;            chkSporgEfterKunde.State := cbUnchecked;
1284           end           end
1285           else           else
1286           begin           begin
1287            CheckBox1.State := cbChecked;            chkSporgEfterKunde.State := cbChecked;
1288           end;           end;
1289         end         end
1290         else         else
1291         begin         begin
1292          //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;  
1293         end;         end;
1294         Stregkode := '';         Stregkode := '';
1295         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1327  begin Line 1298  begin
1298    
1299      if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then      if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then
1300      begin      begin
1301        if CheckBox3.Enabled = true then        if chkScanTjekkode.Enabled = true then
1302        begin        begin
1303           if (CheckBox3.State = cbChecked) then           if (chkScanTjekkode.State = cbChecked) then
1304           begin           begin
1305            CheckBox3.State := cbUnchecked;            chkScanTjekkode.State := cbUnchecked;
1306           end           end
1307           else           else
1308           begin           begin
1309            CheckBox3.State := cbChecked;            chkScanTjekkode.State := cbChecked;
1310           end;           end;
1311        end        end
1312        else        else
1313        begin        begin
1314          //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;  
1315        end;        end;
1316        Stregkode := '';        Stregkode := '';
1317        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1366  begin Line 1326  begin
1326         end         end
1327         else         else
1328         begin         begin
1329          //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;  
1330         end;         end;
1331         Stregkode := '';         Stregkode := '';
1332         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1333         exit;         exit;
1334      end;      end;
1335    
1336  // 20150323: start  
 //    if StregKode = 'DAO NAT X-PRESS' then  
1337      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  
1338      begin      begin
1339         if (PanelValg1.Enabled = true) then         if (PanelValg1.Enabled = true) then
1340         begin         begin
# Line 1395  begin Line 1342  begin
1342         end         end
1343         else         else
1344         begin         begin
1345          //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;  
1346         end;         end;
1347         Stregkode := '';         Stregkode := '';
1348         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1421  begin Line 1357  begin
1357         end         end
1358         else         else
1359         begin         begin
1360          //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;  
1361         end;         end;
1362         Stregkode := '';         Stregkode := '';
1363         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1447  begin Line 1372  begin
1372         end         end
1373         else         else
1374         begin         begin
1375          //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;  
1376         end;         end;
1377         Stregkode := '';         Stregkode := '';
1378         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1473  begin Line 1387  begin
1387         end         end
1388         else         else
1389         begin         begin
1390          //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;  
1391         end;         end;
1392         Stregkode := '';         Stregkode := '';
1393         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1499  begin Line 1402  begin
1402         end         end
1403         else         else
1404         begin         begin
1405          //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;  
1406         end;         end;
1407         Stregkode := '';         Stregkode := '';
1408         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1525  begin Line 1417  begin
1417         end         end
1418         else         else
1419         begin         begin
1420          //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;  
1421         end;         end;
1422         Stregkode := '';         Stregkode := '';
1423         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1424         exit;         exit;
1425      end;      end;
1426  // 20150311: slut  
1427    
1428      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1429      begin      begin
# Line 1590  begin Line 1471  begin
1471        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1472      end;      end;
1473    
1474      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1475          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1476          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1477          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1478          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1479          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1480      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1481         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1482         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  
1483         exit;         exit;
1484      end;      end;
1485    
1486      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1487      begin      begin
1488        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1489        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1626  begin Line 1495  begin
1495              end;              end;
1496            end            end
1497        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1498  (*  
       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  
 *)  
1499        else if Pakketype = 'Direkte' then        else if Pakketype = 'Direkte' then
1500            begin            begin
1501              if Scanningtype <> '4' then              if Scanningtype <> '4' then
# Line 1661  begin Line 1513  begin
1513              end;              end;
1514            end            end
1515        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1516  (*  
       else if Pakketype = 'PakkeshopRetur' then  
           begin  
             if Scanningtype <> '6' then  
             begin  
               Scanningtype := '6';  
               InitReturFraPakkeshop();  
             end;  
           end  
 *)  
1517        else        else
1518            begin   // Her skal komme en alarm og rød skærm            begin
1519               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1520               List1msg := 'Pakken kan ikke scannes med automatisk valg';              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1521               ListBox1.Items.Insert(0,List1Msg);               VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1522               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  
1523               exit;               exit;
1524            end;            end;
1525        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1526      end      end
1527      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1528      begin      begin
1529        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1530        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  
1531        exit;        exit;
1532      end;      end;
1533    
# Line 1714  begin Line 1535  begin
1535      begin      begin
1536        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1537        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;  
   
 // 20150311: start  
 (*  
     if StregKode = 'Nulstil' then  
     begin  
        PakkeshopNulstil.Click();  
        exit;  
     end;  
   
     if PakkeshopNulstil.Visible then  
     begin  
        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;  
1538    
1539      if StregKode = 'Lille pakke' then          VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
     begin  
        InitLillePakke();  
        exit;  
     end;  
   
     if StregKode = 'Stor pakke' then  
     begin  
        InitStorPakke();  
        exit;  
     end;  
1540    
1541      if StregKode = 'Indtast kundenummer' then          exit;
1542      begin        end;
        if (CheckBox1.State = cbChecked) then  
        begin  
         CheckBox1.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox1.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
1543      end;      end;
1544    
     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  
1545    
1546    
1547      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
1548      begin      begin
1549        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
1550        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1551        begin        begin
1552          if (Stregkode=stregkoderMedTjekkodeArray[i]) then          if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1553          begin          begin
1554              CheckBox3.Checked := true;              chkScanTjekkode.Checked := true;
1555              Scanogstjekkoden1.Checked := true;              Scanogstjekkoden1.Checked := true;
1556          end;          end;
1557        end;        end;
# Line 1812  begin Line 1563  begin
1563             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1564             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1565             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1566             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1567             Stregkode := '';             Stregkode := '';
1568             InitScreen();             InitScreen();
1569        end        end
# Line 1824  begin Line 1575  begin
1575             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1576             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1577             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1578             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1579             Stregkode := '';             Stregkode := '';
1580             InitScreen();             InitScreen();
1581        end        end
# Line 1836  begin Line 1587  begin
1587              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1588              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1589              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1590  // 20150317: start  
1591              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1592  // 20150317: slut  
1593             end             end
1594            else            else
1595             begin             begin
1596                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;  
1597             end;             end;
1598            Stregkode := '';            Stregkode := '';
1599            InitScreen();            InitScreen();
# Line 1861  begin Line 1606  begin
1606             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1607             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1608             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1609                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1610             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1611                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1612             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1613           end           end
1614          else          else
1615           begin           begin
1616                if (PakkeshopLevering1.Checked) then                if (PakkeshopLevering1.Checked) then
1617                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1618                if (Pakkernormal1.Checked) then                if (Pakkernormal1.Checked) then
1619                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1620                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  
1621                StregKode := '';                StregKode := '';
1622                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1623  // 20150323: slut  
1624                exit;                exit;
1625           end;           end;
1626          Stregkode := '';          Stregkode := '';
# Line 1891  begin Line 1629  begin
1629    
1630      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
1631      begin      begin
1632    
1633         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1634            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1635         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 1642  begin
1642            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1643            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1644            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1645               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1646               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1647              exit;              exit;
1648            end;            end;
1649            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
# Line 1928  begin Line 1663  begin
1663              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1664              begin              begin
1665                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1666                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1667                MainForm.Color := clRed;                MainForm.Color := clRed;
1668              end;              end;
1669           end;           end;
1670            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
1671            begin            begin
1672              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1673              if Storepakker1.Checked then              if Storepakker1.Checked then
1674              begin              begin
1675                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1943  begin Line 1678  begin
1678              begin              begin
1679                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1680              end;              end;
1681              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1682            end            end
1683            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1684            begin            begin
1685              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1686              if Storepakker1.Checked then              if Storepakker1.Checked then
1687              begin              begin
1688                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1956  begin Line 1691  begin
1691              begin              begin
1692                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1693              end;              end;
1694              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1695            end            end
1696            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1697            begin            begin
1698              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;  
1699            end            end
1700            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1701            begin            begin
1702            end            end
1703            else            else
1704            begin            begin
1705              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1706            end;            end;
1707           if not PakkeshopNulstil.Visible then  
1708             if not btnNulstil.Visible then
1709            begin            begin
1710  // 20150310: start  
 //            SletStregkodelinieFraListboks2(StregKode);  
 // 20150310: slut  
1711              If (Budlevering1.Checked) then              If (Budlevering1.Checked) then
1712              begin              begin
1713                if Storepakker1.Checked then                if Storepakker1.Checked then
# Line 1993  begin Line 1721  begin
1721                InitLillePakke();                InitLillePakke();
1722              end;              end;
1723            end;            end;
1724  // 20150310: start  
1725            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1726  // 20150310: slut  
1727            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1728            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1729            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 2026  begin Line 1754  begin
1754    
1755    Key := #0;    Key := #0;
1756    
1757  end;  
1758    
1759    
1760    
1761    
1762    end; //End of OnKeyPress
1763    
1764    
1765    
1766  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1767  const  const
# Line 2063  end; Line 1798  end;
1798    
1799  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1800  var  var
 // 20150309: start  
 //  i:integer;  
1801    i : Integer;    i : Integer;
1802    wrkAntal : String;    wrkAntal : String;
1803    wrkAntalIdag, wrkAntalSenere : Integer;    wrkAntalIdag, wrkAntalSenere : Integer;
1804  // 20150309: slut  
1805    
1806  begin  begin
1807      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
1808      begin      begin
1809        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1810          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1811          begin          begin
1812  // 20150309: start  
1813            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1814            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1815            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1816            begin            begin
1817              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1818              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1819  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1820  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1821  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1822              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1823            end            end
1824            else     // kun idag            else     // kun idag
1825            begin            begin
# Line 2112  begin Line 1845  begin
1845            begin            begin
1846              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1847            end;            end;
 // 20150309: slut  
1848    
 // 20150310: start  
1849            if (Scanningtype = '1') then            if (Scanningtype = '1') then
1850            begin            begin
1851              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
# Line 2192  begin Line 1923  begin
1923                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1924              end;              end;
1925            end;            end;
1926  // 20150310: slut  
1927            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1928          end;          end;
1929      end;      end;
# Line 2219  begin Line 1950  begin
1950  end;  end;
1951    
1952  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1953    
1954  begin  begin
1955    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
# Line 2230  begin Line 1959  begin
1959    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1960    ListBox1.Visible := true;    ListBox1.Visible := true;
1961  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1962  // 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  
1963    if Budlevering1.Checked then    if Budlevering1.Checked then
1964    begin    begin
1965      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2283  begin Line 1972  begin
1972      01 :      01 :
1973            begin;      // NS            begin;      // NS
1974              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1975              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1976              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1977              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1978              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1979              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2297  begin Line 1986  begin
1986              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1987              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
1988              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1989              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1990              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1991              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1992              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1993              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1994              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1995              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2310  begin Line 1999  begin
1999              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2000             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2001              begin              begin
2002                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2003              end              end
2004              else              else
2005              begin              begin
2006                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2007              end;              end;
2008              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2009              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2010              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2011              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2012              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2335  begin Line 2024  begin
2024              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2025              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
2026              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2027              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
2028              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
2029              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2030              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2031              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2032              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2033            end;            end;
# Line 2354  var Line 2043  var
2043    URLStr : String;    URLStr : String;
2044    pakkestorrelse : String;    pakkestorrelse : String;
2045    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
2046    
2047      PakkeshopLabel: TPakkeshopLabel;
2048  begin  begin
2049    if RadioButton1.Checked then    if radioStorPakke.Checked then
2050    begin    begin
2051      pakkestorrelse := 'Stor';      pakkestorrelse := 'Stor';
2052    end;    end;
2053    if RadioButton2.Checked then    if radioLillePakke.Checked then
2054    begin    begin
2055      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
2056    end;    end;
2057    
2058    
2059    if Pakkernormal1.Checked then    if Pakkernormal1.Checked then
2060    begin    begin
2061       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
# Line 2391  begin Line 2084  begin
2084    begin    begin
2085       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2086    end    end
2087      else if menuIndlevering.Checked then
2088      begin
2089        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2090      end
2091    else    else
2092    begin    begin
2093      exit;      exit;
2094    end;    end;
2095    
2096      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2097      begin
2098        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2099      end;
2100    
2101    try    try
2102      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2103      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2416  begin Line 2119  begin
2119          end;          end;
2120      end;      end;
2121    end;    end;
2122    
2123    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2124    try    try
2125      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2425  begin Line 2129  begin
2129        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2130        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2131        PrintNyLabel := False;        PrintNyLabel := False;
2132  // 20150310: start  
2133        if Pakkeshoplevering1.Checked then        if Pakkeshoplevering1.Checked then
2134        begin        begin
 // 20150310: slut  
2135          try          try
2136            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2137          except on e:exception do          except on e:exception do
# Line 2438  begin Line 2141  begin
2141          begin          begin
2142            PrintNyLabel := True;            PrintNyLabel := True;
2143          end;          end;
 // 20150310: start  
2144        end;        end;
 // 20150310: slut  
2145       end       end
2146        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2147        begin
2148    
2149    
2150    
2151    
2152         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2153         if (Kommentar = 'Ok') then
2154         begin
2155           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2156           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2157           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2158           Stregkode := PakkeshopLabel.Stregkode;
2159    
2160           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2161           chkForstorTilDirekte.Checked := false;
2162    
2163         end;
2164    
2165    
2166        end
2167      else      else
2168       begin       begin
2169        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2474  begin Line 2196  begin
2196          PrintNyLabel := True;          PrintNyLabel := True;
2197        end;        end;
2198      end;      end;
2199    
2200    
2201      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2202      begin      begin
2203        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2514  begin Line 2238  begin
2238    if Pakkeshoplevering1.Checked then    if Pakkeshoplevering1.Checked then
2239      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2240    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2241    if RadioButton1.Checked then    if radioStorPakke.Checked then
2242    begin    begin
2243      List1Pakkestorrelse := 'Stor pakke';      List1Pakkestorrelse := 'Stor pakke';
2244    end;    end;
2245    if RadioButton2.Checked then    if radioLillePakke.Checked then
2246    begin    begin
2247      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2248    end;    end;
# Line 2540  begin Line 2264  begin
2264    if Budlevering1.Checked then    if Budlevering1.Checked then
2265    begin    begin
2266       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2267        if (RadioButton1.Checked) then        if (radioStorPakke.Checked) then
2268        begin        begin
2269          List1msg := List1msg + '; Stor pakke';          List1msg := List1msg + '; Stor pakke';
2270        end;        end;
2271        if (RadioButton2.Checked) then        if (radioLillePakke.Checked) then
2272        begin        begin
2273          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2274        end;        end;
# Line 2566  begin Line 2290  begin
2290        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2291      end;      end;
2292    end;    end;
2293      if menuIndlevering.Checked then
2294      begin
2295        List1Msg := Stregkode;
2296      end;
2297    
2298    
2299    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2300    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2301    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2302  end;  end;
2303    
2304  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2305  begin  begin
2306    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2307    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2588  pakkeForkertSted : Integer; Line 2318  pakkeForkertSted : Integer;
2318    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2319  begin  begin
2320    if Budlevering1.Checked then    if Budlevering1.Checked then
2321       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2322    
2323    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2324    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2601  begin Line 2331  begin
2331    end;    end;
2332    pakkeForkertSted := pos('burde være hos', Kommentar);    pakkeForkertSted := pos('burde være hos', Kommentar);
2333    
2334  // 20150306: start  
2335  //  if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) then    if Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then
2336    if Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) or (pakkeForkertSted > 0) ) then  
 // 20150306: slut  
2337    begin    begin
2338        if (RuteNummer = 'Ukendt') then        if (RuteNummer = 'Ukendt') then
2339        begin        begin
# Line 2631  begin Line 2360  begin
2360       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2361       begin       begin
2362          PrintNyLabel := false;          PrintNyLabel := false;
2363  // 20150306: start  
 //        PlaySound(PWideChar(AlarmLyd));  
2364          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2365          MainForm.Color := clRed;          MainForm.Color := clRed;
2366          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2367  // 20150306: slut  
2368       end       end
2369       else       else
2370       begin       begin
# Line 2646  begin Line 2374  begin
2374            PrintNyLabel := true;            PrintNyLabel := true;
2375            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2376            nyFarve := Farve;            nyFarve := Farve;
2377            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2378            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2379            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2380            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2381            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2382            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2383  // 20150213: start  
2384            if (PrinterNavn = 'Ingen') then            if (PrinterNavn = 'Ingen') then
2385            begin            begin
2386               PrintNyLabel := false;               PrintNyLabel := false;
2387            end;            end;
2388  // 20150313: slut  
 // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2389            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
2390            begin            begin
2391              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2392              MainForm.Color := clRed;              MainForm.Color := clRed;
2393              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2394            end;            end;
2395  // 20150306: slut  
2396         end;         end;
2397         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2398         if (kontrolKoreliste <> RuteNummer) then         if (kontrolKoreliste <> RuteNummer) then
# Line 2685  begin Line 2411  begin
2411            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2412            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2413            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2414  // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2415            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
2416            begin            begin
2417              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2418              MainForm.Color := clRed;              MainForm.Color := clRed;
2419              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2420            end;            end;
2421  // 20150306: slut  
 // 20150306: start  
 //       end  
 //       else  
 //       begin  
2422         end;         end;
2423       end;       end;
2424    
# Line 2715  begin Line 2436  begin
2436               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2437  // 20150304: slut  // 20150304: slut
2438                begin                begin
2439                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2440                end;                end;
2441              end;              end;
2442        01 :  begin;        01 :  begin;
2443               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2444                    // 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
2445                    // 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')
2446                begin                begin
2447                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2448                end;                end;
2449              end;              end;
2450        02 :  begin;        02 :  begin;
2451                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
2452                begin                begin
2453                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2454                end;                end;
2455              end;              end;
2456        03 :  begin;        03 :  begin;
2457               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2458                    // 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
2459                    // 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')
2460               begin               begin
2461                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2462               end;               end;
2463              end;              end;
2464        04 :  begin;        04 :  begin;
2465                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
2466                begin                begin
2467                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2468                end;                end;
2469              end;              end;
2470        else        else
# Line 2757  begin Line 2478  begin
2478      exit;      exit;
2479    end;    end;
2480    
2481    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and CheckBox1.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then    if Budlevering1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2482    begin    begin
2483    end    end
2484    else    else
2485    begin    begin
2486      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or CheckBox2.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then      if ( (PrinterNavn <> 'Ingen') and (PrintNyLabel or chkAltidPrintLabel.Checked) and (RuteNummer <> 'Ukendt') or (RuteNummer = 'Rutenr')) then
2487      begin      begin
2488        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2489        if (CheckBox2.Checked) then        if (chkAltidPrintLabel.Checked) then
2490        begin        begin
2491          logTekst := logTekst + 'Alle ';          logTekst := logTekst + 'Alle ';
2492        end        end
# Line 2779  begin Line 2500  begin
2500        end;        end;
2501        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2502        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2503        with Printer do  
2504        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2505          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;  
2506      end;      end;
2507    end;    end;
2508    
2509  end;  end;
2510    
 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;  
2511    
2512    
2513  procedure TMainForm.RadioButton1Click(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2514  begin  begin
2515      Storepakker1.Checked := true;      Storepakker1.Checked := true;
2516      RadioButton1.Checked := true;      radioStorPakke.Checked := true;
2517  end;  end;
2518    
2519  procedure TMainForm.RadioButton2Click(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2520  begin  begin
2521      Smpakker1.Checked := true;      Smpakker1.Checked := true;
2522      RadioButton2.Checked := true;      radioLillePakke.Checked := true;
2523  end;  end;
2524    
2525    
2526  procedure TMainForm.CheckBox1Click(Sender: TObject);  procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2527  begin  begin
2528    if CheckBox1.Checked then    if chkSporgEfterKunde.Checked then
2529    begin    begin
2530       Sprgefterboghandlernummer1.Checked := true;       Sprgefterboghandlernummer1.Checked := true;
2531    end    end
# Line 2875  begin Line 2536  begin
2536  end;  end;
2537    
2538    
2539  procedure TMainForm.CheckBox2Click(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2540  begin  begin
2541    if CheckBox2.Checked then    if chkAltidPrintLabel.Checked then
2542    begin    begin
2543       Altidprintepakkelabel1.Checked := true;       Altidprintepakkelabel1.Checked := true;
2544    end    end
# Line 2888  begin Line 2549  begin
2549    
2550  end;  end;
2551    
2552  procedure TMainForm.CheckBox3Click(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2553  begin  begin
2554    if CheckBox3.Checked then    if chkScanTjekkode.Checked then
2555    begin    begin
2556       Scanogstjekkoden1.Checked := true;       Scanogstjekkoden1.Checked := true;
2557    end    end
# Line 2912  begin Line 2573  begin
2573      Automatiskvalg1.Checked := false;      Automatiskvalg1.Checked := false;
2574      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2575      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2576  // 20150317: start  
2577      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
2578      or (SpecialVersionSted = '02')        or (SpecialVersionSted = '02')
2579      or (SpecialVersionSted = '03')        or (SpecialVersionSted = '03')
2580      or (SpecialVersionSted = '04') then        or (SpecialVersionSted = '04') then
2581      begin      begin
2582        // 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)
2583        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
# Line 2936  begin Line 2597  begin
2597    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2598    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...');
2599    
2600          // Tjekker urls    try
2601          logTekst := 'Tjekker urls.';      // Tjekker urls
2602          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2603          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2604        SkrivScanningLogFil(logTekst);
2605    
         // 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;  
2606    
         // 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;  
2607    
2608          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2609          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2610          begin      begin
2611            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2612            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;  
2613    
2614          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2615          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2616          begin      begin
2617            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2618            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;  
2619    
2620          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2621          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2622          begin      begin
2623            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2624            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;  
2625    
2626          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2627          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2628          begin      begin
2629            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2630            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;  
2631    
2632          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2633          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2634          or (PanelValg4.Enabled = true) then      begin
2635          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2636            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;  
2637    
2638          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2639          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2640          begin      begin
2641            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2642            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;  
2643    
2644          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2645          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2646          begin      begin
2647            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2648            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;  
2649    
2650          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2651          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2652          begin      begin
2653            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2654            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;  
2655    
2656  // 20150330: start      // Tjekker UrlPakkeshopManglendeReturScanninger
2657          // Tjekker UrlEKLoverforselPakkeshop      if PanelValg6.Enabled = true then
2658          if PanelValg5.Enabled = true then      begin
2659          begin        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2660            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  
2661    
2662          // Tjekker UrlFindPakketype     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2663          if CheckUrl(UrlFindPakketype) then      if PanelValg7.Enabled = true then
2664          begin      begin
2665            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2666            SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2667          end      end;
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlFindPakketype svarer ikke: ' + UrlFindPakketype;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2668    
2669          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforsel
2670          if CheckUrl(UrlSendPrograminfo) then      if PanelValg1.Enabled = true then
2671          begin      begin
2672            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2673            SkrivScanningLogFil(logTekst);      end;
         end  
         else  
         begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlSendPrograminfo svarer ikke: ' + UrlSendPrograminfo;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
         end;  
2674    
         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;  
2675    
2676        // Tjekker UrlEKLoverforselPakkeshop
2677        if PanelValg5.Enabled = true then
2678        begin
2679          TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2680        end;
2681    
2682    
2683        // Tjekker UrlFindPakketype
2684        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2685    
2686        // Tjekker UrlSendPrograminfo
2687        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2688    
2689    
2690    
2691        logTekst := 'urls er ok';
2692        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2693        SkrivScanningLogFil(logTekst);
2694    
2695      Except
2696        TjekUrls := '-';   // markerer at der var fejl
2697    
2698      end;
2699  end;  end;
2700    
2701  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2702  var  const
2703     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2704  begin  begin
2705     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2706     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2707     Result := SystemTimeToDateTime(SystemTime) ;    begin
2708        logTekst := UrlNavn + ' accepteret: ' + Url;
2709        SkrivScanningLogFil(logTekst);
2710      end
2711      else
2712      begin
2713        inc(urlFejl);   // Optæller antal fejl
2714        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2715        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2716        if TjekUrls = '1' then
2717        begin
2718          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2719        end;
2720    
2721        SkrivScanningLogFil(logTekst);
2722    
2723        if TjekUrls = '1' then
2724        begin
2725          ShowMessage(logTekst);
2726          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2727          Application.Terminate;
2728    
2729          raise Exception.Create('UrlFejl');
2730    
2731        end;
2732      end;
2733    
2734  end;  end;
2735    
2736    
2737    
2738  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2739  var  var
2740    SR: TSearchRec;    SR: TSearchRec;
# Line 3342  begin Line 2751  begin
2751      repeat      repeat
2752        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2753        begin        begin
2754    
2755          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2756          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2757          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2758          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2759          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2760          // (æ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 2791  begin
2791    end;    end;
2792  end;  end;
2793    
2794  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2795  begin  begin
2796    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2797    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2798    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2799    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2800    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2801    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3403  begin Line 2813  begin
2813  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2814    if Farve <> '' then    if Farve <> '' then
2815    begin    begin
2816       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  
2817    end;    end;
2818    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2819    begin    begin
# Line 3477  end; Line 2877  end;
2877    
2878  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2879  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;  
 *)  
2880  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2881  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2882       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2883       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2884       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2885  // 20150311: slut  
2886    
2887    
2888  end;  end;
2889    
2890  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3514  var Line 2901  var
2901    BoghandlerNavn : String;    BoghandlerNavn : String;
2902    Koreliste : String;    Koreliste : String;
2903    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2904    SmsKode : String;    SmsKode : String;
2905    DBKbane : String;    DBKbane : String;
2906    Leveringssted : String;    Leveringssted : String;
# Line 3536  begin Line 2922  begin
2922      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2923      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2924      MainForm.Color := clRed;      MainForm.Color := clRed;
2925      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2926    end    end
2927    else    else
2928    begin    begin
2929      Falsk := False;      Falsk := False;
2930      Sand := True;  
2931      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2932      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2933      SmsKode := '999999';      SmsKode := '999999';
# Line 3561  var Line 2947  var
2947    BoghandlerNavn : String;    BoghandlerNavn : String;
2948    Koreliste : String;    Koreliste : String;
2949    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2950    SmsKode : String;    SmsKode : String;
2951    DBKbane : String;    DBKbane : String;
2952    Leveringssted : String;    Leveringssted : String;
# Line 3570  begin Line 2955  begin
2955    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2956    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2957    Falsk := False;    Falsk := False;
   Sand := True;  
2958    
2959    if (Printer.Printers.Count = 0) then  
2960      if (LabelPrint.GetPrinterCount() = 0) then
2961    begin    begin
2962      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2963    end    end
# Line 3586  begin Line 2971  begin
2971      SmsKode := '999999';      SmsKode := '999999';
2972      DBKbane := '999';      DBKbane := '999';
2973      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2974      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      LabelPrint.TestZpl();
2975      CheckPrintQue('Test');      //PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2976        LabelPrint.CheckPrintQue('Test', PrinterNavn);
2977    end;    end;
2978    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2979  end;  end;
# Line 3596  procedure TMainForm.Timer1Timer(Sender: Line 2982  procedure TMainForm.Timer1Timer(Sender:
2982  begin  begin
2983    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2984    begin    begin
2985      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2986    end    end
2987    else    else
2988    begin    begin
# Line 3605  begin Line 2991  begin
2991    end;    end;
2992  end;  end;
2993    
2994  {  
  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;  
2995    
2996  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2997  const  const
# Line 3643  var Line 3000  var
3000   tekst, filversion : String;   tekst, filversion : String;
3001  begin  begin
3002    
3003    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
3004    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';
3005    
3006    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3665  begin Line 3022  begin
3022          end          end
3023          else          else
3024          begin          begin
3025            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3026          end;          end;
3027      end      end
3028      else      else
3029      begin      begin
3030        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3031      end;      end;
3032    end;    end;
3033    
# Line 3738  begin Line 3095  begin
3095    
3096    if FileExists(fileName) then    if FileExists(fileName) then
3097    begin    begin
3098      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3099      begin      begin
3100        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3101        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3762  begin Line 3119  begin
3119    
3120    if FileExists(fileName) then    if FileExists(fileName) then
3121    begin    begin
3122      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3123      begin      begin
3124        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3125        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3126      end      end
3127      else      else
3128      begin      begin
3129        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3130      end;      end;
3131    end    end
3132    else    else
# Line 3778  begin Line 3135  begin
3135    end;    end;
3136  end;  end;
3137    
3138    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3139    begin
3140      Scanningtype := '7';
3141      NulstilAutomatiskValg();
3142      InitIndleveringskode();
3143    end;
3144    
3145  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3146  begin  begin
3147    
3148    if Sprgefterboghandlernummer1.Checked then    if Sprgefterboghandlernummer1.Checked then
3149    begin    begin
3150       CheckBox1.Checked := true;       chkSporgEfterKunde.Checked := true;
3151    end    end
3152    else    else
3153    begin    begin
3154       CheckBox1.Checked := false;       chkSporgEfterKunde.Checked := false;
3155    end;    end;
3156    
3157    
# Line 3810  end; Line 3174  end;
3174  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3175  begin  begin
3176        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3177        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3178        Pakkernormal1.Checked := true;        Pakkernormal1.Checked := true;
3179        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3180        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3181        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3182        CheckBox1.Enabled := true;  
3183        CheckBox2.Enabled := true;        chkAltidPrintLabel.Enabled := true;
3184        Altidprintepakkelabel1.Enabled := true;        Altidprintepakkelabel1.Enabled := true;
3185        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3186        CheckBox2.Checked := false;        chkAltidPrintLabel.Checked := false;
3187        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3188        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3189        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3190        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3191        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3192        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3193        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3194        ListBox1.Visible := true;        ListBox1.Visible := true;
3195        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3196        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3197        InitLillePakke();        InitLillePakke();
3198        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3199    
3200          chkForstorTilDirekte.Checked := false;
3201          chkForstorTilDirekte.Enabled := false;
3202    
3203        if BladhusSted = 0 then        if BladhusSted = 0 then
3204        begin        begin
3205          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3843  procedure TMainForm.InitReturFraDao(); Line 3211  procedure TMainForm.InitReturFraDao();
3211  begin  begin
3212        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3213        ReturpakkerfraDAO1.Checked := true;        ReturpakkerfraDAO1.Checked := true;
3214        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3215        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3216        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3217        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3218        CheckBox1.Enabled := false;  
3219        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3220        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3221        CheckBox2.Checked := false;  
3222        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3223        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3224        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3225        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3226        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3227        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3228        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3229        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3230        ListBox1.Visible := true;        ListBox1.Visible := true;
3231        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3232        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3233        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3234    
3235          chkForstorTilDirekte.Checked := false;
3236          chkForstorTilDirekte.Enabled := false;
3237    
3238        InitLillePakke();        InitLillePakke();
3239  end;  end;
3240    
# Line 3870  procedure TMainForm.InitReturFraKunde(); Line 3242  procedure TMainForm.InitReturFraKunde();
3242  begin  begin
3243        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3244        Returpakkerfraboghandler1.Checked := true;        Returpakkerfraboghandler1.Checked := true;
3245        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3246        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3247        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3248        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3249        CheckBox1.Enabled := false;  
3250        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3251        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
       CheckBox2.Checked := false;  
3252        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3253        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3254        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3255        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3256        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3257        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3258        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3259        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3260        ListBox1.Visible := true;        ListBox1.Visible := true;
3261        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3262        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3263        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3264    
3265          chkForstorTilDirekte.Checked := false;
3266          chkForstorTilDirekte.Enabled := false;
3267    
3268        InitLillePakke();        InitLillePakke();
3269  end;  end;
3270    
# Line 3897  procedure TMainForm.InitDirektelevering( Line 3272  procedure TMainForm.InitDirektelevering(
3272  begin  begin
3273        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3274        Budlevering1.Checked := true;        Budlevering1.Checked := true;
3275        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3276        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3277        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3278        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3279        CheckBox1.Enabled := false;  
3280        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3281        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3282        CheckBox2.Checked := false;  
3283        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3284        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3285        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3286        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3287        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3288        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3289        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3290        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3291        ListBox1.Visible := true;        ListBox1.Visible := true;
3292        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3293        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3294        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3295        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3296        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3297        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3298        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3299    
3300          chkForstorTilDirekte.Checked := false;
3301          chkForstorTilDirekte.Enabled := true;
3302    
3303        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3304        begin        begin
3305            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3933  procedure TMainForm.InitPakkeshopleverin Line 3312  procedure TMainForm.InitPakkeshopleverin
3312  begin  begin
3313        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3314        Pakkeshoplevering1.Checked := true;        Pakkeshoplevering1.Checked := true;
3315        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3316        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3317        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3318        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3319        CheckBox1.Enabled := false;  
3320        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3321        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3322        CheckBox2.Checked := false;  
3323        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3324        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3325        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3326        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3327        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3328        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3329        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3330        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3331        ListBox1.Visible := true;        ListBox1.Visible := true;
3332        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3333        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3334        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3335  // 20150330: start  
3336  //      EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := true;
3337        EKLoverforsel.Enabled := true;  
3338  // 20150330: slut        chkForstorTilDirekte.Checked := false;
3339          chkForstorTilDirekte.Enabled := true;
3340    
3341        InitLillePakke();        InitLillePakke();
3342        IndlesScanningLogFil();        IndlesScanningLogFil();
3343        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3971  procedure TMainForm.InitReturFraPakkesho Line 3352  procedure TMainForm.InitReturFraPakkesho
3352  begin  begin
3353        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3354        Returpakkerfrapakkeshop1.Checked := true;        Returpakkerfrapakkeshop1.Checked := true;
3355        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3356        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3357        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3358        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3359        CheckBox1.Enabled := false;  
3360        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3361        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3362        CheckBox2.Checked := false;  
3363        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3364        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3365        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3366        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3367        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3368        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3369        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3370        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3371        ListBox1.Visible := true;        ListBox1.Visible := true;
3372        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3373        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3374        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3375        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3376    
3377          chkForstorTilDirekte.Checked := false;
3378          chkForstorTilDirekte.Enabled := false;
3379    
3380    
3381        InitLillePakke();        InitLillePakke();
3382        IndlesScanningLogFil();        IndlesScanningLogFil();
3383        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4011  end; Line 3397  end;
3397    
3398  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3399  begin  begin
3400          menuIndlevering.Checked := true;
3401        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3402        Returpakkerfrapakkeshop1.Checked := true;  
3403        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3404        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3405        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3406        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3407        CheckBox1.Enabled := false;  
3408        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3409        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3410        CheckBox2.Checked := false;  
3411        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3412        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
       CheckBox1.Checked := false;  
3413        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3414          chkSporgEfterKunde.Checked := false;
3415    
3416    
3417    
3418        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3419        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3420        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3421        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3422        ListBox1.Visible := true;        ListBox1.Visible := true;
3423        ListBox1.Items.Clear;        ListBox1.Items.Clear();
3424        DownloadButton01.Enabled := false;  
3425        OpdaterListenButton01.Enabled := true;        BtnDownloadKontrolfil.Enabled := false;
3426        EKLoverforsel.Enabled := false;        BtnOpdaterListen.Enabled := true;
3427          BtnEKLoverforsel.Enabled := false;
3428    
3429          chkForstorTilDirekte.Checked := false;
3430          chkForstorTilDirekte.Enabled := false;
3431    
3432    
3433        InitLillePakke();        InitLillePakke();
3434        IndlesScanningLogFil();        IndlesScanningLogFil();
3435        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4057  end; Line 3453  end;
3453    
3454  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3455  begin  begin
3456    RadioButton2.Checked := true;    radioLillePakke.Checked := true;
3457    Smpakker1.Checked := true;    Smpakker1.Checked := true;
 // 20150310: start  
3458  //  Stregkode := '';  //  Stregkode := '';
 // 20150310: slut  
3459  end;  end;
3460    
3461  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3462  begin  begin
3463    RadioButton1.Checked := true;    radioStorPakke.Checked := true;
3464    Storepakker1.Checked := true;    Storepakker1.Checked := true;
3465  // 20150310: start  // 20150310: start
3466  //  Stregkode := '';  //  Stregkode := '';
3467  // 20150310: slut  // 20150310: slut
3468  end;  end;
3469    
 /// <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]]);  
3470    
     // 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;  
3471    
3472  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3473  begin  begin
# Line 4163  end; Line 3492  end;
3492    
3493  procedure TMainForm.Testlyd2Click(Sender: TObject);  procedure TMainForm.Testlyd2Click(Sender: TObject);
3494  begin  begin
 // 20150317: start  
3495    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3496    begin    begin
3497       if ScannetOkTilTjekkodeLyd  <> '' then       if ScannetOkTilTjekkodeLyd  <> '' then
# Line 4176  begin Line 3504  begin
3504       end;       end;
3505       exit;       exit;
3506    end;    end;
 // 20150317: slut  
3507    
3508    if Smpakker1.Checked then    if Smpakker1.Checked then
3509       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
# Line 4185  begin Line 3512  begin
3512       end       end
3513       else       else
3514       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);  
3515         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3516       end;       end;
3517    if Storepakker1.Checked then    if Storepakker1.Checked then
3518       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
# Line 4197  begin Line 3521  begin
3521       end       end
3522       else       else
3523       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);  
3524         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3525       end;       end;
3526  end;  end;
3527    
# Line 4217  begin; Line 3538  begin;
3538    CheckCode();    CheckCode();
3539  end;  end;
3540    
3541  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3542  var  var
3543    WebSvar : String;    WebSvar : String;
3544    URLStr : String;    URLStr : String;
# Line 4227  var Line 3548  var
3548    status, kommentar : String;    status, kommentar : String;
3549    
3550  begin  begin
3551      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3552    
3553      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');
3554      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3555      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3556      StedKode := Sted;      StedKode := Sted;
3557      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3558  // 20150330: start  
3559      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3560      begin      begin
3561        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3562      end;      end;
3563  // 20150330: slut  
3564    
3565      try      try
3566      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4290  begin Line 3611  begin
3611        end;        end;
3612      end;      end;
3613    
3614      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3615    
3616      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
3617    
# Line 4307  begin Line 3628  begin
3628           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3629         end;         end;
3630         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3631         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3632      end;      end;
3633    
3634  end;  end;
# Line 4331  begin Line 3652  begin
3652    else    else
3653      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3654  }  }
3655    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3656    
3657    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3658    CheckCode();    CheckCode();
# Line 4339  end; Line 3660  end;
3660    
3661  end;  end;
3662    
 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;  
3663    
3664  //  //
3665  // Bladhus ***  // Bladhus ***
# Line 4855  begin Line 4137  begin
4137    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
4138  end;  end;
4139    
4140  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4141  begin  begin
4142      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4143      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
4144  end;  end;
4145    
4146  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4147  const  const
4148    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4149    
# Line 4870  begin Line 4152  begin
4152      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
4153  end;  end;
4154    
4155  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4156  begin  begin
4157      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4158      begin      begin
# Line 4879  begin Line 4161  begin
4161      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
4162  end;  end;
4163    
4164  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;  
4165    
4166  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4167  var  var
# Line 4903  var Line 4173  var
4173    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4174    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4175    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4176    pakketyper : TStrings;    //pakketyper : TStrings;
4177      pakketyper : TDictionary<String, Integer>;
4178      tmpAntal : Integer;
4179    
4180    
4181    
4182    antlin : Integer;    antlin : Integer;
4183  // 20150306: start  
4184    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4185  // 20150306: slut  
4186    XmlFelter : TStrings;    //XmlFelter : TStrings;
4187      XmlFelter : TDictionary<String, Integer>;
4188    
4189   begin   begin
4190      XmlFelter := TStringList.Create;  
4191      pakketyper := TStringList.Create;  
4192        XmlFelter := TDictionary<String, Integer>.Create;
4193        pakketyper := TDictionary<String, Integer>.Create;
4194    
4195      linienr := 0;      linienr := 0;
4196      ListBox2.Clear;      ListBox2.Clear;
4197      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 4927  var Line 4206  var
4206          StedKode := Sted;          StedKode := Sted;
4207        end;        end;
4208    
4209  // 20150310: start        Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4210  (*  
4211      if Returpakkerfrapakkeshop1.Checked then  
4212       begin  
4213        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);      if (Scanningtype = '7') then
      end  
     else if Pakkeshoplevering1.Checked then  
4214       begin       begin
4215        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4216       end       end
4217      else if Pakkernormal1.Checked then      else if (Scanningtype = '6') then
4218       begin       begin
4219        URLStr := Format(UrlManglendeScanninger,[StedKode,'B2']);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
      end  
     else  
      begin  
       URLStr := Format(UrlManglendeScanninger,[StedKode,'A2']);    // Budleveringer  
      end;  
 *)  
     if (Scanningtype = '6') then  
      begin  
       URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);  
4220       end       end
4221      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4222       begin       begin
4223        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4224       end       end
4225      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4226       begin       begin
# Line 4989  var Line 4257  var
4257      try      try
4258        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4259    
4260  // 20150206: start  
4261        antlin := 0;        antlin := 0;
4262        antlinIdag := 0;        antlinIdag := 0;
4263        antlinSenere := 0;        antlinSenere := 0;
4264  // 20150306: slut  
       antalFelterFundet := 0;  
4265        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4266            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4267            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4268              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4269              begin              begin
4270                 antlin := antlin + 1;                 Inc(antlin);
4271                 // 20150306: start                 // 20150306: start
4272                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4273                begin                begin
4274                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4275                   begin                   begin
4276                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4277                   end                   end
4278                   else                   else
4279                   begin                   begin
4280                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4281                   end;                   end;
4282                end;                end;
4283                 // 20150306: slut                 // 20150306: slut
4284              end;              end;
4285            end;            end;
4286            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4287                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4288                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4289                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4290                  end
4291                else                else
4292                  XmlFelter.values[Node.NodeName] := '1';                begin
4293                    XmlFelter.Add(Node.NodeName, 1);
4294                  end;
4295    
4296        end;        end;
4297        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
4298        antalFelterFundet := 0;        antalFelterFundet := 0;
4299        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4300        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4301  // 20150206: start  
4302  //      logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';  
4303          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4304    
4305        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4306        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4307        begin        begin
4308          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4309        end;        end;
4310        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4311  // 20150306: slut  
4312        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4313    
4314    
4315        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4316            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4317            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 5043  var Line 4319  var
4319                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4320                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4321                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4322              end;              end
4323              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4324                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4325                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4326                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4327              end;              end
4328              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4329                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4330                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4331                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4332              end;              end
4333              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4334                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4335                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4336                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4337              end;              end
4338              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4339                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4340                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4341                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4342                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4343                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4344                    pakketyper.TryGetValue(pakketype, tmpAntal);
4345                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4346                  end
4347                else                else
4348                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4349              end;              end
4350              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4351                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4352                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4353                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4354                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4355                  begin                  begin
4356  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4357                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4358                    begin                    begin
4359                      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
4360                    end                    end
4361                    else                    else
4362                    begin                    begin
4363                      stregkoderMedTjekkodeArray[linienr] := stregkode;                      stregkoderMedTjekkodeArray[linienr] := stregkode;
4364                    end;                    end;
4365  // 20150306: slut                    linienr := linienr + 1;
                     linienr := linienr + 1;  
4366                  end;                  end;
4367              end;              end;
4368    
4369    
4370              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4371              begin              begin
4372                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 5103  var Line 4382  var
4382              end;              end;
4383            end;            end;
4384        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4385    
4386          // Free up the list object  
4387          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4388    
4389    
4390          for pakketype in pakketyper.Keys do
4391          begin
4392            pakketyper.TryGetValue(pakketype, tmpAntal);
4393            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4394          end;
4395    
4396            // Free up the dictionary object
4397        pakketyper.Free;        pakketyper.Free;
4398  // 20150306: start  
4399    
4400    
4401  //      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.');
4402        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4403        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5119  var Line 4406  var
4406        end;        end;
4407        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4408        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
 // 20150306: slut  
 // 20150309: start  
4409        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4410        begin        begin
4411          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
# Line 5129  var Line 4414  var
4414        begin        begin
4415          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4416        end;        end;
 // 20150309: slut  
4417    
 // 20150310: start  
4418        if (Scanningtype = '1') then        if (Scanningtype = '1') then
4419        begin        begin
4420          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal
# Line 5210  var Line 4493  var
4493            PanelManglendePakker6.Visible := false;            PanelManglendePakker6.Visible := false;
4494          end;          end;
4495        end;        end;
 // 20150310: slut  
4496    
4497      except on e:exception do      except on e:exception do
4498        begin        begin
# Line 5272  end; Line 4554  end;
4554  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4555  var  var
4556     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4557     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4558     imorgenYmd : string;     imorgenYmd : string;
4559     logFilnavn : string;     logFilnavn : string;
4560      error : Integer;     //error : Integer;
4561    
4562  begin  begin
4563    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5369  begin Line 4649  begin
4649          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4650          S := buffer;          S := buffer;
4651          SetLength(A,0);          SetLength(A,0);
4652          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4653          if (length(A) < 2) then          if (length(A) < 2) then
4654          begin          begin
4655            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4656          end;          end;
4657            if (length(A) > 1) then            if (length(A) > 1) then
4658            begin            begin
# Line 5446  begin Line 4726  begin
4726          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4727          S := buffer;          S := buffer;
4728          SetLength(A,0);          SetLength(A,0);
4729          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4730          if (length(A) < 3) then          if (length(A) < 3) then
4731          begin          begin
4732            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4733          end;          end;
4734          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4735          begin          begin
# Line 5541  begin Line 4821  begin
4821    result := svar;    result := svar;
4822  end;  end;
4823    
4824    procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4825    begin
4826      //ShowMessage('Ændring ikke tilladt');
4827      // Her skal komme en 'rød skærm' alarm
4828      PlaySound(PWideChar(AlarmLyd));
4829      MainForm.Color := clRed;
4830    
4831    
4832      RuteNummerST.Caption := '';
4833      BoghandlerNavnST.Caption := '';
4834      btnNulstil.Visible := true;
4835    
4836      if (strMessage <> '') then
4837      begin
4838        ListBox1.Items.Insert(0, strMessage);
4839        KommentarST.Caption := strMessage;
4840      end;
4841    
4842      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4843    
4844    end;
4845    
4846  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
4847  var  var
4848     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
# Line 5598  begin Line 4900  begin
4900    result := svar;    result := svar;
4901  end;  end;
4902    
 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;  
4903    
4904  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4905  begin  begin
4906    if Scanogstjekkoden1.Checked then    if Scanogstjekkoden1.Checked then
4907    begin    begin
4908       CheckBox3.Checked := true;       chkScanTjekkode.Checked := true;
4909    end    end
4910    else    else
4911    begin    begin
4912       CheckBox3.Checked := false;       chkScanTjekkode.Checked := false;
4913    end;    end;
4914  end;  end;
4915    
4916  function TMainForm.AdobeReaderExists: Boolean;  
4917  var  //Nedarvet fra IParentForm
4918    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4919  begin  begin
4920    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4921  end;  end;
4922    
4923  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4924  type  procedure TMainForm.LogMessage( msg : string);
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
4925  begin  begin
4926      ListBox1.Items.Insert(0, msg);
4927      SkrivScanningLogFil(msg);
4928    end;
4929    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4930    
4931    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4932    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4933      printerTxt := 'Der er fravalgt printer i dette program';  begin
4934      ListBox1.Items.Insert(0,printerTxt);  
4935      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4936    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4937    begin    begin
4938      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4939      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4940      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4941    end    end
4942    else    else
4943    begin    begin
4944      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4945      try      PrinterstatusStaticText1.Color := clWhite;
4946        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;  
4947    end;    end;
4948  end;  end;
4949    
4950  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4951  var  function TMainForm.GetFormObject() : TForm;
   hSession, hfile, hRequest: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
   
 end;  
   
 // 20150310: start  
 procedure TMainForm.RoundCornerOf(Control: TWinControl);  
 var  
    R: TRect;  
    Rgn: HRGN;  
4952  begin  begin
4953     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;  
4954  end;  end;
 // 20150310: slut  
4955    
4956  end.  end.
4957    

Legend:
Removed from v.2650  
changed lines
  Added in v.3038

  ViewVC Help
Powered by ViewVC 1.1.20