/[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 3048 by torben, Mon Jun 13 09:12:26 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    
292  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
293        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
294    
295    
296    
297    
298      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
299  // 20150309: slut  
300    
301      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
302      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 340  begin Line 340  begin
340        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
341      end;      end;
342    
343      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
344    
345      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
346      begin      begin
# Line 368  begin Line 368  begin
368        else if (Sted = 'BR') then        else if (Sted = 'BR') then
369          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
370        else if (Sted = 'BK') then        else if (Sted = 'BK') then
371          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
372          else if (Sted = 'TK') then
373            begin StedNavn := 'BK/Trykkompagniet: '; end
374        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
375          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
376        else if (Sted = '1') then        else if (Sted = '1') then
377          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
378        else if (Sted = '2') then        else if (Sted = '2') then
# Line 394  begin Line 396  begin
396    
397      StartScreen();      StartScreen();
398      MainForm.Caption := Titel;      MainForm.Caption := Titel;
399      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
400      MainForm.Farve := Farve;      MainForm.Farve := Farve;
401      MainForm.Titel := Titel;      MainForm.Titel := Titel;
402      MainForm.Url := Url;      MainForm.Url := Url;
# Line 409  begin Line 411  begin
411      else      else
412        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
413    
414      CheckBox3.Checked := false;      chkScanTjekkode.Checked := false;
415      CheckBox3.Enabled := false;      chkScanTjekkode.Enabled := false;
416      Scanogstjekkoden1.Enabled := false;      Scanogstjekkoden1.Enabled := false;
417    
418      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
419      begin      begin
420        if (ScanTjekkode = '1') then        if (ScanTjekkode = '1') then
421        begin        begin
422          CheckBox3.Checked := true;          chkScanTjekkode.Checked := true;
423          CheckBox3.Enabled := true;          chkScanTjekkode.Enabled := true;
424          Scanogstjekkoden1.Enabled := true;          Scanogstjekkoden1.Enabled := true;
425        end        end
426        else        else
427        begin        begin
428          CheckBox3.Checked := false;          chkScanTjekkode.Checked := false;
429          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
430          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
431        end;        end;
432      end;      end;
433    
434      if Automatisktjekkodestyring1.Checked then      if Automatisktjekkodestyring1.Checked then
435      begin      begin
436        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
437        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
438      end;      end;
439    
# Line 454  begin Line 456  begin
456          end          end
457          else          else
458          begin          begin
459            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
460          end;          end;
461          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
462        end        end
463        else        else
464        begin        begin
465          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
466          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
467        end;        end;
468      end;      end;
469    
470    
471  end;  end;
472    
473  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 472  begin Line 475  begin
475    
476    if Altidprintepakkelabel1.Checked then    if Altidprintepakkelabel1.Checked then
477    begin    begin
478       CheckBox2.Checked := true;       chkAltidPrintLabel.Checked := true;
479    end    end
480    else    else
481    begin    begin
482       CheckBox2.Checked := false;       chkAltidPrintLabel.Checked := false;
483    end;    end;
484    
485  end;  end;
# Line 490  procedure TMainForm.Automatisktjekkodest Line 493  procedure TMainForm.Automatisktjekkodest
493  begin  begin
494    if Automatisktjekkodestyring1.Checked then    if Automatisktjekkodestyring1.Checked then
495    begin    begin
496       CheckBox3.Enabled := false;       chkScanTjekkode.Enabled := false;
497       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
498    end    end
499    else    else
500    begin    begin
501       CheckBox3.Enabled := true;       chkScanTjekkode.Enabled := true;
502       Scanogstjekkoden1.Enabled := true;       Scanogstjekkoden1.Enabled := true;
503    end;    end;
504    
# Line 503  end; Line 506  end;
506    
507  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
508  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;  
 *)  
509  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
510  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
511       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
512       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
513       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
514  end;  end;
515    
516    function TMainForm.InjectURL(Url : String) : String;
517    begin
518    
519      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
520      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
521      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
522    
523      Result := Url;
524    end;
525    
526    //InitForm kaldes før FormCreate
527  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
528  const  const
529    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
530  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
531    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
532    
533  begin  begin
534    
535    
536    // Initierer nogle variabler    // Initierer nogle variabler
537    BladhusSted := 00;    BladhusSted := 00;
538    Application.ShowHint := True;    Application.ShowHint := True;
539    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
540    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
541  // 20150306: start  
542    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
543  // 20150306: slut  
544  // 20150310: start    TUtils.RoundCornerOf(PanelManglendePakker1);
545    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker2);
546    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker3);
547    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker4);
548    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker5);
549    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker6);
550    RoundCornerOf(PanelManglendePakker6);  
 // 20150310: slut  
551    
552    // 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
553    if DirectoryExists('Docs') then    if DirectoryExists('Docs') then
# Line 565  begin Line 560  begin
560    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
561    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
562    
563      Config := TConfiguration.Create();
564      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
565      Config.Sted := Sted;
566    
567    // Læser parametre fra ini filen    // Læser parametre fra ini filen
568    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
569    try    try
570    
571    
572      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
573      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
574      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
575    
576      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');
577        UrlFindPakketype := InjectURL(UrlFindPakketype);
578    
579      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');
580        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
581    
582      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');
583        UrlNormal := InjectURL(UrlNormal);
584    
585      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');
586        UrlReturDAO := InjectURL(UrlReturDAO);
587    
588      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');
589        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
590    
591      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');
592        UrlBudlevering := InjectURL(UrlBudlevering);
593    
594      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');
595        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
596    
597      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');
598  // 20150330: start      UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
599    
600      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');
601  // 20150330: slut      UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
602    
603      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');
604        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
605    
606      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');
607        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
608    
609      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');
610        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
611    
612      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');
613      LabelType := ReadInteger('Settings','LabelType',1);      UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
614    
615        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
616        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
617    
618        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
619        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
620    
621        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
622        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
623    
624    
625    
626      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
627      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
628      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 597  begin Line 633  begin
633      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
634      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
635      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
636    
637      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
638      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
639    
640        FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');
641        TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');
642    
643    
644      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
645      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
646      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
# Line 608  begin Line 650  begin
650      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
651      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
652      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
653  // 20150317: start  
654      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
655  // 20150317: slut  
656      PrinterNavn := ReadString('Settings','PrinterNavn','');      PrinterNavn := ReadString('Settings','PrinterNavn','');
657      TjekPrinter := ReadString('Settings','TjekPrinter','1');      TjekPrinter := ReadString('Settings','TjekPrinter','1');
658      TjekUrls := ReadString('Settings','TjekUrls','2');      TjekUrls := ReadString('Settings','TjekUrls','2');
659    
660      if (SkrivLog = '1') then      if (SkrivLog = '1') then
661      begin      begin
662        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);
663        try        try
664          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
665          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
666          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
667          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
668          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
669          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 639  begin Line 681  begin
681        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
682      end;      end;
683    
684      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;  
685    
686      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
687      begin      begin
688        CheckBox1.Checked := true;        chkSporgEfterKunde.Checked := true;
689        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
690      end      end
691      else      else
692      begin      begin
693        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
694        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
695      end;      end;
696    
697      if ScanTjekkode = '1' then      if ScanTjekkode = '1' then
698      begin      begin
699        CheckBox3.Checked := true;        chkScanTjekkode.Checked := true;
700        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
701      end      end
702      else      else
703      begin      begin
704        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
705        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
706      end;      end;
707    
708      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
709      begin      begin
710        Automatisktjekkodestyring1.Checked := true;        Automatisktjekkodestyring1.Checked := true;
711        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
712        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
713      end;      end;
714    
# Line 760  begin Line 734  begin
734      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
735      // *************************** //      // *************************** //
736    
737    {$IfDef STED_BK}
738        SpecialVersionSted := 'BK';
739    {$EndIf}
740    {$IfDef STED_TK}
741        SpecialVersionSted := 'TK';// BK-Trykkompagniet
742    {$EndIf}
743    {$IfDef STED_DBK}
744        SpecialVersionSted := 'DBK';
745    {$EndIf}
746    {$IfDef STED_FD}
747        SpecialVersionSted := 'FD';
748    {$EndIf}
749    {$IfDef STED_NS}
750        SpecialVersionSted := 'NS';
751    {$EndIf}
752    
753      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
754      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
755      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 775  begin Line 765  begin
765      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
766      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
767    
 // 20150313: start  
768      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
769      begin      begin
770         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
771         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
772    
773          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
774          Sted := SpecialVersionSted;
775         // her skal vi også disable de knapper BK ikke kan bruge
776          PanelValg2.Enabled := false;
777          PanelValg2.Font.Color := clInactiveCaption;
778          PanelValg3.Enabled := false;
779          PanelValg3.Font.Color := clInactiveCaption;
780          //PanelValg6.Enabled := false;
781          //PanelValg6.Font.Color := clInactiveCaption;
782    
783         // her skal vi også disable de menupunkter FD ikke kan bruge
784          ReturpakkerfraDAO1.Enabled := false;
785          Returpakkerfraboghandler1.Enabled := false;
786    
787          //Returpakkerfrapakkeshop1.Enabled := false;
788      end;      end;
789    
790      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
791      begin      begin
792         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
793         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
794    
795    
796          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
797          Sted := SpecialVersionSted;
798         // her skal vi også disable de knapper BK ikke kan bruge
799          PanelValg2.Enabled := false;
800          PanelValg2.Font.Color := clInactiveCaption;
801          PanelValg3.Enabled := false;
802          PanelValg3.Font.Color := clInactiveCaption;
803          //PanelValg6.Enabled := false;
804          //PanelValg6.Font.Color := clInactiveCaption;
805    
806         // her skal vi også disable de menupunkter FD ikke kan bruge
807          ReturpakkerfraDAO1.Enabled := false;
808          Returpakkerfraboghandler1.Enabled := false;
809    
810          //Returpakkerfrapakkeshop1.Enabled := false;
811    
812      end;      end;
 // 20150313: slut  
813    
814      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
815      begin      begin
816        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
817        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 797  begin Line 820  begin
820        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
821        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
822        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
823        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
824        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
825    
826       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
827        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
828        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
829        Returpakkerfrapakkeshop1.Enabled := false;  
830          //Returpakkerfrapakkeshop1.Enabled := false;
831    
832        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
833        begin        begin
834           Scanningtype := '1';           Scanningtype := '1';
# Line 826  begin Line 852  begin
852        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
853        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
854        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
855    
856    
857       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
858        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
859        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
860  // 20150317: start  
861        Pakkeshoplevering1.Enabled := false;        Pakkeshoplevering1.Enabled := false;
862        Returpakkerfrapakkeshop1.Enabled := false;        Returpakkerfrapakkeshop1.Enabled := false;
863  // 20150317: slut  
864        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
865        begin        begin
866           Scanningtype := '1';           Scanningtype := '1';
# Line 862  begin Line 890  begin
890        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
891        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
892        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
893          PanelValg7.Enabled := false;
894          PanelValg7.Font.Color := clInactiveCaption;
895       // 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
896  // 20150317: start  
897        Automatiskvalg1.Enabled := false;        Automatiskvalg1.Enabled := false;
898  // 20150317: slut  
899        Pakkernormal1.Enabled := false;        Pakkernormal1.Enabled := false;
900        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
901        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
# Line 957  begin Line 987  begin
987             RutenummerST.Caption := '';             RutenummerST.Caption := '';
988             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
989             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
990             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
991             exit;             exit;
992          end;          end;
993      end      end
# Line 1000  begin Line 1030  begin
1030      if Pakketype = '1' then      if Pakketype = '1' then
1031      begin      begin
1032        Storepakker1.Checked := true;        Storepakker1.Checked := true;
1033        RadioButton1.Checked := true;        radioStorPakke.Checked := true;
1034      end      end
1035      else      else
1036      begin      begin
1037        Smpakker1.Checked := true;        Smpakker1.Checked := true;
1038        RadioButton2.Checked := true;        radioLillePakke.Checked := true;
1039      end;      end;
1040    
1041      if TestFunktionen = '1' then      if TestFunktionen = '1' then
# Line 1045  begin Line 1075  begin
1075        ScannetOkStorLyd := '';        ScannetOkStorLyd := '';
1076      end;      end;
1077    
1078  // 20150317: start  
1079      if not FileExists(ScannetOkTilTjekkodeLyd) then      if not FileExists(ScannetOkTilTjekkodeLyd) then
1080      begin      begin
1081        ScannetOkTilTjekkodeLyd := '';        ScannetOkTilTjekkodeLyd := '';
1082      end;      end;
 // 20150317: slut  
1083    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1084    
1085      CheckPrintQue('Opstart');  
1086    
1087        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1088        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1089    
1090    finally    finally
1091      Free;      Free;
# Line 1083  begin Line 1109  begin
1109          InitBladhus();          InitBladhus();
1110        end;        end;
1111    
1112  // 20150310: start  
1113      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
1114      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
1115    
# Line 1124  begin Line 1150  begin
1150      end;      end;
1151    
1152      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
 // 20150310: slut  
1153    
1154      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1155      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1156    
1157  end;  end;
1158    
# Line 1145  var Line 1170  var
1170    BoghandlerNavn : String;    BoghandlerNavn : String;
1171    Koreliste : String;    Koreliste : String;
1172    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1173    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1174    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1175    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1170  begin Line 1194  begin
1194      ClipboardData := Clipboard.AsText;      ClipboardData := Clipboard.AsText;
1195      numberString := ClipboardData;      numberString := ClipboardData;
1196      Val(numberString, float, errorPos);      Val(numberString, float, errorPos);
1197  // 20150311: start  
1198  //    if (ClipboardData <> '') and (errorPos = 0) then      //    if (ClipboardData <> '') and (errorPos = 0) then
1199      if (ClipboardData <> '') and (errorPos = 0)      if (ClipboardData <> '') and (errorPos = 0)
1200      or (NumberString = 'Nulstil')      or (NumberString = 'Nulstil')
1201      or (NumberString = 'Indtast kundenummer')      or (NumberString = 'Indtast kundenummer')
# Line 1185  begin Line 1209  begin
1209      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1210      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1211      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1212        or (NumberString = 'DAO PAKKESHOP')
1213        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1214            or (LowerCase(NumberString) = 'for stor daodirekte' )
1215      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1216  // 20150311: slut  
1217      begin      begin
1218        Stregkode := Stregkode + ClipboardData;        Stregkode := Stregkode + ClipboardData;
1219        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1195  begin Line 1222  begin
1222      begin      begin
1223        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1224      end;      end;
1225    end;    end;  // Slut ctrl-v
1226    
1227    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1228    begin    begin
1229  // 20150306: start  
1230      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
1231        Stregkode := Trim(Stregkode);
1232    
1233        if (Length(Stregkode) = 0) then
1234      begin      begin
1235        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1236        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;  
1237        exit;        exit;
1238      end;      end;
 // 20150306: slut  
1239    
 // 20150311: start  
1240      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1241      begin      begin
1242         PakkeshopNulstil.Click();         btnNulstil.Click();
1243         exit;         exit;
1244      end;      end;
1245    
1246      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1247      begin      begin
1248         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1249  // 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  
1250         exit;         exit;
1251      end;      end;
1252    
1253      if StregKode = 'Lille pakke' then      if StregKode = 'Lille pakke' then
1254      begin      begin
1255         if RadioButton2.Enabled = true then         if radioLillePakke.Enabled = true then
1256         begin         begin
1257            InitLillePakke();            InitLillePakke();
1258         end         end
1259         else         else
1260         begin         begin
1261          //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;  
1262         end;         end;
1263         Stregkode := '';         Stregkode := '';
1264         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1268  begin Line 1267  begin
1267    
1268      if StregKode = 'Stor pakke' then      if StregKode = 'Stor pakke' then
1269      begin      begin
1270         if RadioButton1.Enabled = true then         if radioStorPakke.Enabled = true then
1271         begin         begin
1272            InitStorPakke();            InitStorPakke();
1273         end         end
1274         else         else
1275         begin         begin
1276          //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;  
1277         end;         end;
1278         Stregkode := '';         Stregkode := '';
1279         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1280         exit;         exit;
1281      end;      end;
1282    
1283        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1284        begin
1285          if chkForstorTilDirekte.Enabled then
1286          begin
1287            chkForstorTilDirekte.Checked := true;
1288          end
1289          else
1290          begin
1291             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1292          end;
1293          Stregkode := '';
1294          StregkodeST.Caption := StregKode;
1295          exit;
1296        end;
1297    
1298    
1299      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1300      begin      begin
1301         if CheckBox1.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
1302         begin         begin
1303           if (CheckBox1.State = cbChecked) then           if (chkSporgEfterKunde.State = cbChecked) then
1304           begin           begin
1305            CheckBox1.State := cbUnchecked;            chkSporgEfterKunde.State := cbUnchecked;
1306           end           end
1307           else           else
1308           begin           begin
1309            CheckBox1.State := cbChecked;            chkSporgEfterKunde.State := cbChecked;
1310           end;           end;
1311         end         end
1312         else         else
1313         begin         begin
1314          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1315         end;         end;
1316         Stregkode := '';         Stregkode := '';
1317         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1327  begin Line 1320  begin
1320    
1321      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
1322      begin      begin
1323        if CheckBox3.Enabled = true then        if chkScanTjekkode.Enabled = true then
1324        begin        begin
1325           if (CheckBox3.State = cbChecked) then           if (chkScanTjekkode.State = cbChecked) then
1326           begin           begin
1327            CheckBox3.State := cbUnchecked;            chkScanTjekkode.State := cbUnchecked;
1328           end           end
1329           else           else
1330           begin           begin
1331            CheckBox3.State := cbChecked;            chkScanTjekkode.State := cbChecked;
1332           end;           end;
1333        end        end
1334        else        else
1335        begin        begin
1336          //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;  
1337        end;        end;
1338        Stregkode := '';        Stregkode := '';
1339        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1366  begin Line 1348  begin
1348         end         end
1349         else         else
1350         begin         begin
1351          //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;  
1352         end;         end;
1353         Stregkode := '';         Stregkode := '';
1354         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1355         exit;         exit;
1356      end;      end;
1357    
1358  // 20150323: start  
 //    if StregKode = 'DAO NAT X-PRESS' then  
1359      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  
1360      begin      begin
1361         if (PanelValg1.Enabled = true) then         if (PanelValg1.Enabled = true) then
1362         begin         begin
# Line 1395  begin Line 1364  begin
1364         end         end
1365         else         else
1366         begin         begin
1367          //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;  
1368         end;         end;
1369         Stregkode := '';         Stregkode := '';
1370         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1421  begin Line 1379  begin
1379         end         end
1380         else         else
1381         begin         begin
1382          //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;  
1383         end;         end;
1384         Stregkode := '';         Stregkode := '';
1385         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1447  begin Line 1394  begin
1394         end         end
1395         else         else
1396         begin         begin
1397          //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;  
1398         end;         end;
1399         Stregkode := '';         Stregkode := '';
1400         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1473  begin Line 1409  begin
1409         end         end
1410         else         else
1411         begin         begin
1412          //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;  
1413         end;         end;
1414         Stregkode := '';         Stregkode := '';
1415         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1499  begin Line 1424  begin
1424         end         end
1425         else         else
1426         begin         begin
1427          //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;  
1428         end;         end;
1429         Stregkode := '';         Stregkode := '';
1430         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1525  begin Line 1439  begin
1439         end         end
1440         else         else
1441         begin         begin
1442          //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;  
1443         end;         end;
1444         Stregkode := '';         Stregkode := '';
1445         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1446         exit;         exit;
1447      end;      end;
1448  // 20150311: slut  
1449    
1450      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1451      begin      begin
# Line 1590  begin Line 1493  begin
1493        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1494      end;      end;
1495    
1496      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1497          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1498          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1499          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1500          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1501          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1502      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1503         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1504         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  
1505         exit;         exit;
1506      end;      end;
1507    
1508      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (Automatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1509      begin      begin
1510        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1511        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1626  begin Line 1517  begin
1517              end;              end;
1518            end            end
1519        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1520  (*  
       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  
 *)  
1521        else if Pakketype = 'Direkte' then        else if Pakketype = 'Direkte' then
1522            begin            begin
1523              if Scanningtype <> '4' then              if Scanningtype <> '4' then
# Line 1660  begin Line 1534  begin
1534                InitPakkeshoplevering();                InitPakkeshoplevering();
1535              end;              end;
1536            end            end
1537        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
 (*  
       else if Pakketype = 'PakkeshopRetur' then  
1538            begin            begin
1539              if Scanningtype <> '6' then              if Scanningtype <> '6' then
1540              begin              begin
1541                Scanningtype := '6';               VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1542                InitReturFraPakkeshop();  
1543                 exit;
1544              end;              end;
1545            end            end
1546  *)  
1547    
1548        else        else
1549            begin   // Her skal komme en alarm og rød skærm            begin
1550               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1551               List1msg := 'Pakken kan ikke scannes med automatisk valg';              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1552               ListBox1.Items.Insert(0,List1Msg);               VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1553               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  
1554               exit;               exit;
1555            end;            end;
1556        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1557      end      end
1558      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1559      begin      begin
1560        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1561        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  
1562        exit;        exit;
1563      end;      end;
1564    
# Line 1714  begin Line 1566  begin
1566      begin      begin
1567        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1568        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;  
1569    
1570  // 20150311: start          VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
 (*  
     if StregKode = 'Nulstil' then  
     begin  
        PakkeshopNulstil.Click();  
        exit;  
     end;  
1571    
1572      if PakkeshopNulstil.Visible then          exit;
1573      begin        end;
        PlaySound(PWideChar(AlarmLyd));  
        List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
        exit;  
     end;  
   
     if StregKode = 'Lille pakke' then  
     begin  
        InitLillePakke();  
        exit;  
1574      end;      end;
1575    
     if StregKode = 'Stor pakke' then  
     begin  
        InitStorPakke();  
        exit;  
     end;  
   
     if StregKode = 'Indtast kundenummer' then  
     begin  
        if (CheckBox1.State = cbChecked) then  
        begin  
         CheckBox1.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox1.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
     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  
1576    
1577    
1578      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
1579      begin      begin
1580        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
1581        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1582        begin        begin
1583          if (Stregkode=stregkoderMedTjekkodeArray[i]) then          if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1584          begin          begin
1585              CheckBox3.Checked := true;              chkScanTjekkode.Checked := true;
1586              Scanogstjekkoden1.Checked := true;              Scanogstjekkoden1.Checked := true;
1587          end;          end;
1588        end;        end;
# Line 1812  begin Line 1594  begin
1594             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1595             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1596             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1597             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1598             Stregkode := '';             Stregkode := '';
1599             InitScreen();             InitScreen();
1600        end        end
# Line 1824  begin Line 1606  begin
1606             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1607             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1608             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1609             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1610             Stregkode := '';             Stregkode := '';
1611             InitScreen();             InitScreen();
1612        end        end
# Line 1836  begin Line 1618  begin
1618              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1619              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1620              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1621  // 20150317: start  
1622              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1623  // 20150317: slut  
1624             end             end
1625            else            else
1626             begin             begin
1627                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;  
1628             end;             end;
1629            Stregkode := '';            Stregkode := '';
1630            InitScreen();            InitScreen();
# Line 1861  begin Line 1637  begin
1637             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1638             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1639             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1640                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1641             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1642                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1643             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1644           end           end
1645          else          else
1646           begin           begin
1647                if (PakkeshopLevering1.Checked) then                if (PakkeshopLevering1.Checked) then
1648                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1649                if (Pakkernormal1.Checked) then                if (Pakkernormal1.Checked) then
1650                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1651                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  
1652                StregKode := '';                StregKode := '';
1653                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1654  // 20150323: slut  
1655                exit;                exit;
1656           end;           end;
1657          Stregkode := '';          Stregkode := '';
# Line 1891  begin Line 1660  begin
1660    
1661      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
1662      begin      begin
1663    
1664         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1665            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1666         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 1673  begin
1673            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1674            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1675            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1676               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1677               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1678              exit;              exit;
1679            end;            end;
1680            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
# Line 1928  begin Line 1694  begin
1694              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1695              begin              begin
1696                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1697                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1698                MainForm.Color := clRed;                MainForm.Color := clRed;
1699              end;              end;
1700           end;           end;
1701            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
1702            begin            begin
1703              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1704              if Storepakker1.Checked then              if Storepakker1.Checked then
1705              begin              begin
1706                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1943  begin Line 1709  begin
1709              begin              begin
1710                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1711              end;              end;
1712              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1713            end            end
1714            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1715            begin            begin
1716              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1717              if Storepakker1.Checked then              if Storepakker1.Checked then
1718              begin              begin
1719                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1956  begin Line 1722  begin
1722              begin              begin
1723                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1724              end;              end;
1725              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1726            end            end
1727            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1728            begin            begin
1729              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;  
1730            end            end
1731            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1732            begin            begin
1733            end            end
1734            else            else
1735            begin            begin
1736              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1737            end;            end;
1738           if not PakkeshopNulstil.Visible then  
1739             if not btnNulstil.Visible then
1740            begin            begin
1741  // 20150310: start  
 //            SletStregkodelinieFraListboks2(StregKode);  
 // 20150310: slut  
1742              If (Budlevering1.Checked) then              If (Budlevering1.Checked) then
1743              begin              begin
1744                if Storepakker1.Checked then                if Storepakker1.Checked then
# Line 1993  begin Line 1752  begin
1752                InitLillePakke();                InitLillePakke();
1753              end;              end;
1754            end;            end;
1755  // 20150310: start  
1756            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1757  // 20150310: slut  
1758            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1759            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1760            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 2026  begin Line 1785  begin
1785    
1786    Key := #0;    Key := #0;
1787    
1788  end;  
1789    
1790    
1791    
1792    
1793    end; //End of OnKeyPress
1794    
1795    
1796    
1797  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1798  const  const
# Line 2063  end; Line 1829  end;
1829    
1830  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1831  var  var
 // 20150309: start  
 //  i:integer;  
1832    i : Integer;    i : Integer;
1833    wrkAntal : String;    wrkAntal : String;
1834    wrkAntalIdag, wrkAntalSenere : Integer;    wrkAntalIdag, wrkAntalSenere : Integer;
1835  // 20150309: slut  
1836    
1837  begin  begin
1838      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
1839      begin      begin
1840        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1841          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1842          begin          begin
1843  // 20150309: start  
1844            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1845            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1846            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1847            begin            begin
1848              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1849              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1850  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1851  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1852  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1853              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1854            end            end
1855            else     // kun idag            else     // kun idag
1856            begin            begin
# Line 2112  begin Line 1876  begin
1876            begin            begin
1877              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1878            end;            end;
 // 20150309: slut  
1879    
 // 20150310: start  
1880            if (Scanningtype = '1') then            if (Scanningtype = '1') then
1881            begin            begin
1882              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
# Line 2192  begin Line 1954  begin
1954                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1955              end;              end;
1956            end;            end;
1957  // 20150310: slut  
1958            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1959          end;          end;
1960      end;      end;
# Line 2219  begin Line 1981  begin
1981  end;  end;
1982    
1983  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1984    
1985  begin  begin
1986    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
# Line 2230  begin Line 1990  begin
1990    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1991    ListBox1.Visible := true;    ListBox1.Visible := true;
1992  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1993  // 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  
1994    if Budlevering1.Checked then    if Budlevering1.Checked then
1995    begin    begin
1996      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2283  begin Line 2003  begin
2003      01 :      01 :
2004            begin;      // NS            begin;      // NS
2005              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2006              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2007              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2008              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2009              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2010              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2297  begin Line 2017  begin
2017              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2018              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
2019              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2020              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
2021              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
2022              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
2023              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2024              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2025              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2026              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2310  begin Line 2030  begin
2030              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2031             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2032              begin              begin
2033                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2034              end              end
2035              else              else
2036              begin              begin
2037                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2038              end;              end;
2039              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2040              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2041              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2042              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2043              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2335  begin Line 2055  begin
2055              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2056              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
2057              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
2058              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
2059              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
2060              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2061              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2062              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2063              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2064            end;            end;
# Line 2354  var Line 2074  var
2074    URLStr : String;    URLStr : String;
2075    pakkestorrelse : String;    pakkestorrelse : String;
2076    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
2077    
2078      PakkeshopLabel: TPakkeshopLabel;
2079  begin  begin
2080    if RadioButton1.Checked then    if radioStorPakke.Checked then
2081    begin    begin
2082      pakkestorrelse := 'Stor';      pakkestorrelse := 'Stor';
2083    end;    end;
2084    if RadioButton2.Checked then    if radioLillePakke.Checked then
2085    begin    begin
2086      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
2087    end;    end;
2088    
2089    
2090    if Pakkernormal1.Checked then    if Pakkernormal1.Checked then
2091    begin    begin
2092       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
# Line 2391  begin Line 2115  begin
2115    begin    begin
2116       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2117    end    end
2118      else if menuIndlevering.Checked then
2119      begin
2120        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2121      end
2122    else    else
2123    begin    begin
2124      exit;      exit;
2125    end;    end;
2126    
2127      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2128      begin
2129        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2130      end;
2131    
2132    try    try
2133      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2134      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2416  begin Line 2150  begin
2150          end;          end;
2151      end;      end;
2152    end;    end;
2153    
2154    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2155    try    try
2156      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then
# Line 2425  begin Line 2160  begin
2160        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2161        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2162        PrintNyLabel := False;        PrintNyLabel := False;
2163  // 20150310: start  
2164        if Pakkeshoplevering1.Checked then        if Pakkeshoplevering1.Checked then
2165        begin        begin
 // 20150310: slut  
2166          try          try
2167            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2168          except on e:exception do          except on e:exception do
# Line 2438  begin Line 2172  begin
2172          begin          begin
2173            PrintNyLabel := True;            PrintNyLabel := True;
2174          end;          end;
 // 20150310: start  
2175        end;        end;
 // 20150310: slut  
2176       end       end
2177        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2178        begin
2179    
2180    
2181    
2182    
2183         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2184         if (Kommentar = 'Ok') then
2185         begin
2186           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2187           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2188           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2189           Stregkode := PakkeshopLabel.Stregkode;
2190    
2191           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2192           chkForstorTilDirekte.Checked := false;
2193    
2194         end;
2195    
2196    
2197        end
2198      else      else
2199       begin       begin
2200        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2474  begin Line 2227  begin
2227          PrintNyLabel := True;          PrintNyLabel := True;
2228        end;        end;
2229      end;      end;
2230    
2231    
2232      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2233      begin      begin
2234        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2514  begin Line 2269  begin
2269    if Pakkeshoplevering1.Checked then    if Pakkeshoplevering1.Checked then
2270      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2271    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2272    if RadioButton1.Checked then    if radioStorPakke.Checked then
2273    begin    begin
2274      List1Pakkestorrelse := 'Stor pakke';      List1Pakkestorrelse := 'Stor pakke';
2275    end;    end;
2276    if RadioButton2.Checked then    if radioLillePakke.Checked then
2277    begin    begin
2278      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2279    end;    end;
# Line 2540  begin Line 2295  begin
2295    if Budlevering1.Checked then    if Budlevering1.Checked then
2296    begin    begin
2297       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2298        if (RadioButton1.Checked) then        if (radioStorPakke.Checked) then
2299        begin        begin
2300          List1msg := List1msg + '; Stor pakke';          List1msg := List1msg + '; Stor pakke';
2301        end;        end;
2302        if (RadioButton2.Checked) then        if (radioLillePakke.Checked) then
2303        begin        begin
2304          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2305        end;        end;
# Line 2566  begin Line 2321  begin
2321        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2322      end;      end;
2323    end;    end;
2324      if menuIndlevering.Checked then
2325      begin
2326        List1Msg := Stregkode;
2327      end;
2328    
2329    
2330    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2331    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2332    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2333  end;  end;
2334    
2335  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2336  begin  begin
2337    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2338    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2588  pakkeForkertSted : Integer; Line 2349  pakkeForkertSted : Integer;
2349    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2350  begin  begin
2351    if Budlevering1.Checked then    if Budlevering1.Checked then
2352       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2353    
2354    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2355    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2601  begin Line 2362  begin
2362    end;    end;
2363    pakkeForkertSted := pos('burde være hos', Kommentar);    pakkeForkertSted := pos('burde være hos', Kommentar);
2364    
2365  // 20150306: start  
2366  //  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
2367    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  
2368    begin    begin
2369        if (RuteNummer = 'Ukendt') then        if (RuteNummer = 'Ukendt') then
2370        begin        begin
# Line 2631  begin Line 2391  begin
2391       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2392       begin       begin
2393          PrintNyLabel := false;          PrintNyLabel := false;
2394  // 20150306: start  
 //        PlaySound(PWideChar(AlarmLyd));  
2395          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2396          MainForm.Color := clRed;          MainForm.Color := clRed;
2397          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2398  // 20150306: slut  
2399       end       end
2400       else       else
2401       begin       begin
# Line 2646  begin Line 2405  begin
2405            PrintNyLabel := true;            PrintNyLabel := true;
2406            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2407            nyFarve := Farve;            nyFarve := Farve;
2408            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2409            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2410            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2411            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2412            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2413            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2414  // 20150213: start  
2415            if (PrinterNavn = 'Ingen') then            if (PrinterNavn = 'Ingen') then
2416            begin            begin
2417               PrintNyLabel := false;               PrintNyLabel := false;
2418            end;            end;
2419  // 20150313: slut  
 // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2420            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
2421            begin            begin
2422              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2423              MainForm.Color := clRed;              MainForm.Color := clRed;
2424              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2425            end;            end;
2426  // 20150306: slut  
2427         end;         end;
2428         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2429         if (kontrolKoreliste <> RuteNummer) then         if (kontrolKoreliste <> RuteNummer) then
# Line 2685  begin Line 2442  begin
2442            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2443            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2444            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2445  // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2446            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
2447            begin            begin
2448              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2449              MainForm.Color := clRed;              MainForm.Color := clRed;
2450              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2451            end;            end;
2452  // 20150306: slut  
 // 20150306: start  
 //       end  
 //       else  
 //       begin  
2453         end;         end;
2454       end;       end;
2455    
# Line 2715  begin Line 2467  begin
2467               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2468  // 20150304: slut  // 20150304: slut
2469                begin                begin
2470                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2471                end;                end;
2472              end;              end;
2473        01 :  begin;        01 :  begin;
2474               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2475                    // 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
2476                    // 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')
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        02 :  begin;        02 :  begin;
2482                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
2483                begin                begin
2484                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2485                end;                end;
2486              end;              end;
2487        03 :  begin;        03 :  begin;
2488               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2489                    // 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
2490                    // 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')
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        04 :  begin;        04 :  begin;
2496                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
2497                begin                begin
2498                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2499                end;                end;
2500              end;              end;
2501        else        else
# Line 2757  begin Line 2509  begin
2509      exit;      exit;
2510    end;    end;
2511    
2512    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
2513    begin    begin
2514    end    end
2515    else    else
2516    begin    begin
2517      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
2518      begin      begin
2519        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2520        if (CheckBox2.Checked) then        if (chkAltidPrintLabel.Checked) then
2521        begin        begin
2522          logTekst := logTekst + 'Alle ';          logTekst := logTekst + 'Alle ';
2523        end        end
# Line 2779  begin Line 2531  begin
2531        end;        end;
2532        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2533        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2534        with Printer do  
2535        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2536          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;  
2537      end;      end;
2538    end;    end;
2539    
2540  end;  end;
2541    
 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;  
2542    
2543    
2544  procedure TMainForm.RadioButton1Click(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2545  begin  begin
2546      Storepakker1.Checked := true;      Storepakker1.Checked := true;
2547      RadioButton1.Checked := true;      radioStorPakke.Checked := true;
2548  end;  end;
2549    
2550  procedure TMainForm.RadioButton2Click(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2551  begin  begin
2552      Smpakker1.Checked := true;      Smpakker1.Checked := true;
2553      RadioButton2.Checked := true;      radioLillePakke.Checked := true;
2554  end;  end;
2555    
2556    
2557  procedure TMainForm.CheckBox1Click(Sender: TObject);  procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2558  begin  begin
2559    if CheckBox1.Checked then    if chkSporgEfterKunde.Checked then
2560    begin    begin
2561       Sprgefterboghandlernummer1.Checked := true;       Sprgefterboghandlernummer1.Checked := true;
2562    end    end
# Line 2875  begin Line 2567  begin
2567  end;  end;
2568    
2569    
2570  procedure TMainForm.CheckBox2Click(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2571  begin  begin
2572    if CheckBox2.Checked then    if chkAltidPrintLabel.Checked then
2573    begin    begin
2574       Altidprintepakkelabel1.Checked := true;       Altidprintepakkelabel1.Checked := true;
2575    end    end
# Line 2888  begin Line 2580  begin
2580    
2581  end;  end;
2582    
2583  procedure TMainForm.CheckBox3Click(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2584  begin  begin
2585    if CheckBox3.Checked then    if chkScanTjekkode.Checked then
2586    begin    begin
2587       Scanogstjekkoden1.Checked := true;       Scanogstjekkoden1.Checked := true;
2588    end    end
# Line 2912  begin Line 2604  begin
2604      Automatiskvalg1.Checked := false;      Automatiskvalg1.Checked := false;
2605      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2606      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2607  // 20150317: start  
2608      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
2609      or (SpecialVersionSted = '02')        or (SpecialVersionSted = '02')
2610      or (SpecialVersionSted = '03')        or (SpecialVersionSted = '03')
2611      or (SpecialVersionSted = '04') then        or (SpecialVersionSted = '04') then
2612      begin      begin
2613        // 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)
2614        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
# Line 2936  begin Line 2628  begin
2628    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2629    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...');
2630    
2631          // Tjekker urls    try
2632          logTekst := 'Tjekker urls.';      // Tjekker urls
2633          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2634          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2635        SkrivScanningLogFil(logTekst);
2636    
         // 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;  
2637    
         // 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;  
2638    
2639          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2640          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2641          begin      begin
2642            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2643            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;  
2644    
2645          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2646          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2647          begin      begin
2648            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2649            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;  
2650    
2651          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2652          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2653          begin      begin
2654            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2655            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;  
2656    
2657          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2658          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2659          begin      begin
2660            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2661            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;  
2662    
2663          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2664          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2665          or (PanelValg4.Enabled = true) then      begin
2666          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2667            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;  
2668    
2669          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2670          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2671          begin      begin
2672            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2673            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;  
2674    
2675          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2676          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2677          begin      begin
2678            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2679            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;  
2680    
2681          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2682          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2683          begin      begin
2684            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2685            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;  
2686    
2687  // 20150330: start      // Tjekker UrlPakkeshopManglendeReturScanninger
2688          // Tjekker UrlEKLoverforselPakkeshop      if PanelValg6.Enabled = true then
2689          if PanelValg5.Enabled = true then      begin
2690          begin        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2691            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  
2692    
2693          // Tjekker UrlFindPakketype     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2694          if CheckUrl(UrlFindPakketype) then      if PanelValg7.Enabled = true then
2695          begin      begin
2696            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2697            SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2698          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;  
2699    
2700          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforsel
2701          if CheckUrl(UrlSendPrograminfo) then      if PanelValg1.Enabled = true then
2702          begin      begin
2703            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2704            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;  
2705    
         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;  
2706    
2707        // Tjekker UrlEKLoverforselPakkeshop
2708        if PanelValg5.Enabled = true then
2709        begin
2710          TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2711        end;
2712    
2713    
2714        // Tjekker UrlFindPakketype
2715        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2716    
2717        // Tjekker UrlSendPrograminfo
2718        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2719    
2720    
2721    
2722        logTekst := 'urls er ok';
2723        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2724        SkrivScanningLogFil(logTekst);
2725    
2726      Except
2727        TjekUrls := '-';   // markerer at der var fejl
2728    
2729      end;
2730  end;  end;
2731    
2732  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2733  var  const
2734     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2735  begin  begin
2736     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2737     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2738     Result := SystemTimeToDateTime(SystemTime) ;    begin
2739        logTekst := UrlNavn + ' accepteret: ' + Url;
2740        SkrivScanningLogFil(logTekst);
2741      end
2742      else
2743      begin
2744        inc(urlFejl);   // Optæller antal fejl
2745        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2746        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2747        if TjekUrls = '1' then
2748        begin
2749          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2750        end;
2751    
2752        SkrivScanningLogFil(logTekst);
2753    
2754        if TjekUrls = '1' then
2755        begin
2756          ShowMessage(logTekst);
2757          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2758          Application.Terminate;
2759    
2760          raise Exception.Create('UrlFejl');
2761    
2762        end;
2763      end;
2764    
2765  end;  end;
2766    
2767    
2768    
2769  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2770  var  var
2771    SR: TSearchRec;    SR: TSearchRec;
# Line 3342  begin Line 2782  begin
2782      repeat      repeat
2783        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2784        begin        begin
2785    
2786          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2787          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2788          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2789          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2790          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2791          // (æ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 2822  begin
2822    end;    end;
2823  end;  end;
2824    
2825  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2826  begin  begin
2827    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2828    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2829    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2830    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2831    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2832    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3403  begin Line 2844  begin
2844  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2845    if Farve <> '' then    if Farve <> '' then
2846    begin    begin
2847       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  
2848    end;    end;
2849    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2850    begin    begin
# Line 3477  end; Line 2908  end;
2908    
2909  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2910  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;  
 *)  
2911  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2912  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2913       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2914       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2915       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2916  // 20150311: slut  
2917    
2918    
2919  end;  end;
2920    
2921  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3514  var Line 2932  var
2932    BoghandlerNavn : String;    BoghandlerNavn : String;
2933    Koreliste : String;    Koreliste : String;
2934    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2935    SmsKode : String;    SmsKode : String;
2936    DBKbane : String;    DBKbane : String;
2937    Leveringssted : String;    Leveringssted : String;
# Line 3536  begin Line 2953  begin
2953      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2954      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2955      MainForm.Color := clRed;      MainForm.Color := clRed;
2956      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2957    end    end
2958    else    else
2959    begin    begin
2960      Falsk := False;      Falsk := False;
2961      Sand := True;  
2962      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2963      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2964      SmsKode := '999999';      SmsKode := '999999';
# Line 3561  var Line 2978  var
2978    BoghandlerNavn : String;    BoghandlerNavn : String;
2979    Koreliste : String;    Koreliste : String;
2980    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2981    SmsKode : String;    SmsKode : String;
2982    DBKbane : String;    DBKbane : String;
2983    Leveringssted : String;    Leveringssted : String;
# Line 3570  begin Line 2986  begin
2986    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2987    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2988    Falsk := False;    Falsk := False;
   Sand := True;  
2989    
2990    if (Printer.Printers.Count = 0) then  
2991      if (LabelPrint.GetPrinterCount() = 0) then
2992    begin    begin
2993      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2994    end    end
# Line 3586  begin Line 3002  begin
3002      SmsKode := '999999';      SmsKode := '999999';
3003      DBKbane := '999';      DBKbane := '999';
3004      Leveringssted := 'XXX';      Leveringssted := 'XXX';
3005      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      LabelPrint.TestZpl();
3006      CheckPrintQue('Test');      //PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3007        LabelPrint.CheckPrintQue('Test', PrinterNavn);
3008    end;    end;
3009    FocusControl(StregkodeST);    FocusControl(StregkodeST);
3010  end;  end;
# Line 3596  procedure TMainForm.Timer1Timer(Sender: Line 3013  procedure TMainForm.Timer1Timer(Sender:
3013  begin  begin
3014    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
3015    begin    begin
3016      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
3017    end    end
3018    else    else
3019    begin    begin
# Line 3605  begin Line 3022  begin
3022    end;    end;
3023  end;  end;
3024    
3025  {  
  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;  
3026    
3027  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3028  const  const
# Line 3643  var Line 3031  var
3031   tekst, filversion : String;   tekst, filversion : String;
3032  begin  begin
3033    
3034    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
3035    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';
3036    
3037    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3665  begin Line 3053  begin
3053          end          end
3054          else          else
3055          begin          begin
3056            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3057          end;          end;
3058      end      end
3059      else      else
3060      begin      begin
3061        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3062      end;      end;
3063    end;    end;
3064    
# Line 3686  begin Line 3074  begin
3074    
3075  end;  end;
3076    
3077    
3078  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3079    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3080  var  var
# Line 3738  begin Line 3127  begin
3127    
3128    if FileExists(fileName) then    if FileExists(fileName) then
3129    begin    begin
3130      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3131      begin      begin
3132        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3133        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3762  begin Line 3151  begin
3151    
3152    if FileExists(fileName) then    if FileExists(fileName) then
3153    begin    begin
3154      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3155      begin      begin
3156        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3157        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3158      end      end
3159      else      else
3160      begin      begin
3161        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3162      end;      end;
3163    end    end
3164    else    else
# Line 3778  begin Line 3167  begin
3167    end;    end;
3168  end;  end;
3169    
3170    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3171    begin
3172      Scanningtype := '7';
3173      NulstilAutomatiskValg();
3174      InitIndleveringskode();
3175    end;
3176    
3177  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3178  begin  begin
3179    
3180    if Sprgefterboghandlernummer1.Checked then    if Sprgefterboghandlernummer1.Checked then
3181    begin    begin
3182       CheckBox1.Checked := true;       chkSporgEfterKunde.Checked := true;
3183    end    end
3184    else    else
3185    begin    begin
3186       CheckBox1.Checked := false;       chkSporgEfterKunde.Checked := false;
3187    end;    end;
3188    
3189    
# Line 3810  end; Line 3206  end;
3206  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3207  begin  begin
3208        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3209        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3210        Pakkernormal1.Checked := true;        Pakkernormal1.Checked := true;
3211        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3212        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3213        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3214        CheckBox1.Enabled := true;  
3215        CheckBox2.Enabled := true;        chkAltidPrintLabel.Enabled := true;
3216        Altidprintepakkelabel1.Enabled := true;        Altidprintepakkelabel1.Enabled := true;
3217        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3218        CheckBox2.Checked := false;        chkAltidPrintLabel.Checked := false;
3219        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3220        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3221        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3222        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3223        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3224        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3225        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3226        ListBox1.Visible := true;        ListBox1.Visible := true;
3227        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3228        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3229        InitLillePakke();        InitLillePakke();
3230        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3231    
3232          chkForstorTilDirekte.Checked := false;
3233          chkForstorTilDirekte.Enabled := false;
3234    
3235        if BladhusSted = 0 then        if BladhusSted = 0 then
3236        begin        begin
3237          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3843  procedure TMainForm.InitReturFraDao(); Line 3243  procedure TMainForm.InitReturFraDao();
3243  begin  begin
3244        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3245        ReturpakkerfraDAO1.Checked := true;        ReturpakkerfraDAO1.Checked := true;
3246        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3247        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3248        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3249        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3250        CheckBox1.Enabled := false;  
3251        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3252        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3253        CheckBox2.Checked := false;  
3254        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3255        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3256        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3257        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3258        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3259        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3260        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3261        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3262        ListBox1.Visible := true;        ListBox1.Visible := true;
3263        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3264        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3265        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3266    
3267          chkForstorTilDirekte.Checked := false;
3268          chkForstorTilDirekte.Enabled := false;
3269    
3270        InitLillePakke();        InitLillePakke();
3271  end;  end;
3272    
# Line 3870  procedure TMainForm.InitReturFraKunde(); Line 3274  procedure TMainForm.InitReturFraKunde();
3274  begin  begin
3275        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3276        Returpakkerfraboghandler1.Checked := true;        Returpakkerfraboghandler1.Checked := true;
3277        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3278        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3279        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3280        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3281        CheckBox1.Enabled := false;  
3282        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3283        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
       CheckBox2.Checked := false;  
3284        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3285        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3286        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3287        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3288        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3289        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3290        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3291        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3292        ListBox1.Visible := true;        ListBox1.Visible := true;
3293        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3294        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3295        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3296    
3297          chkForstorTilDirekte.Checked := false;
3298          chkForstorTilDirekte.Enabled := false;
3299    
3300        InitLillePakke();        InitLillePakke();
3301  end;  end;
3302    
# Line 3897  procedure TMainForm.InitDirektelevering( Line 3304  procedure TMainForm.InitDirektelevering(
3304  begin  begin
3305        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3306        Budlevering1.Checked := true;        Budlevering1.Checked := true;
3307        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3308        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3309        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3310        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3311        CheckBox1.Enabled := false;  
3312        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3313        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3314        CheckBox2.Checked := false;  
3315        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3316        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3317        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3318        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3319        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3320        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3321        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3322        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3323        ListBox1.Visible := true;        ListBox1.Visible := true;
3324        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3325        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3326        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3327        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3328        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3329        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3330        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3331    
3332          chkForstorTilDirekte.Checked := false;
3333          chkForstorTilDirekte.Enabled := true;
3334    
3335        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3336        begin        begin
3337            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3933  procedure TMainForm.InitPakkeshopleverin Line 3344  procedure TMainForm.InitPakkeshopleverin
3344  begin  begin
3345        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3346        Pakkeshoplevering1.Checked := true;        Pakkeshoplevering1.Checked := true;
3347        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3348        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3349        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3350        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3351        CheckBox1.Enabled := false;  
3352        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3353        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3354        CheckBox2.Checked := false;  
3355        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3356        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3357        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3358        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3359        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3360        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3361        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3362        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3363        ListBox1.Visible := true;        ListBox1.Visible := true;
3364        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3365        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3366        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3367  // 20150330: start  
3368  //      EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := true;
3369        EKLoverforsel.Enabled := true;  
3370  // 20150330: slut        chkForstorTilDirekte.Checked := false;
3371          chkForstorTilDirekte.Enabled := true;
3372    
3373        InitLillePakke();        InitLillePakke();
3374        IndlesScanningLogFil();        IndlesScanningLogFil();
3375        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3971  procedure TMainForm.InitReturFraPakkesho Line 3384  procedure TMainForm.InitReturFraPakkesho
3384  begin  begin
3385        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3386        Returpakkerfrapakkeshop1.Checked := true;        Returpakkerfrapakkeshop1.Checked := true;
3387        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3388        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3389        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3390        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3391        CheckBox1.Enabled := false;  
3392        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3393        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3394        CheckBox2.Checked := false;  
3395        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3396        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3397        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3398        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3399        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3400        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3401        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3402        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3403        ListBox1.Visible := true;        ListBox1.Visible := true;
3404        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3405        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3406        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3407        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3408    
3409          chkForstorTilDirekte.Checked := false;
3410          chkForstorTilDirekte.Enabled := false;
3411    
3412    
3413        InitLillePakke();        InitLillePakke();
3414        IndlesScanningLogFil();        IndlesScanningLogFil();
3415        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4011  end; Line 3429  end;
3429    
3430  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3431  begin  begin
3432          menuIndlevering.Checked := true;
3433        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3434        Returpakkerfrapakkeshop1.Checked := true;  
3435        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3436        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3437        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3438        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3439        CheckBox1.Enabled := false;  
3440        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3441        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3442        CheckBox2.Checked := false;  
3443        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3444        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
       CheckBox1.Checked := false;  
3445        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3446          chkSporgEfterKunde.Checked := false;
3447    
3448    
3449    
3450        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3451        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3452        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3453        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3454        ListBox1.Visible := true;        ListBox1.Visible := true;
3455        ListBox1.Items.Clear;        ListBox1.Items.Clear();
3456        DownloadButton01.Enabled := false;  
3457        OpdaterListenButton01.Enabled := true;        BtnDownloadKontrolfil.Enabled := false;
3458        EKLoverforsel.Enabled := false;        BtnOpdaterListen.Enabled := true;
3459          BtnEKLoverforsel.Enabled := false;
3460    
3461          chkForstorTilDirekte.Checked := false;
3462          chkForstorTilDirekte.Enabled := false;
3463    
3464    
3465        InitLillePakke();        InitLillePakke();
3466        IndlesScanningLogFil();        IndlesScanningLogFil();
3467        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4057  end; Line 3485  end;
3485    
3486  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3487  begin  begin
3488    RadioButton2.Checked := true;    radioLillePakke.Checked := true;
3489    Smpakker1.Checked := true;    Smpakker1.Checked := true;
 // 20150310: start  
3490  //  Stregkode := '';  //  Stregkode := '';
 // 20150310: slut  
3491  end;  end;
3492    
3493  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3494  begin  begin
3495    RadioButton1.Checked := true;    radioStorPakke.Checked := true;
3496    Storepakker1.Checked := true;    Storepakker1.Checked := true;
3497  // 20150310: start  // 20150310: start
3498  //  Stregkode := '';  //  Stregkode := '';
3499  // 20150310: slut  // 20150310: slut
3500  end;  end;
3501    
 /// <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]]);  
3502    
     // 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;  
3503    
3504  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3505  begin  begin
# Line 4163  end; Line 3524  end;
3524    
3525  procedure TMainForm.Testlyd2Click(Sender: TObject);  procedure TMainForm.Testlyd2Click(Sender: TObject);
3526  begin  begin
 // 20150317: start  
3527    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3528    begin    begin
3529       if ScannetOkTilTjekkodeLyd  <> '' then       if ScannetOkTilTjekkodeLyd  <> '' then
# Line 4176  begin Line 3536  begin
3536       end;       end;
3537       exit;       exit;
3538    end;    end;
 // 20150317: slut  
3539    
3540    if Smpakker1.Checked then    if Smpakker1.Checked then
3541       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
# Line 4185  begin Line 3544  begin
3544       end       end
3545       else       else
3546       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);  
3547         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3548       end;       end;
3549    if Storepakker1.Checked then    if Storepakker1.Checked then
3550       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
# Line 4197  begin Line 3553  begin
3553       end       end
3554       else       else
3555       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);  
3556         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3557       end;       end;
3558  end;  end;
3559    
# Line 4217  begin; Line 3570  begin;
3570    CheckCode();    CheckCode();
3571  end;  end;
3572    
3573  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3574  var  var
3575    WebSvar : String;    WebSvar : String;
3576    URLStr : String;    URLStr : String;
# Line 4227  var Line 3580  var
3580    status, kommentar : String;    status, kommentar : String;
3581    
3582  begin  begin
3583      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3584    
3585      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');
3586      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3587      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3588      StedKode := Sted;      StedKode := Sted;
3589      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3590  // 20150330: start  
3591      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3592      begin      begin
3593        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3594      end;      end;
3595  // 20150330: slut  
3596    
3597      try      try
3598      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4290  begin Line 3643  begin
3643        end;        end;
3644      end;      end;
3645    
3646      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3647    
3648      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
3649    
# Line 4307  begin Line 3660  begin
3660           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3661         end;         end;
3662         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3663         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3664      end;      end;
3665    
3666  end;  end;
# Line 4331  begin Line 3684  begin
3684    else    else
3685      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3686  }  }
3687    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3688    
3689    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3690    CheckCode();    CheckCode();
# Line 4339  end; Line 3692  end;
3692    
3693  end;  end;
3694    
 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;  
3695    
3696  //  //
3697  // Bladhus ***  // Bladhus ***
# Line 4855  begin Line 4169  begin
4169    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
4170  end;  end;
4171    
4172  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4173  begin  begin
4174      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4175      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
4176  end;  end;
4177    
4178  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4179  const  const
4180    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4181    
# Line 4870  begin Line 4184  begin
4184      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
4185  end;  end;
4186    
4187  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4188  begin  begin
4189      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4190      begin      begin
# Line 4879  begin Line 4193  begin
4193      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
4194  end;  end;
4195    
4196  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;  
4197    
4198  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4199  var  var
# Line 4903  var Line 4205  var
4205    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4206    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4207    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4208    pakketyper : TStrings;    //pakketyper : TStrings;
4209      pakketyper : TDictionary<String, Integer>;
4210      tmpAntal : Integer;
4211    
4212    
4213    
4214    antlin : Integer;    antlin : Integer;
4215  // 20150306: start  
4216    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4217  // 20150306: slut  
4218    XmlFelter : TStrings;    //XmlFelter : TStrings;
4219      XmlFelter : TDictionary<String, Integer>;
4220    
4221   begin   begin
4222      XmlFelter := TStringList.Create;  
4223      pakketyper := TStringList.Create;  
4224        XmlFelter := TDictionary<String, Integer>.Create;
4225        pakketyper := TDictionary<String, Integer>.Create;
4226    
4227      linienr := 0;      linienr := 0;
4228      ListBox2.Clear;      ListBox2.Clear;
4229      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 4238  var
4238          StedKode := Sted;          StedKode := Sted;
4239        end;        end;
4240    
4241  // 20150310: start        Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4242  (*  
4243      if Returpakkerfrapakkeshop1.Checked then  
4244       begin  
4245        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);      if (Scanningtype = '7') then
      end  
     else if Pakkeshoplevering1.Checked then  
4246       begin       begin
4247        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4248       end       end
4249      else if Pakkernormal1.Checked then      else if (Scanningtype = '6') then
4250       begin       begin
4251        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]);  
4252       end       end
4253      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4254       begin       begin
4255        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4256       end       end
4257      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4258       begin       begin
# Line 4977  var Line 4277  var
4277        begin        begin
4278          // Her skal vi ikke gøre noget - men vi skal forespørge igen          // Her skal vi ikke gøre noget - men vi skal forespørge igen
4279          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4280    
4281    
4282    
4283        end;        end;
4284        on e:exception do        on e:exception do
4285        begin        begin
# Line 4989  var Line 4292  var
4292      try      try
4293        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4294    
4295  // 20150206: start  
4296        antlin := 0;        antlin := 0;
4297        antlinIdag := 0;        antlinIdag := 0;
4298        antlinSenere := 0;        antlinSenere := 0;
4299  // 20150306: slut  
       antalFelterFundet := 0;  
4300        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4301            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4302            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4303              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4304              begin              begin
4305                 antlin := antlin + 1;                 Inc(antlin);
4306                 // 20150306: start                 // 20150306: start
4307                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4308                begin                begin
4309                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4310                   begin                   begin
4311                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4312                   end                   end
4313                   else                   else
4314                   begin                   begin
4315                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4316                   end;                   end;
4317                end;                end;
4318                 // 20150306: slut                 // 20150306: slut
4319              end;              end;
4320            end;            end;
4321            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4322                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4323                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4324                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4325                  end
4326                else                else
4327                  XmlFelter.values[Node.NodeName] := '1';                begin
4328                    XmlFelter.Add(Node.NodeName, 1);
4329                  end;
4330    
4331        end;        end;
4332        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
4333        antalFelterFundet := 0;        antalFelterFundet := 0;
4334        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4335        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4336  // 20150206: start  
4337  //      logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';  
4338          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4339    
4340        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4341        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4342        begin        begin
4343          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4344        end;        end;
4345        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4346  // 20150306: slut  
4347        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4348    
4349    
4350        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4351            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4352            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 5043  var Line 4354  var
4354                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4355                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4356                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4357              end;              end
4358              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4359                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4360                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4361                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4362              end;              end
4363              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4364                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4365                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4366                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4367              end;              end
4368              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4369                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4370                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4371                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4372              end;              end
4373              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4374                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4375                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4376                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4377                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4378                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4379                    pakketyper.TryGetValue(pakketype, tmpAntal);
4380                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4381                  end
4382                else                else
4383                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4384              end;              end
4385              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4386                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4387                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4388                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4389                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4390                  begin                  begin
4391  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4392                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4393                    begin                    begin
4394                      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
4395                    end                    end
4396                    else                    else
4397                    begin                    begin
4398                      stregkoderMedTjekkodeArray[linienr] := stregkode;                      stregkoderMedTjekkodeArray[linienr] := stregkode;
4399                    end;                    end;
4400  // 20150306: slut                    linienr := linienr + 1;
                     linienr := linienr + 1;  
4401                  end;                  end;
4402              end;              end;
4403    
4404    
4405              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4406              begin              begin
4407                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 5103  var Line 4417  var
4417              end;              end;
4418            end;            end;
4419        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4420    
4421          // Free up the list object  
4422          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4423    
4424    
4425          for pakketype in pakketyper.Keys do
4426          begin
4427            pakketyper.TryGetValue(pakketype, tmpAntal);
4428            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4429          end;
4430    
4431            // Free up the dictionary object
4432        pakketyper.Free;        pakketyper.Free;
4433  // 20150306: start  
4434    
4435    
4436  //      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.');
4437        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4438        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5119  var Line 4441  var
4441        end;        end;
4442        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4443        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
 // 20150306: slut  
 // 20150309: start  
4444        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4445        begin        begin
4446          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
# Line 5129  var Line 4449  var
4449        begin        begin
4450          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4451        end;        end;
 // 20150309: slut  
4452    
 // 20150310: start  
4453        if (Scanningtype = '1') then        if (Scanningtype = '1') then
4454        begin        begin
4455          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal
# Line 5210  var Line 4528  var
4528            PanelManglendePakker6.Visible := false;            PanelManglendePakker6.Visible := false;
4529          end;          end;
4530        end;        end;
 // 20150310: slut  
4531    
4532      except on e:exception do      except on e:exception do
4533        begin        begin
# Line 5272  end; Line 4589  end;
4589  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4590  var  var
4591     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4592     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4593     imorgenYmd : string;     imorgenYmd : string;
4594     logFilnavn : string;     logFilnavn : string;
4595      error : Integer;     //error : Integer;
4596    
4597  begin  begin
4598    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5369  begin Line 4684  begin
4684          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4685          S := buffer;          S := buffer;
4686          SetLength(A,0);          SetLength(A,0);
4687          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4688          if (length(A) < 2) then          if (length(A) < 2) then
4689          begin          begin
4690            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4691          end;          end;
4692            if (length(A) > 1) then            if (length(A) > 1) then
4693            begin            begin
# Line 5446  begin Line 4761  begin
4761          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4762          S := buffer;          S := buffer;
4763          SetLength(A,0);          SetLength(A,0);
4764          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4765          if (length(A) < 3) then          if (length(A) < 3) then
4766          begin          begin
4767            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4768          end;          end;
4769          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4770          begin          begin
# Line 5541  begin Line 4856  begin
4856    result := svar;    result := svar;
4857  end;  end;
4858    
4859    procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4860    begin
4861      //ShowMessage('Ændring ikke tilladt');
4862      // Her skal komme en 'rød skærm' alarm
4863      PlaySound(PWideChar(AlarmLyd));
4864      MainForm.Color := clRed;
4865    
4866    
4867      RuteNummerST.Caption := '';
4868      BoghandlerNavnST.Caption := '';
4869      btnNulstil.Visible := true;
4870    
4871      if (strMessage <> '') then
4872      begin
4873        ListBox1.Items.Insert(0, strMessage);
4874        KommentarST.Caption := strMessage;
4875      end;
4876    
4877      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4878    
4879    end;
4880    
4881  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
4882  var  var
4883     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
# Line 5598  begin Line 4935  begin
4935    result := svar;    result := svar;
4936  end;  end;
4937    
 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;  
4938    
4939  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4940  begin  begin
4941    if Scanogstjekkoden1.Checked then    if Scanogstjekkoden1.Checked then
4942    begin    begin
4943       CheckBox3.Checked := true;       chkScanTjekkode.Checked := true;
4944    end    end
4945    else    else
4946    begin    begin
4947       CheckBox3.Checked := false;       chkScanTjekkode.Checked := false;
4948    end;    end;
4949  end;  end;
4950    
4951  function TMainForm.AdobeReaderExists: Boolean;  
4952  var  //Nedarvet fra IParentForm
4953    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4954  begin  begin
4955    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4956  end;  end;
4957    
4958  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4959  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;  
4960  begin  begin
4961      ListBox1.Items.Insert(0, msg);
4962      SkrivScanningLogFil(msg);
4963    end;
4964    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4965    
4966    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4967    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4968      printerTxt := 'Der er fravalgt printer i dette program';  begin
4969      ListBox1.Items.Insert(0,printerTxt);  
4970      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4971    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4972    begin    begin
4973      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4974      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4975      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4976    end    end
4977    else    else
4978    begin    begin
4979      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4980      try      PrinterstatusStaticText1.Color := clWhite;
4981        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;  
4982    end;    end;
4983  end;  end;
4984    
4985  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4986  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;  
4987  begin  begin
4988     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;  
4989  end;  end;
 // 20150310: slut  
4990    
4991  end.  end.
4992    

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

  ViewVC Help
Powered by ViewVC 1.1.20