/[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 3046 by torben, Mon Jun 13 08:29:35 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;
     KommentarST: TStaticText;  
42      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
43      N1: TMenuItem;      N1: TMenuItem;
44      Pakkernormal1: TMenuItem;      Pakkernormal1: TMenuItem;
# Line 36  type Line 53  type
53      Lukprogrammet1: TMenuItem;      Lukprogrammet1: TMenuItem;
54      N2: TMenuItem;      N2: TMenuItem;
55      N3: TMenuItem;      N3: TMenuItem;
56      RadioButton1: TRadioButton;      radioStorPakke: TRadioButton;
57      RadioButton2: TRadioButton;      radioLillePakke: TRadioButton;
58      N4: TMenuItem;      N4: TMenuItem;
59      Storepakker1: TMenuItem;      Storepakker1: TMenuItem;
60      Smpakker1: TMenuItem;      Smpakker1: TMenuItem;
# Line 47  type Line 64  type
64      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
65      ListBox1: TListBox;      ListBox1: TListBox;
66      Budlevering1: TMenuItem;      Budlevering1: TMenuItem;
67      DownloadButton01: TButton;      BtnDownloadKontrolfil: TButton;
68      IdFTP1: TIdFTP;      IdFTP1: TIdFTP;
69      Image1: TImage;      Image1: TImage;
70      ListBox2: TListBox;      ListBox2: TListBox;
71      OpdaterListenButton01: TButton;      BtnOpdaterListen: TButton;
72      UploadButton01: TButton;      BtnUploadLogfil: TButton;
73      DownloadButton03: TButton;      BtnDownloadRuteskiftFil: TButton;
74      Pakkeshoplevering1: TMenuItem;      Pakkeshoplevering1: TMenuItem;
75      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
76      PakkeshopNulstil: TButton;      btnNulstil: TButton;
77      Returpakkerfrapakkeshop1: TMenuItem;      Returpakkerfrapakkeshop1: TMenuItem;
78      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
79      CheckBox2: TCheckBox;      chkAltidPrintLabel: TCheckBox;
80      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
81      N5: TMenuItem;      N5: TMenuItem;
82      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
83      Manual1: TMenuItem;      Manual1: TMenuItem;
84      PrinterstatusStaticText1: TStaticText;      PrinterstatusStaticText1: TStaticText;
85      Timer1: TTimer;      Timer1: TTimer;
86      CheckBox3: TCheckBox;      chkScanTjekkode: TCheckBox;
87      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
88      Automatisktjekkodestyring1: TMenuItem;      Automatisktjekkodestyring1: TMenuItem;
89      Automatiskvalg1: TMenuItem;      Automatiskvalg1: TMenuItem;
# Line 77  type Line 94  type
94      PanelValg4: TPanel;      PanelValg4: TPanel;
95      PanelValg5: TPanel;      PanelValg5: TPanel;
96      PanelValg6: TPanel;      PanelValg6: TPanel;
97        PanelValg7: TPanel;
98      Manualgenerel1: TMenuItem;      Manualgenerel1: TMenuItem;
99      StaticTextManglendePakker: TStaticText;      StaticTextManglendePakker: TStaticText;
100      PanelManglendePakker1: TPanel;      PanelManglendePakker1: TPanel;
# Line 85  type Line 103  type
103      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
104      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
105      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
106      PanelValg7: TPanel;      menuIndlevering: TMenuItem;
107        chkForstorTilDirekte: TCheckBox;
108        chkEmballageRepareret: TCheckBox;
109        KommentarST: TLabel;
110    
111    
112    
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
113    function getProddato() : TDate;    function getProddato() : TDate;
114    function getProddag() : String;    function getProddag() : String;
115    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
   function AdobeReaderExists(): Boolean;  
   function FileTime2DateTime(FileTime: TFileTime): TDateTime;  
   function split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
116    
117    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
118    procedure StartScreen();    procedure StartScreen();
# Line 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    
204    
     procedure PanelValg7Click(Sender: TObject);  
 // 20150310: slut  
205    
206    private    private
207      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder
# Line 188  type Line 209  type
209      SkrivLog : String;      SkrivLog : String;
210      Sted : String;      Sted : String;
211      StedNavn : String;      StedNavn : String;
212      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
213  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
214                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
215    
216      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
217  // 20150330: slut  
218      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
219      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
220      ScanTjekkode : String;      ScanTjekkode : String;
221      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
222      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop : String;  
223      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
224      LabelType : integer;            FarveIndlevering : String;
225    
226        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
227              TitelIndlevering : String;
228    
229      AlarmLyd : String;      AlarmLyd : String;
230      ScannetOkLyd : String;      ScannetOkLyd : String;
231      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
232  // 20150317: start  
233      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
234  // 20150317: slut  
235      PrinterNavn : String;      PrinterNavn : String;
236      TjekPrinter : String;      TjekPrinter : String;
237      XPosRute : integer;  
     YPosRute : integer;  
     FontSizeRute : integer;  
     FontSizeRuteLille : integer;  
     XPosKommentar : integer;  
     YPosKommentar : integer;  
     FontSizeKommentar : integer;  
     XPosBoghandler : integer;  
     YPosBoghandler : integer;  
     FontSizeBoghandler : integer;  
     XPosKoreliste : integer;  
     YPosKoreliste : integer;  
     FontSizeKoreliste : integer;  
     FontSizeKorelisteLille : integer;  
     XPosSorteringsfelt1 : integer;  
     YPosSorteringsfelt1 : integer;  
     FontSizeSorteringsfelt1 : integer;  
     XPosSorteringsfelt2 : integer;  
     YPosSorteringsfelt2 : integer;  
     FontSizeSorteringsfelt2 : integer;  
     XPosSmskode : integer;  
     YPosSmskode : integer;  
     FontSizeSmskode : integer;  
238      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
239      BladhusSted : Integer;      BladhusSted : Integer;
240      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 242  type Line 247  type
247      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
248      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
249      TjekUrls : String;      TjekUrls : String;
250        Config : TConfiguration;
251    
252            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
253        LabelPrint: TLabelPrint;
254    
255      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
256      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
257      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
258      procedure CheckCode();      procedure CheckCode();
259      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 255  type Line 262  type
262      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
263      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
264      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
265        procedure VisAlarmSkaerm(strMessage: string);
266        function InjectURL(Url : String) : String;
267    
268    public    public
269      { Public declarations }      { Public declarations }
270    end;    end;
271    
272    
273  var  var
274    MainForm: TMainForm;    MainForm: TMainForm;
275    
# Line 273  var Line 283  var
283  implementation  implementation
284  {$R *.dfm}  {$R *.dfm}
285    
286  function TMainForm.TColorToHex(Color : TColor) : string;  
287  begin  //FormCreate kaldes før InitForm
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
288    
289  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
290  begin  begin
291    
 // 20150309: startr  
292      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
293  // 20150309: slut  
294    
295      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
296      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 340  begin Line 334  begin
334        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
335      end;      end;
336    
337      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
338    
339      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
340      begin      begin
# Line 368  begin Line 362  begin
362        else if (Sted = 'BR') then        else if (Sted = 'BR') then
363          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
364        else if (Sted = 'BK') then        else if (Sted = 'BK') then
365          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
366          else if (Sted = 'TK') then
367            begin StedNavn := 'BK/Trykkompagniet: '; end
368        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
369          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
370        else if (Sted = '1') then        else if (Sted = '1') then
371          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
372        else if (Sted = '2') then        else if (Sted = '2') then
# Line 394  begin Line 390  begin
390    
391      StartScreen();      StartScreen();
392      MainForm.Caption := Titel;      MainForm.Caption := Titel;
393      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
394      MainForm.Farve := Farve;      MainForm.Farve := Farve;
395      MainForm.Titel := Titel;      MainForm.Titel := Titel;
396      MainForm.Url := Url;      MainForm.Url := Url;
# Line 409  begin Line 405  begin
405      else      else
406        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
407    
408      CheckBox3.Checked := false;      chkScanTjekkode.Checked := false;
409      CheckBox3.Enabled := false;      chkScanTjekkode.Enabled := false;
410      Scanogstjekkoden1.Enabled := false;      Scanogstjekkoden1.Enabled := false;
411    
412      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
413      begin      begin
414        if (ScanTjekkode = '1') then        if (ScanTjekkode = '1') then
415        begin        begin
416          CheckBox3.Checked := true;          chkScanTjekkode.Checked := true;
417          CheckBox3.Enabled := true;          chkScanTjekkode.Enabled := true;
418          Scanogstjekkoden1.Enabled := true;          Scanogstjekkoden1.Enabled := true;
419        end        end
420        else        else
421        begin        begin
422          CheckBox3.Checked := false;          chkScanTjekkode.Checked := false;
423          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
424          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
425        end;        end;
426      end;      end;
427    
428      if Automatisktjekkodestyring1.Checked then      if Automatisktjekkodestyring1.Checked then
429      begin      begin
430        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
431        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
432      end;      end;
433    
# Line 454  begin Line 450  begin
450          end          end
451          else          else
452          begin          begin
453            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
454          end;          end;
455          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
456        end        end
457        else        else
458        begin        begin
459          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
460          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
461        end;        end;
462      end;      end;
463    
464    
465  end;  end;
466    
467  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 472  begin Line 469  begin
469    
470    if Altidprintepakkelabel1.Checked then    if Altidprintepakkelabel1.Checked then
471    begin    begin
472       CheckBox2.Checked := true;       chkAltidPrintLabel.Checked := true;
473    end    end
474    else    else
475    begin    begin
476       CheckBox2.Checked := false;       chkAltidPrintLabel.Checked := false;
477    end;    end;
478    
479  end;  end;
# Line 490  procedure TMainForm.Automatisktjekkodest Line 487  procedure TMainForm.Automatisktjekkodest
487  begin  begin
488    if Automatisktjekkodestyring1.Checked then    if Automatisktjekkodestyring1.Checked then
489    begin    begin
490       CheckBox3.Enabled := false;       chkScanTjekkode.Enabled := false;
491       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
492    end    end
493    else    else
494    begin    begin
495       CheckBox3.Enabled := true;       chkScanTjekkode.Enabled := true;
496       Scanogstjekkoden1.Enabled := true;       Scanogstjekkoden1.Enabled := true;
497    end;    end;
498    
# Line 503  end; Line 500  end;
500    
501  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
502  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
503  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
504  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
505       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
506       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
507       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
508  end;  end;
509    
510    function TMainForm.InjectURL(Url : String) : String;
511    begin
512    
513      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
514      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
515      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
516    
517      Result := Url;
518    end;
519    
520    //InitForm kaldes før FormCreate
521  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
522  const  const
523    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
524  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
525    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
526    
527  begin  begin
528    
529    
530    // Initierer nogle variabler    // Initierer nogle variabler
531    BladhusSted := 00;    BladhusSted := 00;
532    Application.ShowHint := True;    Application.ShowHint := True;
533    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
534    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
535  // 20150306: start  
536    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
537  // 20150306: slut  
538  // 20150310: start    TUtils.RoundCornerOf(PanelManglendePakker1);
539    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker2);
540    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker3);
541    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker4);
542    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker5);
543    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker6);
544    RoundCornerOf(PanelManglendePakker6);  
 // 20150310: slut  
545    
546    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
547    if DirectoryExists('Docs') then    if DirectoryExists('Docs') then
# Line 565  begin Line 554  begin
554    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
555    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
556    
557      Config := TConfiguration.Create();
558      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
559      Config.Sted := Sted;
560    
561    // Læser parametre fra ini filen    // Læser parametre fra ini filen
562    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
563    try    try
564    
565    
566      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
567      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
568      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
569    
570      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
571        UrlFindPakketype := InjectURL(UrlFindPakketype);
572    
573      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
574        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
575    
576      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
577        UrlNormal := InjectURL(UrlNormal);
578    
579      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
580        UrlReturDAO := InjectURL(UrlReturDAO);
581    
582      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
583        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
584    
585      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
586        UrlBudlevering := InjectURL(UrlBudlevering);
587    
588      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
589        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
590    
591      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
592  // 20150330: start      UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
593    
594      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
595  // 20150330: slut      UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
596    
597      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
598        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
599    
600      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
601        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
602    
603      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
604        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
605    
606      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
607      LabelType := ReadInteger('Settings','LabelType',1);      UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
608    
609        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
610        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
611    
612        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
613        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
614    
615        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
616        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
617    
618    
619    
620      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
621      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
622      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 597  begin Line 627  begin
627      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
628      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
629      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
630    
631      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
632      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
633    
634        FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');
635        TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');
636    
637    
638      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
639      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
640      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
# Line 608  begin Line 644  begin
644      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
645      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
646      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
647  // 20150317: start  
648      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
649  // 20150317: slut  
650      PrinterNavn := ReadString('Settings','PrinterNavn','');      PrinterNavn := ReadString('Settings','PrinterNavn','');
651      TjekPrinter := ReadString('Settings','TjekPrinter','1');      TjekPrinter := ReadString('Settings','TjekPrinter','1');
652      TjekUrls := ReadString('Settings','TjekUrls','2');      TjekUrls := ReadString('Settings','TjekUrls','2');
653    
654      if (SkrivLog = '1') then      if (SkrivLog = '1') then
655      begin      begin
656        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
657        try        try
658          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
659          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
660          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
661          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
662          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
663          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 639  begin Line 675  begin
675        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
676      end;      end;
677    
678      if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
679    
680      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
681      begin      begin
682        CheckBox1.Checked := true;        chkSporgEfterKunde.Checked := true;
683        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
684      end      end
685      else      else
686      begin      begin
687        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
688        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
689      end;      end;
690    
691      if ScanTjekkode = '1' then      if ScanTjekkode = '1' then
692      begin      begin
693        CheckBox3.Checked := true;        chkScanTjekkode.Checked := true;
694        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
695      end      end
696      else      else
697      begin      begin
698        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
699        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
700      end;      end;
701    
702      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
703      begin      begin
704        Automatisktjekkodestyring1.Checked := true;        Automatisktjekkodestyring1.Checked := true;
705        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
706        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
707      end;      end;
708    
# Line 760  begin Line 728  begin
728      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
729      // *************************** //      // *************************** //
730    
731    {$IfDef STED_BK}
732        SpecialVersionSted := 'BK';
733    {$EndIf}
734    {$IfDef STED_TK}
735        SpecialVersionSted := 'TK';// BK-Trykkompagniet
736    {$EndIf}
737    {$IfDef STED_DBK}
738        SpecialVersionSted := 'DBK';
739    {$EndIf}
740    {$IfDef STED_FD}
741        SpecialVersionSted := 'FD';
742    {$EndIf}
743    {$IfDef STED_NS}
744        SpecialVersionSted := 'NS';
745    {$EndIf}
746    
747      //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'; // Fra før NS overtog scanning løssalg
765         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
766    
767          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
768          Sted := SpecialVersionSted;
769         // her skal vi også disable de knapper BK ikke kan bruge
770          PanelValg2.Enabled := false;
771          PanelValg2.Font.Color := clInactiveCaption;
772          PanelValg3.Enabled := false;
773          PanelValg3.Font.Color := clInactiveCaption;
774          //PanelValg6.Enabled := false;
775          //PanelValg6.Font.Color := clInactiveCaption;
776    
777         // her skal vi også disable de menupunkter FD ikke kan bruge
778          ReturpakkerfraDAO1.Enabled := false;
779          Returpakkerfraboghandler1.Enabled := false;
780    
781          //Returpakkerfrapakkeshop1.Enabled := false;
782      end;      end;
783    
784      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
785      begin      begin
786         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
787         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
788    
789    
790          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
791          Sted := SpecialVersionSted;
792         // her skal vi også disable de knapper BK ikke kan bruge
793          PanelValg2.Enabled := false;
794          PanelValg2.Font.Color := clInactiveCaption;
795          PanelValg3.Enabled := false;
796          PanelValg3.Font.Color := clInactiveCaption;
797          //PanelValg6.Enabled := false;
798          //PanelValg6.Font.Color := clInactiveCaption;
799    
800         // her skal vi også disable de menupunkter FD ikke kan bruge
801          ReturpakkerfraDAO1.Enabled := false;
802          Returpakkerfraboghandler1.Enabled := false;
803    
804          //Returpakkerfrapakkeshop1.Enabled := false;
805    
806      end;      end;
 // 20150313: slut  
807    
808      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
809      begin      begin
810        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
811        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 797  begin Line 814  begin
814        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
815        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
816        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
817        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
818        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
819    
820       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
821        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
822        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
823        Returpakkerfrapakkeshop1.Enabled := false;  
824          //Returpakkerfrapakkeshop1.Enabled := false;
825    
826        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
827        begin        begin
828           Scanningtype := '1';           Scanningtype := '1';
# Line 826  begin Line 846  begin
846        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
847        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
848        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
849    
850    
851       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
852        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
853        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
854  // 20150317: start  
855        Pakkeshoplevering1.Enabled := false;        Pakkeshoplevering1.Enabled := false;
856        Returpakkerfrapakkeshop1.Enabled := false;        Returpakkerfrapakkeshop1.Enabled := false;
857  // 20150317: slut  
858        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
859        begin        begin
860           Scanningtype := '1';           Scanningtype := '1';
# Line 862  begin Line 884  begin
884        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
885        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
886        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
887          PanelValg7.Enabled := false;
888          PanelValg7.Font.Color := clInactiveCaption;
889       // 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
890  // 20150317: start  
891        Automatiskvalg1.Enabled := false;        Automatiskvalg1.Enabled := false;
892  // 20150317: slut  
893        Pakkernormal1.Enabled := false;        Pakkernormal1.Enabled := false;
894        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
895        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
# Line 957  begin Line 981  begin
981             RutenummerST.Caption := '';             RutenummerST.Caption := '';
982             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
983             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
984             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
985             exit;             exit;
986          end;          end;
987      end      end
# Line 1000  begin Line 1024  begin
1024      if Pakketype = '1' then      if Pakketype = '1' then
1025      begin      begin
1026        Storepakker1.Checked := true;        Storepakker1.Checked := true;
1027        RadioButton1.Checked := true;        radioStorPakke.Checked := true;
1028      end      end
1029      else      else
1030      begin      begin
1031        Smpakker1.Checked := true;        Smpakker1.Checked := true;
1032        RadioButton2.Checked := true;        radioLillePakke.Checked := true;
1033      end;      end;
1034    
1035      if TestFunktionen = '1' then      if TestFunktionen = '1' then
# Line 1045  begin Line 1069  begin
1069        ScannetOkStorLyd := '';        ScannetOkStorLyd := '';
1070      end;      end;
1071    
1072  // 20150317: start  
1073      if not FileExists(ScannetOkTilTjekkodeLyd) then      if not FileExists(ScannetOkTilTjekkodeLyd) then
1074      begin      begin
1075        ScannetOkTilTjekkodeLyd := '';        ScannetOkTilTjekkodeLyd := '';
1076      end;      end;
 // 20150317: slut  
1077    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1078    
1079      CheckPrintQue('Opstart');  
1080    
1081        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1082        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1083    
1084    finally    finally
1085      Free;      Free;
# Line 1083  begin Line 1103  begin
1103          InitBladhus();          InitBladhus();
1104        end;        end;
1105    
1106  // 20150310: start  
1107      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
1108      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
1109    
# Line 1124  begin Line 1144  begin
1144      end;      end;
1145    
1146      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
 // 20150310: slut  
1147    
1148      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1149      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1150    
1151  end;  end;
1152    
# Line 1145  var Line 1164  var
1164    BoghandlerNavn : String;    BoghandlerNavn : String;
1165    Koreliste : String;    Koreliste : String;
1166    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1167    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1168    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1169    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1170  begin Line 1188  begin
1188      ClipboardData := Clipboard.AsText;      ClipboardData := Clipboard.AsText;
1189      numberString := ClipboardData;      numberString := ClipboardData;
1190      Val(numberString, float, errorPos);      Val(numberString, float, errorPos);
1191  // 20150311: start  
1192  //    if (ClipboardData <> '') and (errorPos = 0) then      //    if (ClipboardData <> '') and (errorPos = 0) then
1193      if (ClipboardData <> '') and (errorPos = 0)      if (ClipboardData <> '') and (errorPos = 0)
1194      or (NumberString = 'Nulstil')      or (NumberString = 'Nulstil')
1195      or (NumberString = 'Indtast kundenummer')      or (NumberString = 'Indtast kundenummer')
# Line 1185  begin Line 1203  begin
1203      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1204      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1205      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1206        or (NumberString = 'DAO PAKKESHOP')
1207        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1208            or (LowerCase(NumberString) = 'for stor daodirekte' )
1209      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1210  // 20150311: slut  
1211      begin      begin
1212        Stregkode := Stregkode + ClipboardData;        Stregkode := Stregkode + ClipboardData;
1213        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1195  begin Line 1216  begin
1216      begin      begin
1217        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1218      end;      end;
1219    end;    end;  // Slut ctrl-v
1220    
1221    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1222    begin    begin
1223  // 20150306: start  
1224      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
1225        Stregkode := Trim(Stregkode);
1226    
1227        if (Length(Stregkode) = 0) then
1228      begin      begin
1229        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1230        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;  
1231        exit;        exit;
1232      end;      end;
 // 20150306: slut  
1233    
 // 20150311: start  
1234      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1235      begin      begin
1236         PakkeshopNulstil.Click();         btnNulstil.Click();
1237         exit;         exit;
1238      end;      end;
1239    
1240      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1241      begin      begin
1242         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1243  // 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  
1244         exit;         exit;
1245      end;      end;
1246    
1247      if StregKode = 'Lille pakke' then      if StregKode = 'Lille pakke' then
1248      begin      begin
1249         if RadioButton2.Enabled = true then         if radioLillePakke.Enabled = true then
1250         begin         begin
1251            InitLillePakke();            InitLillePakke();
1252         end         end
1253         else         else
1254         begin         begin
1255          //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;  
1256         end;         end;
1257         Stregkode := '';         Stregkode := '';
1258         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1268  begin Line 1261  begin
1261    
1262      if StregKode = 'Stor pakke' then      if StregKode = 'Stor pakke' then
1263      begin      begin
1264         if RadioButton1.Enabled = true then         if radioStorPakke.Enabled = true then
1265         begin         begin
1266            InitStorPakke();            InitStorPakke();
1267         end         end
1268         else         else
1269         begin         begin
1270          //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;  
1271         end;         end;
1272         Stregkode := '';         Stregkode := '';
1273         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1274         exit;         exit;
1275      end;      end;
1276    
1277        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1278        begin
1279          if chkForstorTilDirekte.Enabled then
1280          begin
1281            chkForstorTilDirekte.Checked := true;
1282          end
1283          else
1284          begin
1285             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1286          end;
1287          Stregkode := '';
1288          StregkodeST.Caption := StregKode;
1289          exit;
1290        end;
1291    
1292    
1293      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1294      begin      begin
1295         if CheckBox1.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
1296         begin         begin
1297           if (CheckBox1.State = cbChecked) then           if (chkSporgEfterKunde.State = cbChecked) then
1298           begin           begin
1299            CheckBox1.State := cbUnchecked;            chkSporgEfterKunde.State := cbUnchecked;
1300           end           end
1301           else           else
1302           begin           begin
1303            CheckBox1.State := cbChecked;            chkSporgEfterKunde.State := cbChecked;
1304           end;           end;
1305         end         end
1306         else         else
1307         begin         begin
1308          //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;  
1309         end;         end;
1310         Stregkode := '';         Stregkode := '';
1311         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1327  begin Line 1314  begin
1314    
1315      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
1316      begin      begin
1317        if CheckBox3.Enabled = true then        if chkScanTjekkode.Enabled = true then
1318        begin        begin
1319           if (CheckBox3.State = cbChecked) then           if (chkScanTjekkode.State = cbChecked) then
1320           begin           begin
1321            CheckBox3.State := cbUnchecked;            chkScanTjekkode.State := cbUnchecked;
1322           end           end
1323           else           else
1324           begin           begin
1325            CheckBox3.State := cbChecked;            chkScanTjekkode.State := cbChecked;
1326           end;           end;
1327        end        end
1328        else        else
1329        begin        begin
1330          //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;  
1331        end;        end;
1332        Stregkode := '';        Stregkode := '';
1333        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1366  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;
1349         exit;         exit;
1350      end;      end;
1351    
1352  // 20150323: start  
 //    if StregKode = 'DAO NAT X-PRESS' then  
1353      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  
1354      begin      begin
1355         if (PanelValg1.Enabled = true) then         if (PanelValg1.Enabled = true) then
1356         begin         begin
# Line 1395  begin Line 1358  begin
1358         end         end
1359         else         else
1360         begin         begin
1361          //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;  
1362         end;         end;
1363         Stregkode := '';         Stregkode := '';
1364         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1421  begin Line 1373  begin
1373         end         end
1374         else         else
1375         begin         begin
1376          //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;  
1377         end;         end;
1378         Stregkode := '';         Stregkode := '';
1379         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1447  begin Line 1388  begin
1388         end         end
1389         else         else
1390         begin         begin
1391          //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;  
1392         end;         end;
1393         Stregkode := '';         Stregkode := '';
1394         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1473  begin Line 1403  begin
1403         end         end
1404         else         else
1405         begin         begin
1406          //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;  
1407         end;         end;
1408         Stregkode := '';         Stregkode := '';
1409         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1499  begin Line 1418  begin
1418         end         end
1419         else         else
1420         begin         begin
1421          //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;  
1422         end;         end;
1423         Stregkode := '';         Stregkode := '';
1424         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1525  begin Line 1433  begin
1433         end         end
1434         else         else
1435         begin         begin
1436          //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;  
1437         end;         end;
1438         Stregkode := '';         Stregkode := '';
1439         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1440         exit;         exit;
1441      end;      end;
1442  // 20150311: slut  
1443    
1444      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1445      begin      begin
# Line 1590  begin Line 1487  begin
1487        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1488      end;      end;
1489    
1490      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1491          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1492          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1493          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1494          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1495          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1496      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1497         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1498         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  
1499         exit;         exit;
1500      end;      end;
1501    
1502      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1503      begin      begin
1504        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1505        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1626  begin Line 1511  begin
1511              end;              end;
1512            end            end
1513        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1514  (*  
       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  
 *)  
1515        else if Pakketype = 'Direkte' then        else if Pakketype = 'Direkte' then
1516            begin            begin
1517              if Scanningtype <> '4' then              if Scanningtype <> '4' then
# Line 1660  begin Line 1528  begin
1528                InitPakkeshoplevering();                InitPakkeshoplevering();
1529              end;              end;
1530            end            end
1531        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
 (*  
       else if Pakketype = 'PakkeshopRetur' then  
1532            begin            begin
1533              if Scanningtype <> '6' then              if Scanningtype <> '6' then
1534              begin              begin
1535                Scanningtype := '6';               VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1536                InitReturFraPakkeshop();  
1537                 exit;
1538              end;              end;
1539            end            end
1540  *)  
1541    
1542        else        else
1543            begin   // Her skal komme en alarm og rød skærm            begin
1544               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1545               List1msg := 'Pakken kan ikke scannes med automatisk valg';              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1546               ListBox1.Items.Insert(0,List1Msg);               VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1547               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  
1548               exit;               exit;
1549            end;            end;
1550        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1551      end      end
1552      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1553      begin      begin
1554        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1555        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  
1556        exit;        exit;
1557      end;      end;
1558    
# Line 1714  begin Line 1560  begin
1560      begin      begin
1561        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1562        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;  
1563    
1564      if StregKode = 'Lille pakke' then          VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
     begin  
        InitLillePakke();  
        exit;  
     end;  
1565    
1566      if StregKode = 'Stor pakke' then          exit;
1567      begin        end;
        InitStorPakke();  
        exit;  
1568      end;      end;
1569    
     if StregKode = 'Indtast kundenummer' then  
     begin  
        if (CheckBox1.State = cbChecked) then  
        begin  
         CheckBox1.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox1.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
     end;  
   
     if (Stregkode = 'Scan tjekkode') or (PakkeshopStregkode = 'Scan tjekkode') or (BoghandlerStregkode = 'Scan tjekkode') then  
     begin  
        if (CheckBox3.State = cbChecked) then  
        begin  
         CheckBox3.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox3.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
     end;  
 *)  
 // 20150311: slut  
1570    
1571    
1572      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
1573      begin      begin
1574        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
1575        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1576        begin        begin
1577          if (Stregkode=stregkoderMedTjekkodeArray[i]) then          if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1578          begin          begin
1579              CheckBox3.Checked := true;              chkScanTjekkode.Checked := true;
1580              Scanogstjekkoden1.Checked := true;              Scanogstjekkoden1.Checked := true;
1581          end;          end;
1582        end;        end;
# Line 1812  begin Line 1588  begin
1588             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1589             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1590             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1591             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1592             Stregkode := '';             Stregkode := '';
1593             InitScreen();             InitScreen();
1594        end        end
# Line 1824  begin Line 1600  begin
1600             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1601             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1602             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1603             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1604             Stregkode := '';             Stregkode := '';
1605             InitScreen();             InitScreen();
1606        end        end
# Line 1836  begin Line 1612  begin
1612              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1613              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1614              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1615  // 20150317: start  
1616              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1617  // 20150317: slut  
1618             end             end
1619            else            else
1620             begin             begin
1621                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;  
1622             end;             end;
1623            Stregkode := '';            Stregkode := '';
1624            InitScreen();            InitScreen();
# Line 1861  begin Line 1631  begin
1631             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1632             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1633             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1634                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1635             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1636                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1637             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1638           end           end
1639          else          else
1640           begin           begin
1641                if (PakkeshopLevering1.Checked) then                if (PakkeshopLevering1.Checked) then
1642                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1643                if (Pakkernormal1.Checked) then                if (Pakkernormal1.Checked) then
1644                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1645                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  
1646                StregKode := '';                StregKode := '';
1647                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1648  // 20150323: slut  
1649                exit;                exit;
1650           end;           end;
1651          Stregkode := '';          Stregkode := '';
# Line 1891  begin Line 1654  begin
1654    
1655      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
1656      begin      begin
1657    
1658         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1659            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1660         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 1667  begin
1667            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1668            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1669            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1670               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1671               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1672              exit;              exit;
1673            end;            end;
1674            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
# Line 1928  begin Line 1688  begin
1688              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1689              begin              begin
1690                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1691                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1692                MainForm.Color := clRed;                MainForm.Color := clRed;
1693              end;              end;
1694           end;           end;
1695            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
1696            begin            begin
1697              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1698              if Storepakker1.Checked then              if Storepakker1.Checked then
1699              begin              begin
1700                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1943  begin Line 1703  begin
1703              begin              begin
1704                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1705              end;              end;
1706              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1707            end            end
1708            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1709            begin            begin
1710              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1711              if Storepakker1.Checked then              if Storepakker1.Checked then
1712              begin              begin
1713                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1956  begin Line 1716  begin
1716              begin              begin
1717                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1718              end;              end;
1719              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1720            end            end
1721            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1722            begin            begin
1723              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;  
1724            end            end
1725            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1726            begin            begin
1727            end            end
1728            else            else
1729            begin            begin
1730              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1731            end;            end;
1732           if not PakkeshopNulstil.Visible then  
1733             if not btnNulstil.Visible then
1734            begin            begin
1735  // 20150310: start  
 //            SletStregkodelinieFraListboks2(StregKode);  
 // 20150310: slut  
1736              If (Budlevering1.Checked) then              If (Budlevering1.Checked) then
1737              begin              begin
1738                if Storepakker1.Checked then                if Storepakker1.Checked then
# Line 1993  begin Line 1746  begin
1746                InitLillePakke();                InitLillePakke();
1747              end;              end;
1748            end;            end;
1749  // 20150310: start  
1750            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1751  // 20150310: slut  
1752            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1753            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1754            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 2026  begin Line 1779  begin
1779    
1780    Key := #0;    Key := #0;
1781    
1782  end;  
1783    
1784    
1785    
1786    
1787    end; //End of OnKeyPress
1788    
1789    
1790    
1791  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1792  const  const
# Line 2063  end; Line 1823  end;
1823    
1824  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1825  var  var
 // 20150309: start  
 //  i:integer;  
1826    i : Integer;    i : Integer;
1827    wrkAntal : String;    wrkAntal : String;
1828    wrkAntalIdag, wrkAntalSenere : Integer;    wrkAntalIdag, wrkAntalSenere : Integer;
1829  // 20150309: slut  
1830    
1831  begin  begin
1832      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
1833      begin      begin
1834        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1835          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1836          begin          begin
1837  // 20150309: start  
1838            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1839            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1840            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1841            begin            begin
1842              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1843              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1844  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1845  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1846  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1847              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1848            end            end
1849            else     // kun idag            else     // kun idag
1850            begin            begin
# Line 2112  begin Line 1870  begin
1870            begin            begin
1871              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1872            end;            end;
 // 20150309: slut  
1873    
 // 20150310: start  
1874            if (Scanningtype = '1') then            if (Scanningtype = '1') then
1875            begin            begin
1876              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
# Line 2192  begin Line 1948  begin
1948                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1949              end;              end;
1950            end;            end;
1951  // 20150310: slut  
1952            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1953          end;          end;
1954      end;      end;
# Line 2219  begin Line 1975  begin
1975  end;  end;
1976    
1977  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1978    
1979  begin  begin
1980    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
# Line 2230  begin Line 1984  begin
1984    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1985    ListBox1.Visible := true;    ListBox1.Visible := true;
1986  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1987  // 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  
1988    if Budlevering1.Checked then    if Budlevering1.Checked then
1989    begin    begin
1990      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2283  begin Line 1997  begin
1997      01 :      01 :
1998            begin;      // NS            begin;      // NS
1999              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2000              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2001              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2002              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2003              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2004              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2297  begin Line 2011  begin
2011              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2012              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
2013              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2014              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
2015              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
2016              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
2017              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2018              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2019              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2020              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2310  begin Line 2024  begin
2024              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2025             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2026              begin              begin
2027                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2028              end              end
2029              else              else
2030              begin              begin
2031                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2032              end;              end;
2033              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2034              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2035              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2036              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2037              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2335  begin Line 2049  begin
2049              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2050              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
2051              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2052              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
2053              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
2054              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2055              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2056              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2057              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2058            end;            end;
# Line 2354  var Line 2068  var
2068    URLStr : String;    URLStr : String;
2069    pakkestorrelse : String;    pakkestorrelse : String;
2070    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
2071    
2072      PakkeshopLabel: TPakkeshopLabel;
2073  begin  begin
2074    if RadioButton1.Checked then    if radioStorPakke.Checked then
2075    begin    begin
2076      pakkestorrelse := 'Stor';      pakkestorrelse := 'Stor';
2077    end;    end;
2078    if RadioButton2.Checked then    if radioLillePakke.Checked then
2079    begin    begin
2080      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
2081    end;    end;
2082    
2083    
2084    if Pakkernormal1.Checked then    if Pakkernormal1.Checked then
2085    begin    begin
2086       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
# Line 2391  begin Line 2109  begin
2109    begin    begin
2110       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2111    end    end
2112      else if menuIndlevering.Checked then
2113      begin
2114        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2115      end
2116    else    else
2117    begin    begin
2118      exit;      exit;
2119    end;    end;
2120    
2121      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2122      begin
2123        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2124      end;
2125    
2126    try    try
2127      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2128      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2416  begin Line 2144  begin
2144          end;          end;
2145      end;      end;
2146    end;    end;
2147    
2148    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2149    try    try
2150      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2425  begin Line 2154  begin
2154        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2155        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2156        PrintNyLabel := False;        PrintNyLabel := False;
2157  // 20150310: start  
2158        if Pakkeshoplevering1.Checked then        if Pakkeshoplevering1.Checked then
2159        begin        begin
 // 20150310: slut  
2160          try          try
2161            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2162          except on e:exception do          except on e:exception do
# Line 2438  begin Line 2166  begin
2166          begin          begin
2167            PrintNyLabel := True;            PrintNyLabel := True;
2168          end;          end;
 // 20150310: start  
2169        end;        end;
 // 20150310: slut  
2170       end       end
2171        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2172        begin
2173    
2174    
2175    
2176    
2177         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2178         if (Kommentar = 'Ok') then
2179         begin
2180           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2181           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2182           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2183           Stregkode := PakkeshopLabel.Stregkode;
2184    
2185           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2186           chkForstorTilDirekte.Checked := false;
2187    
2188         end;
2189    
2190    
2191        end
2192      else      else
2193       begin       begin
2194        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2474  begin Line 2221  begin
2221          PrintNyLabel := True;          PrintNyLabel := True;
2222        end;        end;
2223      end;      end;
2224    
2225    
2226      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2227      begin      begin
2228        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2514  begin Line 2263  begin
2263    if Pakkeshoplevering1.Checked then    if Pakkeshoplevering1.Checked then
2264      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2265    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2266    if RadioButton1.Checked then    if radioStorPakke.Checked then
2267    begin    begin
2268      List1Pakkestorrelse := 'Stor pakke';      List1Pakkestorrelse := 'Stor pakke';
2269    end;    end;
2270    if RadioButton2.Checked then    if radioLillePakke.Checked then
2271    begin    begin
2272      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2273    end;    end;
# Line 2540  begin Line 2289  begin
2289    if Budlevering1.Checked then    if Budlevering1.Checked then
2290    begin    begin
2291       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2292        if (RadioButton1.Checked) then        if (radioStorPakke.Checked) then
2293        begin        begin
2294          List1msg := List1msg + '; Stor pakke';          List1msg := List1msg + '; Stor pakke';
2295        end;        end;
2296        if (RadioButton2.Checked) then        if (radioLillePakke.Checked) then
2297        begin        begin
2298          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2299        end;        end;
# Line 2566  begin Line 2315  begin
2315        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2316      end;      end;
2317    end;    end;
2318      if menuIndlevering.Checked then
2319      begin
2320        List1Msg := Stregkode;
2321      end;
2322    
2323    
2324    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2325    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2326    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2327  end;  end;
2328    
2329  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2330  begin  begin
2331    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2332    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2588  pakkeForkertSted : Integer; Line 2343  pakkeForkertSted : Integer;
2343    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2344  begin  begin
2345    if Budlevering1.Checked then    if Budlevering1.Checked then
2346       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2347    
2348    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2349    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2601  begin Line 2356  begin
2356    end;    end;
2357    pakkeForkertSted := pos('burde være hos', Kommentar);    pakkeForkertSted := pos('burde være hos', Kommentar);
2358    
2359  // 20150306: start  
2360  //  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
2361    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  
2362    begin    begin
2363        if (RuteNummer = 'Ukendt') then        if (RuteNummer = 'Ukendt') then
2364        begin        begin
# Line 2631  begin Line 2385  begin
2385       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2386       begin       begin
2387          PrintNyLabel := false;          PrintNyLabel := false;
2388  // 20150306: start  
 //        PlaySound(PWideChar(AlarmLyd));  
2389          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2390          MainForm.Color := clRed;          MainForm.Color := clRed;
2391          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2392  // 20150306: slut  
2393       end       end
2394       else       else
2395       begin       begin
# Line 2646  begin Line 2399  begin
2399            PrintNyLabel := true;            PrintNyLabel := true;
2400            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2401            nyFarve := Farve;            nyFarve := Farve;
2402            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2403            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2404            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2405            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2406            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2407            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2408  // 20150213: start  
2409            if (PrinterNavn = 'Ingen') then            if (PrinterNavn = 'Ingen') then
2410            begin            begin
2411               PrintNyLabel := false;               PrintNyLabel := false;
2412            end;            end;
2413  // 20150313: slut  
 // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2414            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
2415            begin            begin
2416              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2417              MainForm.Color := clRed;              MainForm.Color := clRed;
2418              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2419            end;            end;
2420  // 20150306: slut  
2421         end;         end;
2422         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2423         if (kontrolKoreliste <> RuteNummer) then         if (kontrolKoreliste <> RuteNummer) then
# Line 2685  begin Line 2436  begin
2436            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2437            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2438            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2439  // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2440            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
2441            begin            begin
2442              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2443              MainForm.Color := clRed;              MainForm.Color := clRed;
2444              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2445            end;            end;
2446  // 20150306: slut  
 // 20150306: start  
 //       end  
 //       else  
 //       begin  
2447         end;         end;
2448       end;       end;
2449    
# Line 2715  begin Line 2461  begin
2461               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2462  // 20150304: slut  // 20150304: slut
2463                begin                begin
2464                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2465                end;                end;
2466              end;              end;
2467        01 :  begin;        01 :  begin;
2468               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2469                    // 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
2470                    // 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')
2471                begin                begin
2472                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2473                end;                end;
2474              end;              end;
2475        02 :  begin;        02 :  begin;
2476                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
2477                begin                begin
2478                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2479                end;                end;
2480              end;              end;
2481        03 :  begin;        03 :  begin;
2482               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2483                    // 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
2484                    // 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')
2485               begin               begin
2486                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2487               end;               end;
2488              end;              end;
2489        04 :  begin;        04 :  begin;
2490                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
2491                begin                begin
2492                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2493                end;                end;
2494              end;              end;
2495        else        else
# Line 2757  begin Line 2503  begin
2503      exit;      exit;
2504    end;    end;
2505    
2506    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
2507    begin    begin
2508    end    end
2509    else    else
2510    begin    begin
2511      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
2512      begin      begin
2513        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2514        if (CheckBox2.Checked) then        if (chkAltidPrintLabel.Checked) then
2515        begin        begin
2516          logTekst := logTekst + 'Alle ';          logTekst := logTekst + 'Alle ';
2517        end        end
# Line 2779  begin Line 2525  begin
2525        end;        end;
2526        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2527        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2528        with Printer do  
2529        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2530          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;  
2531      end;      end;
2532    end;    end;
2533    
2534  end;  end;
2535    
 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;  
2536    
2537    
2538  procedure TMainForm.RadioButton1Click(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2539  begin  begin
2540      Storepakker1.Checked := true;      Storepakker1.Checked := true;
2541      RadioButton1.Checked := true;      radioStorPakke.Checked := true;
2542  end;  end;
2543    
2544  procedure TMainForm.RadioButton2Click(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2545  begin  begin
2546      Smpakker1.Checked := true;      Smpakker1.Checked := true;
2547      RadioButton2.Checked := true;      radioLillePakke.Checked := true;
2548  end;  end;
2549    
2550    
2551  procedure TMainForm.CheckBox1Click(Sender: TObject);  procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2552  begin  begin
2553    if CheckBox1.Checked then    if chkSporgEfterKunde.Checked then
2554    begin    begin
2555       Sprgefterboghandlernummer1.Checked := true;       Sprgefterboghandlernummer1.Checked := true;
2556    end    end
# Line 2875  begin Line 2561  begin
2561  end;  end;
2562    
2563    
2564  procedure TMainForm.CheckBox2Click(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2565  begin  begin
2566    if CheckBox2.Checked then    if chkAltidPrintLabel.Checked then
2567    begin    begin
2568       Altidprintepakkelabel1.Checked := true;       Altidprintepakkelabel1.Checked := true;
2569    end    end
# Line 2888  begin Line 2574  begin
2574    
2575  end;  end;
2576    
2577  procedure TMainForm.CheckBox3Click(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2578  begin  begin
2579    if CheckBox3.Checked then    if chkScanTjekkode.Checked then
2580    begin    begin
2581       Scanogstjekkoden1.Checked := true;       Scanogstjekkoden1.Checked := true;
2582    end    end
# Line 2912  begin Line 2598  begin
2598      Automatiskvalg1.Checked := false;      Automatiskvalg1.Checked := false;
2599      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2600      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2601  // 20150317: start  
2602      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
2603      or (SpecialVersionSted = '02')        or (SpecialVersionSted = '02')
2604      or (SpecialVersionSted = '03')        or (SpecialVersionSted = '03')
2605      or (SpecialVersionSted = '04') then        or (SpecialVersionSted = '04') then
2606      begin      begin
2607        // 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)
2608        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
# Line 2936  begin Line 2622  begin
2622    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2623    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...');
2624    
2625          // Tjekker urls    try
2626          logTekst := 'Tjekker urls.';      // Tjekker urls
2627          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2628          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2629        SkrivScanningLogFil(logTekst);
2630    
         // 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;  
2631    
         // 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;  
2632    
2633          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2634          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2635          begin      begin
2636            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2637            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;  
2638    
2639          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2640          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2641          begin      begin
2642            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2643            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;  
2644    
2645          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2646          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2647          begin      begin
2648            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2649            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;  
2650    
2651          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2652          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2653          begin      begin
2654            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2655            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;  
2656    
2657          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2658          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2659          or (PanelValg4.Enabled = true) then      begin
2660          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2661            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;  
2662    
2663          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2664          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2665          begin      begin
2666            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2667            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;  
2668    
2669          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2670          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2671          begin      begin
2672            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2673            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;  
2674    
2675          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2676          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2677          begin      begin
2678            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2679            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;  
2680    
2681  // 20150330: start      // Tjekker UrlPakkeshopManglendeReturScanninger
2682          // Tjekker UrlEKLoverforselPakkeshop      if PanelValg6.Enabled = true then
2683          if PanelValg5.Enabled = true then      begin
2684          begin        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2685            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  
2686    
2687          // Tjekker UrlFindPakketype     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2688          if CheckUrl(UrlFindPakketype) then      if PanelValg7.Enabled = true then
2689          begin      begin
2690            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2691            SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2692          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;  
2693    
2694          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforsel
2695          if CheckUrl(UrlSendPrograminfo) then      if PanelValg1.Enabled = true then
2696          begin      begin
2697            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2698            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;  
2699    
         if urlFejl > 0 then  
         begin  
           TjekUrls := '-';   // markerer at der var fejl  
         end  
         else  
         begin  
           logTekst := 'urls er ok';  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
2700    
2701        // Tjekker UrlEKLoverforselPakkeshop
2702        if PanelValg5.Enabled = true then
2703        begin
2704          TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2705        end;
2706    
2707    
2708        // Tjekker UrlFindPakketype
2709        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2710    
2711        // Tjekker UrlSendPrograminfo
2712        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2713    
2714    
2715    
2716        logTekst := 'urls er ok';
2717        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2718        SkrivScanningLogFil(logTekst);
2719    
2720      Except
2721        TjekUrls := '-';   // markerer at der var fejl
2722    
2723      end;
2724  end;  end;
2725    
2726  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2727  var  const
2728     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2729  begin  begin
2730     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2731     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2732     Result := SystemTimeToDateTime(SystemTime) ;    begin
2733        logTekst := UrlNavn + ' accepteret: ' + Url;
2734        SkrivScanningLogFil(logTekst);
2735      end
2736      else
2737      begin
2738        inc(urlFejl);   // Optæller antal fejl
2739        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2740        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2741        if TjekUrls = '1' then
2742        begin
2743          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2744        end;
2745    
2746        SkrivScanningLogFil(logTekst);
2747    
2748        if TjekUrls = '1' then
2749        begin
2750          ShowMessage(logTekst);
2751          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2752          Application.Terminate;
2753    
2754          raise Exception.Create('UrlFejl');
2755    
2756        end;
2757      end;
2758    
2759  end;  end;
2760    
2761    
2762    
2763  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2764  var  var
2765    SR: TSearchRec;    SR: TSearchRec;
# Line 3342  begin Line 2776  begin
2776      repeat      repeat
2777        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2778        begin        begin
2779    
2780          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2781          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2782          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2783          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2784          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2785          // (æ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 2816  begin
2816    end;    end;
2817  end;  end;
2818    
2819  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2820  begin  begin
2821    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2822    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2823    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2824    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2825    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2826    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3403  begin Line 2838  begin
2838  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2839    if Farve <> '' then    if Farve <> '' then
2840    begin    begin
2841       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  
2842    end;    end;
2843    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2844    begin    begin
# Line 3477  end; Line 2902  end;
2902    
2903  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2904  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;  
 *)  
2905  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2906  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2907       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2908       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2909       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2910  // 20150311: slut  
2911    
2912    
2913  end;  end;
2914    
2915  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3514  var Line 2926  var
2926    BoghandlerNavn : String;    BoghandlerNavn : String;
2927    Koreliste : String;    Koreliste : String;
2928    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2929    SmsKode : String;    SmsKode : String;
2930    DBKbane : String;    DBKbane : String;
2931    Leveringssted : String;    Leveringssted : String;
# Line 3536  begin Line 2947  begin
2947      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2948      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2949      MainForm.Color := clRed;      MainForm.Color := clRed;
2950      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2951    end    end
2952    else    else
2953    begin    begin
2954      Falsk := False;      Falsk := False;
2955      Sand := True;  
2956      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2957      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2958      SmsKode := '999999';      SmsKode := '999999';
# Line 3561  var Line 2972  var
2972    BoghandlerNavn : String;    BoghandlerNavn : String;
2973    Koreliste : String;    Koreliste : String;
2974    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2975    SmsKode : String;    SmsKode : String;
2976    DBKbane : String;    DBKbane : String;
2977    Leveringssted : String;    Leveringssted : String;
# Line 3570  begin Line 2980  begin
2980    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2981    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2982    Falsk := False;    Falsk := False;
   Sand := True;  
2983    
2984    if (Printer.Printers.Count = 0) then  
2985      if (LabelPrint.GetPrinterCount() = 0) then
2986    begin    begin
2987      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2988    end    end
# Line 3586  begin Line 2996  begin
2996      SmsKode := '999999';      SmsKode := '999999';
2997      DBKbane := '999';      DBKbane := '999';
2998      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2999      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      LabelPrint.TestZpl();
3000      CheckPrintQue('Test');      //PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3001        LabelPrint.CheckPrintQue('Test', PrinterNavn);
3002    end;    end;
3003    FocusControl(StregkodeST);    FocusControl(StregkodeST);
3004  end;  end;
# Line 3596  procedure TMainForm.Timer1Timer(Sender: Line 3007  procedure TMainForm.Timer1Timer(Sender:
3007  begin  begin
3008    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
3009    begin    begin
3010      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
3011    end    end
3012    else    else
3013    begin    begin
# Line 3605  begin Line 3016  begin
3016    end;    end;
3017  end;  end;
3018    
3019  {  
  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;  
3020    
3021  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3022  const  const
# Line 3643  var Line 3025  var
3025   tekst, filversion : String;   tekst, filversion : String;
3026  begin  begin
3027    
3028    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
3029    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';
3030    
3031    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3665  begin Line 3047  begin
3047          end          end
3048          else          else
3049          begin          begin
3050            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3051          end;          end;
3052      end      end
3053      else      else
3054      begin      begin
3055        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3056      end;      end;
3057    end;    end;
3058    
# Line 3686  begin Line 3068  begin
3068    
3069  end;  end;
3070    
3071    
3072  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3073    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3074  var  var
# Line 3738  begin Line 3121  begin
3121    
3122    if FileExists(fileName) then    if FileExists(fileName) then
3123    begin    begin
3124      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3125      begin      begin
3126        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3127        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3762  begin Line 3145  begin
3145    
3146    if FileExists(fileName) then    if FileExists(fileName) then
3147    begin    begin
3148      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3149      begin      begin
3150        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3151        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3152      end      end
3153      else      else
3154      begin      begin
3155        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3156      end;      end;
3157    end    end
3158    else    else
# Line 3778  begin Line 3161  begin
3161    end;    end;
3162  end;  end;
3163    
3164    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3165    begin
3166      Scanningtype := '7';
3167      NulstilAutomatiskValg();
3168      InitIndleveringskode();
3169    end;
3170    
3171  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3172  begin  begin
3173    
3174    if Sprgefterboghandlernummer1.Checked then    if Sprgefterboghandlernummer1.Checked then
3175    begin    begin
3176       CheckBox1.Checked := true;       chkSporgEfterKunde.Checked := true;
3177    end    end
3178    else    else
3179    begin    begin
3180       CheckBox1.Checked := false;       chkSporgEfterKunde.Checked := false;
3181    end;    end;
3182    
3183    
# Line 3810  end; Line 3200  end;
3200  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3201  begin  begin
3202        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3203        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3204        Pakkernormal1.Checked := true;        Pakkernormal1.Checked := true;
3205        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3206        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3207        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3208        CheckBox1.Enabled := true;  
3209        CheckBox2.Enabled := true;        chkAltidPrintLabel.Enabled := true;
3210        Altidprintepakkelabel1.Enabled := true;        Altidprintepakkelabel1.Enabled := true;
3211        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3212        CheckBox2.Checked := false;        chkAltidPrintLabel.Checked := false;
3213        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3214        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3215        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3216        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3217        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3218        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3219        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3220        ListBox1.Visible := true;        ListBox1.Visible := true;
3221        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3222        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3223        InitLillePakke();        InitLillePakke();
3224        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3225    
3226          chkForstorTilDirekte.Checked := false;
3227          chkForstorTilDirekte.Enabled := false;
3228    
3229        if BladhusSted = 0 then        if BladhusSted = 0 then
3230        begin        begin
3231          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3843  procedure TMainForm.InitReturFraDao(); Line 3237  procedure TMainForm.InitReturFraDao();
3237  begin  begin
3238        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3239        ReturpakkerfraDAO1.Checked := true;        ReturpakkerfraDAO1.Checked := true;
3240        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3241        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3242        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3243        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3244        CheckBox1.Enabled := false;  
3245        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3246        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3247        CheckBox2.Checked := false;  
3248        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3249        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3250        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3251        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3252        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3253        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3254        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3255        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3256        ListBox1.Visible := true;        ListBox1.Visible := true;
3257        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3258        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3259        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3260    
3261          chkForstorTilDirekte.Checked := false;
3262          chkForstorTilDirekte.Enabled := false;
3263    
3264        InitLillePakke();        InitLillePakke();
3265  end;  end;
3266    
# Line 3870  procedure TMainForm.InitReturFraKunde(); Line 3268  procedure TMainForm.InitReturFraKunde();
3268  begin  begin
3269        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3270        Returpakkerfraboghandler1.Checked := true;        Returpakkerfraboghandler1.Checked := true;
3271        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3272        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3273        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3274        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3275        CheckBox1.Enabled := false;  
3276        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3277        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
       CheckBox2.Checked := false;  
3278        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3279        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3280        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3281        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3282        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3283        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3284        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3285        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3286        ListBox1.Visible := true;        ListBox1.Visible := true;
3287        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3288        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3289        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3290    
3291          chkForstorTilDirekte.Checked := false;
3292          chkForstorTilDirekte.Enabled := false;
3293    
3294        InitLillePakke();        InitLillePakke();
3295  end;  end;
3296    
# Line 3897  procedure TMainForm.InitDirektelevering( Line 3298  procedure TMainForm.InitDirektelevering(
3298  begin  begin
3299        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3300        Budlevering1.Checked := true;        Budlevering1.Checked := true;
3301        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3302        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3303        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3304        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3305        CheckBox1.Enabled := false;  
3306        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3307        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3308        CheckBox2.Checked := false;  
3309        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3310        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3311        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3312        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3313        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3314        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3315        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3316        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3317        ListBox1.Visible := true;        ListBox1.Visible := true;
3318        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3319        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3320        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3321        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3322        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3323        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3324        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3325    
3326          chkForstorTilDirekte.Checked := false;
3327          chkForstorTilDirekte.Enabled := true;
3328    
3329        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3330        begin        begin
3331            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3933  procedure TMainForm.InitPakkeshopleverin Line 3338  procedure TMainForm.InitPakkeshopleverin
3338  begin  begin
3339        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3340        Pakkeshoplevering1.Checked := true;        Pakkeshoplevering1.Checked := true;
3341        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3342        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3343        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3344        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3345        CheckBox1.Enabled := false;  
3346        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3347        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3348        CheckBox2.Checked := false;  
3349        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3350        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3351        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3352        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3353        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3354        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3355        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3356        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3357        ListBox1.Visible := true;        ListBox1.Visible := true;
3358        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3359        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3360        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3361  // 20150330: start  
3362  //      EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := true;
3363        EKLoverforsel.Enabled := true;  
3364  // 20150330: slut        chkForstorTilDirekte.Checked := false;
3365          chkForstorTilDirekte.Enabled := true;
3366    
3367        InitLillePakke();        InitLillePakke();
3368        IndlesScanningLogFil();        IndlesScanningLogFil();
3369        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3971  procedure TMainForm.InitReturFraPakkesho Line 3378  procedure TMainForm.InitReturFraPakkesho
3378  begin  begin
3379        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3380        Returpakkerfrapakkeshop1.Checked := true;        Returpakkerfrapakkeshop1.Checked := true;
3381        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3382        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3383        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3384        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3385        CheckBox1.Enabled := false;  
3386        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3387        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3388        CheckBox2.Checked := false;  
3389        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3390        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3391        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3392        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3393        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3394        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3395        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3396        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3397        ListBox1.Visible := true;        ListBox1.Visible := true;
3398        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3399        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3400        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3401        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3402    
3403          chkForstorTilDirekte.Checked := false;
3404          chkForstorTilDirekte.Enabled := false;
3405    
3406    
3407        InitLillePakke();        InitLillePakke();
3408        IndlesScanningLogFil();        IndlesScanningLogFil();
3409        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4011  end; Line 3423  end;
3423    
3424  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3425  begin  begin
3426          menuIndlevering.Checked := true;
3427        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3428        Returpakkerfrapakkeshop1.Checked := true;  
3429        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3430        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3431        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3432        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3433        CheckBox1.Enabled := false;  
3434        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3435        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3436        CheckBox2.Checked := false;  
3437        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3438        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
       CheckBox1.Checked := false;  
3439        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3440          chkSporgEfterKunde.Checked := false;
3441    
3442    
3443    
3444        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3445        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3446        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3447        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3448        ListBox1.Visible := true;        ListBox1.Visible := true;
3449        ListBox1.Items.Clear;        ListBox1.Items.Clear();
3450        DownloadButton01.Enabled := false;  
3451        OpdaterListenButton01.Enabled := true;        BtnDownloadKontrolfil.Enabled := false;
3452        EKLoverforsel.Enabled := false;        BtnOpdaterListen.Enabled := true;
3453          BtnEKLoverforsel.Enabled := false;
3454    
3455          chkForstorTilDirekte.Checked := false;
3456          chkForstorTilDirekte.Enabled := false;
3457    
3458    
3459        InitLillePakke();        InitLillePakke();
3460        IndlesScanningLogFil();        IndlesScanningLogFil();
3461        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4057  end; Line 3479  end;
3479    
3480  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3481  begin  begin
3482    RadioButton2.Checked := true;    radioLillePakke.Checked := true;
3483    Smpakker1.Checked := true;    Smpakker1.Checked := true;
 // 20150310: start  
3484  //  Stregkode := '';  //  Stregkode := '';
 // 20150310: slut  
3485  end;  end;
3486    
3487  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3488  begin  begin
3489    RadioButton1.Checked := true;    radioStorPakke.Checked := true;
3490    Storepakker1.Checked := true;    Storepakker1.Checked := true;
3491  // 20150310: start  // 20150310: start
3492  //  Stregkode := '';  //  Stregkode := '';
3493  // 20150310: slut  // 20150310: slut
3494  end;  end;
3495    
 /// <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]]);  
3496    
     // 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;  
3497    
3498  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3499  begin  begin
# Line 4163  end; Line 3518  end;
3518    
3519  procedure TMainForm.Testlyd2Click(Sender: TObject);  procedure TMainForm.Testlyd2Click(Sender: TObject);
3520  begin  begin
 // 20150317: start  
3521    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3522    begin    begin
3523       if ScannetOkTilTjekkodeLyd  <> '' then       if ScannetOkTilTjekkodeLyd  <> '' then
# Line 4176  begin Line 3530  begin
3530       end;       end;
3531       exit;       exit;
3532    end;    end;
 // 20150317: slut  
3533    
3534    if Smpakker1.Checked then    if Smpakker1.Checked then
3535       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
# Line 4185  begin Line 3538  begin
3538       end       end
3539       else       else
3540       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);  
3541         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3542       end;       end;
3543    if Storepakker1.Checked then    if Storepakker1.Checked then
3544       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
# Line 4197  begin Line 3547  begin
3547       end       end
3548       else       else
3549       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);  
3550         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3551       end;       end;
3552  end;  end;
3553    
# Line 4217  begin; Line 3564  begin;
3564    CheckCode();    CheckCode();
3565  end;  end;
3566    
3567  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3568  var  var
3569    WebSvar : String;    WebSvar : String;
3570    URLStr : String;    URLStr : String;
# Line 4227  var Line 3574  var
3574    status, kommentar : String;    status, kommentar : String;
3575    
3576  begin  begin
3577      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3578    
3579      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');
3580      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3581      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3582      StedKode := Sted;      StedKode := Sted;
3583      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3584  // 20150330: start  
3585      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3586      begin      begin
3587        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3588      end;      end;
3589  // 20150330: slut  
3590    
3591      try      try
3592      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4290  begin Line 3637  begin
3637        end;        end;
3638      end;      end;
3639    
3640      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3641    
3642      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
3643    
# Line 4307  begin Line 3654  begin
3654           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3655         end;         end;
3656         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3657         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3658      end;      end;
3659    
3660  end;  end;
# Line 4331  begin Line 3678  begin
3678    else    else
3679      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3680  }  }
3681    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3682    
3683    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3684    CheckCode();    CheckCode();
# Line 4339  end; Line 3686  end;
3686    
3687  end;  end;
3688    
 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;  
3689    
3690  //  //
3691  // Bladhus ***  // Bladhus ***
# Line 4855  begin Line 4163  begin
4163    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
4164  end;  end;
4165    
4166  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4167  begin  begin
4168      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4169      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
4170  end;  end;
4171    
4172  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4173  const  const
4174    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4175    
# Line 4870  begin Line 4178  begin
4178      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
4179  end;  end;
4180    
4181  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4182  begin  begin
4183      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4184      begin      begin
# Line 4879  begin Line 4187  begin
4187      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
4188  end;  end;
4189    
4190  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;  
4191    
4192  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4193  var  var
# Line 4903  var Line 4199  var
4199    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4200    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4201    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4202    pakketyper : TStrings;    //pakketyper : TStrings;
4203      pakketyper : TDictionary<String, Integer>;
4204      tmpAntal : Integer;
4205    
4206    
4207    
4208    antlin : Integer;    antlin : Integer;
4209  // 20150306: start  
4210    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4211  // 20150306: slut  
4212    XmlFelter : TStrings;    //XmlFelter : TStrings;
4213      XmlFelter : TDictionary<String, Integer>;
4214    
4215   begin   begin
4216      XmlFelter := TStringList.Create;  
4217      pakketyper := TStringList.Create;  
4218        XmlFelter := TDictionary<String, Integer>.Create;
4219        pakketyper := TDictionary<String, Integer>.Create;
4220    
4221      linienr := 0;      linienr := 0;
4222      ListBox2.Clear;      ListBox2.Clear;
4223      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 4232  var
4232          StedKode := Sted;          StedKode := Sted;
4233        end;        end;
4234    
4235  // 20150310: start        Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4236  (*  
4237      if Returpakkerfrapakkeshop1.Checked then  
4238       begin  
4239        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);      if (Scanningtype = '7') then
      end  
     else if Pakkeshoplevering1.Checked then  
4240       begin       begin
4241        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4242       end       end
4243      else if Pakkernormal1.Checked then      else if (Scanningtype = '6') then
4244       begin       begin
4245        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]);  
4246       end       end
4247      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4248       begin       begin
4249        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4250       end       end
4251      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4252       begin       begin
# Line 4989  var Line 4283  var
4283      try      try
4284        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4285    
4286  // 20150206: start  
4287        antlin := 0;        antlin := 0;
4288        antlinIdag := 0;        antlinIdag := 0;
4289        antlinSenere := 0;        antlinSenere := 0;
4290  // 20150306: slut  
       antalFelterFundet := 0;  
4291        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4292            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4293            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4294              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4295              begin              begin
4296                 antlin := antlin + 1;                 Inc(antlin);
4297                 // 20150306: start                 // 20150306: start
4298                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4299                begin                begin
4300                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4301                   begin                   begin
4302                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4303                   end                   end
4304                   else                   else
4305                   begin                   begin
4306                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4307                   end;                   end;
4308                end;                end;
4309                 // 20150306: slut                 // 20150306: slut
4310              end;              end;
4311            end;            end;
4312            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4313                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4314                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4315                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4316                  end
4317                else                else
4318                  XmlFelter.values[Node.NodeName] := '1';                begin
4319                    XmlFelter.Add(Node.NodeName, 1);
4320                  end;
4321    
4322        end;        end;
4323        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
4324        antalFelterFundet := 0;        antalFelterFundet := 0;
4325        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4326        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4327  // 20150206: start  
4328  //      logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';  
4329          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4330    
4331        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4332        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4333        begin        begin
4334          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4335        end;        end;
4336        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4337  // 20150306: slut  
4338        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4339    
4340    
4341        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4342            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4343            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 5043  var Line 4345  var
4345                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4346                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4347                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4348              end;              end
4349              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4350                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4351                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4352                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4353              end;              end
4354              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4355                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4356                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4357                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4358              end;              end
4359              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4360                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4361                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4362                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4363              end;              end
4364              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4365                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4366                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4367                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4368                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4369                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4370                    pakketyper.TryGetValue(pakketype, tmpAntal);
4371                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4372                  end
4373                else                else
4374                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4375              end;              end
4376              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4377                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4378                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4379                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4380                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4381                  begin                  begin
4382  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4383                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4384                    begin                    begin
4385                      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
4386                    end                    end
4387                    else                    else
4388                    begin                    begin
4389                      stregkoderMedTjekkodeArray[linienr] := stregkode;                      stregkoderMedTjekkodeArray[linienr] := stregkode;
4390                    end;                    end;
4391  // 20150306: slut                    linienr := linienr + 1;
                     linienr := linienr + 1;  
4392                  end;                  end;
4393              end;              end;
4394    
4395    
4396              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4397              begin              begin
4398                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 5103  var Line 4408  var
4408              end;              end;
4409            end;            end;
4410        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4411    
4412          // Free up the list object  
4413          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4414    
4415    
4416          for pakketype in pakketyper.Keys do
4417          begin
4418            pakketyper.TryGetValue(pakketype, tmpAntal);
4419            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4420          end;
4421    
4422            // Free up the dictionary object
4423        pakketyper.Free;        pakketyper.Free;
4424  // 20150306: start  
4425    
4426    
4427  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');  //      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.');
4428        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4429        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5119  var Line 4432  var
4432        end;        end;
4433        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4434        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
 // 20150306: slut  
 // 20150309: start  
4435        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4436        begin        begin
4437          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
# Line 5129  var Line 4440  var
4440        begin        begin
4441          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4442        end;        end;
 // 20150309: slut  
4443    
 // 20150310: start  
4444        if (Scanningtype = '1') then        if (Scanningtype = '1') then
4445        begin        begin
4446          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal
# Line 5210  var Line 4519  var
4519            PanelManglendePakker6.Visible := false;            PanelManglendePakker6.Visible := false;
4520          end;          end;
4521        end;        end;
 // 20150310: slut  
4522    
4523      except on e:exception do      except on e:exception do
4524        begin        begin
# Line 5272  end; Line 4580  end;
4580  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4581  var  var
4582     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4583     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4584     imorgenYmd : string;     imorgenYmd : string;
4585     logFilnavn : string;     logFilnavn : string;
4586      error : Integer;     //error : Integer;
4587    
4588  begin  begin
4589    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5369  begin Line 4675  begin
4675          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4676          S := buffer;          S := buffer;
4677          SetLength(A,0);          SetLength(A,0);
4678          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4679          if (length(A) < 2) then          if (length(A) < 2) then
4680          begin          begin
4681            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4682          end;          end;
4683            if (length(A) > 1) then            if (length(A) > 1) then
4684            begin            begin
# Line 5446  begin Line 4752  begin
4752          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4753          S := buffer;          S := buffer;
4754          SetLength(A,0);          SetLength(A,0);
4755          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4756          if (length(A) < 3) then          if (length(A) < 3) then
4757          begin          begin
4758            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4759          end;          end;
4760          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4761          begin          begin
# Line 5541  begin Line 4847  begin
4847    result := svar;    result := svar;
4848  end;  end;
4849    
4850    procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4851    begin
4852      //ShowMessage('Ændring ikke tilladt');
4853      // Her skal komme en 'rød skærm' alarm
4854      PlaySound(PWideChar(AlarmLyd));
4855      MainForm.Color := clRed;
4856    
4857    
4858      RuteNummerST.Caption := '';
4859      BoghandlerNavnST.Caption := '';
4860      btnNulstil.Visible := true;
4861    
4862      if (strMessage <> '') then
4863      begin
4864        ListBox1.Items.Insert(0, strMessage);
4865        KommentarST.Caption := strMessage;
4866      end;
4867    
4868      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4869    
4870    end;
4871    
4872  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
4873  var  var
4874     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
# Line 5598  begin Line 4926  begin
4926    result := svar;    result := svar;
4927  end;  end;
4928    
 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;  
4929    
4930  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4931  begin  begin
4932    if Scanogstjekkoden1.Checked then    if Scanogstjekkoden1.Checked then
4933    begin    begin
4934       CheckBox3.Checked := true;       chkScanTjekkode.Checked := true;
4935    end    end
4936    else    else
4937    begin    begin
4938       CheckBox3.Checked := false;       chkScanTjekkode.Checked := false;
4939    end;    end;
4940  end;  end;
4941    
4942  function TMainForm.AdobeReaderExists: Boolean;  
4943  var  //Nedarvet fra IParentForm
4944    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4945  begin  begin
4946    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4947  end;  end;
4948    
4949  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4950  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;  
4951  begin  begin
4952      ListBox1.Items.Insert(0, msg);
4953      SkrivScanningLogFil(msg);
4954    end;
4955    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4956    
4957    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4958    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4959      printerTxt := 'Der er fravalgt printer i dette program';  begin
4960      ListBox1.Items.Insert(0,printerTxt);  
4961      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4962    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4963    begin    begin
4964      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4965      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4966      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4967    end    end
4968    else    else
4969    begin    begin
4970      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4971      try      PrinterstatusStaticText1.Color := clWhite;
4972        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;  
4973    end;    end;
4974  end;  end;
4975    
4976  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4977  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;  
4978  begin  begin
4979     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;  
4980  end;  end;
 // 20150310: slut  
4981    
4982  end.  end.
4983    

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

  ViewVC Help
Powered by ViewVC 1.1.20