/[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 2660 by torben, Sun Aug 23 14:45:16 2015 UTC revision 3055 by torben, Mon Jun 27 12:18:07 2016 UTC
# Line 1  Line 1 
1  unit Main;  unit Main;
2    
3    // ToDo: flyt PrinterNavn til hhv Configuration lg lad TLabelPrint om al håndtering heraf
4    // ToDo: flyt flere parametre til TConfiguration
5    
6    // ToDo: FormKeyPress() trænger til en seriøs oprydning / refactoring
7    // ToDo: flyt mere funktionalitet fra interface layer til application layer klasser
8    // ToDo: vil det give mening at bruge State Pattern ? Så der er en class per scanningstype ?
9    // ToDo: alternativt kan man bruge en Enum til de forskellige typer
10    // ToDo: en enklere måde at håndtere capabilities på de forskellige scannings steder
11    
12    
13  interface  interface
14    
15  uses  uses
16    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
17    Dialogs, StdCtrls, Printers, IdBaseComponent, IdComponent, IdTCPConnection,    Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
18    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,    IdTCPClient, IdHTTP, xmldom, XMLIntf, msxmldom, XMLDoc, IniFiles, AppEvnts,
19    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,    Menus, ExtCtrls, ComCtrls, StrUtils, MMSystem, DateUtils,
20    IdExplicitTLSClientServerBase, IdFTP, pngimage, GIFImg, IdException,    IdExplicitTLSClientServerBase, IdFTP, IdException,
21    Winspool, Registry, ShellApi, ClipBrd, Buttons, wininet,    ShellApi, ClipBrd, Buttons, wininet,
22    UITypes    UITypes,
23      PakkeshopLabels,
24      Utils,
25      ParentForm,
26      LabelPrint,
27      Configuration,
28      Vcl.Imaging.pngimage,
29      Generics.Collections
30    
31    ;    ;
32    
33  type  type
34    TStrArray = array of string;    TMainForm = class(TForm, IParentForm)
   TMainForm = class(TForm)  
35      StregkodeST: TStaticText;      StregkodeST: TStaticText;
36      RuteNummerST: TStaticText;      RuteNummerST: TStaticText;
37      BoghandlerNavnST: TStaticText;      BoghandlerNavnST: TStaticText;
# Line 23  type Line 39  type
39      XMLDocument1: TXMLDocument;      XMLDocument1: TXMLDocument;
40      ApplicationEvents1: TApplicationEvents;      ApplicationEvents1: TApplicationEvents;
41      chkSporgEfterKunde: TCheckBox;      chkSporgEfterKunde: TCheckBox;
     KommentarST: TStaticText;  
42      MainMenu1: TMainMenu;      MainMenu1: TMainMenu;
43      N1: TMenuItem;      N1: TMenuItem;
44      Pakkernormal1: TMenuItem;      menuNatXpress1: TMenuItem;
45      ReturpakkerfraDAO1: TMenuItem;      menuNatxpressReturDAO1: TMenuItem;
46      Returpakkerfraboghandler1: TMenuItem;      menuNatxpressReturfraKunde1: TMenuItem;
47      Hjlp1: TMenuItem;      Hjlp1: TMenuItem;
48      Om1: TMenuItem;      Om1: TMenuItem;
49      Testforbindelsen1: TMenuItem;      Testforbindelsen1: TMenuItem;
# Line 41  type Line 56  type
56      radioStorPakke: TRadioButton;      radioStorPakke: TRadioButton;
57      radioLillePakke: TRadioButton;      radioLillePakke: TRadioButton;
58      N4: TMenuItem;      N4: TMenuItem;
59      Storepakker1: TMenuItem;      menuStorePakker: TMenuItem;
60      Smpakker1: TMenuItem;      menuSmaaPakker: TMenuItem;
61      Panel1: TPanel;      Panel1: TPanel;
62      Testlyd2: TMenuItem;      Testlyd2: TMenuItem;
63      Button1: TButton;      Button1: TButton;
64      Testlyd1: TMenuItem;      Testlyd1: TMenuItem;
65      ListBox1: TListBox;      ListBox1: TListBox;
66      Budlevering1: TMenuItem;      menuDaoDirekte1: 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;      menuPakkeshop1: TMenuItem;
75      PakkeshopText1: TStaticText;      PakkeshopText1: TStaticText;
76      PakkeshopNulstil: TButton;      btnNulstil: TButton;
77      Returpakkerfrapakkeshop1: TMenuItem;      menuPakkeshopRetur1: TMenuItem;
78      Altidprintepakkelabel1: TMenuItem;      Altidprintepakkelabel1: TMenuItem;
79      chkAltidPrintLabel: TCheckBox;      chkAltidPrintLabel: TCheckBox;
80      EKLoverforsel: TButton;      BtnEKLoverforsel: TButton;
81      N5: TMenuItem;      N5: TMenuItem;
82      Uploadlogfil1: TMenuItem;      Uploadlogfil1: TMenuItem;
83      Manual1: TMenuItem;      Manual1: TMenuItem;
# Line 70  type Line 85  type
85      Timer1: TTimer;      Timer1: TTimer;
86      chkScanTjekkode: TCheckBox;      chkScanTjekkode: TCheckBox;
87      Scanogstjekkoden1: TMenuItem;      Scanogstjekkoden1: TMenuItem;
88      Automatisktjekkodestyring1: TMenuItem;      menuAutomatiskTjekkodeStyring: TMenuItem;
89      Automatiskvalg1: TMenuItem;      menuAutomatiskvalg1: TMenuItem;
90      PanelValgA: TPanel;      PanelValgA: TPanel;
91      PanelValg1: TPanel;      PanelValg1: TPanel;
92      PanelValg2: TPanel;      PanelValg2: TPanel;
# Line 88  type Line 103  type
103      PanelManglendePakker4: TPanel;      PanelManglendePakker4: TPanel;
104      PanelManglendePakker5: TPanel;      PanelManglendePakker5: TPanel;
105      PanelManglendePakker6: TPanel;      PanelManglendePakker6: TPanel;
106        menuIndlevering: TMenuItem;
107        chkForstorTilDirekte: TCheckBox;
108        chkEmballageRepareret: TCheckBox;
109        KommentarST: TLabel;
110    
111    
112    
   function Explode(var a: TStrArray; Border, S: string): Integer;  
   function BarCodeValid (ACode: string): boolean;  
   function Sto_GetFmtFileVersion(const FileName: String = ''; const Fmt: String = '%d.%d.%d.%d'): String;  
   function TColorToHex(Color : TColor) : string;  
   function HexToTColor(sColor : string) : TColor;  
113    function getProddato() : TDate;    function getProddato() : TDate;
114    function getProddag() : String;    function getProddag() : String;
115    function retRutenummer(rutenummer : String) : String;    function retRutenummer(rutenummer : String) : String;
   function GetCurrentPrinterHandle() : THandle;  
   function SavePChar(p: PChar): PChar;  
   function AdobeReaderExists(): Boolean;  
   function FileTime2DateTime(FileTime: TFileTime): TDateTime;  
   function split(input: string; schar: Char; s: Integer): string;  
   function CheckUrl(url:string):boolean;  
116    
117    procedure PlaySound(filename : PWideChar);    procedure PlaySound(filename : PWideChar);
118    procedure StartScreen();    procedure StartScreen();
# Line 119  type Line 128  type
128    procedure radioStorPakkeClick(Sender: TObject);    procedure radioStorPakkeClick(Sender: TObject);
129    procedure radioLillePakkeClick(Sender: TObject);    procedure radioLillePakkeClick(Sender: TObject);
130    procedure chkSporgEfterKundeClick(Sender: TObject);    procedure chkSporgEfterKundeClick(Sender: TObject);
131    procedure Pakkernormal1Click(Sender: TObject);    procedure menuNatXpress1Click(Sender: TObject);
132    procedure Testforbindelsen1Click(Sender: TObject);    procedure Testforbindelsen1Click(Sender: TObject);
133    procedure Testprinter1Click(Sender: TObject);    procedure Testprinter1Click(Sender: TObject);
134    procedure Om1Click(Sender: TObject);    procedure Om1Click(Sender: TObject);
135    procedure Lukprogrammet1Click(Sender: TObject);    procedure Lukprogrammet1Click(Sender: TObject);
136    procedure Sprgefterboghandlernummer1Click(Sender: TObject);    procedure Sprgefterboghandlernummer1Click(Sender: TObject);
137    procedure ReturpakkerfraDAO1Click(Sender: TObject);    procedure menuNatxpressReturDAO1Click(Sender: TObject);
138    procedure Returpakkerfraboghandler1Click(Sender: TObject);    procedure menuNatxpressReturfraKunde1Click(Sender: TObject);
139    procedure Storepakker1Click(Sender: TObject);    procedure menuStorePakkerClick(Sender: TObject);
140    procedure Smpakker1Click(Sender: TObject);    procedure menuSmaaPakkerClick(Sender: TObject);
141    procedure Testlyd1Click(Sender: TObject);    procedure Testlyd1Click(Sender: TObject);
142    procedure Testlyd2Click(Sender: TObject);    procedure Testlyd2Click(Sender: TObject);
143    procedure Button1Click(Sender: TObject);    procedure Button1Click(Sender: TObject);
144    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
145    procedure Budlevering1Click(Sender: TObject);    procedure menuDaoDirekte1Click(Sender: TObject);
146    procedure DownloadButton01Click(Sender: TObject);    procedure BtnDownloadKontrolfilClick(Sender: TObject);
147    procedure OpdaterListenButton01Click(Sender: TObject);    procedure BtnOpdaterListenClick(Sender: TObject);
148    procedure DownloadBladhusRuteskiftfil();    procedure DownloadBladhusRuteskiftfil();
149    procedure DownloadBladhusKontrolfil();    procedure DownloadBladhusKontrolfil();
150    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);    procedure SendFilTilDAO(fil_type, filnavn_input, filnavn_output: String);
# Line 143  type Line 152  type
152    procedure UploadInifilTilDAO();    procedure UploadInifilTilDAO();
153    procedure SletStregkodelinieFraListboks2(StregKode : String);    procedure SletStregkodelinieFraListboks2(StregKode : String);
154    procedure FormDestroy(Sender: TObject);    procedure FormDestroy(Sender: TObject);
155    procedure UploadButton01Click(Sender: TObject);    procedure BtnUploadLogfilClick(Sender: TObject);
156    procedure DownloadButton03Click(Sender: TObject);    procedure BtnDownloadRuteskiftFilClick(Sender: TObject);
157    procedure Pakkeshoplevering1Click(Sender: TObject);    procedure menuPakkeshop1Click(Sender: TObject);
158    procedure PakkeshopNulstilClick(Sender: TObject);    procedure btnNulstilClick(Sender: TObject);
159    procedure Returpakkerfrapakkeshop1Click(Sender: TObject);    procedure menuPakkeshopRetur1Click(Sender: TObject);
160    procedure InitNatxpresslevering();    procedure InitNatxpresslevering();
161    procedure InitReturFraDao();    procedure InitReturFraDao();
162    procedure InitReturFraKunde();    procedure InitReturFraKunde();
# Line 158  type Line 167  type
167    
168    procedure Altidprintepakkelabel1Click(Sender: TObject);    procedure Altidprintepakkelabel1Click(Sender: TObject);
169    procedure chkAltidPrintLabelClick(Sender: TObject);    procedure chkAltidPrintLabelClick(Sender: TObject);
170    procedure EKLoverforselClick(Sender: TObject);    procedure BtnEKLoverforselClick(Sender: TObject);
171    procedure Uploadlogfil1Click(Sender: TObject);    procedure Uploadlogfil1Click(Sender: TObject);
172    procedure Manual1Click(Sender: TObject);    procedure Manual1Click(Sender: TObject);
   procedure CheckPrintQue(tjektype : string);  
173    procedure Timer1Timer(Sender: TObject);    procedure Timer1Timer(Sender: TObject);
174    procedure Scanogstjekkoden1Click(Sender: TObject);    procedure Scanogstjekkoden1Click(Sender: TObject);
175    procedure chkScanTjekkodeClick(Sender: TObject);    procedure chkScanTjekkodeClick(Sender: TObject);
176    procedure Automatisktjekkodestyring1Click(Sender: TObject);    procedure menuAutomatiskTjekkodeStyringClick(Sender: TObject);
177    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);    procedure SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
178    procedure Automatiskvalg1Click(Sender: TObject);    procedure menuAutomatiskvalg1Click(Sender: TObject);
179    procedure PanelValgAClick(Sender: TObject);    procedure PanelValgAClick(Sender: TObject);
180    procedure PanelValg1Click(Sender: TObject);    procedure PanelValg1Click(Sender: TObject);
181    procedure PanelValg2Click(Sender: TObject);    procedure PanelValg2Click(Sender: TObject);
# Line 181  type Line 189  type
189    procedure SletLogfiler(Path: string; FileList: TStrings);    procedure SletLogfiler(Path: string; FileList: TStrings);
190    procedure Manualgenerel1Click(Sender: TObject);    procedure Manualgenerel1Click(Sender: TObject);
191    procedure TjekkerUrls();    procedure TjekkerUrls();
192  // 20150310: start    procedure TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
193    procedure RoundCornerOf(Control: TWinControl);  
194      procedure menuIndleveringClick(Sender: TObject);
195    
196    
197    
198      //Nedarvet fra IParentForm
199      procedure Msg( msg : string);
200      procedure LogMessage( msg : string);
201      procedure SetPrinterstatusText( txt: string; alert: boolean);
202      function GetFormObject() : TForm;
203    
204    
 // 20150310: slut  
205    
206    private    private
207      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder      SpecialVersionSted, SpecialVersionScanningtype: String;    // Bruges når programmet skal bruges udenfor DAO scanningssteder
# Line 193  type Line 209  type
209      SkrivLog : String;      SkrivLog : String;
210      Sted : String;      Sted : String;
211      StedNavn : String;      StedNavn : String;
212      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering, UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlEKLoverforsel : String;      Url, UrlNormal, UrlReturDAO, UrlReturBoghandler, UrlBudlevering, UrlManglendeScanninger, UrlPakkeshoplevering,
213  // 29150330: start              UrlReturPakkeshop, UrlPakkeshopManglendeScanninger, UrlPakkeshopManglendeReturScanninger,UrlIndleveringsPakke,
214                UrlIndleveringsPakkeManglendeScanninger,UrlEKLoverforsel, URLOmdirigerTilPakkeshop : String;
215    
216      UrlEKLoverforselPakkeshop : String;      UrlEKLoverforselPakkeshop : String;
217  // 20150330: slut  
218      UrlFindPakketype, UrlSendPrograminfo: String;      UrlFindPakketype, UrlSendPrograminfo: String;
219      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;      Scanningtype, TestFunktionen, Pakketype, SporgEfterBoghandler : String;
220      ScanTjekkode : String;      ScanTjekkode : String;
221      ScanTjekkodeAutomatik : string;      ScanTjekkodeAutomatik : string;
222      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop, FarveIndlevering : String;  
223      Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop, TitelIndlevering : String;      Farve, FarveNormal, FarveReturDAO, FarveReturBoghandler, FarveBudlevering, FarvePakkeshoplevering, FarveReturPakkeshop,
224      LabelType : integer;            FarveIndlevering : String;
225    
226        Titel, TitelNormal, TitelReturDAO, TitelReturBoghandler, TitelBudlevering, TitelPakkeshoplevering, TitelReturPakkeshop,
227              TitelIndlevering : String;
228    
229      AlarmLyd : String;      AlarmLyd : String;
230      ScannetOkLyd : String;      ScannetOkLyd : String;
231      ScannetOkStorLyd : String;      ScannetOkStorLyd : String;
232  // 20150317: start  
233      ScannetOkTilTjekkodeLyd : String;      ScannetOkTilTjekkodeLyd : String;
234  // 20150317: slut  
235      PrinterNavn : String;      PrinterNavn : String;
236      TjekPrinter : String;      TjekPrinter : String;
237      XPosRute : integer;  
     YPosRute : integer;  
     FontSizeRute : integer;  
     FontSizeRuteLille : integer;  
     XPosKommentar : integer;  
     YPosKommentar : integer;  
     FontSizeKommentar : integer;  
     XPosBoghandler : integer;  
     YPosBoghandler : integer;  
     FontSizeBoghandler : integer;  
     XPosKoreliste : integer;  
     YPosKoreliste : integer;  
     FontSizeKoreliste : integer;  
     FontSizeKorelisteLille : integer;  
     XPosSorteringsfelt1 : integer;  
     YPosSorteringsfelt1 : integer;  
     FontSizeSorteringsfelt1 : integer;  
     XPosSorteringsfelt2 : integer;  
     YPosSorteringsfelt2 : integer;  
     FontSizeSorteringsfelt2 : integer;  
     XPosSmskode : integer;  
     YPosSmskode : integer;  
     FontSizeSmskode : integer;  
238      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;      Org_RuteNummerST, Org_BoghandlerNavnST, Org_KommentarST : String;
239      BladhusSted : Integer;      BladhusSted : Integer;
240      BladhusStedKode : Array of string;      BladhusStedKode : Array of string;
# Line 247  type Line 247  type
247      PakkeshopStregkode, PakkeshopTjekkode : String;      PakkeshopStregkode, PakkeshopTjekkode : String;
248      BoghandlerStregkode, BoghandlerTjekkode : String;      BoghandlerStregkode, BoghandlerTjekkode : String;
249      TjekUrls : String;      TjekUrls : String;
250        Config : TConfiguration;
251    
252            function CheckSumModulo10(const data:string):string;          { used for EAN 8/13 }  
253        LabelPrint: TLabelPrint;
254    
255      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');      procedure PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : String = '');
256      procedure SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
257      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');      procedure HentPakkeInfoFraServer(const Sted, PakkeNr : String; var RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel: Boolean; BoghandlerNummer : String = '');
258      procedure CheckCode();      procedure CheckCode();
259      procedure IndlesManglendeScanninger();      procedure IndlesManglendeScanninger();
# Line 261  type Line 263  type
263      procedure SkrivScanningLogFil(var tekst : string);      procedure SkrivScanningLogFil(var tekst : string);
264      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;      function TjekKoreliste(var RuteNummer, Koreliste : string) : string;
265      procedure VisAlarmSkaerm(strMessage: string);      procedure VisAlarmSkaerm(strMessage: string);
266        function InjectURL(Url : String) : String;
267    
268    public    public
269      { Public declarations }      { Public declarations }
270    end;    end;
271    
272    
273  var  var
274    MainForm: TMainForm;    MainForm: TMainForm;
275    
# Line 279  var Line 283  var
283  implementation  implementation
284  {$R *.dfm}  {$R *.dfm}
285    
286  function TMainForm.TColorToHex(Color : TColor) : string;  
287  begin  //FormCreate kaldes før InitForm
    Result :=  
      IntToHex(GetRValue(Color), 2) +  
      IntToHex(GetGValue(Color), 2) +  
      IntToHex(GetBValue(Color), 2) ;  
 end;  
   
 function TMainForm.HexToTColor(sColor : string) : TColor;  
 begin  
    Result :=  
      RGB(  
        StrToInt('$'+Copy(sColor, 1, 2)),  
        StrToInt('$'+Copy(sColor, 3, 2)),  
        StrToInt('$'+Copy(sColor, 5, 2))  
      ) ;  
 end;  
288    
289  procedure TMainForm.InitForm(Farve,Titel,Url : String);  procedure TMainForm.InitForm(Farve,Titel,Url : String);
290  begin  begin
291    
292  // 20150309: startr      IdHTTP1.ConnectTimeout := 5000; // Vent max 5 sek på connect
293        IdHTTP1.ReadTimeout := 10000; // Vent max 10 sek på read
294    
295    
296    
297    
298      StaticTextManglendePakker.Caption := '';      StaticTextManglendePakker.Caption := '';
299  // 20150309: slut  
300    
301      PanelValg1.Color := clBtnFace;      PanelValg1.Color := clBtnFace;
302      if PanelValg1.Enabled = true then      if PanelValg1.Enabled = true then
# Line 346  begin Line 340  begin
340        PanelValg7.Font.Color := clWindowText;        PanelValg7.Font.Color := clWindowText;
341      end;      end;
342    
343      OpdaterListenButton01.Enabled := false;      BtnOpdaterListen.Enabled := false;
344    
345      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
346      begin      begin
# Line 374  begin Line 368  begin
368        else if (Sted = 'BR') then        else if (Sted = 'BR') then
369          begin StedNavn := 'Brøndby: '; end          begin StedNavn := 'Brøndby: '; end
370        else if (Sted = 'BK') then        else if (Sted = 'BK') then
371          begin StedNavn := 'Bladkompagniet: '; end          begin StedNavn := 'Bladkompagniet/ISV: '; end
372          else if (Sted = 'TK') then
373            begin StedNavn := 'BK/Trykkompagniet: '; end
374        else if (Sted = 'DBK') then        else if (Sted = 'DBK') then
375          begin StedNavn := 'DBK Køge: '; end          begin StedNavn := 'DBK/Køge: '; end
376        else if (Sted = '1') then        else if (Sted = '1') then
377          begin StedNavn := 'Ålborg: '; end          begin StedNavn := 'Ålborg: '; end
378        else if (Sted = '2') then        else if (Sted = '2') then
# Line 400  begin Line 396  begin
396    
397      StartScreen();      StartScreen();
398      MainForm.Caption := Titel;      MainForm.Caption := Titel;
399      MainForm.Color := HexToTColor(Farve);      MainForm.Color := TUtils.HexToTColor(Farve);
400      MainForm.Farve := Farve;      MainForm.Farve := Farve;
401      MainForm.Titel := Titel;      MainForm.Titel := Titel;
402      MainForm.Url := Url;      MainForm.Url := Url;
# Line 410  begin Line 406  begin
406        PrinterstatusStaticText1.Color := MainForm.Color;        PrinterstatusStaticText1.Color := MainForm.Color;
407      end;      end;
408    
409      if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      if menuPakkeshop1.Checked or menuNatXpress1.Checked then
410        PakkeshopText1.Visible := true        PakkeshopText1.Visible := true
411      else      else
412        PakkeshopText1.Visible := false;        PakkeshopText1.Visible := false;
# Line 435  begin Line 431  begin
431        end;        end;
432      end;      end;
433    
434      if Automatisktjekkodestyring1.Checked then      if menuAutomatiskTjekkodeStyring.Checked then
435      begin      begin
436        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
437        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
# Line 460  begin Line 456  begin
456          end          end
457          else          else
458          begin          begin
459            logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
460          end;          end;
461          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
462        end        end
463        else        else
464        begin        begin
465          logTekst := 'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';          logTekst := 'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
466          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
467        end;        end;
468      end;      end;
469    
470    
471  end;  end;
472    
473  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);  procedure TMainForm.Altidprintepakkelabel1Click(Sender: TObject);
# Line 492  begin Line 489  begin
489    StregkodeST.Caption := Stregkode;    StregkodeST.Caption := Stregkode;
490  end;  end;
491    
492  procedure TMainForm.Automatisktjekkodestyring1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskTjekkodeStyringClick(Sender: TObject);
493  begin  begin
494    if Automatisktjekkodestyring1.Checked then    if menuAutomatiskTjekkodeStyring.Checked then
495    begin    begin
496       chkScanTjekkode.Enabled := false;       chkScanTjekkode.Enabled := false;
497       Scanogstjekkoden1.Enabled := false;       Scanogstjekkoden1.Enabled := false;
# Line 507  begin Line 504  begin
504    
505  end;  end;
506    
507  procedure TMainForm.Automatiskvalg1Click(Sender: TObject);  procedure TMainForm.menuAutomatiskvalg1Click(Sender: TObject);
508  begin  begin
 // 20150317: start  
 (*  
   if Automatiskvalg1.Checked then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
509  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
510  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
511       AutomatiskValg1.Checked := true;       menuAutomatiskvalg1.Checked := true;
512       PanelValgA.Color := clGreen;       PanelValgA.Color := clGreen;
513       PanelValgA.Font.Color := clWhite;       PanelValgA.Font.Color := clWhite;
 // 20150317: slut  
514  end;  end;
515    
516    function TMainForm.InjectURL(Url : String) : String;
517    begin
518    
519      Url := Url + '&ver=' + TUtils.URLEncode( TUtils.Sto_GetFmtFileVersion(''));
520      Url := Url + '&host=' + TUtils.URLEncode( TUtils.GetComputerNameHelper());
521      Url := Url + '&user=' + TUtils.URLEncode( TUtils.GetCurrentUserName());
522    
523      Result := Url;
524    end;
525    
526    //InitForm kaldes før FormCreate
527  procedure TMainForm.FormCreate(Sender: TObject);  procedure TMainForm.FormCreate(Sender: TObject);
528  const  const
529    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
530  var  var
   printerInd : integer;  
531    gemScanningtype : String;    gemScanningtype : String;
532    
533  begin  begin
534    
535    
536    // Initierer nogle variabler    // Initierer nogle variabler
537    BladhusSted := 00;    BladhusSted := 00;
538    Application.ShowHint := True;    Application.ShowHint := True;
539    PrinterstatusStaticText1.Caption := '';    PrinterstatusStaticText1.Caption := '';
540    PrinterstatusStaticText1.Color := MainForm.Color;    PrinterstatusStaticText1.Color := MainForm.Color;
541    
542    PakkeshopNulstil.BringToFront;    btnNulstil.BringToFront;
543    
544    RoundCornerOf(PanelManglendePakker1);    TUtils.RoundCornerOf(PanelManglendePakker1);
545    RoundCornerOf(PanelManglendePakker2);    TUtils.RoundCornerOf(PanelManglendePakker2);
546    RoundCornerOf(PanelManglendePakker3);    TUtils.RoundCornerOf(PanelManglendePakker3);
547    RoundCornerOf(PanelManglendePakker4);    TUtils.RoundCornerOf(PanelManglendePakker4);
548    RoundCornerOf(PanelManglendePakker5);    TUtils.RoundCornerOf(PanelManglendePakker5);
549    RoundCornerOf(PanelManglendePakker6);    TUtils.RoundCornerOf(PanelManglendePakker6);
550    
551    
552    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp    // Hvis mappen Docs eksisterer kan vi vælge Manual i menuen Hjælp
# Line 567  begin Line 560  begin
560    MainForm.ClientWidth := 1000;    MainForm.ClientWidth := 1000;
561    MainForm.ClientHeight := 750;    MainForm.ClientHeight := 750;
562    
563      Config := TConfiguration.Create();
564      Config.ReadFromInifile( TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) );    //ToDo: clean up duplicate ini ref
565      Config.Sted := Sted;
566    
567    // Læser parametre fra ini filen    // Læser parametre fra ini filen
568    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do    with TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) do
569    try    try
570    
571    
572      SkrivLog := ReadString('Settings','SkrivLog','0');      SkrivLog := ReadString('Settings','SkrivLog','0');
573      Sted := ReadString('Settings','Sted','');      Sted := ReadString('Settings','Sted','');
574      StedNavn := ReadString('Settings','Stednavn','');      StedNavn := ReadString('Settings','Stednavn','');
575    
576      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');      UrlFindPakketype := ReadString('Settings','UrlFindPakketype','http://omdeling.info/webservices/bogpakkekontrol/FindPakketype.php?stregkode=%s');
577        UrlFindPakketype := InjectURL(UrlFindPakketype);
578    
579      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');      UrlSendPrograminfo := ReadString('Settings','UrlSendPrograminfo','http://omdeling.info/webservices/bogpakkekontrol/SendPrograminfo.php?programnavn=%s&sted=%s&scanningtype=%s&infotype=%s&info=%s');
580        UrlSendPrograminfo := InjectURL(UrlSendPrograminfo);
581    
582      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');      UrlNormal := ReadString('Settings','UrlNormal','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&tjekkode=%s');
583        UrlNormal := InjectURL(UrlNormal);
584    
585      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturDAO := ReadString('Settings','UrlReturDAO','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
586        UrlReturDAO := InjectURL(UrlReturDAO);
587    
588      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');      UrlReturBoghandler := ReadString('Settings','UrlReturBoghandler','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&boghandlernummer=%s&returpakketype=%s&pakkestorrelse=%s');
589        UrlReturBoghandler := InjectURL(UrlReturBoghandler);
590    
591      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');      UrlBudlevering := ReadString('Settings','UrlBudlevering','http://omdeling.info/webservices/bogpakkekontrol/bogpakkekontrol.php?sted=%s&pakkenummer=%s&leveringstype=%s&pakkestorrelse=%s');
592        UrlBudlevering := InjectURL(UrlBudlevering);
593    
594      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');      UrlManglendeScanninger := ReadString('Settings','UrlManglendeScanninger','http://omdeling.info/webservices/bogpakkekontrol/bogpakkemanglendescanninger.php?sted=%s&type=%s');
595        UrlManglendeScanninger := InjectURL(UrlManglendeScanninger);
596    
597      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');      UrlEKLoverforsel := ReadString('Settings','UrlEKLoverforsel','http://omdeling.info/webservices/bogpakkekontrol/bogpakkertilekl.php?sted=%s');
598        UrlEKLoverforsel := InjectURL(UrlEKLoverforsel);
599    
600      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');      UrlEKLoverforselPakkeshop := ReadString('Settings','UrlEKLoverforselPakkeshop','http://omdeling.info/webservices/pakkeshop/pakkertilekl.php?sted=%s');
601        UrlEKLoverforselPakkeshop := InjectURL(UrlEKLoverforselPakkeshop);
602    
603      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');      UrlPakkeshoplevering := ReadString('Settings','UrlPakkeshoplevering','http://omdeling.info/webservices/pakkeshop/pakkekontrol.php?sted=%s&stregkode=%s&tjekkode=%s');
604        UrlPakkeshoplevering := InjectURL(UrlPakkeshoplevering);
605    
606      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');      UrlReturPakkeshop := ReadString('Settings','UrlReturPakkeshop','http://omdeling.info/webservices/pakkeshop/returpakkekontrol.php?sted=%s&stregkode=%s');
607        UrlReturPakkeshop := InjectURL(UrlReturPakkeshop);
608    
609      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');      UrlPakkeshopManglendeScanninger := ReadString('Settings','UrlPakkeshopManglendeScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendescanninger.php?sted=%s');
610        UrlPakkeshopManglendeScanninger := InjectURL(UrlPakkeshopManglendeScanninger);
611    
612      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');      UrlPakkeshopManglendeReturScanninger := ReadString('Settings','UrlPakkeshopManglendeReturScanninger','http://omdeling.info/webservices/pakkeshop/pakkemanglendereturscanninger.php?sted=%s');
613      LabelType := ReadInteger('Settings','LabelType',1);      UrlPakkeshopManglendeReturScanninger := InjectURL(UrlPakkeshopManglendeReturScanninger);
614    
615        UrlIndleveringsPakke := ReadString('Settings','UrlIndleveringsPakke','http://omdeling.info/webservices/pakkeshop/PakkekontrolIndleveringskode.php?sted=%s&pakkekode=%s');
616        UrlIndleveringsPakke := InjectURL(UrlIndleveringsPakke);
617    
618        UrlIndleveringsPakkeManglendeScanninger := ReadString('Settings', 'UrlIndleveringsPakkeManglendeScanninger','http://omdeling.info/webservices/pakkeshop/IndleveringsPakkeManglendeScanninger.php?sted=%s');
619        UrlIndleveringsPakkeManglendeScanninger := InjectURL(UrlIndleveringsPakkeManglendeScanninger);
620    
621        URLOmdirigerTilPakkeshop := ReadString('Settings', 'URLOmdirigerTilPakkeshop','http://omdeling.info/webservices/pakkeshop/PakkeKontrolOmdirigerTilPakkeshop.php?sted=%s&stregkode=%s');
622        URLOmdirigerTilPakkeshop := InjectURL(URLOmdirigerTilPakkeshop);
623    
624    
625    
626      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');      FarveNormal := ReadString('Settings','FarveNormal','D8D8D8');
627      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');      TitelNormal := ReadString('Settings','TitelNormal','Modtagelse af DAO NAT X-PRESS pakker');
628      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');      FarveReturDAO := ReadString('Settings','FarveReturDAO','A9F5A9');
# Line 625  begin Line 659  begin
659    
660      if (SkrivLog = '1') then      if (SkrivLog = '1') then
661      begin      begin
662        logTekst := 'Program start (Version: ' + Sto_GetFmtFileVersion('','') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);        logTekst := 'Program start (Version: ' + TUtils.Sto_GetFmtFileVersion('') + ') Dato: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
663        try        try
664          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
665          Uploadlogfil1.Enabled := true;          Uploadlogfil1.Enabled := true;
666          UploadButton01.Enabled := true;          BtnUploadLogfil.Enabled := true;
667          logTekst := 'Programmet er installeret som: '+ParamStr(0);          logTekst := 'Programmet er installeret som: '+ParamStr(0);
668          SkrivScanningLogFil(logTekst);          SkrivScanningLogFil(logTekst);
669          // Oprydning i gamle logfiler          // Oprydning i gamle logfiler
# Line 641  begin Line 675  begin
675    
676      if Scanningtype = 'A' then      if Scanningtype = 'A' then
677      begin      begin
678        Automatiskvalg1.Checked := true;        menuAutomatiskvalg1.Checked := true;
679        Scanningtype := '1';        Scanningtype := '1';
680        PanelValgA.Color := clGreen;        PanelValgA.Color := clGreen;
681        PanelValgA.Font.Color := clWhite;        PanelValgA.Font.Color := clWhite;
682      end;      end;
683    
684      if LabelType = 0 then  
     begin  
        XPosRute := ReadInteger('RuteBred','XPos',1);  
        YPosRute := ReadInteger('RuteBred','YPos',1);  
        FontSizeRute := ReadInteger('RuteBred','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteBred','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarBred','XPos',1);  
        YPosKommentar := ReadInteger('KommentarBred','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarBred','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerBred','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerBred','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerBred','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
     end  
     else  
     begin  
        XPosRute := ReadInteger('RuteSmal','XPos',1);  
        YPosRute := ReadInteger('RuteSmal','YPos',1);  
        FontSizeRute := ReadInteger('RuteSmal','FontSize',72);  
        FontSizeRuteLille := ReadInteger('RuteSmal','FontSizeLille',20);  
        XPosKommentar := ReadInteger('KommentarSmal','XPos',1);  
        YPosKommentar := ReadInteger('KommentarSmal','YPos',250);  
        FontSizeKommentar := ReadInteger('KommentarSmal','FontSize',16);  
        XPosBoghandler := ReadInteger('BoghandlerSmal','XPos',1);  
        YPosBoghandler := ReadInteger('BoghandlerSmal','YPos',400);  
        FontSizeBoghandler := ReadInteger('BoghandlerSmal','FontSize',16);  
        XPosKoreliste := ReadInteger('KorelisteSmal','XPos',1);  
        YPosKoreliste := ReadInteger('KorelisteSmal','YPos',100);  
        FontSizeKoreliste := ReadInteger('KorelisteSmal','FontSize',72);  
        FontSizeKorelisteLille := ReadInteger('KorelisteSmal','FontSizeLille',20);  
        XPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','XPos',700);  
        YPosSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','YPos',100);  
        FontSizeSorteringsfelt1 := ReadInteger('Sorteringsfelt1Smal','FontSize',16);  
        XPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','XPos',700);  
        YPosSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','YPos',150);  
        FontSizeSorteringsfelt2 := ReadInteger('Sorteringsfelt2Smal','FontSize',16);  
        XPosSmskode := ReadInteger('SmskodeSmal','XPos',1);  
        YPosSmskode := ReadInteger('SmskodeSmal','YPos',300);  
        FontSizeSmskode := ReadInteger('SmskodeSmal','FontSize',32);  
        if LabelType = 2 then // test på alm. printer kræver at XY-positionerne ganges med 3  
        begin  
           XPosRute := XPosRute * 3;  
           YPosRute := YPosRute * 3;  
           XPosKommentar := XPosKommentar * 3;  
           YPosKommentar := YPosKommentar * 3;  
           XPosBoghandler := XPosBoghandler * 3;  
           YPosBoghandler := YPosBoghandler * 3;  
           XPosKoreliste := XPosKoreliste * 3;  
           YPosKoreliste := YPosKoreliste * 3;  
           XPosSorteringsfelt1 := XPosSorteringsfelt1 * 3;  
           YPosSorteringsfelt1 := YPosSorteringsfelt1 * 3;  
           XPosSorteringsfelt2 := XPosSorteringsfelt2 * 3;  
           YPosSorteringsfelt2 := YPosSorteringsfelt2 * 3;  
           XPosSmskode := XPosSmskode * 3;  
           YPosSmskode := YPosSmskode * 3;  
        end;  
     end;  
685    
686      if SporgEfterBoghandler = '1' then      if SporgEfterBoghandler = '1' then
687      begin      begin
# Line 741  begin Line 707  begin
707    
708      if ScanTjekkodeAutomatik = '1' then      if ScanTjekkodeAutomatik = '1' then
709      begin      begin
710        Automatisktjekkodestyring1.Checked := true;        menuAutomatiskTjekkodeStyring.Checked := true;
711        chkScanTjekkode.Enabled := false;        chkScanTjekkode.Enabled := false;
712        Scanogstjekkoden1.Enabled := false;        Scanogstjekkoden1.Enabled := false;
713      end;      end;
# Line 768  begin Line 734  begin
734      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)      //SpecialVersionSted := 'FD';  // FD - sætter automatisk nedenstående SpecialVersionScanningtype til DIREKTE)
735      // *************************** //      // *************************** //
736    
737    {$IfDef STED_BK}
738        SpecialVersionSted := 'BK';
739    {$EndIf}
740    {$IfDef STED_TK}
741        SpecialVersionSted := 'TK';// BK-Trykkompagniet
742    {$EndIf}
743    {$IfDef STED_DBK}
744        SpecialVersionSted := 'DBK';
745    {$EndIf}
746    {$IfDef STED_FD}
747        SpecialVersionSted := 'FD';
748    {$EndIf}
749    {$IfDef STED_NS}
750        SpecialVersionSted := 'NS';
751    {$EndIf}
752    
753      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '01';  // NS - bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
754      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)      //SpecialVersionSted := '02';  // BK - BRUGES IKKE (brug i stedet ovenstående SpecialVersionSted BK)
755      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)      //SpecialVersionSted := '03';  // FD - (bruges sammen med nedenstående SpecialVersionScanningtype DIREKTE)
# Line 783  begin Line 765  begin
765      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)      // Hvis specialversion er valgt (SpecialVersionSted er sat til en værdi ovenfor)
766      // ændrer vi Sted og Scanningtype her:      // ændrer vi Sted og Scanningtype her:
767    
 // 20150313: start  
768      if SpecialVersionSted = 'NS' then      if SpecialVersionSted = 'NS' then
769      begin      begin
770         SpecialVersionSted := '01';         //SpecialVersionSted := '01'; // Fra før NS overtog scanning løssalg
771         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
772    
773          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
774          Sted := SpecialVersionSted;
775         // her skal vi også disable de knapper BK ikke kan bruge
776          PanelValg2.Enabled := false;
777          PanelValg2.Font.Color := clInactiveCaption;
778          PanelValg3.Enabled := false;
779          PanelValg3.Font.Color := clInactiveCaption;
780          //PanelValg6.Enabled := false;
781          //PanelValg6.Font.Color := clInactiveCaption;
782    
783         // her skal vi også disable de menupunkter FD ikke kan bruge
784          menuNatxpressReturDAO1.Enabled := false;
785          menuNatxpressReturfraKunde1.Enabled := false;
786    
787          //Returpakkerfrapakkeshop1.Enabled := false;
788      end;      end;
789    
790      if SpecialVersionSted = 'FD' then      if SpecialVersionSted = 'FD' then
791      begin      begin
792         SpecialVersionSted := '03';         //SpecialVersionSted := '03'; //fra før at FD overtog scanning
793         SpecialVersionScanningtype := '4';         //SpecialVersionScanningtype := '4';
794    
795    
796          //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
797          Sted := SpecialVersionSted;
798         // her skal vi også disable de knapper BK ikke kan bruge
799          PanelValg2.Enabled := false;
800          PanelValg2.Font.Color := clInactiveCaption;
801          PanelValg3.Enabled := false;
802          PanelValg3.Font.Color := clInactiveCaption;
803          //PanelValg6.Enabled := false;
804          //PanelValg6.Font.Color := clInactiveCaption;
805    
806         // her skal vi også disable de menupunkter FD ikke kan bruge
807          menuNatxpressReturDAO1.Enabled := false;
808          menuNatxpressReturfraKunde1.Enabled := false;
809    
810          //Returpakkerfrapakkeshop1.Enabled := false;
811    
812      end;      end;
 // 20150313: slut  
813    
814      if SpecialVersionSted = 'BK' then      if (SpecialVersionSted = 'BK') OR (SpecialVersionSted = 'TK') then
815      begin      begin
816        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil        //FarveNormal := 'A9F5A9';  // her kan vi evt. overrule ini fil
817        Sted := SpecialVersionSted;        Sted := SpecialVersionSted;
# Line 805  begin Line 820  begin
820        PanelValg2.Font.Color := clInactiveCaption;        PanelValg2.Font.Color := clInactiveCaption;
821        PanelValg3.Enabled := false;        PanelValg3.Enabled := false;
822        PanelValg3.Font.Color := clInactiveCaption;        PanelValg3.Font.Color := clInactiveCaption;
823        PanelValg6.Enabled := false;        //PanelValg6.Enabled := false;
824        PanelValg6.Font.Color := clInactiveCaption;        //PanelValg6.Font.Color := clInactiveCaption;
825    
826       // her skal vi også disable de menupunkter BK ikke kan bruge       // her skal vi også disable de menupunkter BK ikke kan bruge
827        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
828        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
829        Returpakkerfrapakkeshop1.Enabled := false;  
830          //Returpakkerfrapakkeshop1.Enabled := false;
831    
832        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
833        begin        begin
834           Scanningtype := '1';           Scanningtype := '1';
# Line 834  begin Line 852  begin
852        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
853        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
854        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
855    
856    
857       // her skal vi også disable de menupunkter DBK ikke kan bruge       // her skal vi også disable de menupunkter DBK ikke kan bruge
858        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
859        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
860    
861        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
862        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
863    
864        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
865        begin        begin
# Line 870  begin Line 890  begin
890        PanelValg5.Font.Color := clInactiveCaption;        PanelValg5.Font.Color := clInactiveCaption;
891        PanelValg6.Enabled := false;        PanelValg6.Enabled := false;
892        PanelValg6.Font.Color := clInactiveCaption;        PanelValg6.Font.Color := clInactiveCaption;
893          PanelValg7.Enabled := false;
894          PanelValg7.Font.Color := clInactiveCaption;
895       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge       // her skal vi også disable de menupunkter Bladhusene (01, 02, 03 og 04) ikke kan bruge
896    
897        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
898    
899        Pakkernormal1.Enabled := false;        menuNatXpress1.Enabled := false;
900        ReturpakkerfraDAO1.Enabled := false;        menuNatxpressReturDAO1.Enabled := false;
901        Returpakkerfraboghandler1.Enabled := false;        menuNatxpressReturfraKunde1.Enabled := false;
902        Budlevering1.Enabled := false;        menuDaoDirekte1.Enabled := false;
903        Pakkeshoplevering1.Enabled := false;        menuPakkeshop1.Enabled := false;
904        Returpakkerfrapakkeshop1.Enabled := false;        menuPakkeshopRetur1.Enabled := false;
905        if SpecialVersionScanningtype = 'A' then        if SpecialVersionScanningtype = 'A' then
906        begin        begin
907          Scanningtype := '4';          Scanningtype := '4';
908          Budlevering1.Enabled := true;          menuDaoDirekte1.Enabled := true;
909          PanelValg4.Font.Color := clWindowText;          PanelValg4.Font.Color := clWindowText;
910          PanelValg4.Enabled := true;          PanelValg4.Enabled := true;
911        end        end
# Line 892  begin Line 914  begin
914          Scanningtype := SpecialVersionScanningtype;          Scanningtype := SpecialVersionScanningtype;
915          PanelValgA.Enabled := false;          PanelValgA.Enabled := false;
916          PanelValgA.Font.Color := clInactiveCaption;          PanelValgA.Font.Color := clInactiveCaption;
917          AutomatiskValg1.Checked := false;          menuAutomatiskvalg1.Checked := false;
918          PanelValgA.Color := clBtnFace;          PanelValgA.Color := clBtnFace;
919          if Scanningtype = '1' then          if Scanningtype = '1' then
920          begin          begin
921            Pakkernormal1.Enabled := true;            menuNatXpress1.Enabled := true;
922            PanelValg1.Enabled := true;            PanelValg1.Enabled := true;
923            PanelValg1.Font.Color := clWindowText;            PanelValg1.Font.Color := clWindowText;
924          end;          end;
925          if Scanningtype = '2' then          if Scanningtype = '2' then
926          begin          begin
927            ReturpakkerfraDAO1.Enabled := true;            menuNatxpressReturDAO1.Enabled := true;
928            PanelValg2.Enabled := true;            PanelValg2.Enabled := true;
929            PanelValg2.Font.Color := clWindowText;            PanelValg2.Font.Color := clWindowText;
930          end;          end;
931          if Scanningtype = '3' then          if Scanningtype = '3' then
932          begin          begin
933            Returpakkerfraboghandler1.Enabled := true;            menuNatxpressReturfraKunde1.Enabled := true;
934            PanelValg3.Enabled := true;            PanelValg3.Enabled := true;
935            PanelValg3.Font.Color := clWindowText;            PanelValg3.Font.Color := clWindowText;
936          end;          end;
937          if Scanningtype = '4' then          if Scanningtype = '4' then
938          begin          begin
939            Budlevering1.Enabled := true;            menuDaoDirekte1.Enabled := true;
940            PanelValg4.Enabled := true;            PanelValg4.Enabled := true;
941            PanelValg4.Font.Color := clWindowText;            PanelValg4.Font.Color := clWindowText;
942          end;          end;
943          if Scanningtype = '5' then          if Scanningtype = '5' then
944          begin          begin
945            Pakkeshoplevering1.Enabled := true;            menuPakkeshop1.Enabled := true;
946            PanelValg5.Enabled := true;            PanelValg5.Enabled := true;
947            PanelValg5.Font.Color := clWindowText;            PanelValg5.Font.Color := clWindowText;
948          end;          end;
949          if Scanningtype = '6' then          if Scanningtype = '6' then
950          begin          begin
951            Returpakkerfrapakkeshop1.Enabled := true;            menuPakkeshopRetur1.Enabled := true;
952            PanelValg6.Enabled := true;            PanelValg6.Enabled := true;
953            PanelValg6.Font.Color := clWindowText;            PanelValg6.Font.Color := clWindowText;
954          end;          end;
# Line 965  begin Line 987  begin
987             RutenummerST.Caption := '';             RutenummerST.Caption := '';
988             BoghandlerNavnST.Caption := 'Fejl i urls';             BoghandlerNavnST.Caption := 'Fejl i urls';
989             KommentarST.Caption := 'Se log vinduet';             KommentarST.Caption := 'Se log vinduet';
990             PakkeshopNulstil.Visible := true;             btnNulstil.Visible := true;
991             exit;             exit;
992          end;          end;
993      end      end
# Line 1007  begin Line 1029  begin
1029    
1030      if Pakketype = '1' then      if Pakketype = '1' then
1031      begin      begin
1032        Storepakker1.Checked := true;        menuStorePakker.Checked := true;
1033        radioStorPakke.Checked := true;        radioStorPakke.Checked := true;
1034      end      end
1035      else      else
1036      begin      begin
1037        Smpakker1.Checked := true;        menuSmaaPakker.Checked := true;
1038        radioLillePakke.Checked := true;        radioLillePakke.Checked := true;
1039      end;      end;
1040    
# Line 1060  begin Line 1082  begin
1082      end;      end;
1083    
1084    
     if (PrinterNavn <> '') then  
     begin  
        printerInd := Printer.Printers.IndexOf(printerNavn);  
        if printerInd >= 0 then  
           Printer.PrinterIndex := printerInd;  
     end;  
1085    
1086      CheckPrintQue('Opstart');  
1087        LabelPrint := TLabelPrint.Create( self, Config, PrinterNavn );
1088        LabelPrint.CheckPrintQue('Opstart', PrinterNavn);
1089    
1090    finally    finally
1091      Free;      Free;
# Line 1076  begin Line 1094  begin
1094      // UBD skal p.t. ikke have adgang til flg. funktioner      // UBD skal p.t. ikke have adgang til flg. funktioner
1095      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then      if ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
1096      begin      begin
1097        ReturpakkerfraDAO1.Visible := false;        menuNatxpressReturDAO1.Visible := false;
1098        Returpakkerfraboghandler1.Visible := false;        menuNatxpressReturfraKunde1.Visible := false;
1099        Budlevering1.Visible := false;        menuDaoDirekte1.Visible := false;
1100        Storepakker1.Visible := false;        menuStorePakker.Visible := false;
1101        Smpakker1.Visible := false;        menuSmaaPakker.Visible := false;
1102        Testprinter1.Visible := false;        Testprinter1.Visible := false;
1103        Pakkeshoplevering1.Visible := false;        menuPakkeshop1.Visible := false;
1104        Returpakkerfrapakkeshop1.Visible := false;        menuPakkeshopRetur1.Visible := false;
1105      end;      end;
1106    
1107      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
# Line 1134  begin Line 1152  begin
1152      Scanningtype := gemScanningtype;      Scanningtype := gemScanningtype;
1153    
1154      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');      SendInfoTilServer(Sted, Scanningtype, 'Begin', '');
1155      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', Sto_GetFmtFileVersion('',''));      SendInfoTilServer(Sted, Scanningtype, 'ProgramVersion', TUtils.Sto_GetFmtFileVersion(''));
1156    
1157  end;  end;
1158    
# Line 1191  begin Line 1209  begin
1209      or (NumberString = 'Retur fra kunde')      or (NumberString = 'Retur fra kunde')
1210      or (NumberString = 'DAO DIREKTE')      or (NumberString = 'DAO DIREKTE')
1211      or (NumberString = 'DAO PAKKESHOP')      or (NumberString = 'DAO PAKKESHOP')
1212        or (NumberString = 'DAO PAKKESHOP')
1213        or (LowerCase(NumberString) = 'for stor hjemmelevering' )
1214            or (LowerCase(NumberString) = 'for stor daodirekte' )
1215      or (NumberString = 'Retur fra pakkeshop') then      or (NumberString = 'Retur fra pakkeshop') then
1216    
1217      begin      begin
# Line 1201  begin Line 1222  begin
1222      begin      begin
1223        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');        ShowMessage('Indsæt et gyldigt pakkenummer - uden linieskift');
1224      end;      end;
1225    end;    end;  // Slut ctrl-v
1226    
1227    if Key = #13 then     // Enter    if Key = #13 then     // Enter
1228    begin    begin
1229      if (Length(Trim(Stregkode)) = 0) then  
1230        // Sikre at den er trimmet inden vi går videre - DBK kan finde på at encode et space i enden af deres barcodes
1231        Stregkode := Trim(Stregkode);
1232    
1233        if (Length(Stregkode) = 0) then
1234      begin      begin
1235        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );        VisAlarmSkaerm( 'Der skal scannes en stregkode...' );
1236    
# Line 1214  begin Line 1239  begin
1239    
1240      if StregKode = 'Nulstil' then      if StregKode = 'Nulstil' then
1241      begin      begin
1242         PakkeshopNulstil.Click();         btnNulstil.Click();
1243         exit;         exit;
1244      end;      end;
1245    
1246      if PakkeshopNulstil.Visible then      if btnNulstil.Visible then
1247      begin      begin
1248        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );        VisAlarmSkaerm( 'HUSK at klikke Nulstil før ny scanning...' );
1249    
# Line 1255  begin Line 1280  begin
1280         exit;         exit;
1281      end;      end;
1282    
1283        if (LowerCase(StregKode) = 'for stor hjemmelevering') OR (LowerCase(StregKode) = 'for stor daodirekte') then
1284        begin
1285          if chkForstorTilDirekte.Enabled then
1286          begin
1287            chkForstorTilDirekte.Checked := true;
1288          end
1289          else
1290          begin
1291             VisAlarmSkaerm( Stregkode + ' kan ikke vælges på denne scannings tilstand' );
1292          end;
1293          Stregkode := '';
1294          StregkodeST.Caption := StregKode;
1295          exit;
1296        end;
1297    
1298    
1299      if StregKode = 'Indtast kundenummer' then      if StregKode = 'Indtast kundenummer' then
1300      begin      begin
1301         if chkSporgEfterKunde.Enabled = true then         if chkSporgEfterKunde.Enabled = true then
# Line 1452  begin Line 1493  begin
1493        Pakkescanningtype := Scanningtype;        Pakkescanningtype := Scanningtype;
1494      end;      end;
1495    
1496      if (   (Pakkescanningtype = '1') and (PanelValg1.Enabled = false)      if (   ( (Pakkescanningtype = '1') and (PanelValg1.Enabled = false) )
1497          or (Pakkescanningtype = '2') and (PanelValg2.Enabled = false)          or ( (Pakkescanningtype = '2') and (PanelValg2.Enabled = false) )
1498          or (Pakkescanningtype = '3') and (PanelValg3.Enabled = false)          or ( (Pakkescanningtype = '3') and (PanelValg3.Enabled = false) )
1499          or (Pakkescanningtype = '4') and (PanelValg4.Enabled = false)          or ( (Pakkescanningtype = '4') and (PanelValg4.Enabled = false) )
1500          or (Pakkescanningtype = '5') and (PanelValg5.Enabled = false)          or ( (Pakkescanningtype = '5') and (PanelValg5.Enabled = false) )
1501          or (Pakkescanningtype = '6') and (PanelValg6.Enabled = false)  ) then          or ( (Pakkescanningtype = '6') and (PanelValg6.Enabled = false) ) ) then
1502      begin   // Her skal komme en alarm og rød skærm      begin   // Her skal komme en alarm og rød skærm
1503          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );          VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1504    
1505         exit;         exit;
1506      end;      end;
1507    
1508      if Automatiskvalg1.Checked and (Length(Stregkode) > 8) then      if (menuAutomatiskvalg1.Checked and (Length(Stregkode) > 8) ) then
1509      begin      begin
1510        GemStregkode := Stregkode;        GemStregkode := Stregkode;
1511        if Pakketype = 'NatXpress' then        if Pakketype = 'NatXpress' then
# Line 1493  begin Line 1534  begin
1534                InitPakkeshoplevering();                InitPakkeshoplevering();
1535              end;              end;
1536            end            end
1537        // Retur kan ikke scannes med 'Automatisk valg'       else if Pakketype = 'PakkeshopRetur' then
1538              begin
1539                if Scanningtype <> '6' then
1540                begin
1541                 VisAlarmSkaerm( Stregkode + ' Pakkeshop retur,'#13#10' kan ikke bruges med automatisk valg' );
1542    
1543                 exit;
1544                end;
1545              end
1546    
1547    
1548        else        else
1549            begin            begin
1550            // Her skal komme en alarm og rød skærm            // Her skal komme en alarm og rød skærm
1551              VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );              //VisAlarmSkaerm( Stregkode + ' kan ikke vælges på dette scanningsted' );
1552                 VisAlarmSkaerm( Stregkode + ' kan ikke bruges med automatisk valg' );
1553    
1554               exit;               exit;
1555            end;            end;
1556        Stregkode := GemStregkode;        Stregkode := GemStregkode;
1557      end      end
1558      else if Automatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then      else if menuAutomatiskvalg1.Checked and (PakkeshopText1.Caption = 'Stregkode') then
1559      begin      begin
1560        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );        VisAlarmSkaerm( 'Pakkenummer ikke gyldigt (for kort)' );
1561    
1562        exit;        exit;
1563      end;      end;
1564    
1565      if not Automatiskvalg1.Checked then      if not menuAutomatiskvalg1.Checked then
1566      begin      begin
1567        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then        if ( (Pakkescanningtype <> Scanningtype) and (Scanningtype <> '2') and (Scanningtype <> '3') ) then
1568        begin        begin
# Line 1524  begin Line 1575  begin
1575    
1576    
1577    
1578      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and Automatisktjekkodestyring1.Checked then      if (PakkeshopText1.Visible = true) and (PakkeshopText1.Caption = 'Stregkode') and menuAutomatiskTjekkodeStyring.Checked then
1579      begin      begin
1580        chkScanTjekkode.Checked := false;        chkScanTjekkode.Checked := false;
1581        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do        for i := 0 to length(stregkoderMedTjekkodeArray)-1 do
# Line 1537  begin Line 1588  begin
1588        end;        end;
1589      end;      end;
1590    
1591      if Pakkernormal1.Checked and not Scanogstjekkoden1.Checked then      if menuNatXpress1.Checked and not Scanogstjekkoden1.Checked then
1592        begin        begin
1593          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1594             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1595             BoghandlerTjekkode := '';             BoghandlerTjekkode := '';
1596             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1597             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1598             Stregkode := '';             Stregkode := '';
1599             InitScreen();             InitScreen();
1600        end        end
1601      else if (PakkeshopLevering1.Checked or Pakkernormal1.Checked) and not Scanogstjekkoden1.Checked then      else if (menuPakkeshop1.Checked or menuNatXpress1.Checked) and not Scanogstjekkoden1.Checked then
1602        begin        begin
1603          // Når vi ikke kræver tjekkode er alt ok her          // Når vi ikke kræver tjekkode er alt ok her
1604             PakkeshopStregkode := Stregkode;             PakkeshopStregkode := Stregkode;
# Line 1555  begin Line 1606  begin
1606             BoghandlerStregkode := Stregkode;             BoghandlerStregkode := Stregkode;
1607             BoghandlerTjekkode := '-1';             BoghandlerTjekkode := '-1';
1608             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1609             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1610             Stregkode := '';             Stregkode := '';
1611             InitScreen();             InitScreen();
1612        end        end
1613      else if PakkeshopLevering1.Checked or Pakkernormal1.Checked then      else if menuPakkeshop1.Checked or menuNatXpress1.Checked then
1614        if PakkeshopText1.Caption = 'Stregkode' then        if PakkeshopText1.Caption = 'Stregkode' then
1615         begin         begin
1616            if length(Stregkode) > 5 then            if length(Stregkode) > 5 then
# Line 1585  begin Line 1636  begin
1636             PakkeshopTjekkode := Stregkode;             PakkeshopTjekkode := Stregkode;
1637             BoghandlerTjekkode := Stregkode;             BoghandlerTjekkode := Stregkode;
1638             PakkeshopText1.Caption := 'Stregkode';             PakkeshopText1.Caption := 'Stregkode';
1639             if (PakkeshopLevering1.Checked) then             if (menuPakkeshop1.Checked) then
1640                MainForm.Color := HexToTColor(FarvePakkeshoplevering);                MainForm.Color := TUtils.HexToTColor(FarvePakkeshoplevering);
1641             if (Pakkernormal1.Checked) then             if (menuNatXpress1.Checked) then
1642                MainForm.Color := HexToTColor(FarveNormal);                MainForm.Color := TUtils.HexToTColor(FarveNormal);
1643             PakkeshopNulstil.Visible := false;             btnNulstil.Visible := false;
1644           end           end
1645          else          else
1646           begin           begin
1647                if (PakkeshopLevering1.Checked) then                if (menuPakkeshop1.Checked) then
1648                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + PakkeshopStregkode);
1649                if (Pakkernormal1.Checked) then                if (menuNatXpress1.Checked) then
1650                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);                  VisAlarmSkaerm('Du skal scanne en tjekkode til stregkode ' + BoghandlerStregkode);
1651                                    
1652                StregKode := '';                StregKode := '';
# Line 1607  begin Line 1658  begin
1658          InitScreen();          InitScreen();
1659       end;       end;
1660    
1661      if not PakkeshopLevering1.Checked and not Pakkernormal1.Checked or (PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (Pakkernormal1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then      if not menuPakkeshop1.Checked and not menuNatXpress1.Checked or (menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '')) or (menuNatXpress1.Checked and (Scanogstjekkoden1.Checked and (BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked)) then
1662      begin      begin
1663         if PakkeshopLevering1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then  
1664           if menuPakkeshop1.Checked and (PakkeshopStregkode <> '') and (PakkeshopTjekkode <> '') then
1665            StregKode := PakkeshopStregkode;            StregKode := PakkeshopStregkode;
1666         if Pakkernormal1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then         if menuNatXpress1.Checked and ((BoghandlerStregkode <> '') and (BoghandlerTjekkode <> '') or not Scanogstjekkoden1.Checked) then
1667            StregKode := BoghandlerStregkode;            StregKode := BoghandlerStregkode;
1668         StregkodeST.Caption := StregKode;         StregkodeST.Caption := StregKode;
1669         try         try
# Line 1621  begin Line 1673  begin
1673            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her            // Hvis der var sql fejl i opdateringen skal dette fejlmeldes her
1674            if Rutenummer = 'sql fejl' then            if Rutenummer = 'sql fejl' then
1675            begin   // Her skal komme en alarm og rød skærm            begin   // Her skal komme en alarm og rød skærm
1676               PlaySound(PWideChar(AlarmLyd));               VisAlarmSkaerm( 'SQL fejl: ' + Kommentar );
1677               //List1msg := 'SQL fejl: ' + Kommentar;  
              //ListBox1.Items.Insert(0,List1Msg);  
              MainForm.Color := clRed;  
              //KommentarST.Caption := List1msg;  
              PakkeshopNulstil.Visible := true;  
1678              exit;              exit;
1679            end;            end;
1680            if (Pakkernormal1.Checked or Budlevering1.Checked or PakkeshopLevering1.Checked) then            if (menuNatXpress1.Checked or menuDaoDirekte1.Checked or menuPakkeshop1.Checked) then
1681            begin            begin
1682              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);              PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel);
1683              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);              pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
# Line 1646  begin Line 1694  begin
1694              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then              if (pakkeErScannet > 0) or (pakkeForkertSted > 0) or (tjekkodemangler > 0) then
1695              begin              begin
1696                PlaySound(PWideChar(AlarmLyd));                PlaySound(PWideChar(AlarmLyd));
1697                PakkeshopNulstil.Visible := true;                btnNulstil.Visible := true;
1698                MainForm.Color := clRed;                MainForm.Color := clRed;
1699              end;              end;
1700           end;           end;
1701            if ( Pakkernormal1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then            if ( menuNatXpress1.Checked and (pakkeErScannet = 0) and (pakkeForkertSted = 0) and (tjekkodemangler = 0) and (RuteNummerST.Caption <> 'Ukendt') ) or (Copy(Kommentar,1,2) = 'Ok') then
1702            begin            begin
1703              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1704              if Storepakker1.Checked then              if menuStorePakker.Checked then
1705              begin              begin
1706                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1707              end              end
# Line 1661  begin Line 1709  begin
1709              begin              begin
1710                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1711              end;              end;
1712              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1713            end            end
1714            else if (Returpakkerfradao1.Checked or Returpakkerfraboghandler1.Checked) then            else if (menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked) then
1715            begin            begin
1716              MainForm.Color := HexToTColor(Farve);              MainForm.Color := TUtils.HexToTColor(Farve);
1717              if Storepakker1.Checked then              if menuStorePakker.Checked then
1718              begin              begin
1719                PlaySound(PWideChar(ScannetOkStorLyd));                PlaySound(PWideChar(ScannetOkStorLyd));
1720              end              end
# Line 1674  begin Line 1722  begin
1722              begin              begin
1723                PlaySound(PWideChar(ScannetOkLyd));                PlaySound(PWideChar(ScannetOkLyd));
1724              end;              end;
1725              PakkeshopNulstil.Visible := false;              btnNulstil.Visible := false;
1726            end            end
1727            else if Copy(Kommentar,1,8) = 'OPRETTET' then            else if Copy(Kommentar,1,8) = 'OPRETTET' then
1728            begin            begin
# Line 1685  begin Line 1733  begin
1733            end            end
1734            else            else
1735            begin            begin
1736              MainForm.Color := clRed;              VisAlarmSkaerm('');
             PlaySound(PWideChar(AlarmLyd));  
             PakkeshopNulstil.Visible := true;  
1737            end;            end;
1738           if not PakkeshopNulstil.Visible then  
1739             if not btnNulstil.Visible then
1740            begin            begin
1741    
1742              If (Budlevering1.Checked) then              If (menuDaoDirekte1.Checked) then
1743              begin              begin
1744                if Storepakker1.Checked then                if menuStorePakker.Checked then
1745                begin                begin
1746                  PlaySound(PWideChar(ScannetOkStorLyd));                  PlaySound(PWideChar(ScannetOkStorLyd));
1747                end                end
# Line 1738  begin Line 1785  begin
1785    
1786    Key := #0;    Key := #0;
1787    
1788    
1789    
1790    
1791    
1792    
1793  end; //End of OnKeyPress  end; //End of OnKeyPress
1794    
1795    
1796    
1797  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);  procedure TMainForm.SendInfoTilServer(Sted, Scanningtype, Infotype, Info : String);
1798  const  const
1799    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
# Line 1781  var Line 1835  var
1835    
1836    
1837  begin  begin
1838      if Budlevering1.Checked or Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked or Pakkernormal1.Checked then      if menuDaoDirekte1.Checked or menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked or menuNatXpress1.Checked or menuIndlevering.Checked then
1839      begin      begin
1840        for i := ListBox2.items.count-1 downto 0 do        for i := ListBox2.items.count-1 downto 0 do
1841          if pos(StregKode,ListBox2.items[i]) <> 0 then          if pos(StregKode,ListBox2.items[i]) <> 0 then
# Line 1792  begin Line 1846  begin
1846            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere            if (pos('/', wrkAntal) > 0) then  // både pakker idag og senere
1847            begin            begin
1848              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen              wrkAntal := wrkAntal + '/';   // tilføjer '/' sidst i feltet af hensyn til split funktionen
1849              wrkAntalIdag := StrToInt(split(wrkAntal, '/', 2));              wrkAntalIdag := StrToInt( TUtils.split(wrkAntal, '/', 2));
1850  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));  //            ShowMessage(SPLIT('data/another/yet/again/more/','/',3));
1851  //            ShowMessage(SPLIT('data/another/','/',3));  //            ShowMessage(SPLIT('data/another/','/',3));
1852  //            ShowMessage(SPLIT('data/another','/',3));  //            ShowMessage(SPLIT('data/another','/',3));
1853              wrkAntalSenere := StrToInt(split(wrkAntal, '/', 3));              wrkAntalSenere := StrToInt( TUtils.split(wrkAntal, '/', 3));
1854            end            end
1855            else     // kun idag            else     // kun idag
1856            begin            begin
# Line 1900  begin Line 1954  begin
1954                PanelManglendePakker6.Visible := false;                PanelManglendePakker6.Visible := false;
1955              end;              end;
1956            end;            end;
1957  // 20150310: slut  
1958            ListBox2.items.delete(i);            ListBox2.items.delete(i);
1959          end;          end;
1960      end;      end;
# Line 1930  procedure TMainForm.InitBladhus(); Line 1984  procedure TMainForm.InitBladhus();
1984    
1985  begin  begin
1986    Altidprintepakkelabel1.Enabled := false;    Altidprintepakkelabel1.Enabled := false;
1987    Pakkernormal1.Visible := false;    menuNatXpress1.Visible := false;
1988    ReturpakkerfraDAO1.Visible := false;    menuNatxpressReturDAO1.Visible := false;
1989    Returpakkerfraboghandler1.Visible := false;    menuNatxpressReturfraKunde1.Visible := false;
1990    Sprgefterboghandlernummer1.Enabled := false;    Sprgefterboghandlernummer1.Enabled := false;
1991    ListBox1.Visible := true;    ListBox1.Visible := true;
1992  //  TestFunktionen := '1';  //  TestFunktionen := '1';
1993  // 20150317: start  
1994  (*    if menuDaoDirekte1.Checked then
   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  
   if Budlevering1.Checked then  
1995    begin    begin
1996      IndlesScanningLogFil();      IndlesScanningLogFil();
1997    end;    end;
# Line 1989  begin Line 2003  begin
2003      01 :      01 :
2004            begin;      // NS            begin;      // NS
2005              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2006              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2007              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2008              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2009              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2010              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';              BladhusKontrolfil_server := 'franordjyske/RuteKontrol.txt';
# Line 2001  begin Line 2015  begin
2015      02 :      02 :
2016            begin;    // BK            begin;    // BK
2017              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2018              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
2019              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
2020              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2021              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2022              DownloadButton01.Enabled := false;     // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;     // kontrolfil bruges ikke her
2023              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2024              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2025              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2026              IndlesManglendeScanninger();              IndlesManglendeScanninger();
# Line 2016  begin Line 2030  begin
2030              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2031             if (getProddag() = 'lørdag') then             if (getProddag() = 'lørdag') then
2032              begin              begin
2033                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2034              end              end
2035              else              else
2036              begin              begin
2037                DownloadButton03.Visible := false;                BtnDownloadRuteskiftFil.Visible := false;
2038              end;              end;
2039              DownloadButton01.Enabled := true;              BtnDownloadKontrolfil.Enabled := true;
2040              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2041              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2042              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2043              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';              BladhusRuteskiftfil_server := 'frafd/RuteSkift.txt';
# Line 2039  begin Line 2053  begin
2053            end;            end;
2054      04 :  begin;           // DBK      04 :  begin;           // DBK
2055              Testprinter1.Visible := true;              Testprinter1.Visible := true;
2056              Smpakker1.Enabled := true;              menuSmaaPakker.Enabled := true;
2057              Storepakker1.Enabled := true;              menuStorePakker.Enabled := true;
2058              radioStorPakke.Enabled := true;              radioStorPakke.Enabled := true;
2059              radioLillePakke.Enabled := true;              radioLillePakke.Enabled := true;
2060              DownloadButton01.Enabled := false;    // kontrolfil bruges ikke her              BtnDownloadKontrolfil.Enabled := false;    // kontrolfil bruges ikke her
2061              OpdaterListenButton01.Enabled := true;              BtnOpdaterListen.Enabled := true;
2062              IdFTP1.Passive := true;              IdFTP1.Passive := true;
2063              IdFTP1.PassiveUseControlHost := true;              IdFTP1.PassiveUseControlHost := true;
2064            end;            end;
# Line 2060  var Line 2074  var
2074    URLStr : String;    URLStr : String;
2075    pakkestorrelse : String;    pakkestorrelse : String;
2076    PrintNyLabelInteger : Integer;    PrintNyLabelInteger : Integer;
2077    
2078      PakkeshopLabel: TPakkeshopLabel;
2079  begin  begin
2080    if radioStorPakke.Checked then    if radioStorPakke.Checked then
2081    begin    begin
# Line 2069  begin Line 2085  begin
2085    begin    begin
2086      pakkestorrelse := 'Lille';      pakkestorrelse := 'Lille';
2087    end;    end;
2088    if Pakkernormal1.Checked then  
2089    
2090      if menuNatXpress1.Checked then
2091    begin    begin
2092       if (BoghandlerTjekkode = '') then       if (BoghandlerTjekkode = '') then
2093       begin       begin
# Line 2077  begin Line 2095  begin
2095       end;       end;
2096       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);       URLStr := Format(UrlNormal,[Sted, PakkeNr, BoghandlerNummer, BoghandlerTjekkode]);
2097    end    end
2098    else if ReturpakkerfraDAO1.Checked then    else if menuNatxpressReturDAO1.Checked then
2099    begin    begin
2100       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);       URLStr := Format(UrlReturDAO,[Sted, PakkeNr, BoghandlerNummer, 'DAO', pakkestorrelse]);
2101    end    end
2102    else if Returpakkerfraboghandler1.Checked then    else if menuNatxpressReturfraKunde1.Checked then
2103    begin    begin
2104       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);       URLStr := Format(UrlReturBoghandler,[Sted, PakkeNr, BoghandlerNummer, 'Boghandler', pakkestorrelse]);
2105    end    end
2106    else if Budlevering1.Checked then    else if menuDaoDirekte1.Checked then
2107    begin    begin
2108       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);       URLStr := Format(UrlBudlevering,[Sted, PakkeNr, 'bud', pakkestorrelse]);
2109    end    end
2110    else if Pakkeshoplevering1.Checked then    else if menuPakkeshop1.Checked then
2111    begin    begin
2112       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);       URLStr := Format(UrlPakkeshoplevering,[Sted, PakkeNr, PakkeshopTjekkode]);
2113    end    end
2114    else if Returpakkerfrapakkeshop1.Checked then    else if menuPakkeshopRetur1.Checked then
2115    begin    begin
2116       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);       URLStr := Format(UrlReturPakkeshop,[Sted, PakkeNr]);
2117    end    end
2118      else if menuIndlevering.Checked then
2119      begin
2120        URLStr := Format(UrlIndleveringsPakke,[Sted, PakkeNr]);
2121      end
2122    else    else
2123    begin    begin
2124      exit;      exit;
2125    end;    end;
2126    
2127      if chkForstorTilDirekte.Checked then  // Denne skal være efter if/else kæden da den overrider de øvrige URL'er
2128      begin
2129        URLStr := Format(URLOmdirigerTilPakkeshop,[Sted, PakkeNr]);
2130      end;
2131    
2132    try    try
2133      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
2134      WebSvar := IdHTTP1.Get(URLStr);      WebSvar := IdHTTP1.Get(URLStr);
# Line 2122  begin Line 2150  begin
2150          end;          end;
2151      end;      end;
2152    end;    end;
2153    
2154    XMLDocument1.LoadFromXML(WebSvar);    XMLDocument1.LoadFromXML(WebSvar);
2155    try    try
2156      if Pakkeshoplevering1.Checked or Returpakkerfrapakkeshop1.Checked then      if menuPakkeshop1.Checked or menuPakkeshopRetur1.Checked then
2157       begin       begin
2158        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopTurid').Text;
2159        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
# Line 2132  begin Line 2161  begin
2161        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;        BoghandlerNavn := BoghandlerNavn + ' ' + XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopNavn').Text;
2162        PrintNyLabel := False;        PrintNyLabel := False;
2163    
2164        if Pakkeshoplevering1.Checked then        if menuPakkeshop1.Checked then
2165        begin        begin
2166          try          try
2167            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);            PrintNyLabelInteger := StrToInt(XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('PakkeshopPrintPakkeLabel').Text);
# Line 2143  begin Line 2172  begin
2172          begin          begin
2173            PrintNyLabel := True;            PrintNyLabel := True;
2174          end;          end;
 // 20150310: start  
2175        end;        end;
 // 20150310: slut  
2176       end       end
2177        else if menuIndlevering.Checked or chkForstorTilDirekte.Checked then
2178        begin
2179    
2180    
2181    
2182    
2183         Kommentar := XMLDocument1.ChildNodes.FindNode('PakkeKontrol').ChildNodes.FindNode('Stregkodematch').Text;
2184         if (Kommentar = 'Ok') then
2185         begin
2186           PrintNyLabel := True; //Indleveringskode vil ALTID udskrive label
2187           PakkeshopLabel := TPakkeshopLabel.Create( XMLDocument1 ); //Opret struct og parse xml doc
2188           RuteNummer := PakkeshopLabel.Koreliste + '  ->  ' +  PakkeshopLabel.PakkeshopTurid;
2189           Stregkode := PakkeshopLabel.Stregkode;
2190    
2191           LabelPrint.PrintPakkeshopLabel( PakkeshopLabel );
2192           chkForstorTilDirekte.Checked := false;
2193    
2194         end;
2195    
2196    
2197        end
2198      else      else
2199       begin       begin
2200        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;        RuteNummer := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('TurId').Text;
# Line 2154  begin Line 2202  begin
2202        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;        Kommentar := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Kommentar').Text;
2203        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;        BoghandlerNavn := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('BoghandlerNavn').Text;
2204        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;        Leveringssted := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('Leveringssted').Text;
2205        if Budlevering1.Checked then        if menuDaoDirekte1.Checked then
2206          begin          begin
2207          try          try
2208            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;            SmsKode := XMLDocument1.ChildNodes.FindNode('BogpakkeKontrol').ChildNodes.FindNode('SmsKode').Text;
# Line 2179  begin Line 2227  begin
2227          PrintNyLabel := True;          PrintNyLabel := True;
2228        end;        end;
2229      end;      end;
2230    
2231    
2232      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then      if (BladhusSted > 00) and (BladhusSted < Length(BladhusStedNavn)) then
2233      begin      begin
2234        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then        if (Leveringssted <> BladhusStedKode[BladhusSted]) and (BladhusStedKode[BladhusSted] <> 'DBK') then
# Line 2187  begin Line 2237  begin
2237            PrintNyLabel := False;            PrintNyLabel := False;
2238        end;        end;
2239      end      end
2240      else if (Budlevering1.Checked) and (Leveringssted <> Sted) then      else if (menuDaoDirekte1.Checked) and (Leveringssted <> Sted) then
2241      begin      begin
2242         if (Leveringssted = 'E') and (Sted = 'DBK') then         if (Leveringssted = 'E') and (Sted = 'DBK') then
2243         begin         begin
# Line 2216  begin Line 2266  begin
2266    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText    //Label1.Caption := Kommentar;   // bruges hvis der skal vises linieskift - det kan man ikke i en staticText
2267    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);    BoghandlerNavnST.Caption := StringReplace(BoghandlerNavn, ' & ', ' && ', [rfReplaceAll, rfIgnoreCase]);
2268    List1msg := TimeToStr(now) + '; ';    List1msg := TimeToStr(now) + '; ';
2269    if Pakkeshoplevering1.Checked then    if menuPakkeshop1.Checked then
2270      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';      List1msg := List1msg + PakkeshopStregkode + ' ' + PakkeshopTjekkode + '; ' + KommentarST.Caption + '; ';
2271    List1Pakkestorrelse := '';    List1Pakkestorrelse := '';
2272    if radioStorPakke.Checked then    if radioStorPakke.Checked then
# Line 2228  begin Line 2278  begin
2278      List1Pakkestorrelse := 'Lille pakke';      List1Pakkestorrelse := 'Lille pakke';
2279    end;    end;
2280    List1msg := List1msg + BoghandlerNavn + '; ';    List1msg := List1msg + BoghandlerNavn + '; ';
2281    if ReturpakkerfraDAO1.Checked then    if menuNatxpressReturDAO1.Checked then
2282    begin    begin
2283      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-8);
2284    end;    end;
2285    if Returpakkerfraboghandler1.Checked then    if menuNatxpressReturfraKunde1.Checked then
2286    begin    begin
2287      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);      List1msg := List1msg + RightStr(Kommentar, Length(Kommentar)-16);
2288    end;    end;
2289    if ReturpakkerfraDAO1.Checked or Returpakkerfraboghandler1.Checked then    if menuNatxpressReturDAO1.Checked or menuNatxpressReturfraKunde1.Checked then
2290       List1msg := List1msg + '; ' + List1Pakkestorrelse;       List1msg := List1msg + '; ' + List1Pakkestorrelse;
2291    if length(BoghNr) > 0 then    if length(BoghNr) > 0 then
2292    begin    begin
2293      List1Msg := List1Msg + '; Indtastet ' + BoghNr;      List1Msg := List1Msg + '; Indtastet ' + BoghNr;
2294    end;    end;
2295    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2296    begin    begin
2297       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;       List1msg := TimeToStr(now) + '; ' + Kommentar + '; ' + BoghandlerNavn;
2298        if (radioStorPakke.Checked) then        if (radioStorPakke.Checked) then
# Line 2254  begin Line 2304  begin
2304          List1msg := List1msg + '; Lille pakke';          List1msg := List1msg + '; Lille pakke';
2305        end;        end;
2306    end;    end;
2307    if Returpakkerfrapakkeshop1.Checked then    if menuPakkeshopRetur1.Checked then
2308    begin    begin
2309      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);      List1msg := List1msg + Stregkode + ' ' + RightStr(Kommentar, Length(Kommentar)-6);
2310    end;    end;
2311    if Pakkernormal1.Checked then    if menuNatXpress1.Checked then
2312    begin    begin
2313      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen      if (Kommentar = '***** Kommentar *****')                       // fra test printer funktionen
2314      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen      or (BoghandlerNavn = 'Forbindelse ok')                         // fra test forbindelse funktionen
# Line 2271  begin Line 2321  begin
2321        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;        List1msg := List1msg + '; ' + Stregkode + ' (' + BoghandlerTjekkode + ')' + '; ' + Kommentar;
2322      end;      end;
2323    end;    end;
2324      if menuIndlevering.Checked then
2325      begin
2326        List1Msg := Stregkode;
2327      end;
2328    
2329    
2330    ListBox1.Items.Insert(0,List1Msg);    ListBox1.Items.Insert(0,List1Msg);
2331    logTekst := RightStr(List1Msg, Length(List1Msg)-10);    logTekst := RightStr(List1Msg, Length(List1Msg)-10);
2332    SkrivScanningLogFil(logTekst);    SkrivScanningLogFil(logTekst);
2333  end;  end;
2334    
2335  procedure TMainForm.UploadButton01Click(Sender: TObject);  procedure TMainForm.BtnUploadLogfilClick(Sender: TObject);
2336  begin  begin
2337    UploadLogfilTilDAO();    UploadLogfilTilDAO();
2338    UploadInifilTilDAO();    UploadInifilTilDAO();
# Line 2292  pakkeForkertSted : Integer; Line 2348  pakkeForkertSted : Integer;
2348    kontrolKoreliste : string;    kontrolKoreliste : string;
2349    nytRuteNummer, nyFarve : String;    nytRuteNummer, nyFarve : String;
2350  begin  begin
2351    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2352       RuteNummerST.Color := HexToTColor(Farve);       RuteNummerST.Color := TUtils.HexToTColor(Farve);
2353    
2354    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);    pakkeErScannet := pos('PAKKEN ER SCANNET', BoghandlerNavn);
2355    if pakkeErScannet = 0 then    if pakkeErScannet = 0 then
# Line 2330  begin Line 2386  begin
2386        end;        end;
2387    end    end
2388    else    else
2389    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2390    begin    begin
2391       if (BoghandlerNavn = 'Ukendt pakke') then       if (BoghandlerNavn = 'Ukendt pakke') then
2392       begin       begin
# Line 2338  begin Line 2394  begin
2394    
2395          PlaySound(PWideChar(AlarmLyd));          PlaySound(PWideChar(AlarmLyd));
2396          MainForm.Color := clRed;          MainForm.Color := clRed;
2397          PakkeshopNulstil.Visible := true;          btnNulstil.Visible := true;
2398    
2399       end       end
2400       else       else
# Line 2349  begin Line 2405  begin
2405            PrintNyLabel := true;            PrintNyLabel := true;
2406            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;            RuteNummerST.Caption := RuteNummer+' -> ny rute: '+nytRuteNummer;
2407            nyFarve := Farve;            nyFarve := Farve;
2408            RuteNummerST.Color := HexToTColor(nyFarve);            RuteNummerST.Color := TUtils.HexToTColor(nyFarve);
2409            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;            List1msg := TimeToStr(now) + '; ' + RuteNummer+' -> ny rute: '+nytRuteNummer;
2410            RuteNummer := nytRuteNummer;            RuteNummer := nytRuteNummer;
2411            ListBox1.Items.Insert(0,List1Msg);            ListBox1.Items.Insert(0,List1Msg);
# Line 2365  begin Line 2421  begin
2421            begin            begin
2422              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2423              MainForm.Color := clRed;              MainForm.Color := clRed;
2424              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2425            end;            end;
2426    
2427         end;         end;
# Line 2391  begin Line 2447  begin
2447            begin            begin
2448              PlaySound(PWideChar(AlarmLyd));              PlaySound(PWideChar(AlarmLyd));
2449              MainForm.Color := clRed;              MainForm.Color := clRed;
2450              PakkeshopNulstil.Visible := true;              btnNulstil.Visible := true;
2451            end;            end;
2452    
2453         end;         end;
# Line 2399  begin Line 2455  begin
2455    
2456    end;    end;
2457    
2458    if Budlevering1.Checked then    if menuDaoDirekte1.Checked then
2459    begin    begin
2460      case BladhusSted of      case BladhusSted of
2461        00 :  begin;        00 :  begin;
# Line 2411  begin Line 2467  begin
2467               if PrintNyLabel or (RuteNummer = 'Rutenr') then               if PrintNyLabel or (RuteNummer = 'Rutenr') then
2468  // 20150304: slut  // 20150304: slut
2469                begin                begin
2470                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2471                end;                end;
2472              end;              end;
2473        01 :  begin;        01 :  begin;
2474               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2475                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2476                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2477                begin                begin
2478                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2479                end;                end;
2480              end;              end;
2481        02 :  begin;        02 :  begin;
2482                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2483                begin                begin
2484                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2485                end;                end;
2486              end;              end;
2487        03 :  begin;        03 :  begin;
2488               if PrintNyLabel and ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then               if PrintNyLabel or ( (kontrolKoreliste <> '') and (kontrolKoreliste <> RuteNummer) ) or (RuteNummer = 'Rutenr') then
2489                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste                    // Ovenstående test er lidt speciel fordi der i programmet nogle steder er byttet rundt på rute og køreliste
2490                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')                    // Meningen er at der kun skal printes hvis der er forskel i kørelisterne eller ruterne - eller vi kommer fra test funktionen (Rutenr = 'Rutenr')
2491               begin               begin
2492                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2493               end;               end;
2494              end;              end;
2495        04 :  begin;        04 :  begin;
2496                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test                if PrintNyLabel or (RuteNummer = 'Rutenr') then   // Hvis RuteNummer = 'Rutenr' er vi igang med en printer test
2497                begin                begin
2498                  SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);                  LabelPrint.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, PrintNyLabel, BoghandlerNummer);
2499                end;                end;
2500              end;              end;
2501        else        else
# Line 2448  begin Line 2504  begin
2504    end;    end;
2505    
2506  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her  // Hvis det er normal bogpakke modtagelse til UBD skal vi p.t. ikke printe - men stopper her
2507    if Pakkernormal1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then    if menuNatXpress1.Checked and ( (Sted = '1') or (Sted = '2') or (Sted = '3') or (Sted = '4') ) then
2508    begin    begin
2509      exit;      exit;
2510    end;    end;
2511    
2512    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    if menuDaoDirekte1.Checked or ( Sprgefterboghandlernummer1.Enabled and chkSporgEfterKunde.Checked and ( (RuteNummer = 'Ukendt') or (RuteNummer = 'Ukendt tur') or (RuteNummer = 'Retur ukendt') or (pakkeErScannet > 0) ) and (printNyLabel = false) ) then
2513    begin    begin
2514    end    end
2515    else    else
# Line 2475  begin Line 2531  begin
2531        end;        end;
2532        logTekst := logTekst + ' for '+BoghandlerNavn;        logTekst := logTekst + ' for '+BoghandlerNavn;
2533        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
2534        with Printer do  
2535        begin        LabelPrint.PrintDaodirekteLabel( RuteNummer, Kommentar, BoghandlerNavn) ;
2536          BeginDoc;        
         Canvas.Font.Size := FontSizeRute;  
         if (Length(RuteNummer) > 7) then  
         begin  
           Canvas.Font.Size := FontSizeRuteLille;  
         end;  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
         Canvas.Font.Size := FontSizeKommentar;  
         Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
         if (Kommentar = 'Ok') or (Kommentar = 'ALLEREDE SCANNET') then  
         begin  
           Kommentar := '';  
         end;  
         if (BoghandlerNavn = 'PAKKE ER SCANNET') then  
         begin  
           BoghandlerNavn := '';  
         end;  
         Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
         Canvas.Font.Size := FontSizeBoghandler;  
         Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
         EndDoc;  
       end;  
2537      end;      end;
2538    end;    end;
2539    
2540  end;  end;
2541    
 procedure TMainForm.SendTilPrinter(kontrolKoreliste, RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted : String; var PrintNyLabel : Boolean; BoghandlerNummer : string = '');  
 begin  
     with Printer do  
     begin  
       BeginDoc;  
       Canvas.Font.Size := FontSizeRuteLille;  
       if (kontrolKoreliste <> '') then  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, kontrolKoreliste);  
       end  
       else  
       begin  
         Canvas.TextOut(XPosRute,YPosRute, RuteNummer);  
       end;  
       Canvas.Font.Size := FontSizeKorelisteLille;  
       Canvas.TextOut(XPosKoreliste,YPosKoreliste, Koreliste);  
       if (Sted = 'DBK') or (Sted = '04') then  
       begin  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt1,YPosSorteringsfelt1, DBKbane);   // sorteringsoplysning 1  
         Canvas.Font.Size := FontSizeSorteringsfelt1;  
         Canvas.TextOut(XPosSorteringsfelt2,YPosSorteringsfelt2, Leveringssted);   // sorteringsoplysning 2  
       end;  
       Canvas.Font.Size := FontSizeKommentar;  
   
       Kommentar := StringReplace(Kommentar, #$A, ' - ', [rfReplaceAll, rfIgnoreCase]);  
       Kommentar := StringReplace(Kommentar, 'PAKKE ER SCANNET', '', [rfReplaceAll, rfIgnoreCase]);  
   
       Canvas.TextOut(XPosKommentar,YPosKommentar, Kommentar);  // Kan ikke lave linieskift (se tidligere kommentar om samme)  
       if SmsKode <> '' then  
       begin  
         Canvas.Font.Size := FontSizeSmskode;  
         Canvas.TextOut(XPosKommentar,YPosSmskode, concat('CODE: ', SmsKode));  
       end;  
       Canvas.Font.Size := FontSizeBoghandler;  
       Canvas.TextOut(XPosBoghandler,YPosBoghandler, BoghandlerNavn);  
       EndDoc;  
     end;  
 end;  
2542    
2543    
2544  procedure TMainForm.radioStorPakkeClick(Sender: TObject);  procedure TMainForm.radioStorPakkeClick(Sender: TObject);
2545  begin  begin
2546      Storepakker1.Checked := true;      menuStorePakker.Checked := true;
2547      radioStorPakke.Checked := true;      radioStorPakke.Checked := true;
2548  end;  end;
2549    
2550  procedure TMainForm.radioLillePakkeClick(Sender: TObject);  procedure TMainForm.radioLillePakkeClick(Sender: TObject);
2551  begin  begin
2552      Smpakker1.Checked := true;      menuSmaaPakker.Checked := true;
2553      radioLillePakke.Checked := true;      radioLillePakke.Checked := true;
2554  end;  end;
2555    
# Line 2596  begin Line 2592  begin
2592    end;    end;
2593  end;  end;
2594    
2595  procedure TMainForm.Pakkeshoplevering1Click(Sender: TObject);  procedure TMainForm.menuPakkeshop1Click(Sender: TObject);
2596  begin  begin
2597        Scanningtype := '5';        Scanningtype := '5';
2598        InitPakkeshoplevering();        InitPakkeshoplevering();
# Line 2605  end; Line 2601  end;
2601    
2602  procedure TMainForm.NulstilAutomatiskValg();  procedure TMainForm.NulstilAutomatiskValg();
2603  begin  begin
2604      Automatiskvalg1.Checked := false;      menuAutomatiskvalg1.Checked := false;
2605      PanelValgA.Color := clBtnFace;      PanelValgA.Color := clBtnFace;
2606      PanelValgA.Font.Color := clWindowText;      PanelValgA.Font.Color := clWindowText;
2607    
# Line 2617  begin Line 2613  begin
2613        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)        // her skal vi også disable knappen for 01, 02, 03 og 04 (NS, BK, FD og DBK)
2614        PanelValgA.Enabled := false;        PanelValgA.Enabled := false;
2615        PanelValgA.Font.Color := clInactiveCaption;        PanelValgA.Font.Color := clInactiveCaption;
2616        Automatiskvalg1.Enabled := false;        menuAutomatiskvalg1.Enabled := false;
2617      end;      end;
2618  // 20150317: slut  // 20150317: slut
2619  end;  end;
# Line 2632  begin Line 2628  begin
2628    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke    //UpdateScreen('', '', 'Tjekker forbindelsen...', '', '');    // virker ikke
2629    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');    ShowMessage('Tjekker data forbindelse til serveren.' + crlf + 'Det kan godt tage nogle minutter.' + crlf + 'Resultatet af testen vises i skærmbilledet...');
2630    
2631          // Tjekker urls    try
2632          logTekst := 'Tjekker urls.';      // Tjekker urls
2633          ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);      logTekst := 'Tjekker urls.';
2634          SkrivScanningLogFil(logTekst);      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2635        SkrivScanningLogFil(logTekst);
2636    
         // Tjekker UrlNormal  
         if PanelValg1.Enabled = true then  
         begin  
           if CheckUrl(UrlNormal) then  
           begin  
             logTekst := 'UrlNormal accepteret: ' + UrlNormal;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlNormal svarer ikke: ' + UrlNormal;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               TjekUrls := '-';   // markerer at der var fejl  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2637    
         // Tjekker UrlReturDAO  
         if PanelValg2.Enabled = true then  
         begin  
           if CheckUrl(UrlReturDAO) then  
           begin  
             logTekst := 'UrlReturDAO accepteret: ' + UrlReturDAO;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2638    
2639          // Tjekker UrlReturBoghandler      // Tjekker UrlNormal
2640          if PanelValg3.Enabled = true then      if PanelValg1.Enabled = true then
2641          begin      begin
2642            if CheckUrl(UrlReturBoghandler) then        TjekkerEnkeltUrl('UrlNormal', UrlNormal, urlFejl);
2643            begin      end;
             logTekst := 'UrlReturBoghandler accepteret: ' + UrlReturBoghandler;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturDAO svarer ikke: ' + UrlReturDAO;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2644    
2645          // Tjekker UrlBudlevering      // Tjekker UrlReturDAO
2646          if PanelValg4.Enabled = true then      if PanelValg2.Enabled = true then
2647          begin      begin
2648            if CheckUrl(UrlBudlevering) then        TjekkerEnkeltUrl('UrlReturDAO', UrlReturDAO, urlFejl);
2649            begin      end;
             logTekst := 'UrlBudlevering accepteret: ' + UrlBudlevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlBudlevering svarer ikke: ' + UrlBudlevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2650    
2651          // Tjekker UrlPakkeshoplevering      // Tjekker UrlReturBoghandler
2652          if PanelValg5.Enabled = true then      if PanelValg3.Enabled = true then
2653          begin      begin
2654            if CheckUrl(UrlPakkeshoplevering) then        TjekkerEnkeltUrl('UrlReturBoghandler', UrlReturBoghandler, urlFejl);
2655            begin      end;
             logTekst := 'UrlPakkeshoplevering accepteret: ' + UrlPakkeshoplevering;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshoplevering svarer ikke: ' + UrlPakkeshoplevering;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2656    
2657          // Tjekker UrlReturPakkeshop      // Tjekker UrlBudlevering
2658          if PanelValg6.Enabled = true then      if PanelValg4.Enabled = true then
2659          begin      begin
2660            if CheckUrl(UrlReturPakkeshop) then        TjekkerEnkeltUrl('UrlBudlevering', UrlBudlevering, urlFejl);
2661            begin      end;
             logTekst := 'UrlReturPakkeshop accepteret: ' + UrlReturPakkeshop;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlReturPakkeshop svarer ikke: ' + UrlReturPakkeshop;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2662    
2663          // Tjekker UrlManglendeScanninger      // Tjekker UrlPakkeshoplevering
2664          if (PanelValg1.Enabled = true)      if PanelValg5.Enabled = true then
2665          or (PanelValg4.Enabled = true) then      begin
2666          begin        TjekkerEnkeltUrl('UrlPakkeshoplevering', UrlPakkeshoplevering, urlFejl);
2667            if CheckUrl(UrlManglendeScanninger) then      end;
           begin  
             logTekst := 'UrlManglendeScanninger accepteret: ' + UrlManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlManglendeScanninger svarer ikke: ' + UrlManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2668    
2669          // Tjekker UrlPakkeshopManglendeScanninger      // Tjekker UrlReturPakkeshop
2670          if PanelValg5.Enabled = true then      if PanelValg6.Enabled = true then
2671          begin      begin
2672            if CheckUrl(UrlPakkeshopManglendeScanninger) then        TjekkerEnkeltUrl('UrlReturPakkeshop', UrlReturPakkeshop, urlFejl);
2673            begin      end;
             logTekst := 'UrlPakkeshopManglendeScanninger accepteret: ' + UrlPakkeshopManglendeScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeScanninger svarer ikke: ' + UrlPakkeshopManglendeScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2674    
2675          // Tjekker UrlPakkeshopManglendeReturScanninger      // Tjekker UrlManglendeScanninger
2676          if PanelValg6.Enabled = true then      if (PanelValg1.Enabled = true) or (PanelValg4.Enabled = true) then
2677          begin      begin
2678            if CheckUrl(UrlPakkeshopManglendeReturScanninger) then        TjekkerEnkeltUrl('UrlManglendeScanninger', UrlManglendeScanninger, urlFejl);
2679            begin      end;
             logTekst := 'UrlPakkeshopManglendeReturScanninger accepteret: ' + UrlPakkeshopManglendeReturScanninger;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlPakkeshopManglendeReturScanninger svarer ikke: ' + UrlPakkeshopManglendeReturScanninger;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2680    
2681          // Tjekker UrlEKLoverforsel      // Tjekker UrlPakkeshopManglendeScanninger
2682          if PanelValg1.Enabled = true then      if PanelValg5.Enabled = true then
2683          begin      begin
2684            if CheckUrl(UrlEKLoverforsel) then        TjekkerEnkeltUrl('UrlPakkeshopManglendeScanninger', UrlPakkeshopManglendeScanninger, urlFejl);
2685            begin      end;
             logTekst := 'UrlEKLoverforsel accepteret: ' + UrlEKLoverforsel;  
             SkrivScanningLogFil(logTekst);  
           end  
           else  
           begin  
             inc(urlFejl);   // Optæller antal fejl  
             logTekst := 'UrlEKLoverforsel svarer ikke: ' + UrlEKLoverforsel;  
             ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);  
             if TjekUrls = '1' then  
             begin  
               logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';  
             end;  
             SkrivScanningLogFil(logTekst);  
             if TjekUrls = '1' then  
             begin  
               ShowMessage(logTekst);  
               UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
               Application.Terminate;  
               exit;  
             end;  
           end;  
         end;  
2686    
2687        // Tjekker UrlPakkeshopManglendeReturScanninger
2688        if PanelValg6.Enabled = true then
2689        begin
2690          TjekkerEnkeltUrl('UrlPakkeshopManglendeReturScanninger', UrlPakkeshopManglendeReturScanninger, urlFejl);
2691        end;
2692    
2693          // Tjekker UrlEKLoverforselPakkeshop     // Tjekker UrlIndleveringsPakke og UrlIndleveringsPakkeManglendeScanninger
2694          if PanelValg5.Enabled = true then      if PanelValg7.Enabled = true then
2695          begin      begin
2696            if CheckUrl(UrlEKLoverforselPakkeshop) then        TjekkerEnkeltUrl('UrlIndleveringsPakke', UrlIndleveringsPakke, urlFejl);
2697            begin        TjekkerEnkeltUrl('UrlIndleveringsPakkeManglendeScanninger', UrlIndleveringsPakkeManglendeScanninger, urlFejl);
2698              logTekst := 'UrlEKLoverforselPakkeshop accepteret: ' + UrlEKLoverforselPakkeshop;      end;
             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;  
2699    
2700        // Tjekker UrlEKLoverforsel
2701        if PanelValg1.Enabled = true then
2702        begin
2703          TjekkerEnkeltUrl('UrlEKLoverforsel', UrlEKLoverforsel, urlFejl);
2704        end;
2705    
         // Tjekker UrlFindPakketype  
         if CheckUrl(UrlFindPakketype) then  
         begin  
           logTekst := 'UrlFindPakketype accepteret: ' + UrlFindPakketype;  
           SkrivScanningLogFil(logTekst);  
         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;  
2706    
2707          // Tjekker UrlSendPrograminfo      // Tjekker UrlEKLoverforselPakkeshop
2708          if CheckUrl(UrlSendPrograminfo) then      if PanelValg5.Enabled = true then
2709          begin      begin
2710            logTekst := 'UrlSendPrograminfo accepteret: ' + UrlSendPrograminfo;        TjekkerEnkeltUrl('UrlEKLoverforselPakkeshop', UrlEKLoverforselPakkeshop, urlFejl);
2711            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;  
2712    
         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;  
2713    
2714        // Tjekker UrlFindPakketype
2715        TjekkerEnkeltUrl('UrlFindPakketype', UrlFindPakketype, urlFejl);
2716    
2717        // Tjekker UrlSendPrograminfo
2718        TjekkerEnkeltUrl('UrlSendPrograminfo', UrlSendPrograminfo, urlFejl);
2719    
2720    
2721    
2722        logTekst := 'urls er ok';
2723        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2724        SkrivScanningLogFil(logTekst);
2725    
2726      Except
2727        TjekUrls := '-';   // markerer at der var fejl
2728    
2729      end;
2730  end;  end;
2731    
2732  function TMainForm.FileTime2DateTime(FileTime: TFileTime): TDateTime;  procedure TMainForm.TjekkerEnkeltUrl(UrlNavn: String; Url: String; var urlFejl: integer);
2733  var  const
2734     LocalFileTime: TFileTime;    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
    SystemTime: TSystemTime;  
2735  begin  begin
2736     FileTimeToLocalFileTime(FileTime, LocalFileTime) ;    if TUtils.CheckUrl(Url) then
2737     FileTimeToSystemTime(LocalFileTime, SystemTime) ;  
2738     Result := SystemTimeToDateTime(SystemTime) ;    begin
2739        logTekst := UrlNavn + ' accepteret: ' + Url;
2740        SkrivScanningLogFil(logTekst);
2741      end
2742      else
2743      begin
2744        inc(urlFejl);   // Optæller antal fejl
2745        logTekst := UrlNavn + ' svarer ikke: ' + Url;
2746        ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + logTekst);
2747        if TjekUrls = '1' then
2748        begin
2749          logTekst := logTekst + crlf + crlf + 'Programmet afsluttes... ';
2750        end;
2751    
2752        SkrivScanningLogFil(logTekst);
2753    
2754        if TjekUrls = '1' then
2755        begin
2756          ShowMessage(logTekst);
2757          UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut
2758          Application.Terminate;
2759    
2760          raise Exception.Create('UrlFejl');
2761    
2762        end;
2763      end;
2764    
2765  end;  end;
2766    
2767    
2768    
2769  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);  procedure TMainForm.SletLogfiler(Path: string; FileList: TStrings);
2770  var  var
2771    SR: TSearchRec;    SR: TSearchRec;
# Line 3038  begin Line 2782  begin
2782      repeat      repeat
2783        if (SR.Attr <> faDirectory) then        if (SR.Attr <> faDirectory) then
2784        begin        begin
2785    
2786          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring          dt := fileDateToDateTime(SR.Time);  // finder filens timestamp for seneste ændring
2787          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse          CreationTime := SR.FindData.ftCreationTime;  // finder filens timestamp for oprettelse
2788          dtCreation := FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse          dtCreation := TUtils.FileTime2DateTime(CreationTime);   // finder filens timestamp for oprettelse
2789          // Selvom creation date godt kan være forskellig fra modified date,          // Selvom creation date godt kan være forskellig fra modified date,
2790          // skal vi alligevel altid tjekke filens alder ud fra modified date          // skal vi alligevel altid tjekke filens alder ud fra modified date
2791          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)          // (ændring den kan ligge både før og efter oprettelse, hvis filerne er flyttet eller ændret manuelt)
# Line 3077  begin Line 2822  begin
2822    end;    end;
2823  end;  end;
2824    
2825  procedure TMainForm.PakkeshopNulstilClick(Sender: TObject);  procedure TMainForm.btnNulstilClick(Sender: TObject);
2826  begin  begin
2827    PakkeshopStregkode := '';    PakkeshopStregkode := '';
2828    PakkeshopTjekkode := '';    PakkeshopTjekkode := '';
2829    PakkeshopNulstil.Visible := false;    btnNulstil.Visible := false;
2830    PakkeshopText1.Caption := 'Stregkode';    PakkeshopText1.Caption := 'Stregkode';
2831    BoghandlerStregkode := '';    BoghandlerStregkode := '';
2832    BoghandlerTjekkode := '';    BoghandlerTjekkode := '';
# Line 3099  begin Line 2844  begin
2844  //  MainForm.Color := HexToTColor(Farve);  //  MainForm.Color := HexToTColor(Farve);
2845    if Farve <> '' then    if Farve <> '' then
2846    begin    begin
2847       MainForm.Color := HexToTColor(Farve);       MainForm.Color := TUtils.HexToTColor(Farve);
 // 20150312: start  
 (*  
   end  
   else  
   begin  
      ShowMessage('Programmet afbrydes...');  
      UrlSendPrograminfo := '';   // Her sletter vi lige url, så der ikke forsøges at sende besked ved program slut  
      Application.Terminate;  
 *)  
 // 20150312: slut  
2848    end;    end;
2849    if (Budlevering1.Checked) then    if (menuDaoDirekte1.Checked) then
2850    begin    begin
2851       InitLillePakke();       InitLillePakke();
2852    end;    end;
# Line 3173  end; Line 2908  end;
2908    
2909  procedure TMainForm.PanelValgAClick(Sender: TObject);  procedure TMainForm.PanelValgAClick(Sender: TObject);
2910  begin  begin
 // 20150311: start  
 (*  
   if PanelValgA.Color = clBtnFace then  
   begin  
      AutomatiskValg1.Checked := true;  
      PanelValgA.Color := clGreen;  
      PanelValgA.Font.Color := clWhite;  
   end  
   else  
   begin  
      AutomatiskValg1.Checked := false;  
      PanelValgA.Color := clBtnFace;  
      PanelValgA.Font.Color := clWindowText;  
   end;  
 *)  
2911  // Skal ikke toggle men bare sætte funktionen on  // Skal ikke toggle men bare sætte funktionen on
2912  // Fravælges ved at vælge en scanningstype  // Fravælges ved at vælge en scanningstype
2913       AutomatiskValg1.Checked := true;    menuAutomatiskvalg1.Checked := true;
2914       PanelValgA.Color := clGreen;    PanelValgA.Color := clGreen;
2915       PanelValgA.Font.Color := clWhite;    PanelValgA.Font.Color := clWhite;
2916  // 20150311: slut  
2917    
2918    
2919  end;  end;
2920    
2921  procedure TMainForm.Pakkernormal1Click(Sender: TObject);  procedure TMainForm.menuNatXpress1Click(Sender: TObject);
2922  begin  begin
2923        Scanningtype := '1';        Scanningtype := '1';
2924        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3231  begin Line 2953  begin
2953      // Her kommer en alarm og rød skærm      // Her kommer en alarm og rød skærm
2954      PlaySound(PWideChar(AlarmLyd));      PlaySound(PWideChar(AlarmLyd));
2955      MainForm.Color := clRed;      MainForm.Color := clRed;
2956      PakkeshopNulstil.Visible := true;      btnNulstil.Visible := true;
2957    end    end
2958    else    else
2959    begin    begin
# Line 3266  begin Line 2988  begin
2988    Falsk := False;    Falsk := False;
2989    
2990    
2991    if (Printer.Printers.Count = 0) then    if (LabelPrint.GetPrinterCount() = 0) then
2992    begin    begin
2993      ShowMessage('Der er ikke installeret en printer på denne PC.');      ShowMessage('Der er ikke installeret en printer på denne PC.');
2994    end    end
# Line 3281  begin Line 3003  begin
3003      DBKbane := '999';      DBKbane := '999';
3004      Leveringssted := 'XXX';      Leveringssted := 'XXX';
3005      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);      PrintLabel(RuteNummer, Kommentar, BoghandlerNavn, Koreliste, SmsKode, DBKbane, Leveringssted, Falsk);
3006      CheckPrintQue('Test');      LabelPrint.CheckPrintQue('Test', PrinterNavn);
3007    end;    end;
3008    FocusControl(StregkodeST);    FocusControl(StregkodeST);
3009  end;  end;
# Line 3290  procedure TMainForm.Timer1Timer(Sender: Line 3012  procedure TMainForm.Timer1Timer(Sender:
3012  begin  begin
3013    if (TjekPrinter = '1') then    if (TjekPrinter = '1') then
3014    begin    begin
3015      CheckPrintQue('Timer');      LabelPrint.CheckPrintQue('Timer', PrinterNavn);
3016    end    end
3017    else    else
3018    begin    begin
# Line 3299  begin Line 3021  begin
3021    end;    end;
3022  end;  end;
3023    
3024  {  
  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;  
3025    
3026  procedure TMainForm.Om1Click(Sender: TObject);  procedure TMainForm.Om1Click(Sender: TObject);
3027  const  const
# Line 3337  var Line 3030  var
3030   tekst, filversion : String;   tekst, filversion : String;
3031  begin  begin
3032    
3033    filversion := Sto_GetFmtFileVersion('','');    filversion := TUtils.Sto_GetFmtFileVersion('');
3034    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';
3035    
3036    tekst := tekst+crlf+crlf;    tekst := tekst+crlf+crlf;
# Line 3359  begin Line 3052  begin
3052          end          end
3053          else          else
3054          begin          begin
3055            tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+Sted+')';            tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+Sted+')';
3056          end;          end;
3057      end      end
3058      else      else
3059      begin      begin
3060        tekst := tekst+crlf+crlf+'Speciel version til: '+split(Titel, ':', 2)+' ('+SpecialVersionSted+')';        tekst := tekst+crlf+crlf+'Speciel version til: ' + TUtils.split(Titel, ':', 2) + ' ('+SpecialVersionSted+')';
3061      end;      end;
3062    end;    end;
3063    
# Line 3380  begin Line 3073  begin
3073    
3074  end;  end;
3075    
3076    
3077  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;  procedure TMainForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
3078    Rect: TRect; State: TOwnerDrawState);    Rect: TRect; State: TOwnerDrawState);
3079  var  var
# Line 3432  begin Line 3126  begin
3126    
3127    if FileExists(fileName) then    if FileExists(fileName) then
3128    begin    begin
3129      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3130      begin      begin
3131        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3132        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
# Line 3456  begin Line 3150  begin
3150    
3151    if FileExists(fileName) then    if FileExists(fileName) then
3152    begin    begin
3153      if AdobeReaderExists then      if TUtils.AdobeReaderExists then
3154      begin      begin
3155        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);        //ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
3156        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);        ShellExecute(Handle,'open',PChar(fileName), nil, nil, SW_SHOWNORMAL);
3157      end      end
3158      else      else
3159      begin      begin
3160        ShowMessage('Acrobat Reader er ikke installeret!');        ShowMessage('Adobe Reader er ikke installeret!');
3161      end;      end;
3162    end    end
3163    else    else
# Line 3472  begin Line 3166  begin
3166    end;    end;
3167  end;  end;
3168    
3169    procedure TMainForm.menuIndleveringClick(Sender: TObject);
3170    begin
3171      Scanningtype := '7';
3172      NulstilAutomatiskValg();
3173      InitIndleveringskode();
3174    end;
3175    
3176  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);  procedure TMainForm.Sprgefterboghandlernummer1Click(Sender: TObject);
3177  begin  begin
3178    
# Line 3487  begin Line 3188  begin
3188    
3189  end;  end;
3190    
3191  procedure TMainForm.ReturpakkerfraDAO1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturDAO1Click(Sender: TObject);
3192  begin  begin
3193        Scanningtype := '2';        Scanningtype := '2';
3194        NulstilAutomatiskValg();        NulstilAutomatiskValg();
3195        InitReturFraDao();        InitReturFraDao();
3196  end;  end;
3197    
3198  procedure TMainForm.Returpakkerfrapakkeshop1Click(Sender: TObject);  procedure TMainForm.menuPakkeshopRetur1Click(Sender: TObject);
3199  begin  begin
3200        Scanningtype := '6';        Scanningtype := '6';
3201        InitReturFraPakkeshop();        InitReturFraPakkeshop();
# Line 3503  end; Line 3204  end;
3204    
3205  procedure TMainForm.InitNatxpresslevering();  procedure TMainForm.InitNatxpresslevering();
3206  begin  begin
3207        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3208        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3209        Pakkernormal1.Checked := true;        menuNatXpress1.Checked := true;
3210        InitForm(FarveNormal,TitelNormal,UrlNormal);        InitForm(FarveNormal,TitelNormal,UrlNormal);
3211        PanelValg1.Color := clGreen;        PanelValg1.Color := clGreen;
3212        PanelValg1.Font.Color := clWhite;        PanelValg1.Font.Color := clWhite;
# Line 3517  begin Line 3218  begin
3218        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3219        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3220        Sprgefterboghandlernummer1.Enabled := true;        Sprgefterboghandlernummer1.Enabled := true;
3221        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3222        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3223        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3224        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3225        ListBox1.Visible := true;        ListBox1.Visible := true;
3226        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3227        EKLoverforsel.Enabled := true;        BtnEKLoverforsel.Enabled := true;
3228        InitLillePakke();        InitLillePakke();
3229        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3230    
3231          chkForstorTilDirekte.Checked := false;
3232          chkForstorTilDirekte.Enabled := false;
3233    
3234        if BladhusSted = 0 then        if BladhusSted = 0 then
3235        begin        begin
3236          IndlesScanningLogFil();          IndlesScanningLogFil();
# Line 3535  end; Line 3240  end;
3240    
3241  procedure TMainForm.InitReturFraDao();  procedure TMainForm.InitReturFraDao();
3242  begin  begin
3243        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3244        ReturpakkerfraDAO1.Checked := true;        menuNatxpressReturDAO1.Checked := true;
3245        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3246        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);        InitForm(FarveReturDAO,TitelReturDAO,UrlReturDAO);
3247        PanelValg2.Color := clGreen;        PanelValg2.Color := clGreen;
3248        PanelValg2.Font.Color := clWhite;        PanelValg2.Font.Color := clWhite;
# Line 3549  begin Line 3254  begin
3254        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3255        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3256        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3257        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3258        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3259        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3260        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3261        ListBox1.Visible := true;        ListBox1.Visible := true;
3262        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3263        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3264        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3265    
3266          chkForstorTilDirekte.Checked := false;
3267          chkForstorTilDirekte.Enabled := false;
3268    
3269        InitLillePakke();        InitLillePakke();
3270  end;  end;
3271    
3272  procedure TMainForm.InitReturFraKunde();  procedure TMainForm.InitReturFraKunde();
3273  begin  begin
3274        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3275        Returpakkerfraboghandler1.Checked := true;        menuNatxpressReturfraKunde1.Checked := true;
3276        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3277        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);        InitForm(FarveReturBoghandler,TitelReturBoghandler,UrlReturBoghandler);
3278        PanelValg3.Color := clGreen;        PanelValg3.Color := clGreen;
3279        PanelValg3.Font.Color := clWhite;        PanelValg3.Font.Color := clWhite;
# Line 3575  begin Line 3284  begin
3284        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3285        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3286        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3287        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3288        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3289        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3290        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3291        ListBox1.Visible := true;        ListBox1.Visible := true;
3292        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3293        ListBox2.Items.Clear;        ListBox2.Items.Clear;
3294        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3295    
3296          chkForstorTilDirekte.Checked := false;
3297          chkForstorTilDirekte.Enabled := false;
3298    
3299        InitLillePakke();        InitLillePakke();
3300  end;  end;
3301    
3302  procedure TMainForm.InitDirektelevering();  procedure TMainForm.InitDirektelevering();
3303  begin  begin
3304        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3305        Budlevering1.Checked := true;        menuDaoDirekte1.Checked := true;
3306        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3307        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);        InitForm(FarveBudlevering,TitelBudlevering,UrlBudlevering);
3308        PanelValg4.Color := clGreen;        PanelValg4.Color := clGreen;
3309        PanelValg4.Font.Color := clWhite;        PanelValg4.Font.Color := clWhite;
# Line 3602  begin Line 3315  begin
3315        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3316        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3317        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3318        Smpakker1.Enabled := true;        menuSmaaPakker.Enabled := true;
3319        Storepakker1.Enabled := true;        menuStorePakker.Enabled := true;
3320        radioStorPakke.Enabled := true;        radioStorPakke.Enabled := true;
3321        radioLillePakke.Enabled := true;        radioLillePakke.Enabled := true;
3322        ListBox1.Visible := true;        ListBox1.Visible := true;
3323        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3324        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3325        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3326        DownloadButton03.Visible := false;        BtnDownloadRuteskiftFil.Visible := false;
3327        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3328        IdFTP1.Passive := true;        IdFTP1.Passive := true;
3329        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3330    
3331          chkForstorTilDirekte.Checked := false;
3332          chkForstorTilDirekte.Enabled := true;
3333    
3334        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then        if (BladhusSted = 0) or (BladhusSted = 2) or (BladhusSted = 3) then
3335        begin        begin
3336            IndlesScanningLogFil();            IndlesScanningLogFil();
# Line 3624  end; Line 3341  end;
3341    
3342  procedure TMainForm.InitPakkeshoplevering();  procedure TMainForm.InitPakkeshoplevering();
3343  begin  begin
3344        AutomatiskTjekkodeStyring1.Enabled := true;        menuAutomatiskTjekkodeStyring.Enabled := true;
3345        Pakkeshoplevering1.Checked := true;        menuPakkeshop1.Checked := true;
3346        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3347        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);        InitForm(FarvePakkeshoplevering,TitelPakkeshoplevering,UrlPakkeshoplevering);
3348        PanelValg5.Color := clGreen;        PanelValg5.Color := clGreen;
3349        PanelValg5.Font.Color := clWhite;        PanelValg5.Font.Color := clWhite;
# Line 3638  begin Line 3355  begin
3355        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3356        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3357        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3358        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3359        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3360        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3361        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3362        ListBox1.Visible := true;        ListBox1.Visible := true;
3363        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3364        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3365        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3366    
3367          BtnEKLoverforsel.Enabled := true;
3368    
3369        EKLoverforsel.Enabled := true;        chkForstorTilDirekte.Checked := false;
3370          chkForstorTilDirekte.Enabled := true;
3371    
3372        InitLillePakke();        InitLillePakke();
3373        IndlesScanningLogFil();        IndlesScanningLogFil();
# Line 3661  end; Line 3381  end;
3381    
3382  procedure TMainForm.InitReturFraPakkeshop();  procedure TMainForm.InitReturFraPakkeshop();
3383  begin  begin
3384        AutomatiskTjekkodeStyring1.Enabled := false;        menuAutomatiskTjekkodeStyring.Enabled := false;
3385        Returpakkerfrapakkeshop1.Checked := true;        menuPakkeshopRetur1.Checked := true;
3386        PakkeshopNulstil.Visible := false;        btnNulstil.Visible := false;
3387        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);        InitForm(FarveReturPakkeshop,TitelReturPakkeshop,UrlReturPakkeshop);
3388        PanelValg6.Color := clGreen;        PanelValg6.Color := clGreen;
3389        PanelValg6.Font.Color := clWhite;        PanelValg6.Font.Color := clWhite;
# Line 3675  begin Line 3395  begin
3395        Sprgefterboghandlernummer1.Checked := false;        Sprgefterboghandlernummer1.Checked := false;
3396        chkSporgEfterKunde.Checked := false;        chkSporgEfterKunde.Checked := false;
3397        Sprgefterboghandlernummer1.Enabled := false;        Sprgefterboghandlernummer1.Enabled := false;
3398        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3399        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3400        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3401        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3402        ListBox1.Visible := true;        ListBox1.Visible := true;
3403        ListBox1.Items.Clear;        ListBox1.Items.Clear;
3404        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3405        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3406        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3407    
3408          chkForstorTilDirekte.Checked := false;
3409          chkForstorTilDirekte.Enabled := false;
3410    
3411    
3412        InitLillePakke();        InitLillePakke();
3413        IndlesScanningLogFil();        IndlesScanningLogFil();
3414        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3694  begin Line 3419  begin
3419        IdFTP1.PassiveUseControlHost := true;        IdFTP1.PassiveUseControlHost := true;
3420  end;  end;
3421    
3422  procedure TMainForm.Returpakkerfraboghandler1Click(Sender: TObject);  procedure TMainForm.menuNatxpressReturfraKunde1Click(Sender: TObject);
3423  begin  begin
3424        Scanningtype := '3';        Scanningtype := '3';
3425        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3703  end; Line 3428  end;
3428    
3429  procedure TMainForm.InitIndleveringskode();  procedure TMainForm.InitIndleveringskode();
3430  begin  begin
3431        AutomatiskTjekkodeStyring1.Enabled := false;        menuIndlevering.Checked := true;
3432        Returpakkerfrapakkeshop1.Checked := true;        menuAutomatiskTjekkodeStyring.Enabled := false;
3433        PakkeshopNulstil.Visible := false;  
3434          btnNulstil.Visible := false;
3435        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);        InitForm(FarveIndlevering, TitelIndlevering, UrlReturPakkeshop);
3436        PanelValg7.Color := clGreen;        PanelValg7.Color := clGreen;
3437        PanelValg7.Font.Color := clWhite;        PanelValg7.Font.Color := clWhite;
# Line 3720  begin Line 3446  begin
3446    
3447    
3448    
3449        Smpakker1.Enabled := false;        menuSmaaPakker.Enabled := false;
3450        Storepakker1.Enabled := false;        menuStorePakker.Enabled := false;
3451        radioStorPakke.Enabled := false;        radioStorPakke.Enabled := false;
3452        radioLillePakke.Enabled := false;        radioLillePakke.Enabled := false;
3453        ListBox1.Visible := true;        ListBox1.Visible := true;
3454        ListBox1.Items.Clear();        ListBox1.Items.Clear();
3455    
3456        DownloadButton01.Enabled := false;        BtnDownloadKontrolfil.Enabled := false;
3457        OpdaterListenButton01.Enabled := true;        BtnOpdaterListen.Enabled := true;
3458        EKLoverforsel.Enabled := false;        BtnEKLoverforsel.Enabled := false;
3459    
3460          chkForstorTilDirekte.Checked := false;
3461          chkForstorTilDirekte.Enabled := false;
3462    
3463    
3464        InitLillePakke();        InitLillePakke();
3465        IndlesScanningLogFil();        IndlesScanningLogFil();
3466        if BladhusSted = 0 then        if BladhusSted = 0 then
# Line 3741  begin Line 3472  begin
3472  end;  end;
3473    
3474    
3475  procedure TMainForm.Storepakker1Click(Sender: TObject);  procedure TMainForm.menuStorePakkerClick(Sender: TObject);
3476  begin  begin
3477    InitStorPakke();    InitStorPakke();
3478  end;  end;
3479    
3480  procedure TMainForm.Smpakker1Click(Sender: TObject);  procedure TMainForm.menuSmaaPakkerClick(Sender: TObject);
3481  begin  begin
3482    InitLillePakke();    InitLillePakke();
3483  end;  end;
# Line 3754  end; Line 3485  end;
3485  procedure TMainForm.InitLillePakke();  procedure TMainForm.InitLillePakke();
3486  begin  begin
3487    radioLillePakke.Checked := true;    radioLillePakke.Checked := true;
3488    Smpakker1.Checked := true;    menuSmaaPakker.Checked := true;
3489  //  Stregkode := '';  //  Stregkode := '';
3490  end;  end;
3491    
3492  procedure TMainForm.InitStorPakke();  procedure TMainForm.InitStorPakke();
3493  begin  begin
3494    radioStorPakke.Checked := true;    radioStorPakke.Checked := true;
3495    Storepakker1.Checked := true;    menuStorePakker.Checked := true;
3496  // 20150310: start  // 20150310: start
3497  //  Stregkode := '';  //  Stregkode := '';
3498  // 20150310: slut  // 20150310: slut
3499  end;  end;
3500    
 /// <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]]);  
3501    
     // 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;  
3502    
3503  procedure TMainForm.PlaySound(filename : PWideChar);  procedure TMainForm.PlaySound(filename : PWideChar);
3504  begin  begin
# Line 3870  begin Line 3536  begin
3536       exit;       exit;
3537    end;    end;
3538    
3539    if Smpakker1.Checked then    if menuSmaaPakker.Checked then
3540       if ScannetOkLyd  <> '' then       if ScannetOkLyd  <> '' then
3541       begin       begin
3542         PlaySound(PWideChar(ScannetOkLyd));         PlaySound(PWideChar(ScannetOkLyd));
# Line 3879  begin Line 3545  begin
3545       begin       begin
3546         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);         MessageBox(Handle, PWideChar('Lyd fil ikke fundet (ScannetOkLyd)'), 'Information', MB_OK);
3547       end;       end;
3548    if Storepakker1.Checked then    if menuStorePakker.Checked then
3549       if ScannetOkStorLyd  <> '' then       if ScannetOkStorLyd  <> '' then
3550       begin       begin
3551         PlaySound(PWideChar(ScannetOkStorLyd));         PlaySound(PWideChar(ScannetOkStorLyd));
# Line 3891  begin Line 3557  begin
3557  end;  end;
3558    
3559    
3560  procedure TMainForm.Budlevering1Click(Sender: TObject);  procedure TMainForm.menuDaoDirekte1Click(Sender: TObject);
3561  begin  begin
3562        Scanningtype := '4';        Scanningtype := '4';
3563        NulstilAutomatiskValg();        NulstilAutomatiskValg();
# Line 3903  begin; Line 3569  begin;
3569    CheckCode();    CheckCode();
3570  end;  end;
3571    
3572  procedure TMainForm.EKLoverforselClick(Sender: TObject);  procedure TMainForm.BtnEKLoverforselClick(Sender: TObject);
3573  var  var
3574    WebSvar : String;    WebSvar : String;
3575    URLStr : String;    URLStr : String;
# Line 3913  var Line 3579  var
3579    status, kommentar : String;    status, kommentar : String;
3580    
3581  begin  begin
3582      EKLoverforsel.Enabled := false;      BtnEKLoverforsel.Enabled := false;
3583    
3584      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');
3585      logTekst := 'Overfører de scannede pakker til EKL';      logTekst := 'Overfører de scannede pakker til EKL';
3586      SkrivScanningLogFil(logTekst);      SkrivScanningLogFil(logTekst);
3587      StedKode := Sted;      StedKode := Sted;
3588      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);      URLStr := Format(UrlEKLoverforsel,[StedKode,Sted]);
3589  // 20150330: start  
3590      if PanelValg5.Color = clGreen then      if PanelValg5.Color = clGreen then
3591      begin      begin
3592        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);        URLStr := Format(UrlEKLoverforselPakkeshop,[StedKode,Sted]);
3593      end;      end;
3594  // 20150330: slut  
3595    
3596      try      try
3597      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST      //raise EIdConnClosedGracefully.Create('test');   // KUN TIL TEST
# Line 3976  begin Line 3642  begin
3642        end;        end;
3643      end;      end;
3644    
3645      EKLoverforsel.Enabled := true;      BtnEKLoverforsel.Enabled := true;
3646    
3647      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
3648    
# Line 3993  begin Line 3659  begin
3659           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';           BoghandlerNavnST.Caption := 'Prøv venligst igen om lidt...';
3660         end;         end;
3661         KommentarST.Caption := Kommentar;         KommentarST.Caption := Kommentar;
3662         PakkeshopNulstil.Visible := true;         btnNulstil.Visible := true;
3663      end;      end;
3664    
3665  end;  end;
# Line 4017  begin Line 3683  begin
3683    else    else
3684      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);      MessageBox(Handle, 'fejl', 'Stregkode', MB_OK);
3685  }  }
3686    Svar := 'Beregnet: '+CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;    Svar := 'Beregnet: ' + TUtils.CheckSumModulo10(LeftStr(Barcode,Length(Barcode)-1))+', Indtastet: '+Barcode;
3687    
3688    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);    MessageBox(Handle, PWideChar(Svar), 'Stregkode', MB_OK);
3689    CheckCode();    CheckCode();
# Line 4025  end; Line 3691  end;
3691    
3692  end;  end;
3693    
 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;  
3694    
3695  //  //
3696  // Bladhus ***  // Bladhus ***
# Line 4541  begin Line 4168  begin
4168    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
4169  end;  end;
4170    
4171  procedure TMainForm.DownloadButton01Click(Sender: TObject);  procedure TMainForm.BtnDownloadKontrolfilClick(Sender: TObject);
4172  begin  begin
4173      DownloadBladhusKontrolfil();      DownloadBladhusKontrolfil();
4174      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
4175  end;  end;
4176    
4177  procedure TMainForm.OpdaterListenButton01Click(Sender: TObject);  procedure TMainForm.BtnOpdaterListenClick(Sender: TObject);
4178  const  const
4179    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed    crlf = Chr(13) + Chr(10) ;  // Carriage return & Linefeed
4180    
# Line 4556  begin Line 4183  begin
4183      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
4184  end;  end;
4185    
4186  procedure TMainForm.DownloadButton03Click(Sender: TObject);  procedure TMainForm.BtnDownloadRuteskiftFilClick(Sender: TObject);
4187  begin  begin
4188      if (getProddag() = 'lørdag') then      if (getProddag() = 'lørdag') then
4189      begin      begin
# Line 4565  begin Line 4192  begin
4192      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
4193  end;  end;
4194    
4195  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;  
4196    
4197  procedure TMainForm.IndlesManglendeScanninger();  procedure TMainForm.IndlesManglendeScanninger();
4198  var  var
# Line 4589  var Line 4204  var
4204    stregkode, modtagernavn, modtageradresse, kommentar : string;    stregkode, modtagernavn, modtageradresse, kommentar : string;
4205    pakketype, tjekkodestatus : String;    pakketype, tjekkodestatus : String;
4206    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;    pakketypeix, antalLiniefelter, antalFelterFundet, linienr : Integer;
4207    pakketyper : TStrings;    //pakketyper : TStrings;
4208      pakketyper : TDictionary<String, Integer>;
4209      tmpAntal : Integer;
4210    
4211    
4212    
4213    antlin : Integer;    antlin : Integer;
4214    
4215    antlinIdag, antlinSenere : Integer;    antlinIdag, antlinSenere : Integer;
4216    
4217    XmlFelter : TStrings;    //XmlFelter : TStrings;
4218      XmlFelter : TDictionary<String, Integer>;
4219    
4220   begin   begin
4221      XmlFelter := TStringList.Create;  
4222      pakketyper := TStringList.Create;  
4223        XmlFelter := TDictionary<String, Integer>.Create;
4224        pakketyper := TDictionary<String, Integer>.Create;
4225    
4226      linienr := 0;      linienr := 0;
4227      ListBox2.Clear;      ListBox2.Clear;
4228      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');      ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + 'Henter oversigt over pakker der endnu ikke er modtaget');
# Line 4613  var Line 4237  var
4237          StedKode := Sted;          StedKode := Sted;
4238        end;        end;
4239    
4240          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4241    
4242    
4243      if (Scanningtype = '6') then  
4244        if (Scanningtype = '7') then
4245         begin
4246          URLStr := Format(UrlIndleveringsPakkeManglendeScanninger, [StedKode]);
4247         end
4248        else if (Scanningtype = '6') then
4249       begin       begin
4250        URLStr := Format(UrlPakkeshopManglendeReturScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeReturScanninger, [StedKode]);
4251       end       end
4252      else if (Scanningtype = '5') then      else if (Scanningtype = '5') then
4253       begin       begin
4254        URLStr := Format(UrlPakkeshopManglendeScanninger,[StedKode]);        URLStr := Format(UrlPakkeshopManglendeScanninger, [StedKode]);
4255       end       end
4256      else if (Scanningtype = '1') then      else if (Scanningtype = '1') then
4257       begin       begin
# Line 4645  var Line 4276  var
4276        begin        begin
4277          // Her skal vi ikke gøre noget - men vi skal forespørge igen          // Her skal vi ikke gøre noget - men vi skal forespørge igen
4278          WebSvar := IdHTTP1.Get(URLStr);          WebSvar := IdHTTP1.Get(URLStr);
4279    
4280    
4281    
4282        end;        end;
4283        on e:exception do        on e:exception do
4284        begin        begin
# Line 4667  var Line 4301  var
4301            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
4302              if Node.NodeName = 'Stregkode' then              if Node.NodeName = 'Stregkode' then
4303              begin              begin
4304                 antlin := antlin + 1;                 Inc(antlin);
4305                 // 20150306: start                 // 20150306: start
4306                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4307                begin                begin
4308                   if (pos('(', Node.NodeValue) = 0) then                   if (pos('(', Node.NodeValue) = 0) then
4309                   begin                   begin
4310                     antlinIdag := antlinIdag + 1;                     Inc(antlinIdag);
4311                   end                   end
4312                   else                   else
4313                   begin                   begin
4314                     antlinSenere := antlinSenere + 1;                     Inc(antlinSenere);
4315                   end;                   end;
4316                end;                end;
4317                 // 20150306: slut                 // 20150306: slut
4318              end;              end;
4319            end;            end;
4320            if (XmlFelter.values[Node.NodeName] <> '') then            if ( XmlFelter.ContainsKey(Node.NodeName) ) then
4321                  XmlFelter.values[Node.NodeName] := IntToStr(StrToInt(XmlFelter.values[Node.NodeName]) + 1)                begin
4322                    XmlFelter.TryGetValue(Node.NodeName, tmpAntal);
4323                    XmlFelter.AddOrSetValue(Node.NodeName, tmpAntal + 1);
4324                  end
4325                else                else
4326                  XmlFelter.values[Node.NodeName] := '1';                begin
4327                    XmlFelter.Add(Node.NodeName, 1);
4328                  end;
4329    
4330        end;        end;
4331        antalLiniefelter := XmlFelter.Count;        antalLiniefelter := XmlFelter.Count;
# Line 4694  var Line 4333  var
4333        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug        SetLength(stregkoderMedTjekkodeArray, 0);    // reset fra tidligere brug
4334        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array        SetLength(stregkoderMedTjekkodeArray, antlin);  // sæt antal elementer i array
4335    
4336    
4337          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4338    
4339        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4340        if (antlinSenere > 0) then        if (antlinSenere > 0) then
4341        begin        begin
# Line 4702  var Line 4344  var
4344        logTekst := logTekst + '.';        logTekst := logTekst + '.';
4345    
4346        SkrivScanningLogFil(logTekst);        SkrivScanningLogFil(logTekst);
4347    
4348    
4349        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin        for I:= 0 to XMLDocument1.DocumentElement.ChildNodes.Count - 1 do begin
4350            Node:= XMLDocument1.DocumentElement.ChildNodes[I];            Node:= XMLDocument1.DocumentElement.ChildNodes[I];
4351            if Node.NodeType = ntElement then begin            if Node.NodeType = ntElement then begin
# Line 4709  var Line 4353  var
4353                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4354                  stregkode := Node.NodeValue;                  stregkode := Node.NodeValue;
4355                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4356              end;              end
4357              if Node.NodeName = 'ModtagerNavn' then begin              else if Node.NodeName = 'ModtagerNavn' then begin
4358                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4359                  modtagernavn := Node.NodeValue;                  modtagernavn := Node.NodeValue;
4360                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4361              end;              end
4362              if Node.NodeName = 'ModtagerAdresse' then begin              else if Node.NodeName = 'ModtagerAdresse' then begin
4363                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4364                  modtageradresse := Node.NodeValue;                  modtageradresse := Node.NodeValue;
4365                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4366              end;              end
4367              if Node.NodeName = 'Kommentar' then begin              else if Node.NodeName = 'Kommentar' then begin
4368                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4369                  kommentar := Node.NodeValue;                  kommentar := Node.NodeValue;
4370                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4371              end;              end
4372              if Node.NodeName = 'PakkeType' then begin              else if Node.NodeName = 'PakkeType' then begin
4373                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4374                  pakketype := Node.NodeValue;                  pakketype := Node.NodeValue;
4375                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4376                if (pakketyper.values[pakketype] <> '') then                if ( pakketyper.ContainsKey(pakketype) ) then
4377                  pakketyper.values[pakketype] := IntToStr(StrToInt(pakketyper.values[pakketype]) + 1)                begin
4378                    pakketyper.TryGetValue(pakketype, tmpAntal);
4379                    pakketyper.AddOrSetValue(pakketype, tmpAntal + 1);
4380                  end
4381                else                else
4382                  pakketyper.values[pakketype] := '1';                  pakketyper.Add(pakketype, 1);
4383              end;              end
4384              if Node.NodeName = 'TjekkodeStatus' then begin              else if Node.NodeName = 'TjekkodeStatus' then begin
4385                if not VarIsNull(Node.NodeValue) then                if not VarIsNull(Node.NodeValue) then
4386                  tjekkodestatus := Node.NodeValue;                  tjekkodestatus := Node.NodeValue;
4387                  antalFelterFundet := antalFelterFundet + 1;                  antalFelterFundet := antalFelterFundet + 1;
4388                  if (tjekkodestatus = '-1') then                  if (tjekkodestatus = '-1') then
4389                  begin                  begin
4390  // 20150306: start  
 //                    stregkoderMedTjekkodeArray[linienr] := stregkode;  
4391                    if (pos(' ', stregkode) > 0) then                    if (pos(' ', stregkode) > 0) then
4392                    begin                    begin
4393                      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
4394                    end                    end
4395                    else                    else
4396                    begin                    begin
# Line 4753  var Line 4399  var
4399                    linienr := linienr + 1;                    linienr := linienr + 1;
4400                  end;                  end;
4401              end;              end;
4402    
4403    
4404              if antalFelterFundet = antalLiniefelter then              if antalFelterFundet = antalLiniefelter then
4405              begin              begin
4406                if (ScanningType = '1') then                if (ScanningType = '1') then
# Line 4768  var Line 4416  var
4416              end;              end;
4417            end;            end;
4418        end;        end;
       for pakketypeix := 0 to pakketyper.Count-1 do  
         begin  
           ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + ' '+pakketyper[pakketypeix]+' pakke(r) ikke modtaget');  
         end;  
4419    
4420          // Free up the list object  
4421          Application.Processmessages; //Ugly Hack to improve User Experience when switching modes
4422    
4423    
4424          for pakketype in pakketyper.Keys do
4425          begin
4426            pakketyper.TryGetValue(pakketype, tmpAntal);
4427            ListBox1.Items.Insert(0,TimeToStr(now) + ': ' + pakketype + ' ' + IntToStr(tmpAntal) + ' pakke(r) ikke modtaget');
4428          end;
4429    
4430            // Free up the dictionary object
4431        pakketyper.Free;        pakketyper.Free;
4432    
4433    
4434    
4435  //      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.');
4436        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';        logTekst := 'Der er ' + IntToStr(antlin) + ' pakker, der endnu ikke er modtaget';
4437        if (antlinSenere > 0) then        if (antlinSenere > 0) then
# Line 4934  var Line 4591  var
4591     idag, imorgen : TDateTime;     idag, imorgen : TDateTime;
4592     imorgenYmd : string;     imorgenYmd : string;
4593     logFilnavn : string;     logFilnavn : string;
4594      error : Integer;     //error : Integer;
4595    
4596  begin  begin
4597    if (SkrivLog = '1') then    if (SkrivLog = '1') then
# Line 5026  begin Line 4683  begin
4683          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4684          S := buffer;          S := buffer;
4685          SetLength(A,0);          SetLength(A,0);
4686          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4687          if (length(A) < 2) then          if (length(A) < 2) then
4688          begin          begin
4689            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4690          end;          end;
4691            if (length(A) > 1) then            if (length(A) > 1) then
4692            begin            begin
# Line 5103  begin Line 4760  begin
4760          ReadLn(SomeTxtFile, buffer) ;          ReadLn(SomeTxtFile, buffer) ;
4761          S := buffer;          S := buffer;
4762          SetLength(A,0);          SetLength(A,0);
4763          Explode(A, ';', S);          TUtils.Explode(A, ';', S);
4764          if (length(A) < 3) then          if (length(A) < 3) then
4765          begin          begin
4766            Explode(A, ',', S);            TUtils.Explode(A, ',', S);
4767          end;          end;
4768          if (A[0]=imorgenYmd) then          if (A[0]=imorgenYmd) then
4769          begin          begin
# Line 5203  begin Line 4860  begin
4860    //ShowMessage('Ændring ikke tilladt');    //ShowMessage('Ændring ikke tilladt');
4861    // Her skal komme en 'rød skærm' alarm    // Her skal komme en 'rød skærm' alarm
4862    PlaySound(PWideChar(AlarmLyd));    PlaySound(PWideChar(AlarmLyd));
   
   ListBox1.Items.Insert(0, strMessage);  
4863    MainForm.Color := clRed;    MainForm.Color := clRed;
4864    
4865    
4866    RuteNummerST.Caption := '';    RuteNummerST.Caption := '';
4867    BoghandlerNavnST.Caption := '';    BoghandlerNavnST.Caption := '';
4868    KommentarST.Caption := strMessage;    btnNulstil.Visible := true;
4869    PakkeshopNulstil.Visible := true;  
4870      if (strMessage <> '') then
4871      begin
4872        ListBox1.Items.Insert(0, strMessage);
4873        KommentarST.Caption := strMessage;
4874      end;
4875    
4876      Stregkode := ''; //Nulstil stregkode feltet efter at fejl er vist
4877    
4878  end;  end;
4879    
4880  function TMainForm.getProddato() : TDate;  function TMainForm.getProddato() : TDate;
# Line 5269  begin Line 4934  begin
4934    result := svar;    result := svar;
4935  end;  end;
4936    
 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;  
4937    
4938  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);  procedure TMainForm.Scanogstjekkoden1Click(Sender: TObject);
4939  begin  begin
# Line 5301  begin Line 4947  begin
4947    end;    end;
4948  end;  end;
4949    
4950  function TMainForm.AdobeReaderExists: Boolean;  
4951  var  //Nedarvet fra IParentForm
4952    AReg: TRegistry;  procedure TMainForm.Msg( msg : string);
4953  begin  begin
4954    result:= false;    ShowMessage(msg);
   AReg := TRegistry.Create;  
   AReg.RootKey := HKEY_LOCAL_MACHINE;  
   if AReg.KeyExists('\SOFTWARE\Adobe\Acrobat Reader') then  
     result:= True;  
   AReg.Free;  
4955  end;  end;
4956    
4957  procedure TMainForm.CheckPrintQue(tjektype : string);  //Nedarvet fra IParentForm
4958  type  procedure TMainForm.LogMessage( msg : string);
   TJobs  = array [0..1000] of JOB_INFO_1;  
   PJobs = ^TJobs;  
 var  
   hPrinter: THandle;  
   bytesNeeded, numJobs, i: Cardinal;  
   pJ: PJobs;  
   printerTxt, statusTxt, dokumentTxt: String;  
4959  begin  begin
4960      ListBox1.Items.Insert(0, msg);
4961      SkrivScanningLogFil(msg);
4962    end;
4963    
 // tjektype = 'Opstart' skal vise alarmlinie, samt opdatere listbox1  
 //            'Test'  skal vise alarmlinie, samt opdatere listbox1  
 //            'Timer' skal kun vise alarmlinie  
4964    
4965    if (PrinterNavn = 'Ingen') and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  //Nedarvet fra IParentForm
4966    begin  procedure TMainForm.SetPrinterstatusText( txt: string; alert: boolean);
4967      printerTxt := 'Der er fravalgt printer i dette program';  begin
4968      ListBox1.Items.Insert(0,printerTxt);  
4969      SkrivScanningLogFil(printerTxt);    PrinterstatusStaticText1.Caption := txt;
4970    end    if (alert) then
   else if (Printer.Printers.Count = 0) and ( (tjektype = 'Opstart') or (tjektype = 'Test') ) then  
4971    begin    begin
4972      printerTxt := 'Der er ikke installeret en printer på denne PC';      PrinterstatusStaticText1.Font.Color := clBlack;
4973      ListBox1.Items.Insert(0,printerTxt);      PrinterstatusStaticText1.Color := MainForm.Color;
4974      SkrivScanningLogFil(printerTxt);      PrinterstatusStaticText1.Transparent := True;
4975    end    end
4976    else    else
4977    begin    begin
4978      hPrinter := GetCurrentPrinterHandle;      PrinterstatusStaticText1.Font.Color := clRed;
4979      try      PrinterstatusStaticText1.Color := clWhite;
4980        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;  
4981    end;    end;
4982  end;  end;
4983    
4984  function TMainForm.CheckUrl(url:string):boolean;  //Nedarvet fra IParentForm
4985  var  function TMainForm.GetFormObject() : TForm;
   hSession, hfile, hRequest: hInternet;  
   dwindex,dwcodelen :dword;  
   dwcode:array[1..20] of char;  
   res : pchar;  
 begin  
   if pos('http://',lowercase(url))=0 then  
     url := 'http://'+url;  
   Result := false;  
   hSession := InternetOpen('InetURL:/1.0',  
                             INTERNET_OPEN_TYPE_PRECONFIG,  
                             nil,  
                             nil,  
                             0);  
   if assigned(hsession) then  
   begin  
     hfile := InternetOpenUrl(hsession,  
                              pchar(url),  
                              nil,  
                              0,  
                              INTERNET_FLAG_RELOAD,  
                              0);  
     dwIndex := 0;  
     dwCodeLen := 10;  
     HttpQueryInfo(hfile,  
                   HTTP_QUERY_STATUS_CODE,  
                   @dwcode,  
                   dwcodeLen,  
                   dwIndex);  
     res := pchar(@dwcode);  
     result:= (res ='200') or (res ='302');  
     if assigned(hfile) then  
       InternetCloseHandle(hfile);  
     InternetCloseHandle(hsession);  
   end;  
   
 end;  
   
 // 20150310: start  
 procedure TMainForm.RoundCornerOf(Control: TWinControl);  
 var  
    R: TRect;  
    Rgn: HRGN;  
4986  begin  begin
4987     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;  
4988  end;  end;
 // 20150310: slut  
4989    
4990  end.  end.
4991    

Legend:
Removed from v.2660  
changed lines
  Added in v.3055

  ViewVC Help
Powered by ViewVC 1.1.20