/[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 2705 by torben, Fri Sep 4 12:39:33 2015 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    
30    ;    ;
31    
32  type  type
33    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
34      StregkodeST: TStaticText;      StregkodeST: TStaticText;
35      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
36      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
37      IdHTTP1: TIdHTTP;      IdHTTP1: TIdHTTP;
38      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
39      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
40      CheckBox1: TCheckBox;      chkSporgEfterKunde: TCheckBox;
41      KommentarST: TStaticText;      KommentarST: TStaticText;
42      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
43      N1: TMenuItem;      N1: 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    
108    
109    
   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;  
110    function getProddato() : TDate;    function getProddato() : TDate;
111    function getProddag() : String;    function getProddag() : String;
112    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;  
113    
114    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
115    procedure StartScreen();    procedure StartScreen();
# Line 113  type Line 122  type
122    procedure FormKeyPress(Sender: TObject; var Key: Char);    procedure FormKeyPress(Sender: TObject; var Key: Char);
123    procedure FormCreate(Sender: TObject);    procedure FormCreate(Sender: TObject);
124    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
125    procedure RadioButton1Click(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
126    procedure RadioButton2Click(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
127    procedure CheckBox1Click(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
128    procedure Pakkernormal1Click(Sender: TObject);    procedure Pakkernormal1Click(Sender: TObject);
129    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
130    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
# Line 131  type Line 140  type
140    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
141    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
142    procedure Budlevering1Click(Sender: TObject);    procedure Budlevering1Click(Sender: TObject);
143    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
144    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
145    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
146    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
147    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 140  type Line 149  type
149    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
150    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
151    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
152    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
153    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
154    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure Pakkeshoplevering1Click(Sender: TObject);
155    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
156    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);
157    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
158    procedure InitReturFraDao();    procedure InitReturFraDao();
# Line 154  type Line 163  type
163    procedure InitIndleveringskode();    procedure InitIndleveringskode();
164    
165    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
166    procedure CheckBox2Click(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
167    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
168    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
169    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
170    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
171    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
172    procedure CheckBox3Click(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
173    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure Automatisktjekkodestyring1Click(Sender: TObject);
174    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
175    procedure Automatiskvalg1Click(Sender: TObject);    procedure Automatiskvalg1Click(Sender: TObject);
# Line 172  type Line 180  type
180    procedure PanelValg4Click(Sender: TObject);    procedure PanelValg4Click(Sender: TObject);
181    procedure PanelValg5Click(Sender: TObject);    procedure PanelValg5Click(Sender: TObject);
182    procedure PanelValg6Click(Sender: TObject);    procedure PanelValg6Click(Sender: TObject);
183      procedure PanelValg7Click(Sender: TObject);
184    
185    procedure NulstilAutomatiskValg();    procedure NulstilAutomatiskValg();
186    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
187    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
188    procedure TjekkerUrls();    procedure TjekkerUrls();
189  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
190    procedure RoundCornerOf(Control: TWinControl);  
191      procedure menuIndleveringClick(Sender: TObject);
192    
193    
194    
195    
196      //Nedarvet fra IParentForm
197      procedure LogMessage( msg : string);
198      procedure SetPrinterstatusText( txt: string; alert: boolean);
199      function GetFormObject() : TForm;
200    
     procedure PanelValg7Click(Sender: TObject);  
 // 20150310: slut  
201    
202    private    private
203      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 205  type
205      SkrivLog : String;      SkrivLog : String;
206      Sted : String;      Sted : String;
207      StedNavn : String;      StedNavn : String;
208      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel : String;
209  // 29150330: start  
210      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
211  // 20150330: slut  
212      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
213      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
214      ScanTjekkode : String;      ScanTjekkode : String;
215      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
216      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;
217      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop : String;      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;
218      LabelType : integer;  
219      AlarmLyd : String;      AlarmLyd : String;
220      ScannetOkLyd : String;      ScannetOkLyd : String;
221      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
222  // 20150317: start  
223      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
224  // 20150317: slut  
225      PrinterNavn : String;      PrinterNavn : String;
226      TjekPrinter : String;      TjekPrinter : String;
227      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;  
228      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
229      BladhusSted : Integer;      BladhusSted : Integer;
230      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 242  type Line 237  type
237      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
238      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
239      TjekUrls : String;      TjekUrls : String;
240        Config : TConfiguration;
241    
242            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
243        LabelPrint: TLabelPrint;
244    
245      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 = '');
246      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
247      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 = '');
248      procedure CheckCode();      procedure CheckCode();
249      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 255  type Line 252  type
252      procedure IndlesScanningLogFil();      procedure IndlesScanningLogFil();
253      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
254      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
255        procedure VisAlarmSkaerm(strMessage: string);
256    
257    public    public
258      { Public declarations }      { Public declarations }
259    end;    end;
260    
261    
262  var  var
263    MainForm: TMainForm;    MainForm: TMainForm;
264    
# Line 273  var Line 272  var
272  implementation  implementation
273  {$R *.dfm}  {$R *.dfm}
274    
275  function TMainForm.TColorToHex(Color : TColor) : string;  
276  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;  
277    
278  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
279  begin  begin
280    
 // 20150309: startr  
281      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
282  // 20150309: slut  
283    
284      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
285      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 340  begin Line 323  begin
323        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
324      end;      end;
325    
326      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
327    
328      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
329      begin      begin
# Line 394  begin Line 377  begin
377    
378      StartScreen();      StartScreen();
379      MainForm.Caption := Titel;      MainForm.Caption := Titel;
380      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
381      MainForm.Farve := Farve;      MainForm.Farve := Farve;
382      MainForm.Titel := Titel;      MainForm.Titel := Titel;
383      MainForm.Url := Url;      MainForm.Url := Url;
# Line 409  begin Line 392  begin
392      else      else
393        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
394    
395      CheckBox3.Checked := false;      chkScanTjekkode.Checked := false;
396      CheckBox3.Enabled := false;      chkScanTjekkode.Enabled := false;
397      Scanogstjekkoden1.Enabled := false;      Scanogstjekkoden1.Enabled := false;
398    
399      if (Scanningtype = '1') or (Scanningtype = '5') then      if (Scanningtype = '1') or (Scanningtype = '5') then
400      begin      begin
401        if (ScanTjekkode = '1') then        if (ScanTjekkode = '1') then
402        begin        begin
403          CheckBox3.Checked := true;          chkScanTjekkode.Checked := true;
404          CheckBox3.Enabled := true;          chkScanTjekkode.Enabled := true;
405          Scanogstjekkoden1.Enabled := true;          Scanogstjekkoden1.Enabled := true;
406        end        end
407        else        else
408        begin        begin
409          CheckBox3.Checked := false;          chkScanTjekkode.Checked := false;
410          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
411          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
412        end;        end;
413      end;      end;
414    
415      if Automatisktjekkodestyring1.Checked then      if Automatisktjekkodestyring1.Checked then
416      begin      begin
417        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
418        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
419      end;      end;
420    
# Line 454  begin Line 437  begin
437          end          end
438          else          else
439          begin          begin
440            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
441          end;          end;
442          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
443        end        end
444        else        else
445        begin        begin
446          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
447          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
448        end;        end;
449      end;      end;
450    
451    
452  end;  end;
453    
454  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 472  begin Line 456  begin
456    
457    if Altidprintepakkelabel1.Checked then    if Altidprintepakkelabel1.Checked then
458    begin    begin
459       CheckBox2.Checked := true;       chkAltidPrintLabel.Checked := true;
460    end    end
461    else    else
462    begin    begin
463       CheckBox2.Checked := false;       chkAltidPrintLabel.Checked := false;
464    end;    end;
465    
466  end;  end;
# Line 490  procedure TMainForm.Automatisktjekkodest Line 474  procedure TMainForm.Automatisktjekkodest
474  begin  begin
475    if Automatisktjekkodestyring1.Checked then    if Automatisktjekkodestyring1.Checked then
476    begin    begin
477       CheckBox3.Enabled := false;       chkScanTjekkode.Enabled := false;
478       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
479    end    end
480    else    else
481    begin    begin
482       CheckBox3.Enabled := true;       chkScanTjekkode.Enabled := true;
483       Scanogstjekkoden1.Enabled := true;       Scanogstjekkoden1.Enabled := true;
484    end;    end;
485    
# Line 503  end; Line 487  end;
487    
488  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);
489  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;  
 *)  
490  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
491  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
492       AutomatiskValg1.Checked := true;       AutomatiskValg1.Checked := true;
493       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
494       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
495  end;  end;
496    
497    
498    //InitForm kaldes før FormCreate
499  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
500  const  const
501    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
502  var  var
   printerInd : integer;  
   i : Integer;  
 // 20150310: start  
503    gemScanningtype : String;    gemScanningtype : String;
 // 20150310: slut  
504    
505  begin  begin
506    
507    
508    // Initierer nogle variabler    // Initierer nogle variabler
509    BladhusSted := 00;    BladhusSted := 00;
510    Application.ShowHint := True;    Application.ShowHint := True;
511    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
512    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
513  // 20150306: start  
514    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
515  // 20150306: slut  
516  // 20150310: start    TUtils.RoundCornerOf(PanelManglendePakker1);
517    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker2);
518    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker3);
519    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker4);
520    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker5);
521    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker6);
522    RoundCornerOf(PanelManglendePakker6);  
 // 20150310: slut  
523    
524    // 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
525    if DirectoryExists('Docs') then    if DirectoryExists('Docs') then
# Line 565  begin Line 532  begin
532    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
533    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
534    
535      Config := TConfiguration.Create();
536      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
537      Config.Sted := Sted;
538    
539    // Læser parametre fra ini filen    // Læser parametre fra ini filen
540    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
541    try    try
542    
543    
544      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
545      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
546      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
# Line 579  begin Line 552  begin
552      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');
553      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');
554      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');
555  // 20150330: start  
556      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');
557  // 20150330: slut  
558      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');
559      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');
560      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');
561      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');
562      LabelType := ReadInteger('Settings','LabelType',1);  
563    
564        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
565        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
566    
567    
568    
569      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
570      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
571      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 597  begin Line 576  begin
576      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');      TitelBudlevering := ReadString('Settings','TitelBudlevering','Modtagelse af DAO DIREKTE pakker');
577      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');      FarvePakkeshoplevering := ReadString('Settings','FarvePakkeshoplevering','99FFFF');
578      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');      TitelPakkeshoplevering := ReadString('Settings','TitelPakkeshoplevering','Modtagelse af DAO PAKKESHOP pakker');
579    
580      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');      FarveReturPakkeshop := ReadString('Settings','FarveReturPakkeshop','99FFCC');
581      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');      TitelReturPakkeshop := ReadString('Settings','TitelReturPakkeshop','Returforsendelse fra pakkeshop');
582    
583        FarveIndlevering := ReadString('Settings', 'FarveIndlevering', 'E5B2CB');
584        TitelIndlevering := ReadString('Settings', 'TitelIndlevering', 'Indleveringskode');
585    
586    
587      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');      SporgEfterBoghandler := ReadString('Settings','SporgEfterBoghandler','0');
588      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');      ScanTjekkode := ReadString('Settings','ScanTjekkode','0');
589      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');      ScanTjekkodeAutomatik := ReadString('Settings','ScanTjekkodeAutomatik','1');
# Line 608  begin Line 593  begin
593      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');      AlarmLyd := ReadString('Settings','AlarmLyd','Sounds\Alarm.wav');
594      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');      ScannetOkLyd := ReadString('Settings','ScannetOkLyd','Sounds\Ok.wav');
595      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');      ScannetOkStorLyd := ReadString('Settings','ScannetOkStorLyd','Sounds\Ok_stor.wav');
596  // 20150317: start  
597      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');      ScannetOkTilTjekkodeLyd := ReadString('Settings','ScannetOkTilTjekkodeLyd','Sounds\Ok_til_tjekkode.wav');
598  // 20150317: slut  
599      PrinterNavn := ReadString('Settings','PrinterNavn','');      PrinterNavn := ReadString('Settings','PrinterNavn','');
600      TjekPrinter := ReadString('Settings','TjekPrinter','1');      TjekPrinter := ReadString('Settings','TjekPrinter','1');
601      TjekUrls := ReadString('Settings','TjekUrls','2');      TjekUrls := ReadString('Settings','TjekUrls','2');
602    
603      if (SkrivLog = '1') then      if (SkrivLog = '1') then
604      begin      begin
605        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);
606        try        try
607          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
608          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
609          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
610          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
611          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
612          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 639  begin Line 624  begin
624        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
625      end;      end;
626    
627      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;  
628    
629      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
630      begin      begin
631        CheckBox1.Checked := true;        chkSporgEfterKunde.Checked := true;
632        Sprgefterboghandlernummer1.Checked := true;        Sprgefterboghandlernummer1.Checked := true;
633      end      end
634      else      else
635      begin      begin
636        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
637        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
638      end;      end;
639    
640      if ScanTjekkode = '1' then      if ScanTjekkode = '1' then
641      begin      begin
642        CheckBox3.Checked := true;        chkScanTjekkode.Checked := true;
643        Scanogstjekkoden1.Checked := true;        Scanogstjekkoden1.Checked := true;
644      end      end
645      else      else
646      begin      begin
647        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
648        Scanogstjekkoden1.Checked := false;        Scanogstjekkoden1.Checked := false;
649      end;      end;
650    
651      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
652      begin      begin
653        Automatisktjekkodestyring1.Checked := true;        Automatisktjekkodestyring1.Checked := true;
654        CheckBox3.Enabled := false;        chkScanTjekkode.Enabled := false;
655        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
656      end;      end;
657    
# Line 760  begin Line 677  begin
677      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
678      // *************************** //      // *************************** //
679    
680    {$IfDef STED_BK}
681        SpecialVersionSted := 'BK';
682    {$EndIf}
683    {$IfDef STED_DBK}
684        SpecialVersionSted := 'DBK';
685    {$EndIf}
686    {$IfDef STED_FD}
687        SpecialVersionSted := 'FD';
688    {$EndIf}
689    {$IfDef STED_NS}
690        SpecialVersionSted := 'NS';
691    {$EndIf}
692    
693    
694      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
695      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
696      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 775  begin Line 706  begin
706      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
707      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
708    
 // 20150313: start  
709      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
710      begin      begin
711         SpecialVersionSted := '01';         SpecialVersionSted := '01';
# Line 786  begin Line 716  begin
716         SpecialVersionSted := '03';         SpecialVersionSted := '03';
717         SpecialVersionScanningtype := '4';         SpecialVersionScanningtype := '4';
718      end;      end;
 // 20150313: slut  
719    
720      if SpecialVersionSted = 'BK' then      if SpecialVersionSted = 'BK' then
721      begin      begin
# Line 826  begin Line 755  begin
755        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
756        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
757        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
758          PanelValg7.Enabled := false;
759          PanelValg7.Font.Color := clInactiveCaption;
760    
761       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
762        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
763        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
764  // 20150317: start  
765        Pakkeshoplevering1.Enabled := false;        Pakkeshoplevering1.Enabled := false;
766        Returpakkerfrapakkeshop1.Enabled := false;        Returpakkerfrapakkeshop1.Enabled := false;
767  // 20150317: slut  
768        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
769        begin        begin
770           Scanningtype := '1';           Scanningtype := '1';
# Line 862  begin Line 794  begin
794        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
795        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
796        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
797          PanelValg7.Enabled := false;
798          PanelValg7.Font.Color := clInactiveCaption;
799       // 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
800  // 20150317: start  
801        Automatiskvalg1.Enabled := false;        Automatiskvalg1.Enabled := false;
802  // 20150317: slut  
803        Pakkernormal1.Enabled := false;        Pakkernormal1.Enabled := false;
804        ReturpakkerfraDAO1.Enabled := false;        ReturpakkerfraDAO1.Enabled := false;
805        Returpakkerfraboghandler1.Enabled := false;        Returpakkerfraboghandler1.Enabled := false;
# Line 957  begin Line 891  begin
891             RutenummerST.Caption := '';             RutenummerST.Caption := '';
892             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
893             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
894             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
895             exit;             exit;
896          end;          end;
897      end      end
# Line 1000  begin Line 934  begin
934      if Pakketype = '1' then      if Pakketype = '1' then
935      begin      begin
936        Storepakker1.Checked := true;        Storepakker1.Checked := true;
937        RadioButton1.Checked := true;        radioStorPakke.Checked := true;
938      end      end
939      else      else
940      begin      begin
941        Smpakker1.Checked := true;        Smpakker1.Checked := true;
942        RadioButton2.Checked := true;        radioLillePakke.Checked := true;
943      end;      end;
944    
945      if TestFunktionen = '1' then      if TestFunktionen = '1' then
# Line 1045  begin Line 979  begin
979        ScannetOkStorLyd := '';        ScannetOkStorLyd := '';
980      end;      end;
981    
982  // 20150317: start  
983      if not FileExists(ScannetOkTilTjekkodeLyd) then      if not FileExists(ScannetOkTilTjekkodeLyd) then
984      begin      begin
985        ScannetOkTilTjekkodeLyd := '';        ScannetOkTilTjekkodeLyd := '';
986      end;      end;
 // 20150317: slut  
987    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
988    
989      CheckPrintQue('Opstart');  
990    
991        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
992        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
993    
994    finally    finally
995      Free;      Free;
# Line 1083  begin Line 1013  begin
1013          InitBladhus();          InitBladhus();
1014        end;        end;
1015    
1016  // 20150310: start  
1017      // Opbygger PanelManglendePakker information      // Opbygger PanelManglendePakker information
1018      gemScanningtype := Scanningtype;      gemScanningtype := Scanningtype;
1019    
# Line 1124  begin Line 1054  begin
1054      end;      end;
1055    
1056      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
 // 20150310: slut  
1057    
1058      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1059      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1060    
1061  end;  end;
1062    
# Line 1145  var Line 1074  var
1074    BoghandlerNavn : String;    BoghandlerNavn : String;
1075    Koreliste : String;    Koreliste : String;
1076    PrintNyLabel : Boolean;    PrintNyLabel : Boolean;
   List1msg : String;  
1077    pakkeErScannet : Integer;    pakkeErScannet : Integer;
1078    pakkeForkertSted : Integer;    pakkeForkertSted : Integer;
1079    tjekkodeMangler : Integer;    tjekkodeMangler : Integer;
# Line 1170  begin Line 1098  begin
1098      ClipboardData := Clipboard.AsText;      ClipboardData := Clipboard.AsText;
1099      numberString := ClipboardData;      numberString := ClipboardData;
1100      Val(numberString, float, errorPos);      Val(numberString, float, errorPos);
1101  // 20150311: start  
1102  //    if (ClipboardData <> '') and (errorPos = 0) then      //    if (ClipboardData <> '') and (errorPos = 0) then
1103      if (ClipboardData <> '') and (errorPos = 0)      if (ClipboardData <> '') and (errorPos = 0)
1104      or (NumberString = 'Nulstil')      or (NumberString = 'Nulstil')
1105      or (NumberString = 'Indtast kundenummer')      or (NumberString = 'Indtast kundenummer')
# Line 1186  begin Line 1114  begin
1114      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1115      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1116      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1117  // 20150311: slut  
1118      begin      begin
1119        Stregkode := Stregkode + ClipboardData;        Stregkode := Stregkode + ClipboardData;
1120        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1199  begin Line 1127  begin
1127    
1128    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1129    begin    begin
 // 20150306: start  
1130      if (Length(Trim(Stregkode)) = 0) then      if (Length(Trim(Stregkode)) = 0) then
1131      begin      begin
1132        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1133        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;  
1134        exit;        exit;
1135      end;      end;
 // 20150306: slut  
1136    
 // 20150311: start  
1137      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1138      begin      begin
1139         PakkeshopNulstil.Click();         btnNulstil.Click();
1140         exit;         exit;
1141      end;      end;
1142    
1143      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1144      begin      begin
1145         PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1146  // 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  
1147         exit;         exit;
1148      end;      end;
1149    
1150      if StregKode = 'Lille pakke' then      if StregKode = 'Lille pakke' then
1151      begin      begin
1152         if RadioButton2.Enabled = true then         if radioLillePakke.Enabled = true then
1153         begin         begin
1154            InitLillePakke();            InitLillePakke();
1155         end         end
1156         else         else
1157         begin         begin
1158          //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;  
1159         end;         end;
1160         Stregkode := '';         Stregkode := '';
1161         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1268  begin Line 1164  begin
1164    
1165      if StregKode = 'Stor pakke' then      if StregKode = 'Stor pakke' then
1166      begin      begin
1167         if RadioButton1.Enabled = true then         if radioStorPakke.Enabled = true then
1168         begin         begin
1169            InitStorPakke();            InitStorPakke();
1170         end         end
1171         else         else
1172         begin         begin
1173          //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;  
1174         end;         end;
1175         Stregkode := '';         Stregkode := '';
1176         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1294  begin Line 1179  begin
1179    
1180      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1181      begin      begin
1182         if CheckBox1.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
1183         begin         begin
1184           if (CheckBox1.State = cbChecked) then           if (chkSporgEfterKunde.State = cbChecked) then
1185           begin           begin
1186            CheckBox1.State := cbUnchecked;            chkSporgEfterKunde.State := cbUnchecked;
1187           end           end
1188           else           else
1189           begin           begin
1190            CheckBox1.State := cbChecked;            chkSporgEfterKunde.State := cbChecked;
1191           end;           end;
1192         end         end
1193         else         else
1194         begin         begin
1195          //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;  
1196         end;         end;
1197         Stregkode := '';         Stregkode := '';
1198         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1327  begin Line 1201  begin
1201    
1202      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
1203      begin      begin
1204        if CheckBox3.Enabled = true then        if chkScanTjekkode.Enabled = true then
1205        begin        begin
1206           if (CheckBox3.State = cbChecked) then           if (chkScanTjekkode.State = cbChecked) then
1207           begin           begin
1208            CheckBox3.State := cbUnchecked;            chkScanTjekkode.State := cbUnchecked;
1209           end           end
1210           else           else
1211           begin           begin
1212            CheckBox3.State := cbChecked;            chkScanTjekkode.State := cbChecked;
1213           end;           end;
1214        end        end
1215        else        else
1216        begin        begin
1217          //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;  
1218        end;        end;
1219        Stregkode := '';        Stregkode := '';
1220        StregkodeST.Caption := StregKode;        StregkodeST.Caption := StregKode;
# Line 1366  begin Line 1229  begin
1229         end         end
1230         else         else
1231         begin         begin
1232          //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;  
1233         end;         end;
1234         Stregkode := '';         Stregkode := '';
1235         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1236         exit;         exit;
1237      end;      end;
1238    
1239  // 20150323: start  
 //    if StregKode = 'DAO NAT X-PRESS' then  
1240      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  
1241      begin      begin
1242         if (PanelValg1.Enabled = true) then         if (PanelValg1.Enabled = true) then
1243         begin         begin
# Line 1395  begin Line 1245  begin
1245         end         end
1246         else         else
1247         begin         begin
1248          //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;  
1249         end;         end;
1250         Stregkode := '';         Stregkode := '';
1251         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1421  begin Line 1260  begin
1260         end         end
1261         else         else
1262         begin         begin
1263          //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;  
1264         end;         end;
1265         Stregkode := '';         Stregkode := '';
1266         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1447  begin Line 1275  begin
1275         end         end
1276         else         else
1277         begin         begin
1278          //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;  
1279         end;         end;
1280         Stregkode := '';         Stregkode := '';
1281         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1473  begin Line 1290  begin
1290         end         end
1291         else         else
1292         begin         begin
1293          //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;  
1294         end;         end;
1295         Stregkode := '';         Stregkode := '';
1296         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1499  begin Line 1305  begin
1305         end         end
1306         else         else
1307         begin         begin
1308          //ShowMessage('Ændring ikke tilladt');            VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
         // Her skal komme en 'rød skærm' alarm  
          PlaySound(PWideChar(AlarmLyd));  
          List1msg := Stregkode + ' kan ikke vælges på dette scanningsted';  
          ListBox1.Items.Insert(0,List1Msg);  
          MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
          KommentarST.Caption := List1msg;  
          PakkeshopNulstil.Visible := true;  
1309         end;         end;
1310         Stregkode := '';         Stregkode := '';
1311         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
# Line 1525  begin Line 1320  begin
1320         end         end
1321         else         else
1322         begin         begin
1323          //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;  
1324         end;         end;
1325         Stregkode := '';         Stregkode := '';
1326         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1327         exit;         exit;
1328      end;      end;
1329  // 20150311: slut  
1330    
1331      if (Length(Stregkode) > 8) then      if (Length(Stregkode) > 8) then
1332      begin      begin
# Line 1597  begin Line 1381  begin
1381          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)
1382          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then
1383      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1384         PlaySound(PWideChar(AlarmLyd));          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1385         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  
1386         exit;         exit;
1387      end;      end;
1388    
# Line 1626  begin Line 1398  begin
1398              end;              end;
1399            end            end
1400        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1401  (*  
       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  
 *)  
1402        else if Pakketype = 'Direkte' then        else if Pakketype = 'Direkte' then
1403            begin            begin
1404              if Scanningtype <> '4' then              if Scanningtype <> '4' then
# Line 1661  begin Line 1416  begin
1416              end;              end;
1417            end            end
1418        // Retur kan ikke scannes med 'Automatisk valg'        // Retur kan ikke scannes med 'Automatisk valg'
1419  (*  
       else if Pakketype = 'PakkeshopRetur' then  
           begin  
             if Scanningtype <> '6' then  
             begin  
               Scanningtype := '6';  
               InitReturFraPakkeshop();  
             end;  
           end  
 *)  
1420        else        else
1421            begin   // Her skal komme en alarm og rød skærm            begin
1422               PlaySound(PWideChar(AlarmLyd));            // Her skal komme en alarm og rød skærm
1423               List1msg := 'Pakken kan ikke scannes med automatisk valg';              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1424               ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
 // 20150316: start  
              RuteNummerST.Caption := '';  
              BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
              KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
 // 20150311: start  
              StregKode := '';  
              StregkodeST.Caption := StregKode;  
 // 20150311: slut  
1425               exit;               exit;
1426            end;            end;
1427        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1428      end      end
1429      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1430      begin      begin
1431        PlaySound(PWideChar(AlarmLyd));        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1432        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  
1433        exit;        exit;
1434      end;      end;
1435    
# Line 1714  begin Line 1437  begin
1437      begin      begin
1438        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1439        begin        begin
         PlaySound(PWideChar(AlarmLyd));  
         List1msg := 'Pakke findes som pakketype: ' + Pakketype;  
         ListBox1.Items.Insert(0,List1Msg);  
         MainForm.Color := clRed;  
 // 20150316: start  
          RuteNummerST.Caption := '';  
          BoghandlerNavnST.Caption := '';  
 // 20150316: slut  
         KommentarST.Caption := List1msg;  
         PakkeshopNulstil.Visible := true;  
 // 20150312: start  
         StregKode := '';  
         StregkodeST.Caption := StregKode;  
 // 20150312: slut  
         exit;  
       end;  
     end;  
   
 // 20150311: start  
 (*  
     if StregKode = 'Nulstil' then  
     begin  
        PakkeshopNulstil.Click();  
        exit;  
     end;  
1440    
1441      if PakkeshopNulstil.Visible then          VisAlarmSkaerm( 'Pakke findes som pakketype: ' + Pakketype );
     begin  
        PlaySound(PWideChar(AlarmLyd));  
        List1msg := 'HUSK at trykke Nulstil før ny scanning...';  
        ListBox1.Items.Insert(0,List1Msg);  
        MainForm.Color := clRed;  
        KommentarST.Caption := List1msg;  
        exit;  
     end;  
   
     if StregKode = 'Lille pakke' then  
     begin  
        InitLillePakke();  
        exit;  
     end;  
   
     if StregKode = 'Stor pakke' then  
     begin  
        InitStorPakke();  
        exit;  
     end;  
1442    
1443      if StregKode = 'Indtast kundenummer' then          exit;
1444      begin        end;
        if (CheckBox1.State = cbChecked) then  
        begin  
         CheckBox1.State := cbUnchecked;  
        end  
        else  
        begin  
         CheckBox1.State := cbChecked;  
        end;  
        Stregkode := '';  
        exit;  
1445      end;      end;
1446    
     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  
1447    
1448    
1449      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then
1450      begin      begin
1451        CheckBox3.Checked := false;        chkScanTjekkode.Checked := false;
1452        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
1453        begin        begin
1454          if (Stregkode=stregkoderMedTjekkodeArray[i]) then          if (Stregkode=stregkoderMedTjekkodeArray[i]) then
1455          begin          begin
1456              CheckBox3.Checked := true;              chkScanTjekkode.Checked := true;
1457              Scanogstjekkoden1.Checked := true;              Scanogstjekkoden1.Checked := true;
1458          end;          end;
1459        end;        end;
# Line 1812  begin Line 1465  begin
1465             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1466             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1467             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1468             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1469             Stregkode := '';             Stregkode := '';
1470             InitScreen();             InitScreen();
1471        end        end
# Line 1824  begin Line 1477  begin
1477             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1478             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1479             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1480             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1481             Stregkode := '';             Stregkode := '';
1482             InitScreen();             InitScreen();
1483        end        end
# Line 1836  begin Line 1489  begin
1489              PakkeshopStregkode := Stregkode;              PakkeshopStregkode := Stregkode;
1490              BoghandlerStregkode := Stregkode;              BoghandlerStregkode := Stregkode;
1491              PakkeshopText1.Caption := 'Tjekkode';              PakkeshopText1.Caption := 'Tjekkode';
1492  // 20150317: start  
1493              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));              PlaySound(PWideChar(ScannetOkTilTjekkodeLyd));
1494  // 20150317: slut  
1495             end             end
1496            else            else
1497             begin             begin
1498                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;  
1499             end;             end;
1500            Stregkode := '';            Stregkode := '';
1501            InitScreen();            InitScreen();
# Line 1861  begin Line 1508  begin
1508             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1509             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1510             if (PakkeshopLevering1.Checked) then             if (PakkeshopLevering1.Checked) then
1511                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1512             if (Pakkernormal1.Checked) then             if (Pakkernormal1.Checked) then
1513                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1514             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1515           end           end
1516          else          else
1517           begin           begin
1518                if (PakkeshopLevering1.Checked) then                if (PakkeshopLevering1.Checked) then
1519                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1520                if (Pakkernormal1.Checked) then                if (Pakkernormal1.Checked) then
1521                  List1msg := 'Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode;                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1522                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  
1523                StregKode := '';                StregKode := '';
1524                StregkodeST.Caption := StregKode;                StregkodeST.Caption := StregKode;
1525  // 20150323: slut  
1526                exit;                exit;
1527           end;           end;
1528          Stregkode := '';          Stregkode := '';
# Line 1891  begin Line 1531  begin
1531    
1532      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
1533      begin      begin
1534    
1535         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1536            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1537         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 1544  begin
1544            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1545            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1546            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1547               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1548               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1549              exit;              exit;
1550            end;            end;
1551            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then
# Line 1928  begin Line 1565  begin
1565              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1566              begin              begin
1567                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1568                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1569                MainForm.Color := clRed;                MainForm.Color := clRed;
1570              end;              end;
1571           end;           end;
1572            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
1573            begin            begin
1574              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1575              if Storepakker1.Checked then              if Storepakker1.Checked then
1576              begin              begin
1577                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1943  begin Line 1580  begin
1580              begin              begin
1581                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1582              end;              end;
1583              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1584            end            end
1585            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then
1586            begin            begin
1587              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1588              if Storepakker1.Checked then              if Storepakker1.Checked then
1589              begin              begin
1590                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
# Line 1956  begin Line 1593  begin
1593              begin              begin
1594                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1595              end;              end;
1596              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1597            end            end
1598            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1599            begin            begin
1600              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;  
1601            end            end
1602            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'            else if Kommentar = StregKode then    // budlevering  til 'Ukendt tur'
1603            begin            begin
1604            end            end
1605            else            else
1606            begin            begin
1607              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1608            end;            end;
1609           if not PakkeshopNulstil.Visible then  
1610             if not btnNulstil.Visible then
1611            begin            begin
1612  // 20150310: start  
 //            SletStregkodelinieFraListboks2(StregKode);  
 // 20150310: slut  
1613              If (Budlevering1.Checked) then              If (Budlevering1.Checked) then
1614              begin              begin
1615                if Storepakker1.Checked then                if Storepakker1.Checked then
# Line 1993  begin Line 1623  begin
1623                InitLillePakke();                InitLillePakke();
1624              end;              end;
1625            end;            end;
1626  // 20150310: start  
1627            SletStregkodelinieFraListboks2(StregKode);            SletStregkodelinieFraListboks2(StregKode);
1628  // 20150310: slut  
1629            PakkeshopStregkode := '';            PakkeshopStregkode := '';
1630            PakkeshopTjekkode := '';            PakkeshopTjekkode := '';
1631            BoghandlerStregkode := '';            BoghandlerStregkode := '';
# Line 2026  begin Line 1656  begin
1656    
1657    Key := #0;    Key := #0;
1658    
1659  end;  end; //End of OnKeyPress
1660    
1661  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1662  const  const
# Line 2063  end; Line 1693  end;
1693    
1694  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);  procedure TMainForm.SletStregkodelinieFraListboks2(StregKode : String);
1695  var  var
 // 20150309: start  
 //  i:integer;  
1696    i : Integer;    i : Integer;
1697    wrkAntal : String;    wrkAntal : String;
1698    wrkAntalIdag, wrkAntalSenere : Integer;    wrkAntalIdag, wrkAntalSenere : Integer;
1699  // 20150309: slut  
1700    
1701  begin  begin
1702      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
1703      begin      begin
1704        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1705          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
1706          begin          begin
1707  // 20150309: start  
1708            // Ajourføring af tæller for manglende pakker (scanninger)            // Ajourføring af tæller for manglende pakker (scanninger)
1709            wrkAntal := StaticTextManglendePakker.Caption;            wrkAntal := StaticTextManglendePakker.Caption;
1710            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1711            begin            begin
1712              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1713              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1714  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1715  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1716  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1717              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1718            end            end
1719            else     // kun idag            else     // kun idag
1720            begin            begin
# Line 2112  begin Line 1740  begin
1740            begin            begin
1741              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);              StaticTextManglendePakker.Caption := IntToStr(wrkAntalIdag);
1742            end;            end;
 // 20150309: slut  
1743    
 // 20150310: start  
1744            if (Scanningtype = '1') then            if (Scanningtype = '1') then
1745            begin            begin
1746              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);              PanelManglendePakker1.Caption := IntToStr(wrkAntalIdag + wrkAntalSenere);
# Line 2192  begin Line 1818  begin
1818                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1819              end;              end;
1820            end;            end;
1821  // 20150310: slut  
1822            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1823          end;          end;
1824      end;      end;
# Line 2219  begin Line 1845  begin
1845  end;  end;
1846    
1847  procedure TMainForm.InitBladhus();  procedure TMainForm.InitBladhus();
 var  
   LogFilnavn : string;  
1848    
1849  begin  begin
1850    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
# Line 2230  begin Line 1854  begin
1854    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1855    ListBox1.Visible := true;    ListBox1.Visible := true;
1856  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1857  // 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  
1858    if Budlevering1.Checked then    if Budlevering1.Checked then
1859    begin    begin
1860      IndlesScanningLogFil();      IndlesScanningLogFil();
# Line 2283  begin Line 1867  begin
1867      01 :      01 :
1868            begin;      // NS            begin;      // NS
1869              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1870              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1871              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1872              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1873              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1874              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2297  begin Line 1881  begin
1881              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1882              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
1883              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1884              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1885              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1886              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
1887              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1888              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1889              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1890              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2310  begin Line 1894  begin
1894              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1895             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
1896              begin              begin
1897                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1898              end              end
1899              else              else
1900              begin              begin
1901                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
1902              end;              end;
1903              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
1904              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1905              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1906              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1907              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2335  begin Line 1919  begin
1919              Testprinter1.Visible := true;              Testprinter1.Visible := true;
1920              Smpakker1.Enabled := true;              Smpakker1.Enabled := true;
1921              Storepakker1.Enabled := true;              Storepakker1.Enabled := true;
1922              RadioButton1.Enabled := true;              radioStorPakke.Enabled := true;
1923              RadioButton2.Enabled := true;              radioLillePakke.Enabled := true;
1924              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
1925              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
1926              IdFTP1.Passive := true;              IdFTP1.Passive := true;
1927              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
1928            end;            end;
# Line 2354  var Line 1938  var
1938    URLStr : String;    URLStr : String;
1939    pakkestorrelse : String;    pakkestorrelse : String;
1940    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
1941    
1942      PakkeshopLabel: TPakkeshopLabel;
1943  begin  begin
1944    if RadioButton1.Checked then    if radioStorPakke.Checked then
1945    begin    begin
1946      pakkestorrelse := 'Stor';      pakkestorrelse := 'Stor';
1947    end;    end;
1948    if RadioButton2.Checked then    if radioLillePakke.Checked then
1949    begin    begin
1950      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
1951    end;    end;
1952    
1953    
1954    if Pakkernormal1.Checked then    if Pakkernormal1.Checked then
1955    begin    begin
1956       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
# Line 2391  begin Line 1979  begin
1979    begin    begin
1980       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
1981    end    end
1982      else if menuIndlevering.Checked then
1983      begin
1984        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
1985      end
1986    else    else
1987    begin    begin
1988      exit;      exit;
# Line 2425  begin Line 2017  begin
2017        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNr').Text;
2018        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2019        PrintNyLabel := False;        PrintNyLabel := False;
2020  // 20150310: start  
2021        if Pakkeshoplevering1.Checked then        if Pakkeshoplevering1.Checked then
2022        begin        begin
 // 20150310: slut  
2023          try          try
2024            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
2025          except on e:exception do          except on e:exception do
# Line 2438  begin Line 2029  begin
2029          begin          begin
2030            PrintNyLabel := True;            PrintNyLabel := True;
2031          end;          end;
 // 20150310: start  
2032        end;        end;
 // 20150310: slut  
2033       end       end
2034        else if menuIndlevering.Checked then
2035        begin
2036    
2037    
2038    
2039    
2040         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2041         if (Kommentar = 'Ok') then
2042         begin
2043           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2044           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2045           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2046           Stregkode := PakkeshopLabel.Stregkode;
2047    
2048           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2049    
2050         end;
2051    
2052    
2053        end
2054      else      else
2055       begin       begin
2056        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2474  begin Line 2083  begin
2083          PrintNyLabel := True;          PrintNyLabel := True;
2084        end;        end;
2085      end;      end;
2086    
2087    
2088      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2089      begin      begin
2090        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2514  begin Line 2125  begin
2125    if Pakkeshoplevering1.Checked then    if Pakkeshoplevering1.Checked then
2126      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2127    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2128    if RadioButton1.Checked then    if radioStorPakke.Checked then
2129    begin    begin
2130      List1Pakkestorrelse := 'Stor pakke';      List1Pakkestorrelse := 'Stor pakke';
2131    end;    end;
2132    if RadioButton2.Checked then    if radioLillePakke.Checked then
2133    begin    begin
2134      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2135    end;    end;
# Line 2540  begin Line 2151  begin
2151    if Budlevering1.Checked then    if Budlevering1.Checked then
2152    begin    begin
2153       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2154        if (RadioButton1.Checked) then        if (radioStorPakke.Checked) then
2155        begin        begin
2156          List1msg := List1msg + '; Stor pakke';          List1msg := List1msg + '; Stor pakke';
2157        end;        end;
2158        if (RadioButton2.Checked) then        if (radioLillePakke.Checked) then
2159        begin        begin
2160          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2161        end;        end;
# Line 2566  begin Line 2177  begin
2177        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2178      end;      end;
2179    end;    end;
2180      if menuIndlevering.Checked then
2181      begin
2182        List1Msg := Stregkode;
2183      end;
2184    
2185    
2186    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2187    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2188    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2189  end;  end;
2190    
2191  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2192  begin  begin
2193    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2194    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2588  pakkeForkertSted : Integer; Line 2205  pakkeForkertSted : Integer;
2205    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2206  begin  begin
2207    if Budlevering1.Checked then    if Budlevering1.Checked then
2208       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2209    
2210    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2211    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2601  begin Line 2218  begin
2218    end;    end;
2219    pakkeForkertSted := pos('burde være hos', Kommentar);    pakkeForkertSted := pos('burde være hos', Kommentar);
2220    
2221  // 20150306: start  
2222  //  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
2223    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  
2224    begin    begin
2225        if (RuteNummer = 'Ukendt') then        if (RuteNummer = 'Ukendt') then
2226        begin        begin
# Line 2631  begin Line 2247  begin
2247       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2248       begin       begin
2249          PrintNyLabel := false;          PrintNyLabel := false;
2250  // 20150306: start  
 //        PlaySound(PWideChar(AlarmLyd));  
2251          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2252          MainForm.Color := clRed;          MainForm.Color := clRed;
2253          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2254  // 20150306: slut  
2255       end       end
2256       else       else
2257       begin       begin
# Line 2646  begin Line 2261  begin
2261            PrintNyLabel := true;            PrintNyLabel := true;
2262            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2263            nyFarve := Farve;            nyFarve := Farve;
2264            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2265            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2266            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2267            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2268            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2269            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2270  // 20150213: start  
2271            if (PrinterNavn = 'Ingen') then            if (PrinterNavn = 'Ingen') then
2272            begin            begin
2273               PrintNyLabel := false;               PrintNyLabel := false;
2274            end;            end;
2275  // 20150313: slut  
 // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2276            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
2277            begin            begin
2278              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2279              MainForm.Color := clRed;              MainForm.Color := clRed;
2280              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2281            end;            end;
2282  // 20150306: slut  
2283         end;         end;
2284         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);         kontrolKoreliste := TjekKoreliste(RuteNummer, Koreliste);
2285         if (kontrolKoreliste <> RuteNummer) then         if (kontrolKoreliste <> RuteNummer) then
# Line 2685  begin Line 2298  begin
2298            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
2299            logTekst := RightStr(List1Msg, Length(List1Msg)-10);            logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2300            SkrivScanningLogFil(logTekst);            SkrivScanningLogFil(logTekst);
2301  // 20150306: start  
 //          PlaySound(PWideChar(AlarmLyd));  
2302            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
2303            begin            begin
2304              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2305              MainForm.Color := clRed;              MainForm.Color := clRed;
2306              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2307            end;            end;
2308  // 20150306: slut  
 // 20150306: start  
 //       end  
 //       else  
 //       begin  
2309         end;         end;
2310       end;       end;
2311    
# Line 2715  begin Line 2323  begin
2323               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2324  // 20150304: slut  // 20150304: slut
2325                begin                begin
2326                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2327                end;                end;
2328              end;              end;
2329        01 :  begin;        01 :  begin;
2330               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2331                    // 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
2332                    // 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')
2333                begin                begin
2334                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2335                end;                end;
2336              end;              end;
2337        02 :  begin;        02 :  begin;
2338                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
2339                begin                begin
2340                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2341                end;                end;
2342              end;              end;
2343        03 :  begin;        03 :  begin;
2344               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2345                    // 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
2346                    // 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')
2347               begin               begin
2348                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2349               end;               end;
2350              end;              end;
2351        04 :  begin;        04 :  begin;
2352                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
2353                begin                begin
2354                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2355                end;                end;
2356              end;              end;
2357        else        else
# Line 2757  begin Line 2365  begin
2365      exit;      exit;
2366    end;    end;
2367    
2368    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
2369    begin    begin
2370    end    end
2371    else    else
2372    begin    begin
2373      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
2374      begin      begin
2375        logTekst := 'Printer label type ';        logTekst := 'Printer label type ';
2376        if (CheckBox2.Checked) then        if (chkAltidPrintLabel.Checked) then
2377        begin        begin
2378          logTekst := logTekst + 'Alle ';          logTekst := logTekst + 'Alle ';
2379        end        end
# Line 2779  begin Line 2387  begin
2387        end;        end;
2388        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2389        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2390        with Printer do  
2391        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2392          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;  
2393      end;      end;
2394    end;    end;
2395    
2396  end;  end;
2397    
 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;  
2398    
2399    
2400  procedure TMainForm.RadioButton1Click(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2401  begin  begin
2402      Storepakker1.Checked := true;      Storepakker1.Checked := true;
2403      RadioButton1.Checked := true;      radioStorPakke.Checked := true;
2404  end;  end;
2405    
2406  procedure TMainForm.RadioButton2Click(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2407  begin  begin
2408      Smpakker1.Checked := true;      Smpakker1.Checked := true;
2409      RadioButton2.Checked := true;      radioLillePakke.Checked := true;
2410  end;  end;
2411    
2412    
2413  procedure TMainForm.CheckBox1Click(Sender: TObject);  procedure TMainForm.chkSporgEfterKundeClick(Sender: TObject);
2414  begin  begin
2415    if CheckBox1.Checked then    if chkSporgEfterKunde.Checked then
2416    begin    begin
2417       Sprgefterboghandlernummer1.Checked := true;       Sprgefterboghandlernummer1.Checked := true;
2418    end    end
# Line 2875  begin Line 2423  begin
2423  end;  end;
2424    
2425    
2426  procedure TMainForm.CheckBox2Click(Sender: TObject);  procedure TMainForm.chkAltidPrintLabelClick(Sender: TObject);
2427  begin  begin
2428    if CheckBox2.Checked then    if chkAltidPrintLabel.Checked then
2429    begin    begin
2430       Altidprintepakkelabel1.Checked := true;       Altidprintepakkelabel1.Checked := true;
2431    end    end
# Line 2888  begin Line 2436  begin
2436    
2437  end;  end;
2438    
2439  procedure TMainForm.CheckBox3Click(Sender: TObject);  procedure TMainForm.chkScanTjekkodeClick(Sender: TObject);
2440  begin  begin
2441    if CheckBox3.Checked then    if chkScanTjekkode.Checked then
2442    begin    begin
2443       Scanogstjekkoden1.Checked := true;       Scanogstjekkoden1.Checked := true;
2444    end    end
# Line 2912  begin Line 2460  begin
2460      Automatiskvalg1.Checked := false;      Automatiskvalg1.Checked := false;
2461      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2462      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2463  // 20150317: start  
2464      if (SpecialVersionSted = '01')      if (SpecialVersionSted = '01')
2465      or (SpecialVersionSted = '02')        or (SpecialVersionSted = '02')
2466      or (SpecialVersionSted = '03')        or (SpecialVersionSted = '03')
2467      or (SpecialVersionSted = '04') then        or (SpecialVersionSted = '04') then
2468      begin      begin
2469        // 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)
2470        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
# Line 2936  begin Line 2484  begin
2484    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2485    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...');
2486    
2487          // Tjekker urls    try
2488          logTekst := 'Tjekker urls.';      // Tjekker urls
2489          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2490          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2491        SkrivScanningLogFil(logTekst);
2492    
         // 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;  
2493    
         // 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;  
2494    
2495          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2496          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2497          begin      begin
2498            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2499            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;  
2500    
2501          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2502          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2503          begin      begin
2504            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2505            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;  
2506    
2507          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2508          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2509          begin      begin
2510            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2511            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;  
2512    
2513          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2514          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2515          begin      begin
2516            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2517            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;  
2518    
2519          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2520          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2521          or (PanelValg4.Enabled = true) then      begin
2522          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2523            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;  
2524    
2525          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2526          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2527          begin      begin
2528            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2529            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;  
2530    
2531          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2532          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2533          begin      begin
2534            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2535            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;  
2536    
2537          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2538          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2539          begin      begin
2540            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2541            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;  
2542    
2543  // 20150330: start      // Tjekker UrlPakkeshopManglendeReturScanninger
2544          // Tjekker UrlEKLoverforselPakkeshop      if PanelValg6.Enabled = true then
2545          if PanelValg5.Enabled = true then      begin
2546          begin        TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2547            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  
2548    
2549          // Tjekker UrlFindPakketype     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2550          if CheckUrl(UrlFindPakketype) then      if PanelValg7.Enabled = true then
2551          begin      begin
2552            logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2553            SkrivScanningLogFil(logTekst);        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2554          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;  
2555    
2556          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforsel
2557          if CheckUrl(UrlSendPrograminfo) then      if PanelValg1.Enabled = true then
2558          begin      begin
2559            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2560            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;  
2561    
         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;  
2562    
2563        // Tjekker UrlEKLoverforselPakkeshop
2564        if PanelValg5.Enabled = true then
2565        begin
2566          TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2567        end;
2568    
2569    
2570        // Tjekker UrlFindPakketype
2571        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2572    
2573        // Tjekker UrlSendPrograminfo
2574        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2575    
2576    
2577    
2578        logTekst := 'urls er ok';
2579        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2580        SkrivScanningLogFil(logTekst);
2581    
2582      Except
2583        TjekUrls := '-';   // markerer at der var fejl
2584    
2585      end;
2586  end;  end;
2587    
2588  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2589  var  const
2590     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2591  begin  begin
2592     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2593     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2594     Result := SystemTimeToDateTime(SystemTime) ;    begin
2595        logTekst := UrlNavn + ' accepteret: ' + Url;
2596        SkrivScanningLogFil(logTekst);
2597      end
2598      else
2599      begin
2600        inc(urlFejl);   // Optæller antal fejl
2601        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2602        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2603        if TjekUrls = '1' then
2604        begin
2605          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2606        end;
2607    
2608        SkrivScanningLogFil(logTekst);
2609    
2610        if TjekUrls = '1' then
2611        begin
2612          ShowMessage(logTekst);
2613          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2614          Application.Terminate;
2615    
2616          raise Exception.Create('UrlFejl');
2617    
2618        end;
2619      end;
2620    
2621  end;  end;
2622    
2623    
2624    
2625  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2626  var  var
2627    SR: TSearchRec;    SR: TSearchRec;
# Line 3342  begin Line 2638  begin
2638      repeat      repeat
2639        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2640        begin        begin
2641    
2642          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2643          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2644          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2645          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2646          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2647          // (æ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 2678  begin
2678    end;    end;
2679  end;  end;
2680    
2681  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2682  begin  begin
2683    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2684    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2685    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2686    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2687    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2688    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3403  begin Line 2700  begin
2700  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2701    if Farve <> '' then    if Farve <> '' then
2702    begin    begin
2703       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  
2704    end;    end;
2705    if (Budlevering1.Checked) then    if (Budlevering1.Checked) then
2706    begin    begin
# Line 3477  end; Line 2764  end;
2764    
2765  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2766  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;  
 *)  
2767  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2768  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2769       AutomatiskValg1.Checked := true;    AutomatiskValg1.Checked := true;
2770       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2771       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2772  // 20150311: slut  
2773    
2774    
2775  end;  end;
2776    
2777  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.Pakkernormal1Click(Sender: TObject);
# Line 3514  var Line 2788  var
2788    BoghandlerNavn : String;    BoghandlerNavn : String;
2789    Koreliste : String;    Koreliste : String;
2790    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2791    SmsKode : String;    SmsKode : String;
2792    DBKbane : String;    DBKbane : String;
2793    Leveringssted : String;    Leveringssted : String;
# Line 3536  begin Line 2809  begin
2809      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2810      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2811      MainForm.Color := clRed;      MainForm.Color := clRed;
2812      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2813    end    end
2814    else    else
2815    begin    begin
2816      Falsk := False;      Falsk := False;
2817      Sand := True;  
2818      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');      HentPakkeInfoFraServer(Sted,'111111111100000', RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk, '');
2819      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');      UpdateScreen(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, '');
2820      SmsKode := '999999';      SmsKode := '999999';
# Line 3561  var Line 2834  var
2834    BoghandlerNavn : String;    BoghandlerNavn : String;
2835    Koreliste : String;    Koreliste : String;
2836    Falsk : Boolean;    Falsk : Boolean;
   Sand : Boolean;  
2837    SmsKode : String;    SmsKode : String;
2838    DBKbane : String;    DBKbane : String;
2839    Leveringssted : String;    Leveringssted : String;
# Line 3570  begin Line 2842  begin
2842    Kommentar := '***** Kommentar *****';    Kommentar := '***** Kommentar *****';
2843    BoghandlerNavn := 'Modtagernavn';    BoghandlerNavn := 'Modtagernavn';
2844    Falsk := False;    Falsk := False;
   Sand := True;  
2845    
2846    if (Printer.Printers.Count = 0) then  
2847      if (LabelPrint.GetPrinterCount() = 0) then
2848    begin    begin
2849      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2850    end    end
# Line 3587  begin Line 2859  begin
2859      DBKbane := '999';      DBKbane := '999';
2860      Leveringssted := 'XXX';      Leveringssted := 'XXX';
2861      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
2862      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
2863    end;    end;
2864    FocusControl(StregkodeST);    FocusControl(StregkodeST);
2865  end;  end;
# Line 3596  procedure TMainForm.Timer1Timer(Sender: Line 2868  procedure TMainForm.Timer1Timer(Sender:
2868  begin  begin
2869    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
2870    begin    begin
2871      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
2872    end    end
2873    else    else
2874    begin    begin
# Line 3605  begin Line 2877  begin
2877    end;    end;
2878  end;  end;
2879    
2880  {  
  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;  
2881    
2882  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
2883  const  const
# Line 3643  var Line 2886  var
2886   tekst, filversion : String;   tekst, filversion : String;
2887  begin  begin
2888    
2889    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
2890    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';
2891    
2892    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3665  begin Line 2908  begin
2908          end          end
2909          else          else
2910          begin          begin
2911            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
2912          end;          end;
2913      end      end
2914      else      else
2915      begin      begin
2916        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
2917      end;      end;
2918    end;    end;
2919    
# Line 3738  begin Line 2981  begin
2981    
2982    if FileExists(fileName) then    if FileExists(fileName) then
2983    begin    begin
2984      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
2985      begin      begin
2986        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
2987        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3762  begin Line 3005  begin
3005    
3006    if FileExists(fileName) then    if FileExists(fileName) then
3007    begin    begin
3008      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3009      begin      begin
3010        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3011        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3012      end      end
3013      else      else
3014      begin      begin
3015        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3016      end;      end;
3017    end    end
3018    else    else
# Line 3778  begin Line 3021  begin
3021    end;    end;
3022  end;  end;
3023    
3024    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3025    begin
3026      Scanningtype := '7';
3027      NulstilAutomatiskValg();
3028      InitIndleveringskode();
3029    end;
3030    
3031  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3032  begin  begin
3033    
3034    if Sprgefterboghandlernummer1.Checked then    if Sprgefterboghandlernummer1.Checked then
3035    begin    begin
3036       CheckBox1.Checked := true;       chkSporgEfterKunde.Checked := true;
3037    end    end
3038    else    else
3039    begin    begin
3040       CheckBox1.Checked := false;       chkSporgEfterKunde.Checked := false;
3041    end;    end;
3042    
3043    
# Line 3810  end; Line 3060  end;
3060  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3061  begin  begin
3062        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3063        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3064        Pakkernormal1.Checked := true;        Pakkernormal1.Checked := true;
3065        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3066        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3067        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
3068        CheckBox1.Enabled := true;  
3069        CheckBox2.Enabled := true;        chkAltidPrintLabel.Enabled := true;
3070        Altidprintepakkelabel1.Enabled := true;        Altidprintepakkelabel1.Enabled := true;
3071        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3072        CheckBox2.Checked := false;        chkAltidPrintLabel.Checked := false;
3073        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3074        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3075        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3076        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3077        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3078        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3079        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3080        ListBox1.Visible := true;        ListBox1.Visible := true;
3081        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3082        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3083        InitLillePakke();        InitLillePakke();
3084        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3085        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3843  procedure TMainForm.InitReturFraDao(); Line 3093  procedure TMainForm.InitReturFraDao();
3093  begin  begin
3094        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3095        ReturpakkerfraDAO1.Checked := true;        ReturpakkerfraDAO1.Checked := true;
3096        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3097        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3098        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3099        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
3100        CheckBox1.Enabled := false;  
3101        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3102        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3103        CheckBox2.Checked := false;  
3104        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3105        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3106        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3107        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3108        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3109        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3110        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3111        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3112        ListBox1.Visible := true;        ListBox1.Visible := true;
3113        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3114        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3115        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3116        InitLillePakke();        InitLillePakke();
3117  end;  end;
3118    
# Line 3870  procedure TMainForm.InitReturFraKunde(); Line 3120  procedure TMainForm.InitReturFraKunde();
3120  begin  begin
3121        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3122        Returpakkerfraboghandler1.Checked := true;        Returpakkerfraboghandler1.Checked := true;
3123        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3124        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3125        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3126        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
3127        CheckBox1.Enabled := false;  
3128        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3129        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
       CheckBox2.Checked := false;  
3130        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3131        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3132        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3133        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3134        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3135        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3136        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3137        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3138        ListBox1.Visible := true;        ListBox1.Visible := true;
3139        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3140        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3141        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3142        InitLillePakke();        InitLillePakke();
3143  end;  end;
3144    
# Line 3897  procedure TMainForm.InitDirektelevering( Line 3146  procedure TMainForm.InitDirektelevering(
3146  begin  begin
3147        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3148        Budlevering1.Checked := true;        Budlevering1.Checked := true;
3149        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3150        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3151        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3152        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
3153        CheckBox1.Enabled := false;  
3154        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3155        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3156        CheckBox2.Checked := false;  
3157        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3158        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3159        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3160        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3161        Smpakker1.Enabled := true;        Smpakker1.Enabled := true;
3162        Storepakker1.Enabled := true;        Storepakker1.Enabled := true;
3163        RadioButton1.Enabled := true;        radioStorPakke.Enabled := true;
3164        RadioButton2.Enabled := true;        radioLillePakke.Enabled := true;
3165        ListBox1.Visible := true;        ListBox1.Visible := true;
3166        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3167        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3168        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3169        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3170        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3171        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3172        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3173        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
# Line 3933  procedure TMainForm.InitPakkeshopleverin Line 3182  procedure TMainForm.InitPakkeshopleverin
3182  begin  begin
3183        AutomatiskTjekkodeStyring1.Enabled := true;        AutomatiskTjekkodeStyring1.Enabled := true;
3184        Pakkeshoplevering1.Checked := true;        Pakkeshoplevering1.Checked := true;
3185        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3186        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3187        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3188        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
3189        CheckBox1.Enabled := false;  
3190        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3191        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3192        CheckBox2.Checked := false;  
3193        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3194        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3195        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3196        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3197        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3198        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3199        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3200        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3201        ListBox1.Visible := true;        ListBox1.Visible := true;
3202        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3203        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3204        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3205  // 20150330: start  
3206  //      EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := true;
3207        EKLoverforsel.Enabled := true;  
 // 20150330: slut  
3208        InitLillePakke();        InitLillePakke();
3209        IndlesScanningLogFil();        IndlesScanningLogFil();
3210        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3971  procedure TMainForm.InitReturFraPakkesho Line 3219  procedure TMainForm.InitReturFraPakkesho
3219  begin  begin
3220        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3221        Returpakkerfrapakkeshop1.Checked := true;        Returpakkerfrapakkeshop1.Checked := true;
3222        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3223        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3224        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3225        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
3226        CheckBox1.Enabled := false;  
3227        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3228        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3229        CheckBox2.Checked := false;  
3230        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3231        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3232        CheckBox1.Checked := false;        chkSporgEfterKunde.Checked := false;
3233        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3234        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3235        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3236        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3237        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3238        ListBox1.Visible := true;        ListBox1.Visible := true;
3239        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3240        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3241        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3242        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3243        InitLillePakke();        InitLillePakke();
3244        IndlesScanningLogFil();        IndlesScanningLogFil();
3245        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4011  end; Line 3259  end;
3259    
3260  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3261  begin  begin
3262          menuIndlevering.Checked := true;
3263        AutomatiskTjekkodeStyring1.Enabled := false;        AutomatiskTjekkodeStyring1.Enabled := false;
3264        Returpakkerfrapakkeshop1.Checked := true;  
3265        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3266        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3267        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3268        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
3269        CheckBox1.Enabled := false;  
3270        CheckBox2.Enabled := false;        chkAltidPrintLabel.Enabled := false;
3271        Altidprintepakkelabel1.Enabled := false;        Altidprintepakkelabel1.Enabled := false;
3272        CheckBox2.Checked := false;  
3273        Altidprintepakkelabel1.Checked := false;        Altidprintepakkelabel1.Checked := false;
3274        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
       CheckBox1.Checked := false;  
3275        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3276          chkSporgEfterKunde.Checked := false;
3277    
3278    
3279    
3280        Smpakker1.Enabled := false;        Smpakker1.Enabled := false;
3281        Storepakker1.Enabled := false;        Storepakker1.Enabled := false;
3282        RadioButton1.Enabled := false;        radioStorPakke.Enabled := false;
3283        RadioButton2.Enabled := false;        radioLillePakke.Enabled := false;
3284        ListBox1.Visible := true;        ListBox1.Visible := true;
3285        ListBox1.Items.Clear;        ListBox1.Items.Clear();
3286        DownloadButton01.Enabled := false;  
3287        OpdaterListenButton01.Enabled := true;        BtnDownloadKontrolfil.Enabled := false;
3288        EKLoverforsel.Enabled := false;        BtnOpdaterListen.Enabled := true;
3289          BtnEKLoverforsel.Enabled := false;
3290        InitLillePakke();        InitLillePakke();
3291        IndlesScanningLogFil();        IndlesScanningLogFil();
3292        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 4057  end; Line 3310  end;
3310    
3311  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3312  begin  begin
3313    RadioButton2.Checked := true;    radioLillePakke.Checked := true;
3314    Smpakker1.Checked := true;    Smpakker1.Checked := true;
 // 20150310: start  
3315  //  Stregkode := '';  //  Stregkode := '';
 // 20150310: slut  
3316  end;  end;
3317    
3318  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3319  begin  begin
3320    RadioButton1.Checked := true;    radioStorPakke.Checked := true;
3321    Storepakker1.Checked := true;    Storepakker1.Checked := true;
3322  // 20150310: start  // 20150310: start
3323  //  Stregkode := '';  //  Stregkode := '';
3324  // 20150310: slut  // 20150310: slut
3325  end;  end;
3326    
 /// <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]]);  
3327    
     // 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;  
3328    
3329  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3330  begin  begin
# Line 4163  end; Line 3349  end;
3349    
3350  procedure TMainForm.Testlyd2Click(Sender: TObject);  procedure TMainForm.Testlyd2Click(Sender: TObject);
3351  begin  begin
 // 20150317: start  
3352    if (PakkeshopText1.Caption = 'Tjekkode') then    if (PakkeshopText1.Caption = 'Tjekkode') then
3353    begin    begin
3354       if ScannetOkTilTjekkodeLyd  <> '' then       if ScannetOkTilTjekkodeLyd  <> '' then
# Line 4176  begin Line 3361  begin
3361       end;       end;
3362       exit;       exit;
3363    end;    end;
 // 20150317: slut  
3364    
3365    if Smpakker1.Checked then    if Smpakker1.Checked then
3366       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
# Line 4185  begin Line 3369  begin
3369       end       end
3370       else       else
3371       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet)'), 'Information', MB_OK);  
3372         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3373       end;       end;
3374    if Storepakker1.Checked then    if Storepakker1.Checked then
3375       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
# Line 4197  begin Line 3378  begin
3378       end       end
3379       else       else
3380       begin       begin
 // 20150317: start  
 //       MessageBox(Handle, PWideChar('Lyd fil ikke fundet (scannet stor)'), 'Information', MB_OK);  
3381         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkStorLyd)'), 'Information', MB_OK);
 // 20150317: slut  
3382       end;       end;
3383  end;  end;
3384    
# Line 4217  begin; Line 3395  begin;
3395    CheckCode();    CheckCode();
3396  end;  end;
3397    
3398  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3399  var  var
3400    WebSvar : String;    WebSvar : String;
3401    URLStr : String;    URLStr : String;
# Line 4227  var Line 3405  var
3405    status, kommentar : String;    status, kommentar : String;
3406    
3407  begin  begin
3408      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3409    
3410      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');
3411      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3412      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3413      StedKode := Sted;      StedKode := Sted;
3414      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3415  // 20150330: start  
3416      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3417      begin      begin
3418        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3419      end;      end;
3420  // 20150330: slut  
3421    
3422      try      try
3423      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 4290  begin Line 3468  begin
3468        end;        end;
3469      end;      end;
3470    
3471      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3472    
3473      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
3474    
# Line 4307  begin Line 3485  begin
3485           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3486         end;         end;
3487         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3488         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3489      end;      end;
3490    
3491  end;  end;
# Line 4331  begin Line 3509  begin
3509    else    else
3510      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3511  }  }
3512    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3513    
3514    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3515    CheckCode();    CheckCode();
# Line 4339  end; Line 3517  end;
3517    
3518  end;  end;
3519    
 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;  
3520    
3521  //  //
3522  // Bladhus ***  // Bladhus ***
# Line 4855  begin Line 3994  begin
3994    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
3995  end;  end;
3996    
3997  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
3998  begin  begin
3999      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4000      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
4001  end;  end;
4002    
4003  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4004  const  const
4005    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4006    
# Line 4870  begin Line 4009  begin
4009      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
4010  end;  end;
4011    
4012  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4013  begin  begin
4014      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4015      begin      begin
# Line 4879  begin Line 4018  begin
4018      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
4019  end;  end;
4020    
4021  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;  
4022    
4023  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4024  var  var
# Line 4905  var Line 4032  var
4032    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4033    pakketyper : TStrings;    pakketyper : TStrings;
4034    antlin : Integer;    antlin : Integer;
4035  // 20150306: start  
4036    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4037  // 20150306: slut  
4038    XmlFelter : TStrings;    XmlFelter : TStrings;
4039    
4040   begin   begin
# Line 4927  var Line 4054  var
4054          StedKode := Sted;          StedKode := Sted;
4055        end;        end;
4056    
4057  // 20150310: start  
4058  (*  
4059      if Returpakkerfrapakkeshop1.Checked then      if (Scanningtype = '7') then
      begin  
       URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);  
      end  
     else if Pakkeshoplevering1.Checked then  
4060       begin       begin
4061        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4062       end       end
4063      else if Pakkernormal1.Checked then      else if (Scanningtype = '6') then
4064       begin       begin
4065        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]);  
4066       end       end
4067      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4068       begin       begin
4069        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4070       end       end
4071      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4072       begin       begin
# Line 4989  var Line 4103  var
4103      try      try
4104        XMLDocument1.LoadFromXML(WebSvar);        XMLDocument1.LoadFromXML(WebSvar);
4105    
4106  // 20150206: start  
4107        antlin := 0;        antlin := 0;
4108        antlinIdag := 0;        antlinIdag := 0;
4109        antlinSenere := 0;        antlinSenere := 0;
4110  // 20150306: slut  
       antalFelterFundet := 0;  
4111        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4112            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4113            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 5026  var Line 4139  var
4139        antalFelterFundet := 0;        antalFelterFundet := 0;
4140        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4141        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4142  // 20150206: start  
 //      logTekst := 'Der er '+IntToStr(antlin)+' pakker, der endnu ikke er modtaget.';  
4143        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4144        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4145        begin        begin
4146          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';          logTekst := logTekst + ' (' + IntToStr(antlinIdag) + ' til i dag og ' + IntToStr(antlinSenere) + ' til senere)';
4147        end;        end;
4148        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4149  // 20150306: slut  
4150        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4151        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4152            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
# Line 5074  var Line 4186  var
4186                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4187                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4188                  begin                  begin
4189  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4190                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4191                    begin                    begin
4192                      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
4193                    end                    end
4194                    else                    else
4195                    begin                    begin
4196                      stregkoderMedTjekkodeArray[linienr] := stregkode;                      stregkoderMedTjekkodeArray[linienr] := stregkode;
4197                    end;                    end;
4198  // 20150306: slut                    linienr := linienr + 1;
                     linienr := linienr + 1;  
4199                  end;                  end;
4200              end;              end;
4201              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
# Line 5110  var Line 4220  var
4220    
4221          // Free up the list object          // Free up the list object
4222        pakketyper.Free;        pakketyper.Free;
 // 20150306: start  
4223  //      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.');
4224        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4225        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 5119  var Line 4228  var
4228        end;        end;
4229        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4230        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
 // 20150306: slut  
 // 20150309: start  
4231        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4232        begin        begin
4233          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag) + '/' + IntToStr(antlinSenere);
# Line 5129  var Line 4236  var
4236        begin        begin
4237          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);          StaticTextManglendePakker.Caption := IntToStr(antlinIdag);
4238        end;        end;
 // 20150309: slut  
4239    
 // 20150310: start  
4240        if (Scanningtype = '1') then        if (Scanningtype = '1') then
4241        begin        begin
4242          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal          //antlinIdag := 9876;  // til test af boksens udseende ved stort tal
# Line 5210  var Line 4315  var
4315            PanelManglendePakker6.Visible := false;            PanelManglendePakker6.Visible := false;
4316          end;          end;
4317        end;        end;
 // 20150310: slut  
4318    
4319      except on e:exception do      except on e:exception do
4320        begin        begin
# Line 5272  end; Line 4376  end;
4376  procedure TMainForm.SkrivScanningLogFil(var tekst : string);  procedure TMainForm.SkrivScanningLogFil(var tekst : string);
4377  var  var
4378     SomeTxtFile : TextFile;     SomeTxtFile : TextFile;
    buffer : string;  
    S: string;  
4379     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4380     imorgenYmd : string;     imorgenYmd : string;
4381     logFilnavn : string;     logFilnavn : string;
4382      error : Integer;     //error : Integer;
4383    
4384  begin  begin
4385    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5369  begin Line 4471  begin
4471          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4472          S := buffer;          S := buffer;
4473          SetLength(A,0);          SetLength(A,0);
4474          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4475          if (length(A) < 2) then          if (length(A) < 2) then
4476          begin          begin
4477            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4478          end;          end;
4479            if (length(A) > 1) then            if (length(A) > 1) then
4480            begin            begin
# Line 5446  begin Line 4548  begin
4548          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4549          S := buffer;          S := buffer;
4550          SetLength(A,0);          SetLength(A,0);
4551          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4552          if (length(A) < 3) then          if (length(A) < 3) then
4553          begin          begin
4554            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4555          end;          end;
4556          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4557          begin          begin
# Line 5541  begin Line 4643  begin
4643    result := svar;    result := svar;
4644  end;  end;
4645    
4646    procedure TMainForm.VisAlarmSkaerm(strMessage: string);
4647    begin
4648      //ShowMessage('Ændring ikke tilladt');
4649      // Her skal komme en 'rød skærm' alarm
4650      PlaySound(PWideChar(AlarmLyd));
4651      MainForm.Color := clRed;
4652    
4653    
4654      RuteNummerST.Caption := '';
4655      BoghandlerNavnST.Caption := '';
4656      btnNulstil.Visible := true;
4657    
4658      if (strMessage <> '') then
4659      begin
4660        ListBox1.Items.Insert(0, strMessage);
4661        KommentarST.Caption := strMessage;
4662      end;
4663    
4664    end;
4665    
4666  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
4667  var  var
4668     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
# Line 5598  begin Line 4720  begin
4720    result := svar;    result := svar;
4721  end;  end;
4722    
 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;  
4723    
4724  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4725  begin  begin
4726    if Scanogstjekkoden1.Checked then    if Scanogstjekkoden1.Checked then
4727    begin    begin
4728       CheckBox3.Checked := true;       chkScanTjekkode.Checked := true;
4729    end    end
4730    else    else
4731    begin    begin
4732       CheckBox3.Checked := false;       chkScanTjekkode.Checked := false;
4733    end;    end;
4734  end;  end;
4735    
4736  function TMainForm.AdobeReaderExists: Boolean;  
4737  var  
4738    AReg: TRegistry;  //Nedarvet fra IParentForm
4739    procedure TMainForm.LogMessage( msg : string);
4740  begin  begin
4741    result:= false;    ListBox1.Items.Insert(0, msg);
4742    AReg := TRegistry.Create;    SkrivScanningLogFil(msg);
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4743  end;  end;
4744    
 procedure TMainForm.CheckPrintQue(tjektype : string);  
 type  
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
 begin  
4745    
4746  // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  //Nedarvet fra IParentForm
4747  //            'Test'  skal vise alarmlinie, samt opdatere listbox1  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4748  //            'Timer' skal kun vise alarmlinie  begin
4749    
4750    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then    PrinterstatusStaticText1.Caption := txt;
4751    begin    if (alert) then
     printerTxt := 'Der er fravalgt printer i dette program';  
     ListBox1.Items.Insert(0,printerTxt);  
     SkrivScanningLogFil(printerTxt);  
   end  
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4752    begin    begin
4753      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4754      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4755      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4756    end    end
4757    else    else
4758    begin    begin
4759      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4760      try      PrinterstatusStaticText1.Color := clWhite;
4761        EnumJobs(hPrinter, 0, 1000, 1, nil, 0, bytesNeeded, numJobs);      PrinterstatusStaticText1.Transparent := true;
       pJ := AllocMem(bytesNeeded);  
       if not EnumJobs(hPrinter, 0, 1000, 1, pJ, bytesNeeded, bytesNeeded, numJobs) then  
         RaiseLastWin32Error;  
   
       if numJobs = 0 then  
       begin  
         if (tjektype = 'Test') then  
         begin  
           logTekst := printerTxt + ': Ingen dokumenter i kø';  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         PrinterstatusStaticText1.Caption := '';  
         PrinterstatusStaticText1.Color := MainForm.Color;  
       end  
       else   // så er der kø til printeren  
       begin  
         printerTxt := SavePChar(pJ^[0].pPrinterName);  
         if (tjektype = 'Opstart') or (tjektype = 'Test') then  
         begin  
           logTekst := IntToStr(numJobs) + ' dokument(er) i kø til printer: ' + printerTxt;  
           ListBox1.Items.Insert(0,logTekst);  
           SkrivScanningLogFil(logTekst);  
         end;  
         for i := 0 to Pred(numJobs) do  
         begin  
           printerTxt := SavePChar(pJ^[i].pPrinterName);  
           statusTxt := 'Ukendt';  
           if (IntToStr(pJ^[i].Status) = '0') then  
             statusTxt := 'Venter...';  
           if (IntToStr(pJ^[i].Status) = '4096') then  
             statusTxt := 'Printer...';  
           if (IntToStr(pJ^[i].Status) = '8210') then  
             statusTxt := 'Printerfejl';  
           if (IntToStr(pJ^[i].Status) = '8214') then  
             statusTxt := 'Sletter print...';  
   
           dokumentTxt := SavePChar(pJ^[i].pDocument);  
           if (dokumentTxt = '') then  
             dokumentTxt := 'Uden navn';  
   
           if (tjektype = 'Opstart') or (tjektype = 'Test') then  
           begin  
             logTekst := Format('Printer %s, Dokument %d: %s, Status (%d): %s',  
                                     [printerTxt, i+1, dokumentTxt, pJ^[i].Status, statusTxt]);  
             ListBox1.Items.Insert(0,logTekst);  
             SkrivScanningLogFil(logTekst);  
           end;  
   
           if (i = 0) then  
           begin  
             PrinterstatusStaticText1.Caption := printerTxt + ': ' + IntToStr(numJobs) + ' dokument(er) in kø. Dokument status: ' + statusTxt;  
             PrinterstatusStaticText1.Font.Color := clBlack;  
             PrinterstatusStaticText1.Color := MainForm.Color;  
             PrinterstatusStaticText1.Transparent := True;  
             if (numJobs > 3) then  
             begin  
               PrinterstatusStaticText1.Font.Color := clRed;  
               PrinterstatusStaticText1.Color := clWhite;  
               PrinterstatusStaticText1.Transparent := true;  
             end;  
           end;  
   
         end;  
       end  
       finally  
         ClosePrinter(hPrinter);  
     end;  
   end;  
 end;  
   
 function TMainForm.CheckUrl(url:string):boolean;  
 var  
   hSession, hfile, hRequest: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
4762    end;    end;
   
4763  end;  end;
4764    
4765  // 20150310: start  //Nedarvet fra IParentForm
4766  procedure TMainForm.RoundCornerOf(Control: TWinControl);  function TMainForm.GetFormObject() : TForm;
 var  
    R: TRect;  
    Rgn: HRGN;  
4767  begin  begin
4768     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;  
4769  end;  end;
 // 20150310: slut  
4770    
4771  end.  end.
4772    

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

  ViewVC Help
Powered by ViewVC 1.1.20